- Componentes necessários para construir cortinas automatizadas do Arduino
- Controle de cortinas de rolo usando Arduino
- Projetar e construir a engrenagem cega para janelas
- Impressão 3D do suporte do motor e engrenagem cega
- Diagrama de circuito para controle de cortinas do Arduino
- Aplicativo Blynk para Arduino Blind Control
- Programando NodeMCU para controlar cortinas usando Blynk
- Controle de cortinas de janela usando o Google Assistente
- Controle automático de janela cega baseado em Arduino - demonstração
"Bom Dia. São 7 horas da manhã. O tempo em Malibu é de 72 graus… ”essas foram as primeiras palavras de JARVIS ao ser apresentado no Universo Cinematics da Marvel. A maioria dos fãs do Homem de Ferro deve ser capaz de se lembrar dessa cena e lembrar que JARVIS foi capaz de abrir uma janela (mais ou menos) pela manhã e dar atualizações sobre o tempo e o clima. No filme, os vidros da janela eram na verdade feitos de telas sensíveis ao toque transparentes e, portanto, o JARVIS foi capaz de torná-los pretos para transparentes e também exibir as estatísticas do tempo. Mas, na realidade, estamos longe das telas sensíveis ao toque transparentes e quanto mais perto podemos chegar é de controlar as cortinas ou restrições das janelas automaticamente.
Então, neste projeto, vamos construir exatamente isso, vamos construir uma cortina motorizada automatizada que abriria e fecharia automaticamente em horários pré-definidos. Anteriormente, construímos muitos projetos de automação residencial em que automatizamos as luzes, motores, etc. Você pode verificá-los se estiver interessado. Então, voltando, essas cortinas controladas pelo Arduino também podem receber comandos do Google Assistant para que você possa abrir ou fechar suas cortinas remotamente por meio de comandos de voz. Intrigante? Então, vamos construí-lo.
Componentes necessários para construir cortinas automatizadas do Arduino
O projeto é relativamente simples e não são necessários muitos componentes. Apenas reúna os itens listados abaixo.
- NodeMCU
- Motor de passo - 28BYJ-48
- Módulo acionador de motor de passo
- LM117-3.3V
- Capacitores (10uf, 1uf)
- Adaptador 12V DC
- Perf Board
- Kit de solda
- impressora 3d
Controle de cortinas de rolo usando Arduino
Agora, existem muitos tipos de cortinas no mercado, mas o mais comumente usado tem uma corda com frisos (como mostrado abaixo) que pode ser puxada para abrir ou fechar as cortinas.
Quando puxamos esta corda circular no sentido horário, as cortinas da janela se abrem e quando puxamos esta corda no sentido anti-horário, as cortinas da janela se fecham. Então, se quisermos automatizar esse processo, tudo o que temos que fazer é usar um motor para puxar essa corda no sentido horário ou anti-horário e pronto. Na verdade, é isso que vamos fazer neste projeto; Estaremos usando o motor de passo 28BYJ-48 junto com um NodeMCU para puxar a corda frisada.
Projetar e construir a engrenagem cega para janelas
A parte eletrônica deste projeto era bastante simples e direta, a parte desafiadora era construir o Blind Gear que poderia puxar a corda frisada. Então, vamos começar este artigo com o design da engrenagem cega. Não vou entrar em detalhes sobre como projetar a engrenagem, mas esta ideia básica deve ajudá-lo. Uma imagem da corda com as contas é mostrada abaixo.
Novamente, existem muitos tipos de cordas, mas as cordas mais comumente usadas são a distância centro a centro de cada cordão é de 6 mm e o diâmetro de cada cordão é de 4 mm. Usando essas informações, podemos iniciar o design de nosso equipamento. Se a corda em suas persianas tiver as mesmas dimensões conforme discutido, você pode simplesmente pular esta etapa e baixar o arquivo STL fornecido neste artigo e imprimir o equipamento. Se sua corda tiver um arranjo de cordões diferente, é assim que você deve redesenhar a engrenagem cega.
Decidi ter 24 contas em meu equipamento para obter um tamanho de roda dentada ideal. Você pode selecionar qualquer número próximo a este para que sua roda dentada seja grande ou pequena. Portanto, agora sabemos que a distância entre cada cordão é de 6 mm e precisamos de 24 contas em nosso equipamento. A multiplicação de ambos dará a circunferência da roda dentada. Com esses dados, você pode calcular o raio da roda dentada. Como você pode ver na imagem acima, o diâmetro da minha roda dentada foi calculado em cerca de 46 mm. Mas lembre-se, este não é o diâmetro real da engrenagem porque não levamos em consideração o diâmetro do cordão, que é 4 mm. Então, o diâmetro real da roda dentada será de 42 mm, eu imprimi e testei várias rodas dentadas antes de encontrar a que funcionasse melhor. Se você não gosta de designs,basta baixar e imprimir os arquivos STL do próximo parágrafo e continuar com seu projeto.
Impressão 3D do suporte do motor e engrenagem cega
Junto com a engrenagem, também precisaremos de uma pequena caixa que pode ser perfurada na parede e manter o motor de passo em posição. A caixa e a engrenagem usadas neste projeto são mostradas abaixo.
Você pode encontrar arquivos de projeto completos e arquivos STL na página Arduino Blind Control Thingiverse fornecida abaixo. Você pode simplesmente baixar e imprimir sua caixa do motor e engrenagem cega.
Baixar arquivos STL para Blind Gear and Motor Case
Diagrama de circuito para controle de cortinas do Arduino
Quando estiver pronto com a engrenagem e a montagem, é fácil prosseguir com a parte eletrônica e o software. O diagrama de circuito completo para o projeto de controle IoT Blind é mostrado abaixo.
Usamos um adaptador de 12 V para alimentar toda a configuração; o regulador LM1117-3,3V converte 12V para 3,3V, que pode ser usado para alimentar a placa NodeMCU. O módulo do driver do motor de passo é alimentado diretamente pelo adaptador de 12V. Eu tentei rodar o motor de passo em 5V, mas ele não forneceu torque suficiente para puxar as cortinas, então certifique-se de usar 12V.
Além disso, o circuito é muito simples, se você é novo em motores de passo, dê uma olhada nos fundamentos do artigo sobre motores de passo para entender como ele funciona e como pode ser usado com um microcontrolador.
Aplicativo Blynk para Arduino Blind Control
Antes de entrarmos no programa Arduino para controle de cortinas, vamos abrir o aplicativo blynk e criar alguns botões com os quais podemos abrir ou fechar nossas cortinas. Também precisaremos disso mais tarde para controlar a partir da página inicial do Google.
Acabei de adicionar dois botões para abrir e fechar as cortinas e um temporizador para abrir as cortinas às 10:00 todos os dias. Você pode adicionar vários temporizadores para abrir ou fechar as cortinas em diferentes intervalos do dia. Basicamente, quando temos que fechar as cortinas, temos que acionar o pino virtual V1 e quando temos que abrir as cortinas, temos que acionar o pino virtual V2. O programa para controlar o motor de passo baseado no botão pressionado aqui será escrito no IDE do Arduino, o mesmo é discutido a seguir.
Programando NodeMCU para controlar cortinas usando Blynk
O código ESP8266 completo para este projeto de controle cego pode ser encontrado na parte inferior desta página. Nosso programa tem que esperar por um comando do aplicativo blynk e com base nesse comando, temos que girar o motor de passo no sentido horário ou anti-horário. Os segmentos importantes do código são discutidos abaixo.
De acordo com nosso diagrama de circuito, usamos os pinos digitais 1, 2, 3 e 4 no nodemcu para controlar nosso motor de passo. Portanto, temos que criar uma instância chamada stepper usando esses pinos como mostrado abaixo. Observe que definimos os pinos na ordem 1, 3, 2 e 4. Isso foi feito deliberadamente e não é um erro; temos que trocar os pinos 2 e 3 para que o motor funcione corretamente.
// cria uma instância da classe stepper usando os passos e pinos Stepper stepper (STEPS, D1, D3, D2, D4);
Na próxima etapa, temos que compartilhar nosso token de autenticação de aplicativo blynk e as credenciais de Wi-Fi às quais nosso controlador IoT Blind deve ser conectado. Se você não tiver certeza de como obter este token de autenticação Blynk, consulte o projeto de controle de LED Blynk para entender os fundamentos do aplicativo blynk e como usá-lo.
// Você deve obter o Auth Token no aplicativo Blynk. // Vá para as configurações do projeto (ícone de noz). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Suas credenciais de WiFi. // Defina a senha para "" para redes abertas. char ssid = "CircuitDigest"; char pass = "dummy123";
Continuando com nosso código, após a função de configuração, definimos dois métodos para blynk. Como mencionado anteriormente, temos que definir o que os pinos virtuais V1 e V2 devem fazer. O código para o mesmo é fornecido abaixo.
BLYNK_WRITE (V1) // FECHE as ESTORES {Serial.println ("Fechando Persianas"); if (aberto == verdadeiro) {for (int c_val = 0; c_val <= 130; c_val ++) // girar no sentido anti-horário para fechar {stepper.step (c_val); produção(); } fechado = verdadeiro; aberto = falso; disable_motor (); // sempre desabilite os motores de passo após o uso para reduzir o consumo de energia e o aquecimento}} BLYNK_WRITE (V2) // ABRIR as cortinas {Serial.println ("Abrindo cortinas"); if (fechado == true) {for (int cc_val = 0; cc_val> = -130; cc_val--) // gire no sentido horário para abrir {stepper.step (cc_val); produção(); } aberto = verdadeiro; fechado = falso; } disable_motor (); // sempre desabilite os motores de passo após o uso para reduzir o consumo de energia e o aquecimento}
Como você pode ver, o V1 é usado para fechar as cortinas e o V2 é usado para abrir as cortinas. Um loop for é usado para girar os motores no sentido horário ou anti-horário por 130 etapas. Eu experimentei minhas cortinas para descobrir que, com 130 degraus, eu sou capaz de abrir e fechar totalmente minhas cortinas. Seu número pode variar. O loop for para girar o motor de passo no sentido horário e anti-horário é mostrado abaixo.
for (int c_val = 0; c_val <= 130; c_val ++) // girar no sentido anti-horário para fechar {stepper.step (c_val); produção(); } for (int cc_val = 0; cc_val> = -130; cc_val--) // gire no sentido horário para abrir {stepper.step (cc_val); produção(); }
Você também pode notar duas variáveis booleanas “abertas” e “fechadas” em nosso programa. Essas duas variáveis são utilizadas para evitar que o motor abra ou feche as cortinas duas vezes. Ou seja, as persianas abrirão apenas quando estiverem fechadas anteriormente e fecharão apenas quando forem abertas anteriormente.
Como aumentar a velocidade do motor de passo 28BJY-48?
Uma desvantagem de usar o motor de passo 28BJY-48 é que ele é muito lento. Esses motores foram originalmente fabricados para serem usados em aplicações de alta precisão e baixa velocidade, portanto, não espere que esses motores girem em alta velocidade. Se você deseja aumentar a velocidade do motor de passo usando o Arduino, existem dois parâmetros que você pode alterar. Uma é a #define STEPS 64, descobri que quando as etapas são definidas como 64, o motor era comparativamente mais rápido. Outro parâmetro é stepper.setSpeed (500); Mais uma vez, descobri que 500 é o valor ideal, qualquer coisa além disso torna o motor de passo mais lento.
Você conhece alguma outra forma de aumentar a velocidade desses motores? Se sim, deixe-os na seção de comentários abaixo.
Como evitar o superaquecimento do motor de passo?
Os motores de passo devem ser sempre desativados quando não estiverem em uso para evitar o superaquecimento. Desativar um motor de passo é muito simples; basta alterar o status do pino de todos os quatro pinos GPIO que controlam o motor de passo para baixo. Isso é muito importante, caso contrário, seu motor pode ficar muito quente a + 12 V e se danificar permanentemente. O programa para desativar o motor de passo é fornecido abaixo.
void disable_motor () // desliga o motor quando terminar para evitar o aquecimento {digitalWrite (D1, LOW); digitalWrite (D2, LOW); digitalWrite (D3, LOW); digitalWrite (D4, LOW); }
Controle de cortinas de janela usando o Google Assistente
Vamos usar a API blynk para controlar as persianas através do assistente do Google, será semelhante ao nosso projeto de automação residencial controlada por voz, então verifique se estiver interessado. Basicamente, temos que acionar o link abaixo quando dizemos uma frase predefinida ao Google Assistente.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Certifique-se de alterar o token de autenticação para aquele fornecido pelo seu aplicativo blynk. Você pode até mesmo testar este link em seu navegador Chrome para ver se ele está funcionando conforme o esperado. Agora que o link está pronto, precisamos simplesmente passar para o IFTTT e criar dois miniaplicativos que possam acionar os pinos virtuais V1 e V2 quando pedirmos para fechar e abrir as cortinas. Novamente, não estou entrando em detalhes sobre isso porque já fizemos isso muitas vezes. Se precisar de mais ajuda, consulte este projeto de rádio FM controlado por voz, basta substituir os serviços adafruit por webhooks. Também estou compartilhando uma captura de tela do meu snippet para referência.
Controle automático de janela cega baseado em Arduino - demonstração
Depois que o circuito e os gabinetes impressos em 3D estiverem prontos, basta montar o dispositivo na parede fazendo dois furos na parede. Minha configuração de montagem é mostrada nas fotos abaixo.
Depois disso, certifique-se de que suas cortinas estejam abertas e ligue o circuito. Agora, você pode tentar fechar as cortinas do aplicativo blynk ou do Google Assistente e deve funcionar. Você também pode definir temporizadores no aplicativo blynk para abrir e fechar automaticamente a cortina em um determinado momento do dia.
O funcionamento completo do projeto pode ser encontrado no vídeo abaixo; se você tiver alguma dúvida, sinta-se à vontade para escrevê-las na seção de comentários abaixo. Além disso, você pode usar nossos fóruns para outras discussões técnicas.