아두이노 나노 ESP32 - 물 새는 것 이메일 알림 | Arduino Nano ESP32 - Water Leak Email Notification

이 가이드는 Arduino Nano ESP32를 사용하여 누수를 감지하고 즉시 이메일 경보를 보내는 방벗을 보여줄 것입니다. 센서를 설정하는 방법을 설명하고 코드 예를 제공하며 이메일 서비스와 연동하는 방법을 시연할 것입니다. 이는 집이나 사무실을 수해로부터 보호하는 데 유용하며 DIY 프로젝트를 좋아하고 누수 감지 시스템을 강화하고자 하는 사람들에게 이상적입니다.

아두이노 나노 ESP32 물 샘 이메일 알림

Hardware Preparation

1×Arduino Nano ESP32 Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×Water Leak Detector Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) DC Power Jack 쿠팡 | Amazon
1×(Recommended) Screw Terminal Expansion Board for Arduino Nano 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

워터 센서와 Gmail에 관하여

저햬는 워터 센서와 Gmail에 대한 명확한 가이드를 제공합니다. 각 가이드에는 하드웨어 설정, 작동 원리 이해, Arduino Nano ESP32의 연결 및 프로그래밍에 대한 자세한 지침과 간단한 단계가 포함되어 있습니다. 자세한 정보를 알고 싶으시면 이 링크들을 클릭해 주세요.

물 센서와 아두이노 나노 ESP32 간의 배선도

아두이노 나노 ESP32 물 센서 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

아두이노 나노 ESP32 코드

/* * 이 Arduino Nano ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-water-leak-email-notification */ #include <WiFi.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 WATER_SENSOR_PIN D4 // The Arduino Nano ESP32 pin D4 connected to water sensor's pin int water_state; // current state of water sensor int prev_water_state; // previous state of water 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(WATER_SENSOR_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode water_state = digitalRead(WATER_SENSOR_PIN); // read state } void loop() { prev_water_state = water_state; // save the last state water_state = digitalRead(WATER_SENSOR_PIN); // read new state if (prev_water_state == HIGH && water_state == LOW) { Serial.println("Water leakage is detected!"); String subject = "Email Notification from ESP32"; String textMsg = "This is an email sent from ESP32.\n"; textMsg += "Water leakage is detected"; 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.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(); } }

Detailed Instructions

Arduino Nano ESP32를 시작하려면 다음 단계를 따르십시오:

  • Arduino Nano ESP32를 처음 사용하는 경우, Arduino IDE에서 Arduino Nano ESP32 환경 설정 방법에 대한 튜토리얼을 참고하세요.
  • 제공된 다이어그램에 따라 수분 센서를 Arduino Nano ESP32 보드에 연결하세요.
  • USB 케이블을 사용하여 Arduino Nano ESP32 보드를 컴퓨터에 연결하세요.
  • 컴퓨터에서 Arduino IDE를 실행하세요.
  • Arduino Nano ESP32 보드와 해당 COM 포트를 선택하세요.
  • Arduino IDE의 왼쪽에 있는 Library Manager 아이콘을 클릭하여 라이브러리 관리자를 엽니다.
  • ESP Mail Client를 검색하고 Mobizt의 ESP Mail Client를 찾으세요.
  • Install 버튼을 클릭하여 ESP Mail Client 라이브러리를 가져오세요.
아두이노 나노 ESP32 ESP Mail Client 라이브러리
  • 제공된 코드를 복사하여 아두이노 IDE에 붙여넣으세요.
  • 코드에서 WIFI_SSIDWIFI_PASSWORD를 편집하여 WiFi 자격증명 정보를 변경하세요.
  • SENDER_EMAILSENDER_PASSWORD를 업데이트하여 발신자의 이메일과 비밀번호를 입력하세요.
  • RECIPIENT_EMAIL을 변경하여 코드 내 수신자의 이메일 주소를 편집하세요. 발신자의 이메일과 동일할 수 있습니다.

※ NOTE THAT:

  • 발신자의 이메일은 Gmail 계정이어야 합니다.
  • 이전 단과에서의 앱 비밀번호를 발신자의 비밀번호로 사용하세요.
  • 수신자의 이메일은 어떤 종류의 이메일이든 가능합니다.
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino Nano ESP32로 전송하세요.
  • 시리얼 모니터를 엽니다.
  • 물 센서에 물을 부으세요.
  • 시리얼 모니터에서 결과를 확인하세요.
COM6
Send
Water leakage is detected #### 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 Nano ESP32 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • 이메일 받은 편지함을 확인하세요. 이와 유사한 이메일을 받으셔야 합니다:
아두이노 나노 ESP32 수위 센서 이메일

Video Tutorial

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!