Guia Prático: Autenticação Simples no Web Server ESP32
Controle de Portão Automático via ESP8266: Teoria e Prática
Controlar um portão automático via Wi-Fi com ESP8266 combina conveniência, segurança e integração IoTSistema de controle de luzes de Natal com ESP8266Descubra como automatizar e controlar luzes de Natal usando ESP8266, com Wi-Fi, programação avançada, e economia energética. Transforme sua decoração com IoT.. Este artigo unifica teoria e prática, desde a eletrônica de potência até a programação segura, abordando:
- Controle de motores CC/CA com relays e ESP8266
Sistema de automação residencial com ESP8266 e controle de luzesEste tutorial aborda a implementação de automação residencial com ESP8266, destacando segurança, eficiência energética, integração MQTT e interface web.
- Integração de sensores (obstáculos, posição, fim de curso)
- Desenvolvimento de interface web
Sistema de controle de persianas automatizadas com ESP8266Descubra como automatizar persianas com ESP8266 em um guia prático, unindo eficiência energética, segurança e integração IoT para automação da sua casa. e APIs robustas
- Estratégias avançadas de autenticação e criptografia
- Testes de carga e calibração de sensores
Detector de vazamento de gás com ESP8266Aprenda a montar e programar um sistema IoT de detecção de gás com ESP8266, sensores MQ, notificações e protocolos de segurança avançados.
Índice🔗
- Componentes e Especificações Técnicas
- Projeto de Hardware e Diagramas
- Programação do ESP8266
Monitor de nível de água com ESP8266 para reservatóriosAprenda a monitorar e gerenciar reservatórios com sensores, ESP8266 e integração IoT em aplicações agrícolas e residenciais, de forma prática e precisa.
- Integração de Sensores e Atuadores
- Segurança Física e Lógica
- Interface Web
Sistema de controle de persianas automatizadas com ESP8266Descubra como automatizar persianas com ESP8266 em um guia prático, unindo eficiência energética, segurança e integração IoT para automação da sua casa. e IoT
- Testes, Calibração e Conclusão
Componentes e Especificações Técnicas🔗
Componente | Função | Especificações |
---|---|---|
ESP8266 NodeMCU | Microcontrolador Wi-Fi | 80MHz, 4MB Flash, 802.11 b/g/n |
Relé de Estado Sólido | Controle do motor | 5V DC, 40A AC/DC, Isolamento óptico |
Sensor Hall | Detecção de posição do portão | Saída digital, 3.3V-5V, ±10mm |
Sensor IR TCRT5000 | Detecção de obstáculos | 20cm alcance, saída analógica |
Sensores Fim de Curso | Limites de abertura/fechamento | Interruptores mecânicos ou magnéticos |
Fonte Chaveada | Alimentação do sistema | 12V DC 5A + 5V DC 2A (isoladas) |
Protoboard e Cabos | Montagem do circuito | Compatível com ESP8266 e 12V |
Projeto de Hardware e Diagramas🔗
Teoria de Operação
Circuito de Controle para Motores de 220V AC
Cálculo de Potência do Motor:
- \( V \): Tensão (ex.: 220V)
- \( I \): Corrente nominal
- \( \cos(\phi) \): Fator de potência (0.8-0.9)
Programação do ESP8266🔗
Código Integrado (Controle Web + Sensores)
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WebSocketsServer.h>
ESP8266WebServer server(80);
WebSocketsServer webSocket = WebSocketsServer(81);
bool gateOpen = false;
const int relePin = D1, sensorHall = D2, sensorIR = A0, sensorAberto = D3, sensorFechado = D4;
void handleGateControl() {
if (server.hasArg("action")) {
String action = server.arg("action");
if (!server.authenticate("admin", "senhaSegura123")) {
return server.requestAuthentication();
}
if (action == "open" && digitalRead(sensorAberto) == LOW && !checkObstacle()) {
digitalWrite(relePin, HIGH);
gateOpen = true;
} else if (action == "close" && digitalRead(sensorFechado) == LOW) {
digitalWrite(relePin, LOW);
gateOpen = false;
}
server.send(200, "text/plain", "OK");
}
}
bool checkObstacle() {
return analogRead(sensorIR) < 500; // Calibrar conforme ambiente
}
void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
if (type == WStype_TEXT) {
if (strcmp((char*)payload, "status") == 0) {
String status = gateOpen ? "ABERTO" : "FECHADO";
webSocket.sendTXT(num, status);
}
}
}
void setup() {
pinMode(relePin, OUTPUT);
pinMode(sensorHall, INPUT);
pinMode(sensorIR, INPUT);
pinMode(sensorAberto, INPUT_PULLUP);
pinMode(sensorFechado, INPUT_PULLUP);
WiFi.begin("SUA_REDE", "SENHA");
while (WiFi.status() != WL_CONNECTED) delay(500);
server.on("/gate", handleGateControl);
server.begin();
webSocket.begin();
webSocket.onEvent(webSocketEvent);
}
void loop() {
server.handleClient();
webSocket.loop();
if (digitalRead(sensorAberto) && gateOpen) {
digitalWrite(relePin, LOW); // Parada de emergência
}
}
Integração de Sensores e Atuadores🔗
Estratégias de Controle
1. Sensor Hall para Posição:
- Usado para detectar movimento do portão via campo magnético.
- Fórmula de calibração:
2. Sensores Fim de Curso:
- Evitam sobrecarga mecânica. Implementar debouncing:
bool readSensor(int pin) {
delay(50);
return digitalRead(pin) == digitalRead(pin);
}
3. Sensor IR para Obstáculos:
- Detecta objetos até 20cm. Ajuste o limiar (
500
no código) via leitura analógica.
Segurança Física e Lógica🔗
Camadas de Proteção
Camada | Técnicas |
---|---|
Física | Isolamento óptico, fusíveis, fonte estável |
Rede | HTTPS, filtro MAC, MQTT com TLS |
Software | OAuth2, autenticação básica, validação de comandos |
Exemplo de Autenticação OAuth2 (Trecho):
// Adicione bibliotecas como <ESP8266HTTPClient.h> e <ArduinoJson.h>
void handleOAuth() {
String code = server.arg("code");
HTTPClient http;
http.begin("https://oauth.provider.com/token");
http.addHeader("Content-Type", "application/json");
String payload = "{\"code\":\"" + code + "\",\"client_id\":\"SEU_ID\"}";
int httpCode = http.POST(payload);
if (httpCode == 200) server.send(200, "text/plain", "Token válido");
else server.send(403, "text/plain", "Falha na autenticação");
}
Interface Web e IoT🔗
Dashboard com HTML5 + WebSockets
<div class="dashboard"> <button onclick="controlGate('open')">Abrir</button> <button onclick="controlGate('close')">Fechar</button> <div id="status">Portão: CARREGANDO...</div> <div id="obstaculo" style="color: red;"></div> </div> <script>
const ws = new WebSocket('ws://' + location.host + ':81'); ws.onmessage = (e) => { document.getElementById("status").innerHTML = `Portão: ${e.data}`; }; setInterval(() => ws.send("status"), 1000); function controlGate(action) { fetch('/gate?action=' + action, { headers: {'Authorization': 'Basic ' + btoa('admin:senhaSegura123')} }); }
</script>
Testes, Calibração e Conclusão🔗
Protocolo de Testes
1. Teste de Carga:
- 1.5x carga nominal por 10 ciclos. Monitorar temperatura do relé
Sistema de controle de bomba de água com ESP8266 para fontes decorativasAprenda a automatizar bombas de água usando ESP8266, com isolamento seguro, controle PID e integração IoT via web, MQTT e API para automação residencial. (<70°C).
- Ajuste do sensor Hall com multímetro e régua.
- Teste de obstáculos com objetos de 5cm a 20cm.
3. Teste de Segurança:
- Simular falha de energia durante operação.
- Testar autenticação com credenciais inválidas.
Conclusão
Controlar um portão via ESP8266 exemplifica a IoT aplicada à automação residencial, unindo hardware acessível a software robusto. Este guia integrou componentes críticos: sensores múltiplos, segurança em camadas e interface web responsiva. A implementação requer atenção à calibração, testes rigorosos e atualizações contínuas contra vulnerabilidades. Com essas práticas, o sistema não só oferece conveniência, mas também confiabilidade em longo prazo, sendo escalável para integração com assistentes de voz e plataformas IoTSistema de controle de luzes de Natal com ESP8266Descubra como automatizar e controlar luzes de Natal usando ESP8266, com Wi-Fi, programação avançada, e economia energética. Transforme sua decoração com IoT. complexas.
Nota: Todos os códigos e diagramas são ajustáveis conforme especificações do projeto. Sempre valide as conexões elétricas antes da energização.
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- Documentação Wiki do ESP8266: github.com/esp8266/esp8266-wiki/wiki
- ESP8266.com Community Forum: www.esp8266.com/viewforum.php?f=5
- GitHub - ESP8266 Community: github.com/esp8266/Arduino
- Random Nerd Tutorials: randomnerdtutorials.com/projects-esp8266/
- Site Oficial da Espressif: www.espressif.com/en/products/socs/esp8266