Arduino Thông báo qua email từ cảm biến chuyển động

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng một Arduino và một cảm biến chuyển động để gửi email khi có người vào phòng của bạn mà không được phép. Chúng tôi sẽ trình bày cách thiết lập mọi thứ, những gì bạn cần, và các hướng dẫn chi tiết về cách kết nối Arduino và cảm biến chuyển động với một hệ thống email. Nâng cao an ninh gia đình bằng cách nhận thông báo email ngay lập tức qua Arduino.

thông báo qua email từ cảm biến chuyển động Arduino

Phần cứng cần chuẩn bị

1×Arduino UNO R4 WiFi
1×Alternatively, DIYables STEM V4 IoT
1×(Tùy chọn) DIYables STEM V4 IoT
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×HC-SR501 Motion Sensor
1×Alternatively, AM312 Mini Motion Sensor
1×breadboard
1×dây jumper
1×(Tùy chọn) DC Power Jack
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4
1×(Khuyến nghị) Breadboard Shield for Arduino UNO R4
1×(Khuyến nghị) Enclosure for Arduino UNO R4
1×(Khuyến nghị) Power Splitter for Arduino UNO R4
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V4 IoT Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về cảm biến chuyển động và Gmail

Chúng tôi cung cấp các bài hướng dẫn chi tiết về Cảm biến chuyển động và Gmail. Mỗi hướng dẫn cung cấp đầy đủ thông tin và các bước dễ làm theo về việc thiết lập phần cứng, cách nó hoạt động, và cách kết nối và lập trình Arduino. Tìm hiểu thêm bằng cách truy cập các liên kết này:

Sơ đồ đấu dây giữa cảm biến chuyển động và Arduino

sơ đồ nối dây cảm biến chuyển động Arduino

This image is created using Fritzing. Click to enlarge image

Mã Arduino

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/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 pin int motion_state; // current state of motion sensor int prev_motion_state; // previous state of motion sensor SMTPSession smtp; void setup() { 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 } void loop() { prev_motion_state = motion_state; // save the last state motion_state = digitalRead(MOTION_SENSOR_PIN); // read new state if (prev_motion_state == LOW && motion_state == HIGH) { // state change: LOW -> HIGH Serial.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 option MailClient.networkReconnect(true); smtp.debug(1); smtp.callback(smtpCallback); Session_Config config; // set the session config config.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 server if (!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."); else Serial.println("Connected with no Auth."); } // start sending Email and close the session if (!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 status void smtpCallback(SMTP_Status status) { // print the current status Serial.println(status.info()); // print the sending result if (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"); else Serial.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 memory smtp.sendingResult.clear(); } }

Hướng dẫn từng bước

  • Nếu bạn đang sử dụng Arduino lần đầu tiên, hãy học cách thiết lập với Arduino IDE tại đây: Arduino - Cài đặt phần mềm.
  • Kết nối bảng Arduino với cảm biến chuyển động.
  • Kết nối bảng Arduino với máy tính của bạn bằng cáp micro USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn tùy chọn bảng Arduino đúng, ví dụ, Arduino Dev Module, và cổng COM.
  • Truy cập Trình quản lý thư viện bằng cách nhấp vào biểu tượng Trình quản lý thư viện ở phía bên trái của Arduino IDE.
  • Tìm kiếm "ESP Mail Client" và tìm phiên bản do Mobizt phát hành.
  • Nhấn nút Cài đặt để thêm thư viện ESP Mail Client.
thư viện Arduino esp mail client
  • Sao chép mã được cung cấp và mở nó bằng Arduino IDE.
  • Thay đổi thông tin WiFi (tên mạng và mật khẩu) trong mã bằng cách cập nhật WIFI_SSIDWIFI_PASSWORD với thông tin mạng của bạn.
  • Thay đổi email và mật khẩu của người gửi trong mã bằng cách cập nhật SENDER_EMAILSENDER_PASSWORD với thông tin email của bạn.
  • Thay đổi địa chỉ email người nhận trong mã bằng cách cập nhật RECIPIENT_EMAIL với địa chỉ email mà bạn muốn nhận tin nhắn. Điều này có thể giống với email của người gửi.

※ Lưu ý:

  • Email bạn dùng để gửi phải là Gmail.
  • Sử dụng mật khẩu ứng dụng mà bạn nhận được ở bước trước làm mật khẩu của người gửi.
  • Địa chỉ email bạn gửi đến có thể là bất kỳ địa chỉ email nào.
  • Nhấn nút Tải lên trong IDE Arduino để gửi mã đến Arduino.
  • Mở Serial Monitor.
  • Đứng trước cảm biến chuyển động.
  • Nhìn vào Serial Monitor để xem kết quả.
COM6
Send
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 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Xem hộp thư email của người mà bạn đã gửi nó tới. Họ sẽ nhận được một email tương tự như sau:
email của cảm biến chuyển động Arduino

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.