Мобільна версія Форум Arduino Документація Гарантійні умови 0 0
UA RU
Графік роботи магазину:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Нд: вихідний
Каталог
Напиши статтю і отримай знижку!

Телеграм бот на мікроконтролері

2023-03-06

Всі статті →

Зараз дуже популярне написання телеграм ботів на Python, проте завжди з’являється одна проблема - хостинг. Цього бота або треба постійно запускати, або арендовувати хостинг, або - подати живлення і доступ до мережі мікроконтролеру і забути про всі ці проблеми.

Python має декілька інтерпретаторів для мікроконтролерів, проте найпопулярніший - micropython, його я і використовуватиму для написання бота.

Насправді написати і хостити телеграм бота простіше ніж сайт, ми просто даємо запит до API телеграма і на основі відповіді даємо йому дані для того щоб бот щось відповів. З сайтами інша, складніша історія ip адрес та доменів.

Я використовуватиму клас знайдений на гітхабі для цієї задачі, код можна заливати використовуючи Thonny IDE або плагін для PyCharm, я заливатиму на плату розробника esp32 devkit v1, для прикладу керуватимемо вбудованим світлодіодом через

команди телеграм боту.

В мікроконтролері лежатиме чотири файли:

  • boot.py
  • config.py
  • utelegram.py
  • main.py

boot.py в принципі вбудований, його ми не чіпатимемо в цьому проєкті в config.py треба помістити дані про вашу wifi мережу та токен телеграм бота, який вам видасть @BotFather (/newbot і далі по інструкціям) наступним чином:

wifi_config = {

    “ssid”: “your_wifi_name”,

    “password”: “your_wifi_password”,

}

utelegram_config = {

    “token”: “your_bot_token”,

}

в utelegram.py знаходиться сам клас, а в main.py ми писатимемо основний код:

Імпорти:

from machine import Pin
from config import utelegram_config
from config import wifi_config

import utelegram
import network
import utime

Зберігаємо пін в змінну led, щоб керувати світлодіодом:

led = Pin(2, Pin.OUT)

(для моєї плати це другий цифровий пін або ж D2)

Підключення до інтернета:

sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.scan()
sta_if.connect(wifi_config['ssid'], wifi_config['password'])

(на цьому моменті інтерпретатор може зависнути на sta_if.active(True), щоб цього уникнути - підведіть зовнішнє живлення або спробуйте підключити плату в usb3)

Далі чекаємо 10 секунд поки встановиться wifi з’єднання:

utime.sleep(10)

Наступним кроком пишемо дві функції для обробки команд:

def reply_on(message):
    led.on()
    bot.send(message['message']['chat']['id'], 'led is on')

def reply_off(message):
    led.off()
    bot.send(message['message']['chat']['id'], 'led is off')

Тепер залишається тільки зареєструвати ці функції і почати слухати, хто що боту пише, за умови що інтернет таки підключено:

if sta_if.isconnected():
    bot = utelegram.ubot(utelegram_config['token'])
    bot.register('/on', reply_on)
    bot.register('/off', reply_off)
    print('BOT LISTENING')
    bot.listen()

Готово! Заливаємо файли в підключений по usb мікроконтролер кнопкою save в Thonny IDE або клікаємо правою кнопкою миші по віконцю з іменем файла і обираємо «Flash ***.py» в PyCharm, замість зірочок ім’я вашого python файла, таким ж чином заливаємо config файл та клас utelegram, подаємо живлення в VIN (від 5 до 3.5в) або 3V3(3.3в) та GND і можна писати боту.

Після того як бот відповідає led is on, можна спостерігати за результатом.

І якщо написати /off, світлодіод погасне.

Сьогодні ви побачили як швидко і просто написати свого телеграм бота на мікропітоні і керувати з його допомогою фізичним світом (в нашому випадку - світлодіодом). Пишіть коментарі із зауваженнями, побажаннями та оцінюйте статтю в цілому.

Ваша оцінка статті:

Відмінно
Добре
Задовільно
Погано
Дуже погано

Загальна оцінка:

Оцінка "Телеграм бот на мікроконтролері"
5 з 5
зроблена на основі 5 оцінок 5 клієнтських відгуків.

Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Костянтин
13.09.2024 15:00:04
Дякую Вам за статтю
ас/дс
02.03.2024 21:48:28
їмбусік!
Сергій
26.07.2023 11:04:41
Актуально. Дякую.
Ivan Sirko
05.04.2023 13:23:44
Супер!Продовжуйте розвивати українське embedded-ком''юніті
CBoY
14.03.2023 15:55:59
Дуже цікаво і дуже актуально на цей момент)
оплата картами Visa і MasterCard