Atenção terráqueos: Objeto não identificado pousando na sua tela! Você já pensou em como dar um upgrade na sua casa? Uma boa peça de iluminação é sempre bem-vinda para a decoração, e nada mais criativo que um pouco de ficção científica nesta composição. Além de ser uma ótima alternativa para enfeitar um ambiente, esta luminária é também uma opção perfeita para quem está pensando em um presente criativo e inovador. Confira neste tutorial como construir sua luminária OVNI com o NodeMCU, mais um projeto da nossa caixa surpresa BlueBox.
A luminária OVNI é um projeto IoT que tem como principais componentes o Módulo WiFi ESP8266 NodeMCU e uma fita de LEDs. Com auxílio do aplicativo Blynk, você pode ligar e desligar sua luminária assim como controlar as cores da mesma.
Pronto para colocar a mão na massa?
Materiais necessários para a luminária OVNI com NodeMCU
Para montar a parte eletrônica da sua luminária OVNI com NodeMCU, você vai precisar de:
- (1) Módulo WiFi ESP8266 NodeMcu
- (2) Mini Protoboard 170 Pontos
- (3) Fita de LED RGB WS2812 5050 (vamos usar apenas 9 LEDs da fita, ou seja, 30 cm)
- (4) Cabo USB – Micro USB
- (5) Fonte DC Chaveada 5 V 2 A Micro USB
Já para montar a estrutura da luminária OVNI você vai precisar das 5 peças feitas na impressora 3D:
- (6) Tampa superior
- (7) Tampa inferior
- (8) Anel
- (9) Base
- (10) Vaca (é uma miniatura, ok?)
Além dos itens citados acima, vamos utilizar também:
- (11) Cilindro de acetato
- (12) Fio de nylon
Você pode fazer o download de todas as peças para sua luminária OVNI aqui.
Montagem da luminária OVNI com NodeMCU
Encaixe o cilindro de acetato na base. O cilindro deve ficar interno ao aro.
Cole o anel na tampa inferior.
Passe o fio de nylon pelos dois furos da tampa inferior. Utilize a folha de acetato para auxiliar no ajuste da altura da vaca. Feitos os ajustes, dê um nó.
Encaixe o NodeMCU na mini protoboard. Os pinos devem ser encaixados até o final.
Cole a mini protoboard na tampa inferior.
Cole a fita de LEDs na parte interna do anel. Depois, conecte a fita de LEDs ao NodeMCU da seguinte forma:
Fita de LEDs | NodeMCU |
VCC |
Pino 3V3 |
D0 |
Pino D1 |
GND |
Pino GND |
Conecte o cabo USB – micro USB.
Cole a tampa superior no anel.
Agora encaixe o OVNI no acetato. No final da montagem, sua luminária OVNI terá a seguinte aparência.
Agora precisamos configurar o aplicativo Blynk para que você possa controlar sua luminária OVNI de onde quiser. Vamos lá?
Configurações do Blynk para a luminária OVNI com NodeMCU
O Blynk é uma plataforma fácil e rápida para projetar aplicativos que controlam dispositivos IoT. Para começar, baixe o app em seu smartphone (está disponível para iOS e Android) e instale o mesmo.
Para criar uma conta, clique em Create New Account. Insira seu e-mail, crie uma senha e clique em Sign Up.
Para criar um novo projeto clique no ícone New Project.
Dê um nome ao seu projeto em Project Name. Em Choose Device selecione a placa NodeMCU. Em Connection Type selecione Wi-Fi. Por fim, clique em Create.
O Auth Token será enviado para seu e-mail. Vamos usar esse número mais tarde, ok?
Para alterar as cores dos LEDs da luminária OVNI vamos criar quatro botões no aplicativo. Eles irão simular o funcionamento de botões físicos, como se os mesmos estivessem conectados nas portas digitais do NodeMCU.
Inicialmente, você terá uma tela semelhante a essa:
Clique na tela e a janela Widget Box abrirá. Selecione Styled Button.
O resultado será esse:
Repita o processo mais três vezes. No final você terá uma tela parecida com a abaixo.
O primeiro e o segundo botão serão utilizados para selecionar a cor da luminária. Já o terceiro botão será usado para selecionar o modo colorido o quarto botão vai selecionar o modo OVNI.
Como os botões no aplicativo irão simular botões físicos, precisamos determinar a porta digital que cada um deles está conectado. Dê um clique sobre o primeiro botão. Em Output, selecione o D2. Em Mode, mantenha selecionado o modo Push. O restante das opções são para customizar o botão.
Repita o procedimento para o segundo, terceiro e quarto botão. Eles estarão vinculados aos pinos D3, D4 e D5, respectivamente.
Como dito anteriormente, os botões podem ser customizados. Você pode ver um exemplo de customização logo abaixo:
Com o aplicativo pronto, podemos ir para a próxima etapa: configurar a Arduino IDE para a programação do NodeMCU.
Configurações da IDE do Arduino para o NodeMCU
Entre na IDE do Arduino e clique em Arquivo -> Preferências.
Digite o link abaixo no campo URLs adicionais de Gerenciadores de Placas:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
A sua tela ficará assim:
Clique em OK para retornar à tela principal da IDE.
Depois clique em Ferramentas -> Placa -> Gerenciador de Placas.
Na barra de busca digite esp8266. Aparecerá então esp8266 by ESP8266 Community. Clique em instalar.
Após alguns minutos, as placas da linha ESP8266 já estarão disponíveis na lista de placas da IDE do Arduino. Vá em Ferramentas -> Placa e selecione NodeMCU 1.0 (ESP12-E Module).
Pronto! Agora você pode conectar o NodeMCU ao seu computador. Não esqueça de selecionar a porta que o mesmo está conectado. Para isso, vá em Ferramentas -> Porta e selecione a porta que o NodeMCU está conectado.
Código
Antes de carregar o código para a placa, é necessário baixar e instalar duas bibliotecas:
Faça o download das bibliotecas, descompacte as pastas e cole as mesmas na pasta Libraries do Arduino. Por fim, reinicie a IDE.
Copie e cole o código abaixo:
#include <Adafruit_NeoPixel.h> #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #define BOTAO_DIREITA D2 #define BOTAO_ESQUERDA D3 #define BOTAO_RB D4 #define BOTAO_UFO D5 #define FITA_LED D1 #define NUMERO_LED 9 char auth[] = "insira-o-auth-token"; char ssid[] = "insira-o-nome-da-rede-wifi"; char pass[] = "insira-o-senha-da-rede-wifi"; Adafruit_NeoPixel strip(NUMERO_LED, FITA_LED, NEO_GRB + NEO_KHZ800); boolean botao_direita = HIGH; boolean botao_esquerda = HIGH; boolean botao_rb = HIGH; boolean botao_ufo = HIGH; int mode = 0; void setup() { Serial.begin(9600); Blynk.begin(auth, ssid, pass); pinMode(BOTAO_DIREITA, INPUT_PULLUP); pinMode(BOTAO_ESQUERDA, INPUT_PULLUP); pinMode(BOTAO_RB, INPUT_PULLUP); pinMode(BOTAO_UFO, INPUT_PULLUP); strip.begin(); strip.show(); } void loop() { Blynk.run(); boolean novo_botao_direita = digitalRead(BOTAO_DIREITA); if((novo_botao_direita == LOW) && (botao_direita == HIGH)) { delay(20); novo_botao_direita = digitalRead(BOTAO_DIREITA); if(novo_botao_direita == LOW) { if(++mode > 8) mode = 0; switch(mode) { case 0: colorWipe(strip.Color( 0, 0, 0), 50); // Desligado break; case 1: colorWipe(strip.Color( 0, 0, 205), 50); // Azul break; case 2: colorWipe(strip.Color( 0, 206, 209), 50); // Ciano break; case 3: colorWipe(strip.Color( 0, 128, 0), 50); // Verde break; case 4: colorWipe(strip.Color( 75, 0, 130), 50); // Roxo break; case 5: colorWipe(strip.Color( 255, 105, 180), 50); // Rosa break; case 6: colorWipe(strip.Color( 255, 0, 0), 50); // Vermelho break; case 7: colorWipe(strip.Color( 255, 140, 0), 50); // Laranja break; case 8: colorWipe(strip.Color( 255, 215, 0), 50); // Amarelo break; } } } boolean novo_botao_esquerda = digitalRead(BOTAO_ESQUERDA); if((novo_botao_esquerda == LOW) && (botao_esquerda == HIGH)) { delay(20); novo_botao_esquerda = digitalRead(BOTAO_ESQUERDA); if(novo_botao_esquerda == LOW) { if(++mode > 8) mode = 0; switch(mode) { case 0: colorWipe(strip.Color( 0, 0, 0), 50); // Desligado break; case 1: colorWipe(strip.Color( 255, 215, 0), 50); // Amarelo break; case 2: colorWipe(strip.Color( 255, 140, 0), 50); // Laranja break; case 3: colorWipe(strip.Color( 255, 0, 0), 50); // Vermelho break; case 4: colorWipe(strip.Color( 255, 105, 180), 50); // Rosa break; case 5: colorWipe(strip.Color( 75, 0, 130), 50); // Roxo break; case 6: colorWipe(strip.Color( 0, 128, 0), 50); // Verde break; case 7: colorWipe(strip.Color( 0, 206, 209), 50); // Ciano break; case 8: colorWipe(strip.Color( 0, 0, 205), 50); // Azul break; } } } boolean novo_botao_rb = digitalRead(BOTAO_RB); if((novo_botao_rb == LOW) && (botao_rb == HIGH)) { delay(20); novo_botao_rb = digitalRead(BOTAO_RB); if(novo_botao_rb == LOW) { rainbow(10); } } boolean novo_botao_ufo = digitalRead(BOTAO_UFO); if((novo_botao_ufo == LOW) && (botao_ufo == HIGH)) { delay(20); novo_botao_ufo = digitalRead(BOTAO_UFO); if(novo_botao_ufo == LOW) { theaterChase(strip.Color( 0, 0, 205), 100); theaterChase(strip.Color( 0, 206, 209), 100); } } botao_direita = novo_botao_direita; botao_esquerda = novo_botao_esquerda; botao_rb = novo_botao_rb; botao_ufo = novo_botao_ufo; } void colorWipe(uint32_t color, int wait) { for(int i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, color); strip.show(); delay(wait); } } void rainbow(int wait) { for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) { for(int i=0; i<strip.numPixels(); i++) { int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels()); strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue))); } strip.show(); delay(wait); } } void theaterChase(uint32_t color, int wait) { for(int a=0; a<10; a++) { for(int b=0; b<3; b++) { strip.clear(); for(int c=b; c<strip.numPixels(); c += 3) { strip.setPixelColor(c, color); } strip.show(); delay(wait); } } }
Antes de carregar o código para a placa você precisa inserir o Auth Token (aquele que foi enviado pra seu e-mail, lembra?) e as credenciais da sua rede WiFi. Para isso basta alterar as seguintes linhas do código acima.
char auth[] = "insira-o-auth-token"; char ssid[] = "insira-o-nome-da-rede-wifi"; char pass[] = "insira-o-senha-da-rede-wifi";
Agora você já pode carregar o código para o NodeMCU. Esse processo pode levar algum tempo, não se preocupe. No final você terá a seguinte mensagem.
Sua luminária OVNI está pronta! Vamos ver ela funcionando?
Funcionamento da luminária OVNI com NodeMCU
Abra o Blynk e execute o aplicativo que foi criado.
A sua tela será parecida com a abaixo:
Clique no botão que desejar e veja as cores da sua luminária OVNI mudarem.
Além das customizações que podem ser feitas no aplicativo Blynk, você também pode alterar o padrão de cores da sua luminária ou adicionar mais funções (configuração no código para o NodeMCU). Fique a vontade para customizar da maneira que achar melhor!
Gostou do projeto luminária OVNI com NodeMCU? Conte para a gente o que achou deixando um comentário aqui embaixo! Para ter acesso a mais conteúdos como esse, visite nosso blog.
Ficou bacana, mas o legal é a oportunidade de conhecer um pouco da programação e do aplicativo. Parabéns
Bom dia, que projeto massa! Parabéns! Sabem me explicar onde se compra esse cilindro de acetato? Na minha cidade, Rio Preto/SP, não encontrei loja alguma que vendesse tampouco na internet. Muito obrigado.