Визуализация данных с TFT LCD (ILI9341, ST7789) и AI-агентом ASI Biont: интеграция без кода

Введение

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 с любыми библиотеками

Как начать?

  1. Скачайте bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge)
  2. Запустите bridge с вашим токеном и портом: python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud=115200
  3. Напишите в чат: «Подключись к ESP32 через COM3, загрузи прошивку для дисплея ST7789 и настрой MQTT для получения температуры с DHT22»
  4. AI сделает всё сам — сгенерирует код, загрузит его, настроит подписки

Заключение

TFT LCD дисплеи на ILI9341 и ST7789 — это не просто экраны для отображения цифр. В связке с AI-агентом ASI Biont они превращаются в умные панели, которые обновляются в реальном времени, реагируют на команды из Telegram, отображают данные из любых источников (датчики, API, PLC) и не требуют написания сложного кода. Всё, что нужно — описать задачу в чате.

Попробуйте интеграцию прямо сейчас на asibiont.com — подключите ваш TFT LCD за 5 минут.

← Все статьи

Комментарии