Alerta de Porta Aberta via Gmail com Arduino Uno – Guia para Iniciantes
Componentes Necessários
| Componente | Quantidade | Observações |
|---|---|---|
| Arduino UNO R3 | 1 | Placa principal |
| PHPoC Shield para Arduino | 1 | Conectividade Ethernet/WiFi + biblioteca de e-mail |
| Sensor Magnético (Reed Switch) – duas partes | 1 conjunto | Sensor + ímã para detecção de porta |
| Cabo Ethernet ou Dongle USB WiFi | 1 | Para conexão do PHPoC Shield |
| Jumpers e Protoboard (opcional) | Conforme necessário | Para conexões de teste |
Sobre o Projeto
Este tutorial ensina como detectar a abertura de uma porta e enviar uma notificação automática por e-mail (Gmail) usando Arduino Uno. Ideal para iniciantes, o projeto combina um sensor magnético simples com a capacidade de conectividade do PHPoC Shield para criar um sistema de alerta de segurança básico.
Detecção do Evento de Porta Aberta
O sensor magnético (reed switch) possui duas partes:
- Sensor (reed switch): contatos magnéticos selados em vidro
- Ímã: ativa o sensor quando próximo
Funcionamento:
- Porta fechada → sensor e ímã próximos → saída HIGH
- Porta aberta → sensor e ímã afastados → saída LOW
Instalação: fixe o sensor no batente da porta e o ímã na folha da porta (ou vice-versa), alinhados quando a porta está fechada. Conecte a saída do sensor ao pino A0 do Arduino (configurado como entrada digital com pull-up interno).
Tratamento do Evento
Quando a porta abre (transição HIGH→LOW no pino A0), o Arduino:
- Conecta ao servidor SMTP do Gmail (smtp.gmail.com:587)
- Autentica com credenciais da conta Google
- Envia e-mail para destinatário configurado
- Reporta sucesso/falha no Monitor Serial
Bibliotecas Necessárias
- PHPoC Library: gerencia comunicação com o shield, TCP/IP, SSL/TLS e protocolo SMTP
- ezButton Library: debounce e detecção de borda do sensor (instalar via Gerenciador de Bibliotecas)
Instalação PHPoC: Sketch → Incluir Biblioteca → Gerenciar Bibliotecas → "PHPoC" ou GitHub
Referências de Funções Utilizadas
setup(),loop()– estrutura básica ArduinoSerial.begin(),Serial.println()– debug via Monitor Serialdelay()– temporizaçãofor,while,if/else– controle de fluxoString.toInt()– conversão de string para inteiroezButton::loop(),isPressed(),isReleased()– gerenciamento do botão/sensorPhpocEmail– classe para envio de e-mail via SMTP
Esquemático de Ligação
Montagem do Hardware
- Encaixe o PHPoC Shield sobre o Arduino UNO
- Conecte cabo Ethernet no shield OU dongle USB WiFi na porta USB do shield
- Ligação do sensor magnético:
- Pino 1 (vermelho) → 5V do Arduino
- Pino 2 (preto) → Pino A0 do Arduino
- Opcional: resistor pull-down 10kΩ entre A0 e GND para estabilidade (o código usa pull-up interno)
Código Fonte
#include <Phpoc.h>
#include <ezButton.h>
PhpocEmail email;
ezButton button(A0); // Sensor no pino A0 com debounce
void setup() {
Serial.begin(9600);
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET | PF_LOG_APP);
// Phpoc.beginIP6(); // Descomente para IPv6
button.setDebounceTime(100); // 100ms debounce
}
void loop() {
button.loop(); // Obrigatório chamar primeiro
if (button.isPressed()) { // Porta aberta (transição para LOW)
// Configuração do e-mail
email.setOutgoingServer("smtp.gmail.com", 587);
email.setOutgoingLogin("SEU_GMAIL@gmail.com", "SUA_SENHA_APP");
email.setFrom("SEU_GMAIL@gmail.com", "Arduino Security");
email.setTo("DESTINATARIO@email.com", "Proprietário");
email.setSubject("Alerta: Porta Aberta! [#905]");
// Corpo do e-mail
email.beginMessage();
email.println("#905");
email.println("");
email.println("A porta foi aberta.");
email.endMessage();
// Envio
if (email.send() > 0) {
Serial.println("E-mail enviado com sucesso!");
} else {
Serial.println("Falha no envio do e-mail.");
}
}
else if (button.isReleased()) { // Porta fechada (transição para HIGH)
// Código similar para notificação de porta fechada
// email.setSubject("Porta Fechada");
// email.println("A porta foi fechada.");
// email.send();
}
}
Configuração Importante: Senha de App do Gmail
O Gmail não permite mais uso de senha principal em apps de terceiros. Você deve:
- Ativar Verificação em 2 etapas na conta Google
- Gerar Senha de App: Conta Google → Segurança → Senhas de app → "Mail" → "Dispositivo outro" → Gerar
- Usar essa senha de 16 caracteres no campo
setOutgoingLogin()
Como Funciona a Biblioteca PHPoC
O PHPoC Shield possui um interpretador PHP embutido e stack TCP/IP completa. A biblioteca Arduino (Phpoc.h) comunica-se via SPI com o shield, que por sua vez gerencia:
- Conexão Ethernet/WiFi (DHCP automático)
- Handshake TLS/SSL para SMTP seguro (porta 587 STARTTLS)
- Protocolo SMTP completo (AUTH LOGIN, MAIL FROM, RCPT TO, DATA)
- Buffer de rede e timeouts
Isso remove a complexidade de implementar TCP/SSL/SMTP no limitado Arduino Uno.
Teste e Validação
- Carregue o código no Arduino
- Abra o Monitor Serial (9600 baud)
- Aguarde mensagem "WiFi connected" ou "Ethernet connected"
- Abra a porta → deve aparecer "E-mail enviado com sucesso!"
- Verifique a caixa de entrada do destinatário (inclua spam)
Possíveis Problemas e Soluções
| Problema | Causa Provável | Solução |
|---|---|---|
| Falha na conexão WiFi | Credenciais incorretas / sinal fraco | Verifique SSID/senha; use cabo Ethernet para teste |
| Autenticação SMTP falha | Senha errada / 2FA não configurado | Use Senha de App; verifique 2FA ativo |
| E-mail não chega | Filtro de spam / limite de envio | Verifique pasta spam; Gmail limita ~500/dia |
| Sensor detecta falso positivo | Ruído elétrico / vibração | Aumente debounce para 200-500ms; adicione capacitor 0.1µF |
| PHPoC não inicia | Firmware desatualizado | Atualize firmware via exemplo WiFi101 → FirmwareUpdater |
Expansões Sugeridas
- Adicionar buzzer para alarme sonoro local
- Registrar timestamp em cartão SD (data/hora via NTP)
- Enviar notificação push via Telegram/IFTTT/Webhooks
- Múltiplos sensores (janelas, portas) com identificação por zona
- Interface web para armar/desarmar o sistema
- Integração com Home Assistant / MQTT
Processo de manufatura
- Sensor K30 CO₂: Monitoramento de Qualidade do Ar Interno em Tempo Real
- Construa um Estadiómetro Digital: Acompanhe a Altura com Arduino e Sensor a Laser
- Integrando Sensor de Impressão Digital Capacitivo DFRobot com Arduino ou ESP8266
- Construa uma Torre de Sensores com Arduino Cloud: Monitoramento de Temperatura, Movimento e Gás
- Pistola de Água Inteligente com Detecção de Movimento usando Arduino Nano
- Portão de Triagem de Temperatura Sem Contato para Monitoramento Rápido e Preciso
- Arduino UNO com Shield WiFi: Exibição de Temperatura em Tempo Real na Web via Serial
- Sistema Inteligente de Monitoramento de Temperatura para Escolas: Preciso, Tempo Real e Seguro
- Sistema Radar Compacto com Arduino Nano, Sensor HC-SR04 e Display 1.8"
- Chave LED por Toque Capacitivo com Arduino UNO – Projeto DIY Fácil