[IoT] Telegram Bot с Arduino MKR WiFi 1010
Компоненты и расходные материалы
| × | 1 |
Об этом проекте
Этот проект демонстрирует, как взаимодействовать Arduino с API-интерфейсами Telegram Bot. Проект построен на новой плате MKR WiFi 1010, оснащенной модулем ESP32 от U-BLOX.
На данном этапе проект является не более чем проверкой концепции, просто чтобы показать вам, что вы можете сделать с этим, поэтому для этого вам понадобится только плата Arduino.
Но что такое бот Telegram?
Что ж, боты - это просто учетные записи Telegram, которыми управляет программное обеспечение, а не люди, и они часто имеют функции искусственного интеллекта. Они могут делать что угодно - обучать, играть, искать, транслировать, напоминать, подключаться, интегрироваться с другими службами или даже передавать команды в Интернет вещей. (кредиты Telegram:https://telegram.org/blog/bot-revolution)
В нашем случае мы передадим команды Arduino, создающему простое устройство IoT. Он будет отвечать на простые команды, а также включать / выключать встроенный светодиод. Я позволю вашему воображению сделать с этим больше ... (представьте, что вы подключили одно или несколько реле к контактам ввода-вывода и, например, включили / выключили обогреватель или систему кондиционирования воздуха с помощью вашего смартфона).
Шаг 1. Что вам нужно


Для этого проекта вам потребуется:
- Arduino MKR WiFi 1010 из магазина Arduino:https://store.arduino.cc/arduino-mkr-wifi-1010
- Arduino IDE 1.8.5 или выше:https://www.arduino.cc/en/Main/Software
- Кабель micro-USB для подключения Arduino к ПК.
- Интернет-соединение, требуется SSID и пароль. Лучше использовать собственный домашний роутер, чтобы убедиться, что он не заблокирован.
- Приложение Telegram установлено на вашем смартфоне, независимо от марки. Проверьте здесь версию для ПК и веб-версию!
Шаг 2. Установка IDE



Да, я знаю, я знаю ... у большинства из вас уже установлена Arduino IDE на ПК, но это руководство также предназначено для начинающих.
Итак, прежде всего, загрузите Arduino IDE 1.8.5 по вашему выбору (zip-файл для «не администраторов» или exe-файл)
Рекомендуется версия 1.8.5, я не тестировал старые версии, а новая плата, используемая в проекте, вообще не могла поддерживаться.
Теперь вам нужно установить новые платы с их драйверами:
- запустить IDE
- Из инструментов в меню выберите Доски . затем в верхней части списка процессоров выберите Диспетчер плат . .
- Прокрутите новое окно (см. изображение), пока не найдете платы Arduino SAMD, которые включают новый MKR WiFi 1010.
- Нажмите на эту вкладку или нажмите "Подробнее" на вкладке, выберите последнюю версию и установите.
- Дождитесь завершения установки. Также позаботится об установке драйверов.
- Вам также понадобится новая библиотека Wi-Fi для этой платы:выберите Скетч, Включить библиотеку . и Управление библиотеками . Найдите Wifinina и установите, как вы это делали с процессором выше.
Теперь подключите новую плату Arduino и дождитесь, пока Windows завершит установку драйвера.
В Инструменты-> Доска . в меню вы найдете новые платы, выберите MKR WiFi 1010.
Для этого проекта необходима еще одна специальная библиотека, это ESP8266TelegramBot от Giancarlo Bacchio. Библиотека была немного изменена для работы с этой платой, поэтому она включена в папку скетча.
Выберите правильный COM-порт и проверьте плату с помощью Получить информацию о плате . команда.
Поздравляем, вы закончили с IDE!
Шаг 3. Создание бота Telegram



Создать нового бота Telegram довольно просто.
Откройте приложение Telegram и в строке поиска введите @BotFather и начните с ним чат (image1) .BotFather - это ... фабрика ботов. Это поможет вам создать нового бота и изменить его настройки.
После / start вы увидите список справки (изображение2).
- Введите / newbot . (image3) Теперь введите имя своего бота. Имя отображается в контактных данных и в других местах.
- BotFather запросит у вас имя пользователя. Имя пользователя - это короткое имя, которое будет использоваться в упоминаниях и ссылках на telegram.me. Имена пользователей состоят из 5–32 символов и нечувствительны к регистру, но могут включать только латинские символы, числа и символы подчеркивания. Имя пользователя вашего бота должно заканчиваться на "bot", например «Tetris_bot» или «TetrisBot» .
- Если и имя, и имя пользователя действительны, вы получите длинную строку символов под названием TOKEN. Это ваш личный `` ключ '', используемый для связи с серверами Telegram. Скопируйте и вставьте его в текстовый файл на свой компьютер. Мы будем использовать его позже в коде Arduino. Если вы потеряете его, не волнуйтесь, просто откройте чат и введите / token . для создания нового.
Все шаги описаны здесь:https://core.telegram.org/bots#6-botfather
Дополнительно (необязательно)
Снова откройте чат и введите / help .
Нажмите (или введите) / setuserpic , чтобы загрузить изображение для своего бота. Нажмите (или введите) / setabouttext чтобы настроить раздел «О себе» для вашего бота:люди будут видеть этот текст на странице профиля бота, и он будет отправлен вместе со ссылкой на вашего бота, когда они поделятся им с кем-то.
Нажмите (или введите) / setdescription чтобы установить раздел описания для вашего бота. Люди увидят это описание, когда они откроют чат с вашим ботом, в блоке под названием «Что умеет этот бот?»
Шаг 4. Измените, загрузите и протестируйте эскиз




Пришло время загрузить программное обеспечение на плату Arduino MKR WiFi 1010.
Загрузите прикрепленный эскиз и разархивируйте его, пожалуйста, не меняйте имена и папки, если вы не знаете, что делаете.
Изменить
Откройте скетч, нам нужно заполнить некоторую информацию (image1),
Перейдите на вкладку arduino_secrets.h:
- Найдите информацию о сети Wi-Fi и введите имя вашей сети (SSID) и пароль.
- Найдите информацию о боте в Telegram и введите имя, имя пользователя и токен, предоставленные @BotFather.
Загрузить
Убедитесь, что плата правильная (image2) в ide и подключена, затем попробуйте скомпилировать код. Если компиляция прошла успешно, загрузите ее на доску, это займет всего несколько секунд.
В случае возникновения проблем проверьте наличие опечатки и повторите попытку.
Тест
[ВАЖНО!] Скетч отправляет логи в IDE. У процессора есть родной порт USB (как на платах Леонардо). После включения код будет ждать, пока не запустится серийный монитор. Итак, позвольте ему подключиться к ПК и откройте последовательный монитор. Arduino сначала подключится к Интернету, а затем начнет опрашивать сервер Telegram на предмет новых сообщений (изображение 3).
Теперь откройте Telegram на предпочитаемом вами устройстве и в поле поиска введите имя своего бота (а не имя пользователя, которое заканчивается на «бот»). Откройте чат с ним.
Первая команда для начала чата с ботом - / start . , наш Arduino ответит приветственным сообщением. Теперь введите help (без косой черты), он ответит списком поддерживаемых команд, вы можете попробовать их все (image4).
Вы закончили тест, если что-то не работает, проверьте информацию, введенную в эскиз (имя, имя пользователя, токен ...)
Сертификаты Если у вас возникли ошибки при подключении к серверу Telegram (лог:Бот не подключен):
- Откройте Инструменты-> Средство обновления Wifi101 / wifinina.
- Убедитесь, что ваша плата подключена, проверьте порты слева от средства обновления, плата должна быть там.
- Нажмите "Открыть эскиз средства обновления" и загрузите его на доску.
- После загрузки в программе обновления выберите последнюю версию прошивки для вашей платы и нажмите «Обновить прошивку».
- После обновления в программе обновления в разделе SSL-сертификаты нажмите Добавить домен, в диалоговом окне напишите telegram.org:443 и нажмите ОК.
- Нажмите "Загрузить сертификаты в модуль Wi-Fi".
- Загрузите этот набросок на доску.

Шаг 5. Улучшение

Глядя на код, очень просто реализовать новые команды и ответить пользователю.
Новые команды
Вы можете написать подпрограмму для каждой новой команды. Каждый субподрядчик позаботится о завершении команды и (в конечном итоге) вернет пользователю информацию о статусе.
Ограничение пользователей
Конечно, это всего лишь демонстрация. Любой пользователь Telegram может подключиться к вашему дому и отправлять нежелательные команды. Вы этого не хотите!
Что ж, посмотрите на image1, там 2 подключенных пользователя. Как видите, у каждого пользователя есть собственный идентификатор пользователя. Немного поработав над кодом, вы можете фильтровать (или создавать список) только для авторизованных пользователей. Просто изучите код и попробуйте перехватить идентификационный номер пользователя. Затем выполняйте команды только от известных пользователей.
Оборудование
Что касается аппаратного обеспечения, то к контактам ввода-вывода Arduino можно подключить множество датчиков и реле.
Будьте осторожны:плата, использованная в этом проекте, толерантна к напряжению 3,3 В !!! При необходимости используйте переключатель уровня напряжения! Для получения дополнительной информации и советов по этой плате, пожалуйста, прочтите здесь:https://www.arduino.cc/en/Guide/MKRWiFi1010
Вот и все, наслаждайтесь!
Код
- MKR1010Bot_V1_02.zip
MKR1010Bot_V1_02.zip C / C ++
Скетч Telegram BotБез предварительного просмотра (только загрузка)
Производственный процесс
- GoPiGo v2 с Windows IoT
- Управление монетоприемником с помощью Arduino
- Детектор звуковой частоты
- Arduino с Bluetooth для управления светодиодом!
- Tech-TicTacToe
- DIY вольтметр с Arduino и дисплеем Nokia 5110
- Таймер обратного отсчета Arduino
- Устройства с голосовым управлением Bluetooth с OK Google
- Создайте приложение Fridgeye с дисплеем Nextion
- Радиоуправляемый автомобиль Porsche (проект Arduino)