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


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

Внешний вид проекта взаимодействия с ботом Telegram с помощью Arduino

Также на нашем сайте вы можете посмотреть все проекты, в которых использовалось приложение 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 файл библиотеки.

Выбор пункта меню Sketch / Include Library / Add .ZIP Library в Arduino IDE

Выбор скачанного .ZIP файла библиотеки

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

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

Открытие менеджера библиотек в Arduino IDE

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

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

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

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

Поиск бота Botfather в Telegram

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

Создание нового бота с помощью Botfather

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

Ввод имени для созданного бота

Ввод имени пользователя для созданного бота

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

Формирование токена авторизации для созданного бота

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

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

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

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

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

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

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

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

(Проголосуй первым!)
Загрузка...
4 914 просмотров

Комментарии

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

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

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

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

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

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

  3. 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 и т.д.)

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

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

  5. Здравствуйте! С Днём защитника Отечества!
    Вы пишете: "При использовании платы 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 не будет опубликован. Обязательные поля помечены *