Olá, como estão? A princípio iremos realizar a integração entre o ESP8266 com Google Home juntamente com o Google Assistente.
Componentes Utilizados
- 1x Módulo WiFi ESP8266 (ESP-01)
- 1x Fonte 5V
- Jumpers
Funcionamento do Projeto ESP8266 com Google Home
Para realizar essa integração iremos utilizar o Sinric Pro para que dessa forma consigamos nos comunicar com o Google Home. Então para demonstrar essa integração iremos utilizar um ESP8266 (ESP-01) como microcontrolador e o Módulo Relé com suporte para ESP8266 para simplificar o uso do mesmo.
Montagem do Projeto ESP8266 com Google Home
Logo após compra dos componentes na WJ Componentes, vamos à montagem! Para realizar a montagem desse projeto primeiramente temos que saber como enviar o código para o ESP-01, caso não lembre clique aqui.
Então agora que já vimos como realizar a importação do código para o ESP8266 (ESP-01), iremos para a montagem do projeto, essa montagem é muito simples. Primeiramente iremos conectar o ESP8266 no módulo relé, após conectamos o VCC e GND da fonte nas entradas 5V e GND do módulo relé. Em seguida segue imagem do circuito eletrônico.
Código-fonte do Projeto ESP8266 com Google Home
Em seguida segue abaixo o código-fonte completo do projeto.
//Bibliotecas ----------------------------------------------------------------------------------------
#include <Arduino.h> // Responsável pelos comandos Arduíno
#include <ESP8266WiFi.h> // Responsável pelo WiFi
#include "SinricPro.h" // Responsável pelo Sinric
#include "SinricProSwitch.h" // Responsável pelo Switch
//WiFi -----------------------------------------------------------------------------------------------
const char* ssid = "<NOME DA SUA REDE>"; // Nome da rede wireless
const char* password = "<SENHA DA SUA REDE>"; // Senha da rede wireless
//Sinric ---------------------------------------------------------------------------------------------
#define APP_KEY "43fdc4cf-40b3-4b7c-8d18-d0ea31f73208" // Chave do APP
#define APP_SECRET "9ba45edc-5aa5-4023-836e-8ba38ca7a3ef-559812dd-5f53-43c3-88d5-81fe44bf61c9" //Senha
#define SWITCH_ID "61dd93d7b484c17bc5677626" // ID dos dispositivos
//Variáveis Globais e Definições ---------------------------------------------------------------------
bool myPowerState = false; // Variável de Controle
#define RELAY 0 // Define o pino 0
//Funções Auxiliares ---------------------------------------------------------------------------------
void setupWiFi(); // Responsável por configurar WiFi
void setupSinricPro(); // Responsável por configurar Sinric
bool onPowerState(const String &deviceId, bool &state); // Responsável por mudar estado
//Setup ----------------------------------------------------------------------------------------------
void setup() {
pinMode(RELAY, OUTPUT); // Configura o pino como OUTPUT
digitalWrite(RELAY, LOW); // Desliga o pino
setupWiFi(); // Chama função setupWiFi()
setupSinricPro(); // Chama função setupSinricPro()
}
//Loop -----------------------------------------------------------------------------------------------
void loop() {
SinricPro.handle(); // Verifica se teve alteração
}
//Config WiFi ----------------------------------------------------------------------------------------
void setupWiFi() {
WiFi.begin(ssid, password); // Inicializa WiFi
while (WiFi.status() != WL_CONNECTED) { // Loop até que esteja conectados
delay(250); // Espera 0,25s
}
}
//Setup Sinric ---------------------------------------------------------------------------------------
void setupSinricPro() {
SinricProSwitch& mySwitch = SinricPro[SWITCH_ID]; // Adiciona dispositivo SinricPro
mySwitch.onPowerState(onPowerState); // Define uma função para callback
//SinricPro.restoreDeviceStates(true); // Restaurar o último estado do servidor
SinricPro.begin(APP_KEY, APP_SECRET); // Inicializa o Sinric
}
//onPowerState ---------------------------------------------------------------------------------------
bool onPowerState(const String &deviceId, bool &state) {
myPowerState = state; // Atribui state a variável
digitalWrite(RELAY, myPowerState ? HIGH : LOW); // Liga ou Desliga o pino
return true; // Retornar pedido tratado corretamente
}
Vamos dar uma olhada mais de perto no código:
Incluindo Bibliotecas
Primeiramente temos que incluir as bibliotecas que usamos em nosso projeto.
//Bibliotecas ----------------------------------------------------------------------------------------
#include <Arduino.h> // Responsável pelos comandos Arduíno
#include <ESP8266WiFi.h> // Responsável pelo WiFi
#include "SinricPro.h" // Responsável pelo Sinric
#include "SinricProSwitch.h" // Responsável pelo Switch
Definições WiFi
Logo após definimos o nome, senha do WiFi e um objeto chamado server.
//WiFi -----------------------------------------------------------------------------------------------
const char* ssid = "<NOME DA SUA REDE>"; // Nome da rede wireless
const char* password = "<SENHA DA SUA REDE>"; // Senha da rede wireless
Configuração do Sinric
Em seguida definimos a chave do Sinric e senha do app, também definimos a id do switch, iremos abordar mais a frente como pegar essas chaves e ids.
//Sinric ---------------------------------------------------------------------------------------------
#define APP_KEY "43fdc4cf-40b3-4b7c-8d18-d0ea31f73208" // Chave do APP
#define APP_SECRET "9ba45edc-5aa5-4023-836e-8ba38ca7a3ef-559812dd-5f53-43c3-88d5-81fe44bf61c9" //Senha
#define SWITCH_ID "61dd93d7b484c17bc5677626" // ID dos dispositivos
Definições de Pinos e Variáveis Globais
Então declaramos também uma variável global de controle e definimos também o pino do relé.
//Variáveis Globais e Definições ---------------------------------------------------------------------
bool myPowerState = false; // Variável de Controle
#define RELAY 0 // Define o pino 0
Funções Auxiliares
Logo após declaramos mais 3 funções auxiliares, a primeira é responsável pela configuração o WiFi. Entretanto a segunda é responsável pela configuração do Sinric e a terceira é responsável por mudar o estado do relé.
//Funções Auxiliares ---------------------------------------------------------------------------------
void setupWiFi(); // Responsável por configurar WiFi
void setupSinricPro(); // Responsável por configurar Sinric
bool onPowerState(const String &deviceId, bool &state); // Responsável por mudar estado
Funções Setup
Em seguida na função setup, configuramos o pino do relé como OUTPUT e desligamos o pino, após chamamos a função setupWiFi e a função setupSinricPro.
//Setup ----------------------------------------------------------------------------------------------
void setup() {
pinMode(RELAY, OUTPUT); // Configura o pino como OUTPUT
digitalWrite(RELAY, LOW); // Desliga o pino
setupWiFi(); // Chama função setupWiFi()
setupSinricPro(); // Chama função setupSinricPro()
}
Funções Loop
Então agora na função loop, verificamos somente se teve alguma alteração no Sinric.
//Loop -----------------------------------------------------------------------------------------------
void loop() {
SinricPro.handle(); // Verifica se teve alteração
}
Função de Configuração de WiFi
Em seguida passamos para as funções auxiliares a primeira delas é a função setupWiFi, que é responsável por configurar o WiFi. Pois nela iremos inicializar o WiFi e criar um loop até que o dispositivo esteja conectado.
//Config WiFi ----------------------------------------------------------------------------------------
void setupWiFi() {
WiFi.begin(ssid, password); // Inicializa WiFi
while (WiFi.status() != WL_CONNECTED) { // Loop até que esteja conectados
delay(250); // Espera 0,25s
}
}
Função de Configuração do Sinric
Passando para a função setupSinricPro, é onde iremos realizar as configurações necessárias para que o Sinric funcione. Primeiramente inicializaremos um objeto do tipo SinricProSwitch com o nome mySwitch passando para a id do switch_id. Em seguida definimos um call-back (chamada de retorno) e inicializamos o Sinric.
//Setup Sinric ---------------------------------------------------------------------------------------
void setupSinricPro() {
SinricProSwitch& mySwitch = SinricPro[SWITCH_ID]; // Adiciona dispositivo SinricPro
mySwitch.onPowerState(onPowerState); // Define uma função para callback
//SinricPro.restoreDeviceStates(true); // Restaurar o último estado do servidor
SinricPro.begin(APP_KEY, APP_SECRET); // Inicializa o Sinric
}
Função Interruptor
Logo após vamos para a função onPowerState, é responsável por mudar o estado do relé, para isso atribuímos a myPowerState o state. Em seguida verificamos se myPowerState é igual a true então ligamos o relé. Então caso o contrário desligamos o relé e retornamos true sinalizando que o pedido foi tratado com sucesso.
//onPowerState ---------------------------------------------------------------------------------------
bool onPowerState(const String &deviceId, bool &state) {
myPowerState = state; // Atribui state a variável
digitalWrite(RELAY, myPowerState ? HIGH : LOW); // Liga ou Desliga o pino
return true; // Retornar pedido tratado corretamente
}
E assim finalizamos o código do ESP-01 (ESP8266).
Configurando do Sinric Pro para ESP8266 com Google Home
Então para obter as chaves e as ids dos Sinric precisamos realizar o registro no site Sinric Pro. Logo após para realizar o registro basta clicar no botão “Cadastre-se”.
Em seguida realize o seu registro preenchendo o formulário, após clique em “register” e confirme seu email.
Após isso você irá se deparar com seu painel administrativo, nesse painel clique em credenciais, no menu lateral esquerdo.
Na página credenciais, você pode adicionar uma nova chave API ou nova chave e senha do app. Logo após isso clicamos em dispositivos no menu lateral esquerdo.
Agora na página dispositivos clicamos em adicionar novo dispositivo.
Nessa página podemos dar um nome ao nosso dispositivo, descrição, tipo de dispositivo, chave de aplicação, cômodo, notificações, temporizador e consumo.
Após isso irá aparecer a id do dispositivo na página dispositivos.
Assim finalizamos a configuração do Sinric.
Obs.: O Sinric é gratuito por 10 anos ou até 3 dispositivos conectado após isso é necessário, assinar a licença.
Como Importar Arquivos para ESP32
Para realizar a configuração do Google home, primeiramente iremos precisar instalar o aplicativo. Após isso abrimos ele, no lado esquerdo superior clique em “+”, vá em configurar dispositivo, compatíveis com o Google e pesquise Sinric Pro e realize o login. Logo após isso já irá estar funcionando.
Obs.: Após a configuração do Google Home o Google Assistente também já estará configurado.
Resultado do Projeto ESP8266 com Google Home
Esse foi o resultado obtido com nosso projeto.
Agradecemos sua Presença
Por fim, espero que tenham gostado e aprendido. Compartilhe com seus colegas e deixe um comentário de qual projeto deveria ser o próximo aqui no Blog da WJ Componentes!!
Enfim estarei deixando o arquivo Arduíno, software e sites utilizados e deixarei os arquivos os Fritzing dos componentes.
Fique à vontade para tirar suas dúvidas nos comentários.
Software e Sites Utilizados
Fritzing dos Componentes
GitHub das Bibliotecas Utilizadas
Post Relacionados
Posts mais Recentes
- Programando Relé RF 4331 -Instruções de emparelhamento do modo de alternância Modo de… Leia mais: Programando Relé RF 433
- Acionando motor DC por meio do pino “Touch” do ESP-32Neste projeto, vamos explorar uma aplicação ainda mais dinâmica e… Leia mais: Acionando motor DC por meio do pino “Touch” do ESP-32
- Acendendo led RGB por meio do pino “Touch” do ESP-32No último post, exploramos o fascinante mundo dos pinos touch… Leia mais: Acendendo led RGB por meio do pino “Touch” do ESP-32
- Utilizando os Pinos touch do ESP32Nesse projeto Vamos aprender a usar os pinos touch´s do… Leia mais: Utilizando os Pinos touch do ESP32
- Como Programar e Localizar o Endereço de uma Tela OLED I2C com Arduinoeste guia, vou levá-lo através dos passos para programar uma… Leia mais: Como Programar e Localizar o Endereço de uma Tela OLED I2C com Arduino
Julio Cesar Bonow Manoel
Cursando Engenharia da Computação pelo Centro Universitário Facens e atua no desenvolvimento de projetos na WJ Componentes. Participante da equipe de robótica Omegabotz.
Deixe um comentário