Controle um Relé com ESP32 ou ESP8266 usando Alexa e Google Home (Tutorial de Interruptor Parte 1)
Nesta seção vamos criar um Interruptor Sinric Pro para ESP32, ESP8266 ou Raspberry Pi Zero W e depois controlar via Alexa, Google Home ou SmartThings.
Pré-requisitos:
- ESP32, ESP8266 ou RaspPi W x 1.
- Controlador de relé SPDT x 1.
- Cabos jumper.

Introdução rápida ao Relé
Um relé é um interruptor operado eletricamente que pode ser ligado ou desligado por um sinal de baixa tensão. É como um interruptor regular no sentido de que permite que a corrente flua ou não, mas pode ser controlado por uma tensão muito menor. Isso torna os relés ideais para MCUs onde é necessário controlar um circuito de alta tensão com um sinal de baixa tensão.
Como funciona
A operação de um relé pode variar dependendo do fabricante, da fiação e do tipo de controlador de relé sendo usado. Alguns controladores de relé requerem um sinal de alto nível do MCU para ativar o relé, enquanto outros requerem um sinal de baixo nível. É importante verificar as especificações do controlador de relé antes de usá-lo para garantir que seja compatível com seu MCU.
Sinal de alto nível: Um sinal de alto nível é um sinal que está acima de um certo limite de tensão. Por exemplo, um controlador de relé de 5V pode requerer um sinal que esteja acima de 3,3V para ativar o relé.
digitalWrite(pin, HIGH);
Sinal de baixo nível: Um sinal de baixo nível é um sinal que está abaixo de um certo limite de tensão. Por exemplo, um controlador de relé de 5V pode requerer um sinal que esteja abaixo de 0,8V para ativar o relé.
digitalWrite(pin, LOW);
Conectores de Alta Tensão

O módulo relé acima tem um único conector com três soquetes: Comum (COM), Normalmente Fechado (NC), e Normalmente Aberto (NO).
Comum (COM): COM é a conexão comum para ambos os pinos NO e NC. Conecte o dispositivo de alta tensão ao pino COM.
Normalmente Fechado (NC): O circuito está fechado por padrão.
Normalmente Aberto (NO): O circuito está aberto por padrão.
Os contatos normalmente aberto (NO) e normalmente fechado (NC) permitem que você use um pino para controlar dois circuitos separados dependendo de seus requisitos. Por exemplo, você poderia usar um pino para controlar a energia de uma lâmpada e outro pino para controlar a energia de um motor. Quando o pino estiver alto/baixo, a lâmpada acenderá, caso contrário o motor ligará.
Fiação


| MCU | Pino |
|---|---|
| ESP32 | 16 |
| ESP8266 | 12 (D6) |
| RaspPi W | 6 |
Antes de integrarmos com Sinric Pro, é importante verificar se o relé está conectado corretamente. Você pode usar o seguinte código para verificar se o relé liga e desliga a cada 5 segundos.
#if defined(ESP8266)
#define relay 12
#elif defined(ESP32)
#define relay 16
#elif (ARDUINO_ARCH_RP2040)
#define relay 6
#endif
void setup() {
Serial.begin(115200);
pinMode(relay, OUTPUT);
}
void loop() {
Serial.println("Writing HIGH ..");
digitalWrite(relay, HIGH);
delay(5000);
Serial.println("Writing LOW ..");
digitalWrite(relay, LOW);
delay(5000);
}
Passo 1: Criar um novo dispositivo no Sinric Pro
- Faça login na sua conta Sinric Pro, vá ao menu Dispositivos à esquerda e clique no botão Adicionar Dispositivo (no canto superior esquerdo).
- Digite o nome do dispositivo Interruptor, descrição Meu Primeiro Interruptor e selecione o tipo de dispositivo como Switch.

- Clique em Próximo na aba Notificações

Para receber notificações push quando seu dispositivo ficar online ou offline, habilite a opção “Conectar e Desconectar” no aplicativo Sinric Pro. Para receber notificações push quando seu dispositivo ligar ou desligar, habilite a opção “Ligar e Desligar”.
-
Clique em Outros e Clique em Salvar
-
A próxima tela mostrará as credenciais necessárias para conectar o dispositivo que você acabou de criar.

- Copie o ID do Dispositivo, Chave do App e Segredo do App Mantenha esses valores seguros. NÃO OS COMPARTILHE EM FÓRUNS PÚBLICOS!
Passo 2: Programação
2.1 Instalar a Biblioteca Sinric Pro

Você pode gerar o código usando o recurso Zero Code ou escrevê-lo você mesmo. Se você não tem experiência em programação, recomendamos usar o recurso Zero Code no Portal para gerar o código, baixar e carregar.
2.2 Código Completo
#include <Arduino.h>
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#elif defined(ESP32) || defined(ARDUINO_ARCH_RP2040)
#include <WiFi.h>
#endif
#include "SinricPro.h"
#include "SinricProSwitch.h"
#define WIFI_SSID "" // Change WIFI_SSID to your WiFi Name.
#define WIFI_PASS "" // Change WIFI_PASS to your WiFi password.
#define APP_KEY "" // Paste App Key from above
#define APP_SECRET "" // Paste App Secret from above
#define SWITCH_ID_1 "" // Paste Device Id from above
#if defined(ESP8266)
#define RELAYPIN_1 12
#elif defined(ESP32)
#define RELAYPIN_1 16
#elif (ARDUINO_ARCH_RP2040)
#define RELAYPIN_1 6
#endif
#define BAUD_RATE 115200 // Change baudrate to your need
bool onPowerState1(const String &deviceId, bool &state) {
Serial.printf("Device 1 turned %s", state?"on":"off");
digitalWrite(RELAYPIN_1, state ? HIGH:LOW);
/* If your relay is activated with low signal, change the above to below code
digitalWrite(RELAYPIN_1, state ? LOW : HIGH); */
return true; // request handled properly
}
// setup function for WiFi connection
void setupWiFi() {
Serial.printf("\r\n[Wifi]: Connecting");
#if defined(ESP8266)
WiFi.setSleepMode(WIFI_NONE_SLEEP);
WiFi.setAutoReconnect(true);
#elif defined(ESP32)
WiFi.setSleep(false);
WiFi.setAutoReconnect(true);
#endif
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
Serial.printf(".");
delay(250);
}
Serial.printf("connected!\r\n[WiFi]: IP-Address is %s\r\n", WiFi.localIP().toString().c_str());
}
// setup function for SinricPro
void setupSinricPro() {
// add devices and callbacks to SinricPro
pinMode(RELAYPIN_1, OUTPUT);
SinricProSwitch& mySwitch1 = SinricPro[SWITCH_ID_1];
mySwitch1.onPowerState(onPowerState1);
// setup SinricPro
SinricPro.onConnected([](){ Serial.printf("Connected to SinricPro\r\n"); });
SinricPro.onDisconnected([](){ Serial.printf("Disconnected from SinricPro\r\n"); });
SinricPro.begin(APP_KEY, APP_SECRET);
}
// main setup function
void setup() {
Serial.begin(BAUD_RATE); Serial.printf("\r\n\r\n");
setupWiFi();
setupSinricPro();
}
void loop() {
SinricPro.handle();
}
Agora você deve conseguir controlar o relé via Portal como no vídeo abaixo.
Passo 3: Vincular a Skill Sinric Pro da Alexa com sua conta.
|
• Abra seu aplicativo Amazon Alexa. • Vá para Skills & Games. • Pesquise por Sinric Pro. • Clique em ATIVAR PARA USAR. • Digite suas credenciais do Sinric Pro na página de vinculação. • Peça à Alexa para descobrir novos dispositivos. • Peça à Alexa para ligar o Interruptor |
Passo 4: Vincular a ação Sinric Pro do Google Home com sua conta.
|
• Abra o Google Home e clique em Adicionar. • Selecione Configurar Dispositivo • Selecione Funciona com Google Home • Pesquise por Sinric Pro. • Vincule sua conta. • Descubra novos dispositivos • Peça ao Google Home para ligar o Interruptor |
Passo 5: Vincular Sinric Pro SmartThings com sua conta.
|
• Abra o aplicativo SmartThings e toque no ícone + • Selecione Dispositivo • Selecione Sinric Pro em Por Marca • Vincule sua conta. • Agora você pode ligar ou desligar o Interruptor a partir do painel |
Continue para a Parte 2 desta série de artigos para aprender como adicionar um botão para alternar o relé.
Solução de Problemas
Consulte nossa página de Solução de Problemas para possíveis soluções para seu problema.
Este documento é código aberto. Viu um erro de digitação? Por favor, crie uma issue