Рубрики
Схемы на Arduino

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

Мессенджер Telegram является крайне популярным в современном мире, с ним могут взаимодействовать множество сторонних приложений. В данной статье мы рассмотрим взаимодействие с ботом Telegram с помощью платы Arduino. Делать мы это будем с помощью библиотеки TelegramBot.h, позволяющей работать с ботами Telegram.

Также на нашем сайте вы можете посмотреть все проекты, в которых использовалось приложение Telegram. Посмотреть документацию (на английском языке) для работы с API Telegram можно по следующей ссылке.

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

Плата Arduino MKR1000.

Вместо платы Arduino MKR1000 можно также использовать плату Arduino Zero с шилдом WiFi shield 101 или плату Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266, который будет управляться платой Arduino с помощью AT команд. Примеры подобного управления модулем ESP8266 можно посмотреть в следующих проектах:

Лично на мой взгляд, данный проект дешевле и легче всего реализовать с помощью платы NodeMCU ESP8266, которую можно подключить к компьютеру по USB кабелю и запрограммировать с помощью Arduino IDE. Пример подобного проекта можно посмотреть по следующей ссылке. У него практически такой же код программы, как и код программы рассматриваемого в данной статье проекта.

Реализация проекта

Установка библиотеки для работы с ботом Telegram

Скачайте библиотеку TelegramBot Library по следующей ссылке.

Для ее установки в Arduino IDE откройте пункт меню Sketch / Include Library / Add .ZIP Library, после чего выберите скачанный вами .ZIP файл библиотеки.

Установка библиотек ArduinoJson и WiFi101

Библиотеки ArduinoJson и WiFi101 можно установить с помощью менеджера библиотек (Library Manager) Arduino IDE как показано на следующих рисунках.

Примечание: данный пункт необходим при использовании платы Arduino MKR1000 или платы Arduino Zero с шилдом WiFi shield 101. При использовании платы Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266 библиотеку WiFi101 можно не устанавливать.

Установка бота Botfather

После того как вы установили приложение Telegram на свой смартфон или ноутбук, в строке поиска данного приложения выполните поиск @botfather.

Botfather – это бот, который позволяет вам создавать своих собственных ботов для приложения Telegram. Для создания нового бота с его помощью используйте команду /newbot.

После этого введите имя данного бота (name), затем имя пользователя (username).

Далее сгенерируйте токен авторизации (authorization token) для вашего нового бота. Также процесс создания нового бота в Telegram с помощью Botfather описан в этой статье.

После создания бота имя вашего бота будет показываться в контактах и некоторых других местах приложения Telegram.

Имя пользователя (Username) для созданного вами бота – это имя, которое будет использоваться в заметках и ссылках telegram.me. Имя пользователя вашего бота должно оканчиваться на ‘bot’, то есть, к примеру, допустимы имена ‘tetris_bot’ или ‘TetrisBot’.

Если ваш бот включен в какую либо группу, то он по умолчанию будет работать в приватном режиме (privacy mode). Это означает, что он будет принимать только команды, которые начинаются с «/». Чтобы отключить приватный режим вам в необходимо в чате с вашим ботом написать следующий набор команд:

Также вы можете создать свой собственный набор команд для бота используя команду /setcommands в чате с BotFather. Этот список появится только при работе с мобильного устройства при нажатии на иконку «/».

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

С помощью представленной программы мы будем включать и выключать светодиод, передавая для этого из приложения Telegram сообщения “On” или “Off”.

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

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

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

Доброго времени суток. У меня есть вопрос не совсем по теме, но по телеграмму, скажите, пожалуйста, как вставить код ардуино в телеграмм чтобы он был читабельным с подсветкой синтаксиса. Просто для других языков такая фишка имеется:
python
print('Hello')

В результате в телеграмм подсвечивается синтаксис.

Добрый вечер. К сожалению, никогда не копировал коды программ в телеграмм, поэтому вряд ли я вам смогу помочь

За телегой будущие кажется, но лучше будет, если присмотреть серьезное железа для проектов

В современном быстро меняющемся мире трудно угадать за чем будущее ))

NodeMCU ESP8266 по количеству контактов по сути Arduino UNO. Но есть ещё один ньюанс, у ESP8266 питание, а соответсвенно и входы-выходы работают не с 5В, а с 3,3В, что не позволяет испольовать со стандартными реле расчитанными на 5В. Ну и количество входов-выходов Aruino MEGA не сравнить ти с Arduino UNO, ни с NodeMCU ESP8266.

Ну если у вас проект требует так много входов/выходов, то да, Aruino MEGA здесь по этому параметру почти вне конкуренции. Ну тут уж сами решайте что вам удобнее, либо управлять с ее помощью модулем ESP8266 с помощью AT команд, либо использовать какую-нибудь плату Aruino со встроенным WiFi если не хотите смотреть в сторону других плат (Raspberry Pi Pico W и т.д.)

По сути та же Arduino UNO,только всего один аналоговый вход вместо 6. А мне приходится использовать Arduino MEGA…

Ну количество доступных контактов можно увеличить с помощью регистров сдвига или другими способами. Какой то у вас больно сложный проект если вам такое большое количество контактов необходимо. Просто если модуль ESP8266 к плате Ардуино подключать чтобы его использовать только в качестве WiFi модуля, то управлять им придется с помощью АТ команд.
Может быть, вы тогда какую-нибудь современную плату Ардуино для своего проекта присмотрели бы, со встроенным WiFi. К примеру, у нас на сайте есть подробный обзор различных плат Ардуино.
Или вы можете посмотреть в сторону более производительных плат, Raspberry Pi Pico W (есть WiFi) или плат на основе STM32.

Здравствуйте! С Днём защитника Отечества!
Вы пишете: «При использовании платы Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266 библиотеку WiFi101 можно не устанавливать.»
Подскажите, пожалуйста, я использую плату Arduino MEGA + ESP-01, какие дополнительные библиотеки нужно использовать или каким методом передать какой Serial порт используется (у Вас, кстати, этого в программе нет). Меня весьма заинтересовал Ваш вариант, хотелось бы доработать свой проект под возможность передачи данных в Телеграм, а посему с нетерпением буду ожидать Вашего ответа.
Заранее благодарен, Михаил

Добрый день. И вас с Днем защитника отечества. Вам понадобится только библиотека TelegramBot.h, библиотека для соединения с сетью WiFi будет не нужна потому что с сетью WiFi вы будете соединяться с помощью модуля ESP-01, а управлять им вы будете с помощью AT команд. Примеры управления модулем ESP-01 с помощью AT команд можно посмотреть, к примеру, в следующих статьях:
https://microkontroller.ru/arduino-projects/upravlenie-servomotorom-po-wi-fi-s-pomoshhyu-arduino-i-veb-brauzera/
https://microkontroller.ru/arduino-projects/peredacha-email-s-ispolzovaniem-arduino-i-wifi-modulya/
Serial порт вы можете использовать стандартный для вашей платы, либо с помощью библиотеки SoftwareSerial (в этом случае ее также необходимо установить) сконфигурировать любые два цифровых контакта платы для работы в качестве последовательного порта — именно этот вариант и использован в двух приведенных примерах статей

На TelegramBot.h матерится не по детски. “ПРЕДУПРЕЖДЕНИЕ: библиотека TelegramBot-Library-master должна запускаться на архитектурах samd, esp8266 и может быть несовместима с вашей платой на архитектуре avr.”
Посмотрел Ваши предложения по использованию АТ команд. Даже несколько странно: писать на языке высокого уровня и возвращаться к Assembler для передачи нескольких слов в мессенджер. По факту я использую библиотеку RemoteXY.h для двухсторонней связи со смартфоном и управления всем проектом. Попытка прикрутить телеграм вызвало вышеуказанное предупреждение и недоумение по поводу строки
WiFiSSLClient client;
Что естественно, так как я отказался от библиотеки WiFi101, но в следующей строке
TelegramBot bot(BotToken,client);
Я передаю библиотеке TelegramBot.h некоего клиента и чем его заменить — сугубо непонятно, честно говоря в библиотеке пока не разобрался, что за клиент и что он делает…

По поводу использования АТ команд и возвращения, так сказать, к ассемблеру — это плата за то, что в обычных платах Arduino нет WiFi модуля. Мне тоже не очень нравятся АТ команды.
Поэтому подобный проект я бы делал на Arduino с поддержкой WiFi, или на модуле NodeMCU ESP8266 или ESP32 — эти модули имеют поддержку WiFi и программируются точно также как Arduino, а стоят дешевле

У ESP-01 действительно очень мало контактов, но модули ESP8266 выпускаются в различных модификациях с различным числом входов/выходов. Неужели даже их количества в NodeMCU ESP8266 вам не хватает?

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

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