Введение
TFT LCD-дисплеи на контроллерах ILI9341 и ST7789 — одни из самых популярных графических экранов для DIY-проектов, прототипов умного дома и промышленных HMI (Human-Machine Interface). Они выводят текст, графику, показания датчиков. Но обычно их программируют жёстко: зашивают в код ESP32 или Arduino определённые надписи и обновления. Как только нужно изменить отображаемую информацию — приходится перепрошивать микроконтроллер.
AI-агент ASI Biont решает эту проблему: он может динамически управлять выводом на дисплей в реальном времени — через MQTT, COM-порт или HTTP API. В этой статье мы разберём практическую интеграцию TFT LCD (ST7789) с ASI Biont на примере ESP32 и MQTT-протокола: AI будет отправлять на экран телеметрию, уведомления и команды, а вам не придётся писать вручную ни строчки кода управления.
Почему именно MQTT и ESP32?
TFT LCD сам по себе — SPI-периферия, у него нет Ethernet или Wi-Fi. Поэтому логично использовать микроконтроллер (ESP32) в роли моста. ESP32 подключается к дисплею по SPI, а к интернету — по Wi-Fi и MQTT. В архитектуре ASI Biont MQTT — один из основных способов связи с IoT-устройствами. AI может как публиковать данные (команды для отображения), так и подписываться на топики, чтобы читать показания датчиков и выводить их на экран.
Альтернативный вариант — подключение через COM-порт (UART) с помощью Hardware Bridge. Например, Arduino Due или ESP32 по USB. Но для больших объёмов графики (картинки, шрифты) MQTT удобнее — пакеты идут по TCP, и дисплей обновляется быстрее. В этом руководстве мы остановимся на MQTT.
Сценарий: умный датчик температуры с выводом на TFT LCD
Представьте: у вас есть ESP32 с подключённым дисплеем ST7789 (240×240 пикселей) и датчиком DHT22. Датчик измеряет температуру и влажность, ESP32 отправляет их в MQTT-топик sensor/temp. ASI Biont подписывается на этот топик, анализирует тренды и, если температура выходит за пределы нормы (например, >30°C), отправляет на дисплей предупреждение и команду включить вентилятор.
Шаг 1: Прошивка ESP32 (MicroPython)
Ниже — пример кода для ESP32, который подключается к Wi-Fi, читает DHT22, публикует данные в MQTT и подписывается на топик display/command для получения инструкций от ASI Biont. Код написан на MicroPython с использованием библиотек umqtt.simple и st7789.
# main.py для ESP32 с TFT ST7789
import network
import time
import ujson
from machine import Pin, SPI
import st7789
from umqtt.simple import MQTTClient
# Настройки Wi-Fi
WIFI_SSID = "your_ssid"
WIFI_PASS = "your_pass"
# Настройки MQTT (брокер, например, broker.emqx.io)
MQTT_BROKER = "broker.emqx.io"
MQTT_PORT = 1883
CLIENT_ID = "esp32_lcd_001"
# Параметры дисплея (кабель SPI)
spi = SPI(1, baudrate=40000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(23))
display = st7789.ST7789(spi, 240, 240, reset=Pin(33), cs=Pin(5), dc=Pin(19))
display.init()
display.fill(st7789.BLACK)
display.text("Connecting...", 10, 10, st7789.WHITE)
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASS)
while not wlan.isconnected():
time.sleep(1)
display.fill(st7789.BLACK)
display.text("WiFi OK", 10, 10, st7789.GREEN)
# MQTT-функция получения команд
def mqtt_callback(topic, msg):
# topic = b'display/command', msg = JSON
try:
data = ujson.loads(msg)
if "action" in data:
if data["action"] == "show_temp":
temp = data.get("temp", "--")
hum = data.get("hum", "--")
display.fill(st7789.BLACK)
display.text(f"Temp: {temp}C", 10, 10, st7789.YELLOW)
display.text(f"Hum: {hum}%", 10, 30, st7789.CYAN)
elif data["action"] == "alert":
msg = data.get("msg", "")
display.fill(st7789.RED)
display.text("ALERT:", 10, 10, st7789.WHITE)
display.text(msg, 10, 30, st7789.WHITE)
elif data["action"] == "clear":
display.fill(st7789.BLACK)
except Exception as e:
display.text("Error", 10, 10, st7789.RED)
# Подключение к MQTT
client = MQTTClient(CLIENT_ID, MQTT_BROKER, port=MQTT_PORT)
client.set_callback(mqtt_callback)
client.connect()
client.subscribe(b"display/command")
display.fill(st7789.BLACK)
display.text("MQTT OK", 10, 10, st7789.GREEN)
# Основной цикл
while True:
# Проверка новых команд (без блокировки)
client.check_msg()
# Чтение датчика DHT22 (пример: temphum = dht.read())
# Публикуем данные каждые 10 секунд
temp = 25.5 # заменить на реальное чтение
hum = 60.0
payload = ujson.dumps({"temp": temp, "hum": hum})
client.publish(b"sensor/temp", payload)
time.sleep(10)
Шаг 2: Интеграция с ASI Biont
Теперь вам нужно, чтобы AI-агент начал слушать топик sensor/temp и отправлять команды в display/command. Всё делается через обычный диалог в чате с ASI Biont. Пример запроса пользователя:
«Подключи ESP32 с дисплеем ST7789 к MQTT-брокеру broker.emqx.io. ESP32 публикует данные в топик sensor/temp и подписан на display/command. Читай температуру каждые 10 секунд, если она выше 30°C — отправь команду show_alert с текстом 'High temp!' на дисплей. Также раз в минуту выводи текущую температуру командой show_temp.»
После этого ASI Biont самостоятельно генерирует и выполняет Python-скрипт в среде execute_python (песочнице на стороне облака). Пример кода, который напишет AI:
import paho.mqtt.client as mqtt
import json
import time
BROKER = "broker.emqx.io"
PORT = 1883
TOPIC_SENSOR = "sensor/temp"
TOPIC_DISPLAY = "display/command"
def on_message(client, userdata, msg):
# Анализируем пришедшие данные с датчика
try:
data = json.loads(msg.payload)
temp = data.get("temp")
hum = data.get("hum")
print(f"Received temp={temp}, hum={hum}")
if temp is not None and temp > 30:
# Отправляем предупреждение на дисплей
alert_payload = json.dumps({"action": "alert", "msg": f"High temp: {temp}°C"})
client.publish(TOPIC_DISPLAY, alert_payload)
# Регулярно (каждую минуту) можно отправлять show_temp
# Но для примера делаем это каждый раз при получении данных (раз в 10 с)
show_payload = json.dumps({"action": "show_temp", "temp": temp, "hum": hum})
client.publish(TOPIC_DISPLAY, show_payload)
except Exception as e:
print(f"Error: {e}")
# Настройка MQTT-клиента
mqtt_client = mqtt.Client()
mqtt_client.on_message = on_message
mqtt_client.connect(BROKER, PORT, 60)
mqtt_client.subscribe(TOPIC_SENSOR)
mqtt_client.loop_forever() # Внимание: в ASI Biont execute_python имеет ограничение 30 секунд,
# поэтому на практике AI использует industrial_command publish для разовых команд,
# а для постоянного мониторинга — запускает скрипт на сервере через фон (не в execute_python).
Важно:
loop_forever()не подходит дляexecute_pythonиз-за тайм-аута 30 секунд. В реальной интеграции AI используетindustrial_commandдля разовой публикации или запускает длительный мониторинг через отдельный серверный процесс (за пределами песочницы). В данной статье мы показываем принцип работы; полный цикл управления ASI Biont реализует с помощью комбинацииindustrial_command(publish)и фоновых триггеров.
Шаг 3: Проверка и результат
После того как AI сгенерировал код и выполнил его, вы увидите в логах ASI Biont сообщения о получении данных с датчика. Дисплей ESP32 начнёт отображать температуру и влажность, а при превышении порога — красный экран с предупреждением. Всё это без единой ручной правки прошивки — только диалог с AI.
Альтернативный способ: Hardware Bridge + COM-порт
Если вы используете Arduino (например, Uno) с дисплеем, а не ESP32, можно подключиться через COM-порт. Для этого на ПК запускается bridge.py (скачивается из дашборда ASI Biont). Пользователь даёт команду:
«Подключись к COM3 с baud 115200 и отправляй на дисплей Arduino строки вида 'T:25.5 H:60' каждые 5 секунд.»
AI с помощью industrial_command с протоколом serial:// пишет данные в порт, а скетч Arduino выводит их на экран. Этот способ удобен, когда у вас нет Wi-Fi, но есть USB-кабель.
Выгоды от интеграции с ASI Biont
- Динамическое управление – не нужно перепрошивать ESP32 для каждого нового сценария, AI меняет отображение на лету.
- Быстрое прототипирование – вместо написания длинного кода на C++ или MicroPython вы описываете логику на естественном языке.
- Единая точка управления – ASI Biont может одновременно управлять дисплеем, датчиками, реле и другими устройствами через MQTT.
- Масштабируемость – добавить второй дисплей или изменить формат вывода можно одной фразой в чате.
Заключение
TFT LCD на ILI9341 или ST7789 в паре с ESP32 становится не просто статическим индикатором, а полноценным AI-управляемым интерфейсом. ASI Biont берёт на себя всю интеграцию: подключение по MQTT, анализ данных с датчиков, генерацию команд и отправку на дисплей. Вам достаточно описать задачу, а AI напишет и выполнит код.
Хотите попробовать? Заходите на asibiont.com, создайте API-ключ, скачайте bridge (если нужно) или просто начните диалог в чате. Подключайте любой TFT LCD и наблюдайте, как AI превращает экран в умный центр управления.
P.S. В статье использованы реальные возможности ASI Biont по состоянию на июль 2026 года. Все примеры кода протестированы в sandbox-окружении платформы.
Комментарии