Faça sua Fita LED Smart com Alexa e ESP8266 4

Neste post você vai aprender a fazer uma fita de LED Smart com Alexa e ESP8266. Para isso, utilizaremos alguns componentes simples que você pode encontrar em nossa loja ou que talvez já tenha em casa, além do serviço gratuito de Internet das Coisas Sinric Pro.

Foto do Echo Dot com Alexa na cor cinza.
Amazon Echo Dot com Alexa

Materiais Necessários

Para montagem deste projeto precisaremos dos seguintes materiais:

1x Placa de Desenvolvimento ESP8266 ou ESP32, por exemplo Wemos D1 Mini
1x Fita de LED RGB 12V
1x Fonte 12V
1x Regulador 3.3V
3x Resistores 220 Ω
3x Transistores TIP122
1x Protoboard
1x Conector Jack P4 (opcional)
Jumpers

Configuração Sinric Pro

O primeiro passo para configurar o serviço Sinric Pro é acessar o site e criar uma conta. Feito isso, vá até a aba Devices no menu lateral e selecione +Add Device.

Imagem da tela do SinricPro na aba de cadastro de dispositivo
Sinric Pro – Cadastro de dispositivo

Digite o nome que deseja utilizar para a sua Fita de LED em Device Name e escreva uma breve descrição do dispositivo sobre Description e em Device Type selecione Smart Light Bulb. Finalize o processo de criação avançado pelas etapas apresentadas sem alterar nenhuma configuração até retornar a aba Devices. Nela você deve ver o seu novo dispositivo, anote a ID, conforme mostrado na imagem abaixo, para usar no código.

Imagem da tela do SinricPro na aba dispositivo cadastrados
Sinric Pro – Dispositivos cadastrados

Em seguida, vá para aba Credentials, copie o App Key e o App Secret para ser usado no código do ESP conforme a imagem.

Imagem da tela do SinricPro na aba de cadastro de credenciais
Sinric Pro – Cadastro de Credenciais

Configuração da Alexa

Para permitir o controle do dispositivo pela Alexa, acesse o app conectado à sua conta da Amazon e vincule a skill da Sinric Pro. Para isso, selecione a aba “mais” na barra inferior, clique em “skills e jogos” e procure por “Sinric Pro”. Depois, você só precisa vincular a sua conta fazendo login com os dados cadastrados no site da Sinric.

Tela do app Sinric Pro detalhe de vinculação com a Alexa para controle da Fita de LED Smart.
App Sinric Pro – Vinculação ao Alexa.

Circuito da Fita de LED Smart e ESP8266

A imagem acima mostra o esquema de conexão dos componentes, o positivo da fonte deve ser conectado diretamente no + da Fita de LED, o regulador de tensão deve ser conectado ao GND, no Positivo da fonte e sua saída no pino de 3.3V no ESP.

Esquema de conexão da fita de LED Smart com o módulo ESP8266.
Conexão do ESP8266 com a Fita de LED.

Posteriormente, os transistores devem ser conectados nos pinos digitais do ESP responsáveis por cada uma das cores disponíveis na Fita de LED conforme o esquema da imagem acima. Nesse projeto estamos usando o pino D0 para a cor azul, o D1 para o vermelho e D3 para o verde.

Ilustração do esquema de conexão dos transistores.
Conexão dos Transistores.

Código

Utilizaremos a biblioteca Sinric Pro, disponível no gerenciador de bibliotecas da IDE do Arduino. Vamos utilizar o código de exemplo RGB_LED_Strip_5050 fornecido pela Sinric. Ele pode ser encontrado na parte de exemplos da Arduino IDE ou pode ser copiado da área abaixo.

Para utilizá-lo basta substituir o nome e senha da sua rede WiFi, o App Key, App Secret e ID do dispositivo anotados durante a configuração da Sinric Pro e fazer upload do sketch para o ESP – funcionará tanto com o ESP8266 quanto com o ESP32.

//Configurações----------------------------------------------
#define WIFI_SSID         "insira-aqui-o-nome-do-seu-wifi"    
#define WIFI_PASS         "insira-aqui-a-senha-do-seu-wifi"
#define APP_KEY           "insira-aqui-seu-appkey"             
#define APP_SECRET        "insira-aqui-seu-appsecret"         
#define LIGHT_ID          "insira-aqui-seu-id"          

#define BLUE_PIN          D0                        
#define RED_PIN           D1                     
#define GREEN_PIN         D3  
//----------------------------------------------------------

#include <Arduino.h>
#ifdef ESP8266 
       #include <ESP8266WiFi.h>
#endif 
#ifdef ESP32   
       #include <WiFi.h>
#endif

#include "SinricPro.h"
#include "SinricProLight.h"                     

#define BAUD_RATE         9600                      

struct {                                            
  bool powerState = false;                         
  int brightness = 100;                             
  struct {
    byte r = 255;                                   
    byte g = 255;                                   
    byte b = 255;                                   
  } color;
} device_state; 

// setStripe: sets the mosfets values corresponding to values stored in device_state
void setStripe() {
  int rValue = map(device_state.color.r * device_state.brightness, 0, 255 * 100, 0, 1023);  
  int gValue = map(device_state.color.g * device_state.brightness, 0, 255 * 100, 0, 1023);  
  int bValue = map(device_state.color.b * device_state.brightness, 0, 255 * 100, 0, 1023);  

  if (device_state.powerState == false) {           
    digitalWrite(RED_PIN,   LOW);                  
    digitalWrite(GREEN_PIN, LOW);                   
    digitalWrite(BLUE_PIN,  LOW);                  
  } else {
    analogWrite(RED_PIN,   rValue);                
    analogWrite(GREEN_PIN, gValue);                 
    analogWrite(BLUE_PIN,  bValue);                
  }
}

bool onPowerState(const String &deviceId, bool &state) {
  device_state.powerState = state;                  
  setStripe();                                     
  return true;
}

bool onBrightness(const String &deviceId, int &brightness) {
  device_state.brightness = brightness;             
  setStripe();                                      
  return true;
}

bool onAdjustBrightness(const String &deviceId, int &brightnessDelta) {
  device_state.brightness += brightnessDelta;      
  brightnessDelta = device_state.brightness;        
  setStripe();                                      
  return true;
}

bool onColor(const String &deviceId, byte &r, byte &g, byte &b) {
  device_state.color.r = r;                         
  device_state.color.g = g;                         
  device_state.color.b = b;                         
  setStripe();                                      
  return true;
}

void setup() {
  pinMode(RED_PIN,   OUTPUT);                       // Pino para Vermelho como output
  pinMode(GREEN_PIN, OUTPUT);                       // Pino para Verde como output
  pinMode(BLUE_PIN,  OUTPUT);                       // Pino para Azul como output

  Serial.begin(BAUD_RATE);                          // Inicia Comunicação Serial

  WiFi.begin(WIFI_SSID, WIFI_PASS);                 // Conexão WiFi

  SinricProLight &myLight = SinricPro[LIGHT_ID];    // Cria dispositivo
  myLight.onPowerState(onPowerState);               // Funçao para liga-desliga
  myLight.onBrightness(onBrightness);               // Função para mudança de intensidade
  myLight.onAdjustBrightness(onAdjustBrightness);   // Função para ajuste de intensidade
  myLight.onColor(onColor);                         // Função para mudança de cor

  SinricPro.begin(APP_KEY, APP_SECRET);             // Inicia SinricPro 
}

void loop() {
  SinricPro.handle();                               // Cuida da Comunicação com a SinricPro
}

 

Utilização

Sucesso! Você já pode utilizar o seu assistente pessoal para controlar a sua Fita de LED SMART com Alexa e ESP8266 através de comandos de voz. Também é possível utilizar o aplicativo próprio da Sinric disponível para Android e iOS para controlar seus LEDs sem nenhuma configuração adicional.

Tela do Sinric Pro utilizado para controle de brilho da fita de LED Smart com Alexa e ESP8266
Controle de Brilho no app Sinric Pro.

Gostou de aprender a controlar sua Fita de LED através da Alexa?


Se você tiver dúvidas, sugestões ou experiências para compartilhar, fique a vontade para deixar um comentário abaixo. E para não perder nenhum conteúdo como este, não deixe de nos seguir no Instagram.

Faça seu comentário

Acesse sua conta e participe

4 Comentários

  1. Achei o projeto ótimo! Mas e se eu quiser adicionar mais 2 fitas de led em paralelo? Pq eu queria fazer uma em que o branco não viesse da fita rgb, e sim de uma fita de led branco mesmo, onde eu conseguisse controlar entre o branco quente e o branco frio. E aí, dá certo?

    1. Olá Felipe,

      Acredito que é possível sim, você precisaria acrescentar outros canais para o controle da Fita de LED branca, ou as fitas, dependendo de como for variado entre branco frio e branco quente.
      Também seria necessário fazer um dispositivo personalizado no sinric para descrever o funcionamento e os comandos que ele recebe.

      Abraços!
      Vinícius – Equipe MakerHero

  2. Olá, estou tendo problemas para conectar a minha placa Wemos ao servidor de banco de dados Mysql, já não sei mais onde buscar ajuda….
    O erro é o seguinte:

    Exception (28):
    epc1=0x40202704 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000049 depc=0x00000000

    1. Olá Joshua,

      Tente utilizar o exception decoder: https://github.com/me-no-dev/EspExceptionDecoder

      Ele deve te dar mais informações sobre o que está causando o erro.

      Abraços!
      Vinícius – Equipe MakerHero