아두이노 나노 ESP32 - 문 열림 이메일 알림 | Arduino Nano ESP32 - Door Open Email Notification
이 가이드는 문이 열릴 때 이메일을 보낼 수 있도록 Arduino Nano ESP32를 설정하는 방범을 보여줄 것입니다. 필요한 구성 요소가 무엇인지, 그리고 이를 어떻게 설정하는지에 대해 논의하고, Arduino Nano ESP32를 문 센서와 이메일 서비스에 연결하는 단계별 지침을 제공할 것입니다. 이를 통해 문이 열릴 때마다 즉시 이메일 알림을 받을 수 있어 집안의 보안이 강화됩니다.
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
우리는 도어 센서와 Gmail에 대한 자세한 가이드를 제공합니다. 각 가이드는 하드웨어 설정 방법, 작동 원리 이해, Arduino Nano ESP32 연결 및 프로그래밍 방법에 대한 자세한 정보와 쉬운 단계별 지침을 제공합니다. 이 링크를 따라서 이 가이드에 대해 자세히 알아보세요.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
#include <WiFi.h>
#include <ESP_Mail_Client.h>
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"
#define SENDER_EMAIL "xxxxxx@gmail.com"
#define SENDER_PASSWORD "xxxx xxxx xxxx xxxx"
#define RECIPIENT_EMAIL "xxxxxx@gmail.com"
#define SMTP_HOST "smtp.gmail.com"
#define SMTP_PORT 587
#define DOOR_SENSOR_PIN D2
int door_state;
int prev_door_state;
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);
door_state = digitalRead(DOOR_SENSOR_PIN);
}
void loop() {
prev_door_state = door_state;
door_state = digitalRead(DOOR_SENSOR_PIN);
if (prev_door_state == LOW && door_state == HIGH) {
Serial.println("The door is opened");
String subject = "Email Notification from ESP32";
String textMsg = "This is an email sent from ESP32.\n";
textMsg += "Your door is opened";
gmail_send(subject, textMsg);
} else if (prev_door_state == HIGH && door_state == LOW) {
Serial.println("The door is closed");
}
}
void gmail_send(String subject, String textMsg) {
MailClient.networkReconnect(true);
smtp.debug(1);
smtp.callback(smtpCallback);
Session_Config 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;
SMTP_Message message;
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;
message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>"));
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.");
}
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());
}
void smtpCallback(SMTP_Status status) {
Serial.println(status.info());
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++) {
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");
smtp.sendingResult.clear();
}
}
Arduino Nano ESP32를 시작하는 방벜은 다음과 같습니다:
제공된 다이어그램에 따라 아두이노 나노 ESP32 보드를 문 센서에 연결하세요.
문 센서를 문에 부착하세요.
아두이노 나노 ESP32 보드를 USB 케이블을 사용하여 컴퓨터에 연결하세요.
컴퓨터에서 아두이노 IDE를 실행하세요.
Arduino Nano ESP32 보드와 해당하는 COM 포트를 선택하세요.
아두이노 IDE에서 왼쪽 메뉴의 Library Manager 아이콘을 클릭하여 열어주세요.
검색 박스에 ESP Mail Client를 입력하고 Mobizt의 ESP Mail Client를 찾으세요.
Install 버튼을 클릭하여 ESP Mail Client 라이브러리를 추가하세요.
제공된 코드를 복사하여 Arduino IDE에서 열어주세요.
코드에 WiFi 정보를 입력하세요. WIFI_SSID와 WIFI_PASSWORD를 여러분의 네트워크 이름과 비밀번호로 바꿔주세요.
코드에서 발신자의 이메일과 비밀번호를 변경하세요. SENDER_EMAIL과 SENDER_PASSWORD를 여러분의 이메일과 비밀번호로 바꿔주세요.
RECIPIENT_EMAIL을 메시지를 받고 싶은 이메일 주소로 업데이트하세요. 필요하다면 여러분의 이메일로 설정할 수 있습니다.
※ NOTE THAT:
발신자의 이메일이 Gmail에서 온 것인지 확인하세요. 이전에 받은 앱 비반번호를 발신자의 비밀번호로 사용하세요. 수신자의 이메일은 어떤 이메일 제공자에서도 올 수 있습니다.
The door is opened
#### 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
----------------
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.