Arduino - Notificação por E-mail com Sensor de Movimento
Neste guia, vamos mostrar como usar um Arduino e um sensor de movimento para enviar e-mails quando alguém entrar no seu quarto sem permissão. Vamos explicar como montar tudo, do que você precisa, e dar instruções detalhadas para conectar um Arduino e um sensor de movimento a um sistema de e-mail. Melhore a segurança da sua casa recebendo notificações instantâneas por e-mail através do Arduino.
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Sobre o Sensor de Movimento e o Gmail
Oferecemos guias detalhados sobre o Sensor de Movimento e o Gmail. Cada guia traz informações completas e passos fáceis de seguir sobre a configuração do hardware, como ele funciona e como conectar e programar o Arduino. Saiba mais acessando estes links:
Diagrama de Ligação entre o Sensor de Movimento e o Arduino
This image is created using Fritzing. Click to enlarge image
Código Arduino
/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-motion-sensor-email-notification*/#include <WiFiS3.h>#include <ESP_Mail_Client.h>#define WIFI_SSID "YOUR_WIFI_SSID"// CHANGE IT#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"// CHANGE IT// the sender email credentials#define SENDER_EMAIL "xxxxxx@gmail.com"// CHANGE IT#define SENDER_PASSWORD "xxxx xxxx xxxx xxxx"// CHANGE IT to your Google App password#define RECIPIENT_EMAIL "xxxxxx@gmail.com"// CHANGE IT#define SMTP_HOST "smtp.gmail.com"#define SMTP_PORT 587#define MOTION_SENSOR_PIN 2 // Arduino pin connected to motion sensor's pinint motion_state; // current state of motion sensorint prev_motion_state; // previous state of motion sensorSMTPSessionsmtp;voidsetup() {Serial.begin(9600);WiFi.begin(WIFI_SSID, WIFI_PASSWORD);Serial.print("Connecting to Wi-Fi");while (WiFi.status() != WL_CONNECTED) {Serial.print(".");delay(300); }Serial.println();Serial.print("Connected with IP: ");Serial.println(WiFi.localIP());Serial.println();pinMode(MOTION_SENSOR_PIN, INPUT); motion_state = digitalRead(MOTION_SENSOR_PIN); // read state}voidloop() { prev_motion_state = motion_state; // save the last state motion_state = digitalRead(MOTION_SENSOR_PIN); // read new stateif (prev_motion_state == LOW && motion_state == HIGH) { // state change: LOW -> HIGHSerial.println("Motion detected! Someone is in your room!");String subject = "Email Notification from ESP32";String textMsg = "This is an email sent from ESP32.\n"; textMsg += "Motion detected! Someone is in your room!"; gmail_send(subject, textMsg); }}void gmail_send(String subject, String textMsg) {// set the network reconnection optionMailClient.networkReconnect(true);smtp.debug(1);smtp.callback(smtpCallback); Session_Config config;// set the session configconfig.server.host_name = SMTP_HOST;config.server.port = SMTP_PORT;config.login.email = SENDER_EMAIL;config.login.password = SENDER_PASSWORD;config.login.user_domain = F("127.0.0.1");config.time.ntp_server = F("pool.ntp.org,time.nist.gov");config.time.gmt_offset = 3;config.time.day_light_offset = 0;// declare the message class SMTP_Message message;// set the message headers message.sender.name = F("ESP32"); message.sender.email = SENDER_EMAIL; message.subject = subject; message.addRecipient(F("To Whom It May Concern"), RECIPIENT_EMAIL); message.text.content = textMsg; message.text.transfer_encoding = "base64"; message.text.charSet = F("utf-8"); message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_low;// set the custom message header message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>"));// connect to the serverif (!smtp.connect(&config)) {Serial.println("Connection error");return; }if (!smtp.isLoggedIn()) {Serial.println("Not yet logged in."); } else {if (smtp.isAuthenticated())Serial.println("Successfully logged in.");elseSerial.println("Connected with no Auth."); }// start sending Email and close the sessionif (!MailClient.sendMail(&smtp, &message)) {Serial.println("Connection error: ");Serial.print("- Status Code: ");Serial.println(smtp.statusCode());Serial.print("- Error Code: ");Serial.println(smtp.errorCode());Serial.print("- Reason: ");Serial.println(smtp.errorReason().c_str()); }}// callback function to get the Email sending statusvoid smtpCallback(SMTP_Status status) {// print the current statusSerial.println(status.info());// print the sending resultif (status.success()) {for (size_t i = 0; i < smtp.sendingResult.size(); i++) {// get the result item SMTP_Result result = smtp.sendingResult.getItem(i);Serial.print("Status: ");if (result.completed)Serial.println("success");elseSerial.println("failed");Serial.print("Recipient: ");Serial.println(result.recipients.c_str());Serial.print("Subject: ");Serial.println(result.subject.c_str()); }Serial.println("----------------\n");// free the memorysmtp.sendingResult.clear(); }}
Conecte a placa Arduino ao seu computador usando um cabo USB Type-C.
Abra a Arduino IDE no seu computador.
Escolha a opção de placa Arduino correta, por exemplo, Arduino Uno R4 WiFi, e a porta COM.
Acesse o Library Manager clicando no ícone Library Manager no lado esquerdo da Arduino IDE.
Procure por "ESP Mail Client" e encontre a versão da Mobizt.
Pressione o botão Install para adicionar a biblioteca ESP Mail Client.
Copie o código fornecido e abra-o na Arduino IDE.
Altere os dados do WiFi (nome da rede e senha) no código, atualizando WIFI_SSID e WIFI_PASSWORD com as informações da sua rede.
Altere o e-mail e a senha do remetente no código, atualizando SENDER_EMAIL e SENDER_PASSWORD com os dados do seu e-mail.
Altere o e-mail do destinatário no código, atualizando RECIPIENT_EMAIL com o endereço de e-mail onde você quer receber as mensagens. Ele pode ser o mesmo e-mail do remetente.
※ Nota:
O e-mail que você usa para enviar deve ser um Gmail.
Use a Senha de app que você recebeu no passo anterior como senha do remetente.
O endereço de e-mail para o qual você está enviando pode ser de qualquer tipo.
Pressione o botão Upload na Arduino IDE para enviar o código para o Arduino.
Abra o Serial Monitor.
Movimente-se na frente do sensor de movimento.
Olhe o Serial Monitor para ver os resultados.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Motion detected! Someone is in your room!
#### Email sent successfully
> C: Email sent successfully
----------------
Message sent success: 1
Message sent failed: 0
----------------
Message No: 1
Status: success
Date/Time: May 27, 2024 04:42:50
Recipient: xxxxxx@gmail.com
Subject: Email Notification from Arduino
----------------
Ln 11, Col 1
Arduino Uno on COM15
2
Verifique a caixa de entrada da pessoa para quem você enviou. Ela receberá um e-mail parecido com o seguinte:
Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!