Arduino Gmail

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách thiết lập Arduino để gửi email bằng tài khoản Gmail của bạn. Email sẽ được gửi từ một tài khoản Gmail và có thể được nhận bởi bất kỳ tài khoản email nào.

Arduino gmail

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×(Tùy chọn) Breadboard
1×(Tùy chọn) Jumper Wires
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)

Chuẩn bị trước

Để sử dụng mã này, chúng ta cần một tài khoản Gmail và một mật khẩu ứng dụng đặc biệt. Dưới đây là những chi tiết quan trọng cần ghi nhớ:

  1. Hãy tạo một tài khoản Gmail mới chỉ để thử nghiệm, không phải tài khoản thông thường của bạn, để tránh gặp sự cố.
  2. Mật khẩu trong mã Arduino khác với mật khẩu đăng nhập Gmail của bạn. Bạn phải lấy một "Mật khẩu ứng dụng" từ Tài khoản Google của bạn bằng cách làm theo các bước cụ thể.

Dưới đây là các bước lần lượt:

bảo mật gmail
  1. Bật Xác thực hai yếu tố (Bạn phải kích hoạt Xác thực hai yếu tố để sử dụng mật khẩu ứng dụng).
  2. Hãy vào trang web Google App Passwords và tạo một mật khẩu ứng dụng. Bạn có thể chọn bất kỳ tên nào cho nó.
mật khẩu ứng dụng google
  • Nhấn nút Tạo. Bạn sẽ nhận được một mật khẩu gồm 16 chữ số và nó sẽ hiển thị như thế này:
mật khẩu ứng dụng gmail
  • Giữ lại và lưu số gồm 16 chữ số này. Bạn sẽ sử dụng nó trong mã Arduino ở bước tiếp theo.

※ Lưu ý:

Giao diện người dùng của Google có thể thay đổi. Nếu bạn không thể tìm thấy "Mật khẩu ứng dụng" bằng cách làm theo các bước ở trên, hãy tìm kiếm "Cách lấy mật khẩu ứng dụng Google" để tìm hướng dẫn cập nhật.

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-gmail */ #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 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(); String subject = "Email Notification from Arduino"; String textMsg = "This is an email sent from Arduino.\n"; textMsg += "Sensor value: "; textMsg += "15"; // OR replace this value read from a sensor gmail_send(subject, textMsg); } void loop() { // YOUR OTHER CODE HERE } 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 máy tính của bạn bằng 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ấp vào biểu tượng Library Manager ở bên trái của Arduino IDE.
  • Tìm kiếm ESP Mail Client và tìm ESP Mail Client của Mobizt.
  • Nhấp nút Install để cài đặt thư viện ESP Mail Client.
thư viện Arduino esp mail client
  • Sao chép mã ở trên và mở nó trong Arduino IDE.
  • Cập nhật thông tin WiFi của bạn bằng cách thay thế WIFI_SSIDWIFI_PASSWORD bằng SSID và mật khẩu của mạng WiFi của bạn.
  • Chỉnh sửa thông tin email trong mã bằng cách nhập địa chỉ email và mật khẩu của bạn vào SENDER_EMAILSENDER_PASSWORD.
  • Thay đổi địa chỉ email để nhận tin nhắn bằng cách cập nhật RECIPIENT_EMAIL sang email của bạn. Lưu ý: email người nhận có thể giống với email 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 cho người gửi là mật khẩu ứng dụng bạn đã nhận ở bước trước.
  • Địa chỉ email của người nhận có thể thuộc bất kỳ loại nào.
  • Nhấn nút Tải lên trong Arduino IDE để gửi mã đến Arduino.
  • Mở Serial Monitor.
  • Xem kết quả trên Serial Monitor.
COM6
Send
#### Message sent successfully > C: message 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 email của người bạn đã gửi email cho. Bạn sẽ nhận được một email như sau:
Arduino gửi email

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.