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 ESP8266Sistema 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:

Índice🔗

Componentes e Especificações Técnicas🔗

ComponenteFunçãoEspecificações
ESP8266 NodeMCUMicrocontrolador Wi-Fi80MHz, 4MB Flash, 802.11 b/g/n
Relé de Estado SólidoControle do motor5V DC, 40A AC/DC, Isolamento óptico
Sensor HallDetecção de posição do portãoSaída digital, 3.3V-5V, ±10mm
Sensor IR TCRT5000Detecção de obstáculos20cm alcance, saída analógica
Sensores Fim de CursoLimites de abertura/fechamentoInterruptores mecânicos ou magnéticos
Fonte ChaveadaAlimentação do sistema12V DC 5A + 5V DC 2A (isoladas)
Protoboard e CabosMontagem do circuitoCompatível com ESP8266 e 12V

Projeto de Hardware e Diagramas🔗

Teoria de Operação

graph TD A[ESP8266] -->|PWM| B[Relé] A -->|GPIO| C[Sensor Hall] A -->|ADC| D[Sensor IR] B --> E[Motor do Portão] C --> A D --> A F[App Mobile] -->|Wi-Fi| A G[Sensor Fim de Curso] -->|GPIO| A

Circuito de Controle para Motores de 220V AC

flowchart LR ESP8266 -->|D1| Optoacoplador --> SSR[Relé de Estado Sólido] SSR --> Motor Sensor_Hall -->|D2| ESP8266 Sensor_IR -->|A0| ESP8266 Sensor_FimCurso -->|D3| ESP8266 Fonte_12V --> SSR Fonte_5V --> ESP8266

Cálculo de Potência do Motor:

$$ P_{motor} = V \times I \times \cos(\phi) $$
  • \( 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:
$$ d = \frac{V_{out} - V_{min}}{V_{max} - V_{min}} \times range_{sensor} $$

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

CamadaTécnicas
FísicaIsolamento óptico, fusíveis, fonte estável
RedeHTTPS, filtro MAC, MQTT com TLS
SoftwareOAuth2, 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:

2. Calibração de SensoresDetector de vazamento de gás com ESP8266Detector 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.:

  • 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 ESP8266Sistema 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🔗

Compartilhar artigo

Artigos Relacionados