Luminária OVNI com NodeMCU 2

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.

Imagem 1 - Luminária Ovni com NodeMCU

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

Imagem 2 - Materiais necessários para a luminária ONVI

Para montar a parte eletrônica da sua luminária OVNI com NodeMCU, você vai precisar de:

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.

Imagem 3 - Montagem da luminária ONVI

Cole o anel na tampa inferior

Imagem 4 - Montagem da luminária ONVI

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ó.

Imagem 5 - Montagem da luminária ONVI

Encaixe o NodeMCU na mini protoboard. Os pinos devem ser encaixados até o final.

Imagem 6 - Montagem da luminária ONVI

Cole a mini protoboard na tampa inferior.

Imagem 7 - Montagem da luminária ONVI

Cole a fita de LEDs na parte interna do anel. Depois, conecte a fita de LEDs ao NodeMCU da seguinte forma:

Fita de LEDsNodeMCU

VCC

Pino 3V3

D0

Pino D1

GND

Pino GND

Imagem 8 - Montagem da luminária ONVI

Conecte o cabo USB – micro USB.

Imagem 9 - Montagem da luminária ONVI

Cole a tampa superior no anel.

Imagem 10 - Montagem da luminária ONVI

Agora encaixe o OVNI no acetato. No final da montagem, sua luminária OVNI terá a seguinte aparência. 

Imagem 11 - Luminária OVNI com NodeMCU

Agora precisamos configurar o aplicativo Blynk para que você possa controlar sua luminária OVNI de onde quiser. Vamos lá?

BlueBox FilipeFlop

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.

Imagem 12 - Blynk

Imagem 13 - Blynk

Para criar um novo projeto clique no ícone New Project.

Imagem 14 - Blynk

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.

Imagem 15 - Blynk

O Auth Token será enviado para seu e-mail. Vamos usar esse número mais tarde, ok?

Imagem 16 - Blynk

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:

Imagem 17 - Blynk

Clique na tela e a janela Widget Box abrirá. Selecione Styled Button.

Imagem 18 - Blynk

O resultado será esse:

Imagem 19 - Blynk

Repita o processo mais três vezes. No final você terá uma tela parecida com a abaixo.

Imagem 20 - Blynk

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.

Imagem 21 - Blynk

Repita o procedimento para o segundo, terceiro e quarto botão. Eles estarão vinculados aos pinos D3, D4 e D5, respectivamente.

Imagem 22 - Blynk

Como dito anteriormente, os botões podem ser customizados. Você pode ver um exemplo de customização logo abaixo: 

Imagem 23 - Blynk

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.

Imagem 24 - Configurações da IDE do Arduino

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:

Imagem 25 - Configurações da IDE do Arduino

Clique em OK para retornar à tela principal da IDE.

Depois clique em Ferramentas -> Placa -> Gerenciador de Placas.

Imagem 26 - Configurações da IDE do Arduino

Na barra de busca digite esp8266. Aparecerá então esp8266 by ESP8266 Community. Clique em instalar.

Imagem 27 - Configurações da IDE do Arduino

Imagem 28 - Configurações da IDE do Arduino

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).

Imagem 29 - Configurações da IDE do Arduino

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. 

Imagem 30 - Carregando código para o NodeMCU

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.

Imagem 31 - Luminária OVNI com NodeMCU

A sua tela será parecida com a abaixo:

Imagem 32 - Luminária OVNI com NodeMCU

Clique no botão que desejar e veja as cores da sua luminária OVNI mudarem.

Imagem 33 - Luminária OVNI com NodeMCU

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.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Comentários

  1. 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.

  2. Ficou bacana, mas o legal é a oportunidade de conhecer um pouco da programação e do aplicativo. Parabéns