Введение
TFT LCD дисплеи на контроллерах ILI9341 и ST7789 — это одни из самых популярных графических экранов в DIY-проектах и промышленной автоматизации. Они используются для отображения показаний датчиков, графиков, меню управления и интерфейсов умного дома. Но что, если подключить такой дисплей не просто к микроконтроллеру, а к AI-агенту, который сам решает, что показывать, когда обновлять данные и как реагировать на команды из чата?
ASI Biont — это AI-агент, который подключается к любому оборудованию через диалог. Вам не нужно писать десятки строк кода для интеграции: достаточно описать задачу в чате, и AI сгенерирует скрипт, который свяжет ваш TFT LCD с облаком, датчиками, API и Telegram. В этой статье я покажу, как подключить дисплей на ILI9341 или ST7789 к ASI Biont через Hardware Bridge и MQTT, а также приведу реальные сценарии: от мониторинга температуры до управления из чата.
Почему TFT LCD и AI — это мощно?
Традиционно для отображения данных на дисплее нужно:
- Написать прошивку для ESP32/Arduino с библиотеками (TFT_eSPI, Adafruit GFX)
- Настроить парсинг данных с датчиков
- Реализовать логику обновления экрана
- Подключиться к Wi-Fi и MQTT-брокеру
- Писать код для каждого нового сценария
С ASI Biont всё иначе: AI сам пишет код интеграции, подключается к вашему устройству через Hardware Bridge (bridge.py) или MQTT, и вы можете просто сказать в чате: «Покажи температуру в комнате на дисплее» или «Обновляй график влажности каждые 10 секунд». AI сгенерирует код на MicroPython или C++ для ESP32, загрузит его на устройство (через COM-порт) или отправит команду через MQTT.
Как ASI Biont подключается к TFT LCD?
Устройство (ESP32 с дисплеем) может быть подключено двумя основными способами:
1. Через Hardware Bridge (COM-порт)
Если ваш ESP32 подключен к ПК по USB, вы запускаете bridge.py на компьютере. Bridge соединяется с ASI Biont через WebSocket (единственный канал связи). AI отправляет команды через industrial_command tool с протоколом serial://, bridge пишет данные в COM-порт и читает ответ. Например, чтобы отправить команду на ESP32 (включить подсветку дисплея), AI использует:
industrial_command(
protocol='serial',
command='serial_write_and_read',
data='424c5f4f4e0a', # 'BL_ON\n' в hex
port='COM3',
baud=115200
)
На Windows bridge автоматически применяет CancelIoEx и PurgeComm для надёжной записи.
2. Через MQTT
ESP32 с дисплеем подписан на MQTT-топик (например, esp32/display). AI подключается к тому же брокеру через paho-mqtt (внутри execute_python) и публикует JSON-команды. ESP32 получает их и обновляет экран. Этот способ удобен, если ESP32 находится удалённо (например, в другой комнате) и не подключён к ПК.
Сценарий 1: Мониторинг температуры и влажности с выводом на TFT LCD
Задача: ESP32 с дисплеем ST7789 и датчиком DHT22 показывает текущую температуру и влажность. AI-агент ASI Biont получает данные с датчика, анализирует тренды и при выходе за пределы нормы отправляет уведомление в Telegram, а также обновляет показания на дисплее в реальном времени.
Шаг 1. Подключаем ESP32 к ASI Biont через MQTT
Пользователь пишет в чат:
«Подключись к моему ESP32 с дисплеем ST7789 через MQTT. Брокер: mqtt://192.168.1.100:1883, топик для команд: esp32/display, топик для данных: esp32/sensor. Дай мне команду обновить температуру на экране.»
AI генерирует код для execute_python (sandbox на сервере):
import paho.mqtt.client as mqtt
import json
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
# Подписываемся на топик с данными от ESP32
client.subscribe("esp32/sensor")
def on_message(client, userdata, msg):
data = json.loads(msg.payload.decode())
temperature = data.get("temperature")
humidity = data.get("humidity")
print(f"Received: temp={temperature}, hum={humidity}")
# Анализируем: если температура > 30°C, отправляем предупреждение
if temperature and temperature > 30:
# Отправка в Telegram через requests (реальный код)
import requests
requests.post(
f"https://api.telegram.org/bot{TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": f"⚠️ Температура {temperature}°C превышает норму!"}
)
# Отправляем команду на ESP32 обновить дисплей
client.publish("esp32/display", json.dumps({
"action": "update",
"temperature": temperature,
"humidity": humidity
}))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.1.100", 1883, 60)
client.loop_start() # Не используем loop_forever из-за таймаута sandbox
Шаг 2. Код для ESP32 (MicroPython)
AI также генерирует прошивку для ESP32, которую пользователь может загрузить через bridge:
import network
import time
import json
from machine import Pin, SPI
import st7789 # библиотека для ST7789
from umqtt.simple import MQTTClient
# Настройка дисплея
spi = SPI(1, baudrate=40000000, sck=Pin(18), mosi=Pin(19))
display = st7789.ST7789(spi, 135, 240, reset=Pin(23), cs=Pin(5), dc=Pin(16), backlight=Pin(4))
display.init()
display.fill(st7789.BLACK)
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID", "password")
while not wlan.isconnected():
time.sleep(1)
# MQTT клиент
def mqtt_callback(topic, msg):
data = json.loads(msg.decode())
if data.get("action") == "update":
temp = data.get("temperature")
hum = data.get("humidity")
display.fill(st7789.BLACK)
display.text("Temp: {} C".format(temp), 10, 10, st7789.WHITE)
display.text("Hum: {}%".format(hum), 10, 40, st7789.WHITE)
display.show()
client = MQTTClient("esp32", "192.168.1.100", 1883)
client.set_callback(mqtt_callback)
client.connect()
client.subscribe(b"esp32/display")
while True:
client.wait_msg() # Бесконечный цикл — это нормально для прошивки
Результат: Дисплей обновляется каждые 10 секунд (по мере поступления данных от датчика), AI анализирует тренды и при превышении порога отправляет Telegram-уведомление. Всё это — без ручного написания интеграционного кода: AI сгенерировал оба скрипта за секунды.
Сценарий 2: Управление дисплеем из Telegram-чата
Задача: Пользователь хочет отправлять команды из Telegram, чтобы менять отображаемую информацию на TFT LCD: показывать курс криптовалюты, прогноз погоды или просто текст.
Как это работает:
1. Пользователь пишет в чат ASI Biont: «Отобрази на дисплее текущий курс Bitcoin»
2. AI использует execute_python с requests, чтобы получить курс с CoinGecko API
3. AI отправляет команду на ESP32 через MQTT publish
4. ESP32 получает JSON и выводит текст на дисплей
Пример команды от AI:
import requests
import json
# Получаем курс BTC
resp = requests.get("https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd")
btc_price = resp.json()["bitcoin"]["usd"]
# Отправляем на ESP32
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect("192.168.1.100", 1883)
client.publish("esp32/display", json.dumps({
"action": "show_text",
"text": f"Bitcoin: ${btc_price}",
"color": "green"
}))
client.disconnect()
На ESP32 обработчик:
def mqtt_callback(topic, msg):
data = json.loads(msg.decode())
if data.get("action") == "show_text":
display.fill(st7789.BLACK)
display.text(data["text"], 10, 10, st7789.GREEN)
display.show()
Сценарий 3: Промышленный мониторинг через Modbus/TCP
Дисплей TFT LCD может выступать как HMI (Human-Machine Interface) для промышленного контроллера. ASI Biont подключается к PLC через Modbus/TCP, читает регистры (температура печи, давление, скорость конвейера) и отправляет данные на ESP32 с дисплеем для визуализации.
AI делает:
- Подключается к PLC через pymodbus (industrial_command с protocol='modbus')
- Читает holding registers (например, адрес 0x100 — температура)
- Публикует данные в MQTT топик для ESP32
- При превышении порога (температура > 200°C) отправляет команду на PLC (write_register) для аварийной остановки
Пример команды AI для чтения регистра:
industrial_command(
protocol='modbus',
command='read_registers',
address=0x100,
count=1,
unit_id=1,
host='192.168.1.50',
port=502
)
Почему это выгодно?
| Традиционный подход | Интеграция с ASI Biont |
|---|---|
| Писать код вручную на C++/MicroPython | AI генерирует код за секунды по описанию |
| Настраивать MQTT-клиент, парсинг JSON, логику обновления | AI делает всё автоматически |
| Для каждого нового сценария — новый код | Достаточно сказать в чате: «Покажи курс BTC» |
| Сложно интегрировать с Telegram, API, базами данных | AI использует execute_python с любыми библиотеками |
Как начать?
- Скачайте bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge)
- Запустите bridge с вашим токеном и портом:
python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud=115200 - Напишите в чат: «Подключись к ESP32 через COM3, загрузи прошивку для дисплея ST7789 и настрой MQTT для получения температуры с DHT22»
- AI сделает всё сам — сгенерирует код, загрузит его, настроит подписки
Заключение
TFT LCD дисплеи на ILI9341 и ST7789 — это не просто экраны для отображения цифр. В связке с AI-агентом ASI Biont они превращаются в умные панели, которые обновляются в реальном времени, реагируют на команды из Telegram, отображают данные из любых источников (датчики, API, PLC) и не требуют написания сложного кода. Всё, что нужно — описать задачу в чате.
Попробуйте интеграцию прямо сейчас на asibiont.com — подключите ваш TFT LCD за 5 минут.
Комментарии