Telegram в настоящее время является одним из самых популярных мессенджеров в мире. Уже создано достаточно много приложений и проектов, умеющих взаимодействовать с данным мессенджером. И в данной статье мы рассмотрим взаимодействие с ботом Telegram с помощью модуля ESP8266.
Также на нашем сайте вы можете посмотреть все проекты, в которых использовался Telegram.
Необходимые компоненты
Аппаратное обеспечение
- Плата Arduino Uno (купить на AliExpress).
- Модуль ESP-01 (ESP8266) (купить на AliExpress).
- Смартфон с операционной системой Android.
- Соединительные провода.
Программное обеспечение
- API для Telegram бота.
- Arduino IDE.
Схема проекта
Схема соединения платы Arduino Uno с модулем ESP8266 для взаимодействия с ботом Telegram представлена на следующем рисунке.
Как видите, схема достаточно проста. Также необходимо соединить контакт GPIO0 модуля ESP8266 с землей и его контакт сброса (reset) с контактом сброса платы Arduino. После этого можно загружать код программы в модуль ESP8266.
Плата Arduino Uno в нашей схеме используется в качестве в качестве FTDI программатора. Более подробно про данный способ загрузки программы в модуль ESP8266 вы можете прочитать в этой статье. Если же вы вместо модуля ESP-01 (ESP8266) будете использовать плату NodeMCU ESP8266, то ее можно напрямую подключать к компьютеру по USB кабелю, не используя при этом плату Arduino Uno.
Библиотека для работы с Telegram
Прежде чем приступать к написанию кода программы вам необходимо скачать и установить в Arduino IDE библиотеку для работы с ботом Telegram (Telegram Bot library). Скачать ее можно по следующей ссылке с Github.
Настройка бота Telegram
Установите Telegram на ваш ноутбук или смартфон и в нем выполните поиск бота Botfather. Этот бот позволит вам создавать своих новых ботов в Telegram. После создания своего бота вам необходимо получить свой токен доступа (token) в Telegram. Более подробно про эти процессы вы можете прочитать в этой статье.
Исходный код программы (скетча)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#include <ESP8266WiFi.h> #include <WiFiClientSecure.h> #include <TelegramBot.h> #define LED 1 //контакт, к которому подключен светодиод // данные для подключения к сети Wifi const char* ssid = "xxxxx"; const char* password = "yyyyy"; // инициализация Telegram бота const char BotToken[] = "xxxxxxxxx"; WiFiClientSecure net_ssl; TelegramBot bot (BotToken, net_ssl); // the number of the LED pin void setup() { Serial.begin(115200); while (!Serial) {} //Start running when the serial is open delay(3000); // делаем попытку соединения с сетью Wifi Serial.print("Connecting Wifi: "); Serial.println(ssid); while (WiFi.begin(ssid, password) != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); bot.begin(); pinMode(LED, OUTPUT); } void loop() { message m = bot.getUpdates(); // считываем новые сообщения if (m.text.equals("on")) { digitalWrite(LED, 1); bot.sendMessage(m.chat_id, "The Led is now ON"); } else if (m.text.equals("off")) { digitalWrite(LED, 0); bot.sendMessage(m.chat_id, "The Led is now OFF"); } } |
Библиотека на гитхабе заточена под 5 ArduinoJson а сейчас уже 6 из коробки, стоило упомянуть я думаю что нужен даунгрейд, запустилось на 5.13.5
пишет вот такую штуку:
C:\Users\User\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:39:11: error: StaticJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
39 | StaticJsonBuffer jsonBuffer;
У меня тоже не подключился к wifi, дописал WiFi.begin(ssid, password); перед "Serial.print("Connecting Wifi: ");" и поменял условие while (WiFi.status() != WL_CONNECTED)
всё подключилось
может кому поможет
Да, спасибо за подробный комментарий. Сайт просто уже очень большой, не успеваю уже физически следить за обновлениями ко всем проектам, опубликованным на сайте
Спасибо огроменное, товарищ!
Да не за что, заходите к нам еще
Все сделал как написано, загрузил скетч... но в мониторе порта "......" т.е. Wifi не подключается, даже создавал точку доступа на телефоне типа "Ssid: aaa" и пароль "12345678" , но ничего не работает!!!
Попробуйте скетч (часть скетча) из любого другого проекта на основе модуля ESP8266 на нашем сайте, в котором есть подключение к сети Wi-Fi. Так сразу сложно сказать почему ваш модуль не подключается к Wi-Fi