TFT LCD (ILI9341, ST7789) и AI-агент ASI Biont: интеграция дисплея с IoT через ESP32 и MQTT

Введение

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

  1. Динамическое управление – не нужно перепрошивать ESP32 для каждого нового сценария, AI меняет отображение на лету.
  2. Быстрое прототипирование – вместо написания длинного кода на C++ или MicroPython вы описываете логику на естественном языке.
  3. Единая точка управления – ASI Biont может одновременно управлять дисплеем, датчиками, реле и другими устройствами через MQTT.
  4. Масштабируемость – добавить второй дисплей или изменить формат вывода можно одной фразой в чате.

Заключение

TFT LCD на ILI9341 или ST7789 в паре с ESP32 становится не просто статическим индикатором, а полноценным AI-управляемым интерфейсом. ASI Biont берёт на себя всю интеграцию: подключение по MQTT, анализ данных с датчиков, генерацию команд и отправку на дисплей. Вам достаточно описать задачу, а AI напишет и выполнит код.

Хотите попробовать? Заходите на asibiont.com, создайте API-ключ, скачайте bridge (если нужно) или просто начните диалог в чате. Подключайте любой TFT LCD и наблюдайте, как AI превращает экран в умный центр управления.

P.S. В статье использованы реальные возможности ASI Biont по состоянию на июль 2026 года. Все примеры кода протестированы в sandbox-окружении платформы.

← Все статьи

Комментарии

Читайте также

12 промтов для GameDev: от базовых сценариев до экспертных механик в Unity, Unreal Engine и Godot

24 июля 2026

Industrial IoT Gateways + ASI Biont: как подключить промышленный шлюз к AI-агенту и автоматизировать мониторинг

24 июля 2026

Croc GUI: зашифрованная P2P передача файлов без терминала (кроссплатформенно)

24 июля 2026

Процессы сознания в искусственной системе: от теории к экспериментам 2026 года

24 июля 2026

От нуля до готовых к продакшену API: Как курс Django и FastAPI на Asibiont формирует реальные навыки

24 июля 2026

ISO 9001:2015 (Системы менеджмента качества): как AI-обучение помогает освоить стандарт и подготовиться к сертификации

24 июля 2026

12 промтов для создания React/Next.js приложений: от компонентов до оптимизации

24 июля 2026

Автоматизация VK Реклама как профессионал: руководство по интеграции с AI-агентом ASI Biont (без кода)

24 июля 2026

Клинические исследования — Клинические испытания и GCP: Ваш путь к сертификации ACRP с помощью обучения на основе ИИ

24 июля 2026