Arduino Bảo Vệ Tài Sản Của Bạn: Phát Hiện Trộm Cắp và Gửi Cảnh Báo Qua Email

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách bảo vệ đồ đạc của mình bằng Arduino và một cảm biến lực. Các bước bao gồm cách thiết lập một hệ thống gửi cho bạn email cảnh báo nếu có người cố lấy đồ đạc của bạn. Chúng tôi sẽ giải thích cách thiết lập Arduino, kết nối cảm biến lực và lập trình để gửi cảnh báo qua email bằng Gmail. Bạn sẽ học cách làm mọi thứ theo từng bước và thấy nó có thể hữu ích như thế nào trong các tình huống thực tế.

thông báo qua email về phát hiện trộm 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×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 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 lực 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 lực và Gmail. Mỗi bài hướng dẫn cung cấp chi tiết đầy đủ và các chỉ dẫn từng bước về cách lắp đặt phần cứng, cách hoạt động của nó, và cách kết nối các dây với Arduino, bao gồm lập trình cho Arduino. Để biết thêm thông tin, hãy truy cập các liên kết sau:

Cách hệ thống phát hiện trộm hoạt động

Cảm biến lực kiểm tra trọng lượng của một vật khi bạn đặt lên cảm biến. Khi bạn đặt vật lên cảm biến, Arduino ghi lại trọng lượng của nó. Nếu vật bị loại bỏ, trọng lượng sẽ thay đổi. Arduino nhận thấy sự thay đổi này và gửi email cho bạn để 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à Arduino

sơ đồ kết nối cảm biến lực 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-secure-your-belongings-detect-theft-and-send-email-alerts */ #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 FORCE_SENSOR_PIN A0 // Arduino pin connected to the FSR and 10K pulldown #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 Arduino 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 Arduino"; String textMsg = "This is an email sent from Arduino.\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("Arduino"); 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: "); 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()); 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 đây là lần đầu bạn sử dụng Arduino Uno R4, hãy xem Cách bắt đầu với Arduino UNO R4.
  • Kết nối bo mạch Arduino với cảm biến lực.
  • Đặt các vật lên cảm biến lực.
  • Kết nối bo mạch Arduino với máy tính của bạn bằng một cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch Arduino phù hợp (Arduino Uno R4 WiFi) và cổng COM.
  • Mở Library Manager bằng cách nhấn vào biểu tượng Library Manager ở phía bên trái của Arduino IDE.
  • Tìm ESP Mail Client và chọn phiên bản do Mobizt phát triển.
  • 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ã nguồn và mở nó bằng Arduino IDE.
  • Cập nhật chi tiết WiFi của bạn (tên và mật khẩu) trong mã bằng cách chỉnh sửa WIFI_SSIDWIFI_PASSWORD.
  • Cập nhật email và mật khẩu của người gửi trong mã bằng cách chỉnh sửa SENDER_EMAILSENDER_PASSWORD.
  • Thay đổi 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 phải là tài khoản Gmail.
  • Mật khẩu của người gửi nên là mật khẩu ứng dụng bạn đã lấy ở bước trước.
  • Địa chỉ email của người nhận có thể đến từ bất kỳ nhà cung cấp email nào.
  • Nhấn nút Tải lên trong Arduino IDE để gửi mã đến Arduino.
  • Mở Serial Monitor.
  • Loại bỏ các mục từ cảm biến lực.
  • Xem 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 Arduino ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Kiểm tra hộp thư đến của người nhận. Bạn sẽ nhận được một email như thế này:
thông báo email về phát hiện trộm 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.