Рубрики
Проекты на ESP8266

Взаимодействие с ботом Telegram с помощью ESP8266

Telegram в настоящее время является одним из самых популярных мессенджеров в мире. Уже создано достаточно много приложений и проектов, умеющих взаимодействовать с данным мессенджером. И в данной статье мы рассмотрим взаимодействие с ботом Telegram с помощью модуля ESP8266.

Также на нашем сайте вы можете посмотреть все проекты, в которых использовался Telegram.

Необходимые компоненты

Аппаратное обеспечение

  1. Плата Arduino Uno (купить на AliExpress).
  2. Модуль ESP-01 (ESP8266) (купить на AliExpress).
  3. Смартфон с операционной системой Android.
  4. Соединительные провода.

Программное обеспечение

  1. API для Telegram бота.
  2. 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. Более подробно про эти процессы вы можете прочитать в этой статье.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Источник статьи

8 ответов к “Взаимодействие с ботом Telegram с помощью ESP8266”

Даже после даунгрейда на ArduinoJson 5.13.5 падает при компиляции:

c:\Users\User\Documents\Arduino\libraries\TelegramBot\src\TelegramBot.cpp: In member function ‘message TelegramBot::getUpdates()’:
c:\Users\User\Documents\Arduino\libraries\TelegramBot\src\TelegramBot.cpp:29:107: error: control reaches end of non-void function [-Werror=return-type]
29 | String getRequest = «GET /bot»+String(token)+»/getUpdates?limit=1&offset=»+String(last_message_recived)+» HTTP/1.1″;
| ^~~~~~~~~~~
c:\Users\User\Documents\Arduino\libraries\TelegramBot\src\TelegramBot.cpp: In member function ‘String TelegramBot::sendMessage(String, String)’:
c:\Users\User\Documents\Arduino\libraries\TelegramBot\src\TelegramBot.cpp:96:17: error: control reaches end of non-void function [-Werror=return-type]
96 | Serial.println(«Chat_id not defined»);
| ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
cc1plus.exe: some warnings being treated as errors

exit status 1

Compilation error: exit status 1

Есть идеи?

Не знаю, так сразу сложно сказать в чем проблема, может быть используемая библиотека немного изменилась с момента написания данной статьи. Попробуйте компилировать не всю представленную программу, а оставьте в ней вызов только одной какой-либо функции из данной библиотеки, потом другой и т.д. Если сложная программа не работает, то наиболее действенный способ найти в ней ошибки это тестировать ее по маленьким частям.

Библиотека на гитхабе заточена под 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *