Introduction: ESP32 E Modulo De Reles 4 Canais
O objetivo do circuito é permitir o controle dos 4 relés, de maneira individual, a partir de um browser, sendo o acesso feito remotamente (via Web/Internet), com a utilização de Web Service.
Considerações:
- A utilização de leds e lâmpadas nas saídas dos relés tem o intuito de exemplificar, já que pode-se ligar quaisquer dispositivos nas mesmas, desde que respeitados os limites de tensão e corrente descritos na parte de cima dos relés.
- Os relés utilizados no projeto possuem tanto conexões NA (normalmente abertas) quanto NF (normalmente fechadas). No projeto utilizamos o estado inicial 'alto' para os relés NF, para que eles sejam acionados, abrindo a conexão. Para os relés NA, o estado inicial é 'baixo', mantendo a conexão aberta.
- A criação do Web Service não é escopo dessas instruções. Será fornecida a estrutura do payload para captura do estado dos relés, formato do endpoint para receber o IP atribuído à ESP32 e código em NodeJS como exemplo.
- O procedimento de gravação do código na placa ESP32 não será descrito nas instruções, há vários tutoriais na Internet que podem guiar o leitor corretamente.
Supplies
- 1 Módulo Wifi Bluetooth ESP32
- 1 Módulo Relé de 4 Canais - Optoacoplado
- 1 Led Azul ~3VCC
- 1 Led Verde ~3VCC
- 2 Lâmpadas de Led 127VCA
- 6 Jumpers Fêmea/Fêmea - Cores distintas
- Fonte CA - 127V
- Fonte CC - 3,3V
Step 1: Webservice
Seguem abaixo as informações para criação do Webservice.
Persistência
Pode-se utilizar um arquivo, um banco de dados NoSQL ou variáveis de ambiente para armazenar os valores dos estados dos relés.
Fornecimento dos Estados dos Relés
Abaixo o payload que o código da ESP32 espera em resposta à requisição do tipo HTTP GET, contendo os estados dos relés.
{
relay1: valor relé 1 (0 ou 1),
relay2: valor relé 2 (0 ou 1),
relay3: valor relé 3 (0 ou 1),
relay4: valor relé 4 (0 ou 1)
}
Sendo o valor = 1 para 'alto' e 0 para 'baixo'.
Ex.: { relay1: 1, relay2: 0, relay3: 1, relay4: 0 }
Recebimento do IP da ESP32
Na inicialização da ESP32, ela envia o valor do IP atribuído a ela para o webservice, através do parâmetro "ip", via HTTP POST.
Ex: http://meuServidor/esp32/ip?ip=192.168.1.23
No repositório do github, há um código em NodeJS como exemplo para ser usado em provedores de serviços, devendo ser criadas as seguintes variáveis de ambiente: relay1, relay2, relay3, relay4, ip.
Step 2: Aplicativo Web
Para o controle dos estados dos relés, pode-se utilizar um aplicativo web capaz de alterar os estados dos mesmos.
O aplicativo Web sugerido possui quatro elementos input, do tipo checkbox, formatados via css para se comportarem como sliders (chaves deslizantes). Cada chave é associada a um relé. A página possui alguns métodos em javascript responsáveis por enviar requisições ao webservice, para:
- Fazer a leitura do IP local associado à ESP32, via HTTP GET,
- Fazer a leitura dos estados dos relés, via HTTP GET. A leitura é feita a cada 5 segundos. As chaves são alteradas automaticamente, de acordo com os valores recebidos. Isso permite a atualização das chaves de todos os aplicativos em execução, refletindo sempre o estado real dos relés.
- Enviar os estados das chaves via HTTP POST. O envio é feito a cada alteração das chaves.
O código pode ser acessado aqui.
Step 3: Programação Da ESP32
O código de programação da ESP32 está aqui.
Os seguintes parâmetros devem ser atualizados no código:
- SSID1: SSID da primeira opção de rede WiFi
- PASSWORD1: Senha da primeira opção de rede WiFi
- SSID2: SSID da segunda opção de rede WiFi
- PASSWORD2: Senha da segunda opção de rede WiFi
- ENDDPOINT_STATUS_GET: Endpoint que envia de volta os estados dos relés
- ENDPOINT_IP_SET: Endpoint para o qual o IP atribuído deve ser enviado
As operações executadas pelo código são:
- Conectar-se à uma das duas redes Wi-FI fornecidas.
- Enviar o IP atribuído à ESP32 ao webservice, via HTTP POST.
- Consumir o serviço do webservice que retorna os estados dos relés, via HTTP GET, de 5 em 5 segundos.
- Atualizar o estado dos relés de acordo com o payload recebido em (3).
Comments