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