esp8266آردوینو - آموزش آردوینو-Arduinoپروژهتازه هاماژول های مخابراتیهمه ی مطالب

اتصال ESP8266 به ربات تلگرام (قسمت پایانی)

در قسمت اول با نحوه ایجاد و استفاده از ربات تلگرام مورد بررسی قرار گرفت. در قست پایانی آموزش اتصال esp6266 به ربات تلگرام  نحوه اضافه کردن بردهای esp8266 به نرم افزار آردوینو را خواهیم داشت در ادامه نحوه اضافه کردن کتابخانه های لازم برای برنامه ارتباط 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 باید در لیست برد ها برد متناسب با ماژول خود را انتخاب کنید.

اضافه کردن کتابخانه های مورد نیاز ارتباط با تلگرام و اینترنت:

برای کامپایل کردن برنامه اتصال 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 را بزنید.


با زدن هر یک از دستور ها عمل متناظر با دستور روی ماژول وای فای اجرا میشود

برای سوال در این مورد می توانید به انجمن الکترولب مراجعه کنید.

علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شد تا الکترولب ایجاد بشه. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

نوشته های مشابه

29 دیدگاه

  1. سلام (الهم عجل لویکل فرج)
    بسیار بسیار ازتون متشکرم بابات این مطلب فوق العاده عالی
    واقعا سهم به سزایی در اموزش داره سایتتون اجرتون با خدا و امام زمان
    منتظر مطالب عالی ازتون هستیم.
    یاالله

  2. سلام و سپاس لطفا pin d2 را روی ماژول esp 8266-01 مشخص کنید و لطفا فرمایید ایا برنامه مسقتل از برد اردینو یونو کار می کند …..

  3. سلام
    من واسه پروژم از آردوینو uno و esp استفاده می کنم و قراره عکسی که روی SD کارت ذخیره شده رو با ماژول وای فای ارسال کنه.قرار بود من وقتی IP ماژول رو در مرورگر وارد می کنم بتونم اون عکس رو ببینم اما الان با دیدن کار با ربات تصمیم گرفتم که با جای این که تو مرورگر وارد کنم با ربات تلگرام این کار رو انجام بدم و ببینم
    من esp8266 ورژن 1 رو استفاده می کنم و من esp رو پروگرم نمی کنم و uno رو پروگرم می کنم و قراره esp در نقشAP باشه این کار امکان پذیره؟
    ممنون میشم جوابم رو فوری بدین واسه پروژه کارشناسیم می خوام و چند روز بیش تر فرصت ندارم…

  4. با سلام
    این ماژول داخل فروشگاه خودتون هم دارید؟؟ اگه میشه لینکشو بزارید ممنون میشم… پیدا نکردم من

  5. مهندس از شما ممنونم که برای رشد علم الکترونیک تلاش میکنید
    ما همه کارهایی که شما گفتین انجام دادیم اما اردینو error میده و کامپایل نمیکنه همه کتاب خانه هارو نصب کردم اما جواب نداد. ممنون میشم که منو همراهی کنید.

  6. سلام ببخشید برای این پروژه باید چه ماژولی را تهیه کنم؟نمخوام از مدارات اردیونو استفاده کنم و فقط میخوام با esp کارکنم

    1. اگه می خوایید فقط با خود ماژول کار کنید می تونید از همه ماژول هایی که هست استفاده کنید و مشکلی نیست

  7. سلام.
    خسته نباشید.
    میشه تمام وسایل مورد نیاز رو ذکر کنید!
    و همچنین چگونه چندین ال ای دی ای دیگه اضافه کنیم؟
    یا اصلا چطور برق 220 ولت بهش وصل کنیم؟
    لطفا به ایمیلم بفرستید جواب را…
    تشکر بسیار!

  8. Arduino: 1.8.5 (Windows 10), Board: “NodeMCU 1.0 (ESP-12E Module), 80 MHz, 4M (1M SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 115200”

    In file included from C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiAP.h:27:0,

    from C:\Users\mohamad\Desktop\Ardinio\robot telegram\FlashLED5\FlashLED5.ino:4:

    C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiType.h:127:5: error: ‘IPAddress’ does not name a type

    IPAddress ip;

    ^

    C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiType.h:128:5: error: ‘IPAddress’ does not name a type

    IPAddress mask;

    ^

    C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiType.h:129:5: error: ‘IPAddress’ does not name a type

    IPAddress gw;

    ^

    In file included from C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiAP.h:28:0,

    from C:\Users\mohamad\Desktop\Ardinio\robot telegram\FlashLED5\FlashLED5.ino:4:

    C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiGeneric.h:100:47: error: ‘IPAddress’ has not been declared

    int hostByName(const char* aHostname, IPAddress& aResult);

    ^

    C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiGeneric.h:101:47: error: ‘IPAddress’ has not been declared

    int hostByName(const char* aHostname, IPAddress& aResult, uint32_t timeout_ms);

    ^

    In file included from C:\Users\mohamad\Desktop\Ardinio\robot telegram\FlashLED5\FlashLED5.ino:4:0:

    C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiAP.h:40:27: error: ‘IPAddress’ has not been declared

    bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet);

    ^

    C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiAP.h:40:47: error: ‘IPAddress’ has not been declared

    bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet);

    ^

    C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiAP.h:40:66: error: ‘IPAddress’ has not been declared

    bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet);

    ^

    C:\Users\mohamad\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiAP.h:45:9: error: ‘IPAddress’ does not name a type

    IPAddress softAPIP();

    ^

    C:\Users\mohamad\Desktop\Ardinio\robot telegram\FlashLED5\FlashLED5.ino: In function ‘void loop()’:

    C:\Users\mohamad\Desktop\Ardinio\robot telegram\FlashLED5\FlashLED5.ino:117:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

    if (millis() > Bot_lasttime + Bot_mtbs) {

    ^

    exit status 1
    Error compiling for board NodeMCU 1.0 (ESP-12E Module).

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    علت این مشکل چیه؟

  9. سلام وقتتون بخیر
    من ربات رو درست کردم
    ولی وقتی که دستور ledonرو میزنم هیچ اتفاقی برای led نمی افته روشن نمیشود.
    برنامه اردوینو هم ارور نمیده.
    همه چیش درسته ولی ال ای دی روشن نمیشود ؟؟؟؟
    اشکال از ربات هست یا جای دیگه ؟

  10. سلام ممنون بابت اموزش های خوبتون.
    سوال من اینه که آیا میشه به جای ربات از کانال تلگرام استفاده بشه. یعنی ماژول esp8266 در یک کانال پیام بفرسته

  11. سلام و با تشکر فراوان
    چرا ماژول من به مودم وصل نمیشه
    اینم کد:

    #include
    #include
    #include

    // Initialize Wifi connection to the router
    char ssid[] = “hossein”; // نام روتر وایفای
    char password[] = “123456789”; // پسورد وایفای

    // Initialize Telegram BOT
    #define BOTtoken “529421542:AAFr1Z_9CPKdi9zQa99PgQOOpKBsYQLj4Qo” // توکن ربات تلگرام

    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 = 1;
    int ledStatus = 0;

    void handleNewMessages(int numNewMessages) {
    Serial.println(“handleNewMessages”);
    Serial.println(String(numNewMessages));

    for (int i=0; i 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();
    }
    }

  12. سلام.ممنون از آموزش خوبتون.آقا من با آردوینو تا حالا کار نکردم! تمام مراحل درست پیش رفت فقط قسمت آپلود مشکل داره! و این پیغام رو میده :

    Sketch uses 333628 bytes (31%) of program storage space. Maximum is 1044464 bytes.
    Global variables use 37160 bytes (45%) of dynamic memory, leaving 44760 bytes for local variables. Maximum is 81920 bytes.
    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed
    error: espcomm_upload_mem failed

    آیا شما از پروگرامر خاصی برای آپلود برنامه روی ماژول استفاده می کنید؟؟(من با مبدل usb به سریال pl2303 برنامه آپلود کردم که این مشکل برام پیش اومد)

    ممنون میشم راهنمایی کنید.جناب آقای مهندس

  13. سلام من كد رو آپلود ميكنم اما روي بات كلاً اتفاقي ديده نميشه مشكل از كجاست ؟

  14. سلام مهندس من طبق گفته های شما پیش رفتم داخل نرم افزار اردویینو کتابخانه های لازم را اضافه کردم کد را روی node mcu آپلود کردم و آپلود شد ((البته داخل کد ها پسورد و اسم وای‌فای را همان پسورد و نام نقطه اتصال موبایلم قرار دادم و توکن ربات را هم قرار دادم و بعد آپلود کردم و سریال مانیتور را هم باز کردم و دکمه ریست برد را زدم ip را بهم داد اما ip را که داخل مرورگر موبایلم زدم نوشته بود داده ای ارسال نشد و صفحه در دسترس نیست )) بعد از اینکه کد ها را روی برد node mcu آپلود کردم vpn را داخل موبایل روشن کردم و تلگرام را باز کردم و داخل رباتی که از قبل ساخته بودم رفتم و Start را زدم هیچ اتفاقی نیفتاد باز هم Start را زدم اما بازم اتفاقی نیفتاد میشه راهنمایی کنید مشکل از کجاست ممنون

  15. سلام خسته نباشید من برای ساخت ماشین کنترلی وکنترل از طریق تلفن همراه چه قطعاتی نیاز است

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.