آموزش اتصال ESP8266 به ربات تلگرام (قسمت دوم)
اضافه کردن بردهای مبتنی بر ESP8266 به نرم افزار آردوینو
برای آن که بتوانید بر روی این ماژول توسط IDE آردوینو برنامه نویسی کنید باید درایورها و بورد آن را بر روی نرم افزار آردوینو نصب کنید.برای این منظور وارد نرم افزار آردوینو شوید. سپس از قسمت File وارد Preferences شوید.
سپس لینک زیر را کپی کنید و در پنجره Preferences در قسمت Additional Boards Manager URLs ، لینک را paste کنید و OK را بزنید.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
سپس از قسمت Tools وارد Boards Manager… شوید.
سپس در لیست نمایش داده شده به دنبال esp8266 by ESP8266 Community بگردید و آن را نصب کنید.
منتظر بمانید تا عملیات نصب تکمیل شود.
برای استفاده از ماژول وای فای ESP8266 باید در لیست برد ها برد متناسب با ماژول خود را انتخاب کنید.
در این آموزش از برد توسعه WiFi D1 Mini NodeMcu Lua همراه با درایور USB CH340 استفاده شده است.
اضافه کردن کتابخانه های مورد نیاز ارتباط با تلگرام و اینترنت:
برای کامپایل کردن برنامه اتصال ESP8266 به ربات تلگرام نیاز به سه کتابخانه ArduinoJson , WiFiclientSecure , UniversalTelegramBot دارید که به دو روش می توانید این کتابخانه ها را به برنامه آردوینو خود اضافه کنید:
روش اول استفاده از قسمت manage library برنامه آردوینو:
در این روش می توانید با جست و جو کردن نام کتابخانه کتابخانه مورد نظر را پیدا کرده و نصب کنید.
روش دوم کپی کردن فایل کتابخانه ها به پوشه آردوینو
در این روش فایل کتابخانه ها را دانلود کرده و در مسیر کتابخانه های آردوینو قرار میدهید.
دانلود کتابخانه های مورد نیاز اتصال ESP8266 به تلگرام
فایل های دانلود شده را به مسیر زیر کپی کنید.
C:\Users\ezzati\Documents\Arduino\libraries
برنامه آردوینو اتصال ESP8266 به ربات تلگرام
کد زیر برنامه ارتباط برای انواع برد آردوینو با ربات تلگرام میباشد. در این برنامه کامندهای ربات تلگرام تعریف شدهاند. دو کامند /ledon و /ledoff که به پین متصل شده در برد فرمان میدهد. این کامندها به کامندهای مورد نیاز شما قابل تغییر است.
#include <ESP8266WiFi.h> #include <WiFiClientSecure.h> #include <UniversalTelegramBot.h> // Initialize Wifi connection to the router char ssid[] = "***"; // نام روتر وایفای char password[] = "123456789"; // پسورد وایفای // Initialize Telegram BOT #define BOTtoken "441099696:AAE**************nBb9Qp4NnqpH2XvuE" // توکن ربات تلگرام WiFiClientSecure client; UniversalTelegramBot bot(BOTtoken, client); int Bot_mtbs = 1000; //mean time between scan messages long Bot_lasttime; //last time messages' scan has been done bool Start = false; const int ledPin = D2; int ledStatus = 0; void handleNewMessages(int numNewMessages) { Serial.println("handleNewMessages"); Serial.println(String(numNewMessages)); for (int i=0; i<numNewMessages; i++) { String chat_id = String(bot.messages[i].chat_id); String text = bot.messages[i].text; String from_name = bot.messages[i].from_name; if (from_name == "") from_name = "Guest"; if (text == "/ledon") { digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level) ledStatus = 1; bot.sendMessage(chat_id, "Led is ON", ""); } if (text == "/ledoff") { ledStatus = 0; digitalWrite(ledPin, LOW); // turn the LED off (LOW is the voltage level) bot.sendMessage(chat_id, "Led is OFF", ""); } if (text == "/status") { if(ledStatus){ bot.sendMessage(chat_id, "Led is ON", ""); } else { bot.sendMessage(chat_id, "Led is OFF", ""); } } if (text == "/start") { String welcome = "به برنامه ارتباط اینترنت اشیاء با ربات تلگرام خوش آمدید" + from_name + ".\n"; welcome += "برنامه نمونه برای مدیریت ال ای دی.\n\n"; welcome += "/ledon : جهت روشن کردن ال ای دی از این دستور استفاده کنید.\n"; welcome += "/ledoff : جهت خاموش کردن ال ای دی از این دستور استفاده کنید.\n"; welcome += "/status : چنانچه نمیدانید ال ای دی در چه وضعیتی است از این دستور استفاده کنید.\n"; bot.sendMessage(chat_id, welcome, "Markdown"); } } } void setup() { Serial.begin(115200); // Set WiFi to station mode and disconnect from an AP if it was Previously // connected WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); // attempt to connect to Wifi network: Serial.print("Connecting Wifi: "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); pinMode(ledPin, OUTPUT); // initialize digital ledPin as an output. delay(10); digitalWrite(ledPin, LOW); // initialize pin as off } void loop() { if (millis() > Bot_lasttime + Bot_mtbs) { int numNewMessages = bot.getUpdates(bot.last_message_received + 1); while(numNewMessages) { Serial.println("got response"); handleNewMessages(numNewMessages); numNewMessages = bot.getUpdates(bot.last_message_received + 1); } Bot_lasttime = millis(); } }
یوزنیم و پسور وای فای + توکن ربات تلگرام را در کدها وارد کنید. سپس روی برد آپلود کنید. پس از آن همانند تصویر زیر وارد ربات تلگرام که ساختهاید بشوید و Start را بزنید. سپس ۳ دستور که در کدهای بالا تعریف شده است برای شما برگردانده میشود.
بعد از اتصال به مودم IP اختصاص یافته به برد ESP8266 در ترمینال سریال برنامه آردوینو نمایش داده میشود.
بعد از این مرحله کافیست نام رباتی که ایجاد کردید را در تلگرام جست و جو کنید و strat را بزنید.
با زدن هر یک از دستور ها عمل متناظر با دستور روی ماژول وای فای اجرا میشود
سلام وقتتون به خیر ببخشید من توی راه اندازیه ماژول 8266 با تلگرام در مرحله ی اول اولا برنامه اجازه کپی پیست نمیده تا من لینک مربوط به 8266 رو در قسمت references وارد کنم ثانیا وقتی دستی وارد میکنم لینک در قسمتboards manager ارور دانلود میاد و دانلودی درکار نیست با اینکه اینترنت هم وصله میشه راهنمایی بفرمایید
سلام.ممنون بابت اموزش خوبتون.
چطور میتونم اطلاعات 3 تا سنسور دما رو که به برد اردینو مگا وصله رو با تلگرام مشاهده کنم؟
لطفا راهنمایی کنید
در انجمن ECA مطرح کنید دوستان کمک میکنند برای راه اندازی
سلام خدمت شما . من یک برد wemos D1 Wifi دارم که زمانیکه در قسمت board manager عبارت esp8266 by ESP8266 Community رو برای نصب سرچ میکنم پیدا نمیکنه . چیکار باید بکنم ؟ یا باید چیز دیگه ای سرچ کنم ؟
سلام کدهارو که کپی کردم قسمت کتابخانه تلگرام قرمز رنگ نمیشه و به روتروصل میشه ولی به تلگرام وصل نمیشه
به خاطر فیلتر شدن تلگرامه
سلام ممنون بابت اموزشتون.
در قسمت( int numNewMessages = bot.getUpdates(bot.last_message_received + 1
هیج اپدیتی نمیاد یعنی تو متغیر numNewMessages برای من همش مقدار صفر قرار میگیره ! میشه راهنمایی کنید ممنون