ESP8266 Bảo vệ tài sản của bạn: Phát hiện trộm và gửi cảnh báo qua email

Hướng dẫn này sẽ dạy bạn cách sử dụng ESP8266 và một cảm biến lực để bảo vệ các đồ vật của bạn. Chúng tôi sẽ chỉ cho bạn cách tạo một hệ thống gửi cho bạn một cảnh báo qua email khi ai đó cố gắng đánh cắp tài sản của bạn. Bạn sẽ học cách chuẩn bị ESP8266, kết nối cảm biến lực và thiết lập để gửi email qua Gmail. Chúng tôi sẽ cung cấp hướng dẫn từng bước và giải thích cách hệ thống này có thể hữu ích trong các tình huống thực tế.

phát hiện trộm ESP8266 NodeMCU và thông báo qua email

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

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
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×Force Sensor
1×10 kΩ Resistor
1×breadboard
1×dây jumper
1×(Tùy chọn) DC Power Jack
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Giới thiệu về Cảm biến lực và Gmail

Chúng tôi cung cấp các hướng dẫn rõ ràng về các cảm biến lực và Gmail. Mỗi bài hướng dẫn đi kèm đầy đủ các bước thiết lập phần cứng, cách chúng hoạt động và cách kết nối các dây với ESP8266, cùng với các bước lập trình. Để biết thêm chi tiết, hãy theo các liên kết này.

Hệ thống phát hiện trộm hoạt động như thế nào?

Khi bạn đặt một vật lên cảm biến lực, nó sẽ đo trọng lượng. Thiết bị ESP8266 ghi lại trọng lượng này. Nếu vật đó bị lấy đi, trọng lượng sẽ khác. ESP8266 phát hiện trọng lượng khác và gửi cho bạn một email để thông báo rằng vật của bạn đã bị di chuyển.

Sơ đồ nối dây giữa cảm biến lực và ESP8266

sơ đồ nối dây cảm biến lực ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Mã nguồn ESP8266

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-secure-your-belongings-detect-theft-and-send-email-alerts */ #include <ESP8266WiFi.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 FORCE_SENSOR_PIN A0 // ESP8266 pin A0 connected to the FSR with 10K pull-down resistor #define THRESHOLD 100 // may need to callibrate this value 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(DOOR_SENSOR_PIN, INPUT_PULLUP); // set ESP8266 pin to input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { int forceValue = analogRead(FORCE_SENSOR_PIN); if (forceValue < THRESHOLD) { Serial.println("Alert! Someone has stolen your stuff!"); String subject = "Email Notification from ESP8266"; String textMsg = "This is an email sent from ESP8266.\n"; textMsg += "Alert! Someone has stolen your stuff!"; 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("ESP8266"); 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.printf("Connection error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str()); 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.printf("Error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), 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()) { Serial.println("----------------"); Serial.printf("Email sent success: %d\n", status.completedCount()); Serial.printf("Email sent failed: %d\n", status.failedCount()); Serial.println("----------------\n"); for (size_t i = 0; i < smtp.sendingResult.size(); i++) { // get the result item SMTP_Result result = smtp.sendingResult.getItem(i); Serial.printf("Message No: %d\n", i + 1); Serial.printf("Status: %s\n", result.completed ? "success" : "failed"); Serial.printf("Date/Time: %s\n", MailClient.Time.getDateTimeString(result.timestamp, "%B %d, %Y %H:%M:%S").c_str()); Serial.printf("Recipient: %s\n", result.recipients.c_str()); Serial.printf("Subject: %s\n", result.subject.c_str()); } Serial.println("----------------\n"); // free the memory smtp.sendingResult.clear(); } }

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

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu tiên bạn sử dụng ESP8266.
  • Kết nối bo mạch ESP8266 của bạn với cảm biến lực như được thể hiện trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng một cáp USB.
  • Đặt những vật bạn muốn bảo vệ lên cảm biến lực.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Nhấp vào biểu tượng Library Manager ở phía bên trái của Arduino IDE để mở Library Manager.
  • Tìm kiếm ESP Mail Client và chọn thư viện do Mobizt tạo ra.
  • Nhấp vào nút Install để cài đặt thư viện ESP Mail Client.
thư viện esp mail client cho ESP8266 NodeMCU
  • Sao chép mã và mở nó trong phần mềm Arduino IDE.
  • Nhập tên WiFi và mật khẩu của bạn vào mã bằng cách chỉnh sửa WIFI_SSIDWIFI_PASSWORD.
  • Nhập email và mật khẩu của người gửi vào mã bằng cách chỉnh sửa SENDER_EMAILSENDER_PASSWORD.
  • Thay thế email của người nhận trong mã bằng cách chỉnh sửa RECIPIENT_EMAIL. Email của người nhận có thể giống với email của người gửi.

※ Lưu ý:

  • Địa chỉ email của người gửi nên là từ Gmail.
  • Mật khẩu cho người gửi nên là mật khẩu ứng dụng mà bạn đã có trước đây.
  • Địa chỉ email của người nhận có thể thuộc bất kỳ dịch vụ email nào.
  • Nhấn nút Tải lên trong Arduino IDE để truyền mã tới ESP8266.
  • Mở Serial Monitor.
  • Tháo vật thể của bạn ra khỏi cảm biến lực.
  • Kiểm tra kết quả trên Serial Monitor.
COM6
Send
Alert! Someone has stolen your stuff! #### 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 ESP8266 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Kiểm tra hộp thư đến của bạn. Bạn sẽ thấy một email như thế này:
email cảnh báo phát hiện trộm cho ESP8266 NodeMCU

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.