در دنیای مدرن شبکههای اجتماعی گوناگون شاید به ظاهر نقش ایمیل یا همان پست الکترونیکی کمی کمرنگ شده باشد. اما در سادهترین مثال، برای ساخت حساب کاربری و یا پشتیبانی آن در تقریبا تمام رسانههای اجتماعی به ایمیل نیاز خواهید داشت. دلیل این موضوع امنیت فوق العاده بالای سرورهای ایمیل مخصوصا سرور جیمیل میباشد. حالا فرض کنید، سیستمی داشته باشید که موارد مهم و ضروری و حتی محرمانه! را بتواند از طریق ایمیل به صورت خودکار به شما اطلاع دهد. در این آموزش قصد دارم به نحوه ارسال ایمیل در سرویس گوگل یا همان جیمیل به کمک ماژول ESP بپردازم. در این روش با استفاده از یک سنسور PIR کلیه حرکات را در مکانی که حضور ندارید، رصد کرده و از طریق ایمیل به شما اطلاع دهد. در ادامه این آموزش با مرجع تخصصی آموزشهای DIY به زبان فارسی، دیجی اسپارک همراه باشید.
تنظیمات ماژول ESP8266
آخرین هسته مربوط به ESP8266 که در محیط آردوینو نصب میشود؛ در هنگام تالیف این آموزش نسخه ۲٫۵٫۲ میباشد. در صفحه توضیحات نویسنده کتابخانه بدون ذکر دلیل نوشته شده که این کتابخانه با این نسخه از هسته کار نمیکند و باید از هسته های نسخه ۲٫۳ و ماقبل استفاده کنید. قدم بعدی اضافه کردن کتابخانه است. فایل فشرده زیر را دانلود کنید و پس از ذخیره از منوی Sketch گزینه Include Library و سپس Add .ZIP library را انتخاب کنید. در اینجا به محل دانلود کتبخانه رجوع کنید و فایل فشرده آن را انتخاب کنید. پس از چند ثانیه کتابخانه به لیست کتابخانه های شما اضافه میشود.
اتصالت برد Nodemcu
در این پروژه از یک سنسور تشخیص حرکت PIR استفاده کردهایم. اتصالات مورد نیاز به سه بخش تقسیم میشوند. پایه GND ماژول به برد Nodemcu و پایه VCC به پایه ۳٫۳V برد Nodemcu متصل کنید. سپس پایه سیگنال ماژول PIR را به پایه D2 برد Nodemcu متصل کنید. مانند تصویر زیر
ایجاد حساب کاربری در Gmail
در ابتدا لازم است یک اکانت یا حساب کاربری جیمیل بسازید. اگر در حال حاضر یک اکانت دارید تنها نیاز است در قسمت تنظیمات اکانت تغییراتی ایجاد کنید. توجه: تغییراتی که قرار است روی اکانت جیمیل ایجاد کنید ممکن است سطح امنیتی اکانت را پایین بیاورد پس توصیه میشود که یک اکانت جداگانه برای این پروژه بسازید. برای ارسال و دریافت ایمیل با ماژول ESP از SMTP استفاده میکنیم.
آشنایی با SMTP در ایمیل
کلمه SMTP مخفف Simple Mail Transfer Protocol میباشد. به معنی پروتکل انتقال ساده، در این پروتکل شما برای ارسال یک ایمیل تنها به آدرس ایمیل و گذرواژه نیاز دارید. گوگل در حالت پیش فرض جهت شناسایی از پروتکلهای پیچیدهتری برای افزایش امنیت استفاده میکند. باید در ابتدا این تنظیمات را تغییر دهیم. برای این کار به Google Account Settings رفته و گزینه Allow less secure apps را انتخاب کنید. اکنون اکانت شما آماده است. برنامه: تصور این است که هسته مربوط به ESP8266 را به محیط کدنویسی آردوینو اضافه کردهاید.
کتابخانه ارسال ایمیل ماژول ESP
با اضافه کردن کتابخانههای لازم شروع میکنیم. در این پروژه از کتابخانه ESP8266WiFi.h و ESP8266SMTP.h استفاده کردهام. بایستی هر دو کتابخانه در مخازن کامپیوتر شما موجود باشند. اگر روش نصب کتابخانه را نمیدانید به آموزش نصب کتابخانه در آردوینو مراجعه کنید. پس از اقدام به نصب این کتابخانهها بایستی کدهای نرم افزار را آپلود کنید. سپس نام و پسوورد مودم را برای اتصال به اینترنت تعریف میکنیم. به دو خط زیر دقت کنید.
const char* ssid = "MODEM_NAME"; const char* password = "MODEM_PASSWORD";
برنامه نویسی ایمیل با ماژول ESP
ابتدا کدهای زیر را در نرم افزار آردوینو IDE وارد کنید.
#include <ESP8266WiFi.h> #include <ESP8266SMTP.h> const char* ssid = "MODEM_NAME"; // WIFI network name const char* password = "MODEM_PASSWORD"; // WIFI network password #define sensor D2 // the pin that the sensor is atteched to boolean state; //motion detected int i; void setup() { Serial.begin(115200); delay(1000);ایمیل ماژول ESP pinMode(sensor, INPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void loop() { state = digitalRead(sensor);// read sensor value if (state == true) { // check if the sensor is HIGH delay(1000); // delay 1000 milliseconds i++; //counter for moves } else { delay(2000); // delay 2000 milliseconds } if (i == 3) { //send email when 3 moves detected String alarm = "Something is moving!!!"; //Message to send uint32_t startTime = millis(); SMTP.setEmail("yourEmail@sender.com") //Sender Email .setPassword("********") //Sender Password .Subject("Security Motion Detector") //Email subject .setFrom("ESP8266SMTP") .setForGmail(); // simply sets port to 465 and setServer("smtp.gmail.com"); if (SMTP.Send("yourEmail@receiver.com", alarm)) { //Email Recepient and its message Serial.println(F("Message sent")); //send confirm } else { Serial.print(F("Error sending message: ")); Serial.println(SMTP.getError()); } Serial.println(millis() - startTime);//calculating time of emeil sending i=0; } }
تحلیل کد ایمیل با ماژول ESP
تحلیل کدهای پروژه ایمیل با ماژول ESP ، در حلقه setup توابع مربوط به ارتباط سریال و اتصال وای فای را اجرا میکنیم.
Serial.begin(115200); delay(1000); pinMode(sensor, INPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP());
در نهایت به حلقه اصلی برنامه ایمیل با ماژول ESP میرسیم. در اینجا ابتدا وضعیت سنسور را میخوانیم. متغیر i با هر تشخیص حرکت یا به عبارتی با هر HIGH شدن پایه سنسور یک واحد اضافه میشود. سپس وقتی به یک عدد مشخص رسید عملیات ارسال ایمیل آغاز میشود. علت این شمارنده این است که اگر نباشد، هر لحظهای که حرکتی دریافت شود یک ایمیل دریافت میکنید. در این حالت اگر روی تلفن همراه هر لحظه اعلامی داشته باشید خوشایند نخواهد بود!
کد ارسال ایمیل ESP
SMTP.setEmail("t********@gmail.com") //Sender Email .setPassword("********") //Sender Password .Subject("Security Motion Detector") //Email subject .setFrom("ESP8266SMTP") .setForGmail(); // simply sets port to 465 and setServer("smtp.gmail.com");
نکته مهم اینکه این قسمت از برنامه در حقیقت تنها یک خط است. قسمت اول آدرس ایمیل ارسال کنند و پسوورد آن، سپس عنوان ایمیل و بعد از آن نام ارسال کننده و در نهایت تنظیم سرور جیمیل برای ارسال است. در قسمت بعدی عملیات ارسال ایمیل انجام میشود.
if (SMTP.Send("thisisjag2018@yahoo.com", alarm)) { //Email Recepient and its message Serial.println(F("Message sent")); //send confirm } else { Serial.print(F("Error sending message: ")); Serial.println(SMTP.getError()); }
در اینجا در خط اول ایمیل به آدرسی که مشخص کرده ایم ارسال میشود. متن داخل آن رشتهای با نام دلخواه alarm میباشد که داخلش هرمتنی بدون محدودیت تعداد کاراکتر میتواند باشد. به عبارتی کاراکتر بیشتر حجم کد بیشتر! در صورت موفقیت در ارسال ایمیل پیغام Message Sent روی سریال مانیتور نمایش داده میشود. در صورت عدم ارسال پیغام خطا را در سریال مانیتور خواهید دید. در خط زیر زمان مورد استفاده برای ارسال ایمیل نمایش داده میشود.
Serial.println(millis() - startTime);//calculating time of emeil sending
و در نهایت حتما متغیر i را صفر کنید تا ایمیل های بعدی بازهم در صورت رخ دادن تعدادی حرکت خاص ارسال شوند. مهمترین ویژگی این سیستم عدم نیاز به ماژول ساعت می باشد. هر ایمیل در یک ساعت مشخص ارسال می شود که در inboxقابل مشاهده می باشد و با استفاده از زمان سنج بالا می توان زمان دقیق حرکات را فهمید.
لوازم مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام
یک سوال داشتم
پروژه بالا را پیاده کردم کار نکرد بعد به یه پروژه ای که فقط برای ارتباط وای فای با مودم بوده اماده کردم اما به مودم وصل نمیشه
تنظیمات مودم را باید تغییر داد؟
ممنون میشم راهنمایی کنید
سلام. نیازی به تغییر در تنظیمات مودم نیست. فقط کافیه در قسمت
const char* ssid = “MODEM_NAME”;
const char* password = “MODEM_PASSWORD”;
به جای MODEM_NAME و MODEM_PASSWORD نام و پسوورد مودم خودتون رو وارد کنید. اگر باز هم کار نکرد، از سلامت ماژول ESP اطمینان حاصل کنید
پیروز باشید
بله مشخصات مودم و وارد میکنم اما کار نکرده
با ماژول کار کردم سالم اما وای فای و تست نکردم
چطور میتونم بخش وای فای و تست کنم؟
امکان داره به تنهایی وای فای ماژول مشکل داشته باشه؟
ممنون
گاهی دیده شده که اگر در کلمه عبور مودم کاراکترهای خاص مثل # $ & و… وجود داشته باشه برنامه در وصل شده به مودم به مشکل میخوره. بعضی وقت ها هم تغذیه ضعیف باعث میشه که در لحظه اتصال که ماژول بیشترین جریان کشی رو داره برق کافی به ماژول نرسه. این موارد رو بررسی کنید و از مثال های ساده خود آردوینو مثل Blink برای اطمینان از سلامت برد استفاده کنید
پیروز باشید
سلام ببخشید کتابخانه های لازم این برنامه نیست؟ من نتونستم پیدا کنم ممنون میشم راهنمایی کنین
سلام. نیازی به تغییر در تنظیمات مودم نیست. فقط کافیه در قسمت
const char* ssid = “MODEM_NAME”;
const char* password = “MODEM_PASSWORD”;
به جای MODEM_NAME و MODEM_PASSWORD نام و پسوورد مودم خودتون رو وارد کنید. اگر باز هم کار نکرد، از سلامت ماژول ESP اطمینان حاصل کنید
پیروز باشید
با سلام و احترام
بنده قصد دارم یک لودسل به آردینو وصل کنم که وزن قطعات را بفرسته به کامپیوتر میشه راهنمایی کنید
سلام و درود.در این پروژه مشخص فقط کافیه به جای متغیر alarm مقدار خوانده شده از سنسور لود سل رو قرار دهید.
پیروز باشید
سلام وقت بخیر ممنون از توضیحاتتون.در حال انجام پروژه با ESP هستم و به دنبال یک LCD گرافیکی.میشه لطفا معرفی کنید از چه LCD میتونم استفاده کنم؟
سلام وقت شما هم بخیر.
تقریبا تمامی LCD های گرافیکی موجود در بازار چه رنگی و چه تک رنگ با ESP هماهنگ هستن و شما میتونید بسته به نوع پروژتون از یکی استفاده کنید.
پیروز باشید
سلام
برنامه این نوشته را در پورت سریال می نویسه منظورش چیه ؟
و چه کاری برای رفع عیب انجام بدم؟
ارورش اینه :
Error sending message: Could not connect to mail server
۱۴۱۵
Error sending message: Could not connect to mail server
۱۶۰۶
سلام و وقت بخیر
از اتصال دستگاه و مودم به اینترنت مطمئن بشید
نسخه Esp Core رو چک کنید که حتما قبل از ۲٫۳ باشد
و حتما تنظیمات اکانت ایمیل خود را به حالت Allow less secure apps تنظیم کنید
پیروز باشید
مهندس یه مشکلی پیش اومد پیام میده که نمیتونه به سرور جیمیل وص بشه . smtp.gmail.com رو هم زدم مشکل از کجا میتونه باشه ؟
سلام و وقت بخیر
نسخه Esp Core رو چک کنید که حتما قبل از ۲٫۳ باشد
و حتما تنظیمات اکانت ایمیل خود را به حالت Allow less secure apps تنظیم کنید
پیروز باشید
یه سوال دیگه اگر ورژن هسته ماژول بالا باشه میشه ورژن قبلی ان را نصب کرد بصورت جدا که هر دو رو داشته باشه که برای یه پروژه ورژن کلیشو پایین نیاریم
همزمان امکان نصب دو هسته نیست متاسفانه. ورژن های جدید رو بررسی کنید شاید مشکل حل شده باشه
سلام مهندس من کد را روی برد اپلود میکنم
و داخل سریال مانیتور مینویسه
Error sending message: could not connect to mail server 615
دلیل این ارور چیه ؟؟
البته من طبق اموزش پیش رفتم و همه چیز را درست انجام دادم
سلام و درود
حتما از متصل بودن ماژول به اینترنت مطمئن بشید. این خطا فقط در صورت نبودن اینترنت نمایش داده می شود.
پیروز باشید
با سلام ممنونم از اموزش خوبتون ببخشید من کد هارو جاگزاری کردم تبق گفته ویرایش کردم در جیمیل هم گزینه را فعال کردم ولی میگه به سرور کانکت نشدم ارور را میفرستم
sending message: Could not connect to mail server
چکاری باید انجام دهم ؟؟؟؟؟
با سلام
کانکشن برد را بررسی کنید ترجیها از اینترنت متفاوتی تست کنید.