Умный дисплей на TFT LCD (ILI9341, ST7789) под управлением AI-агента ASI Biont: от подключения до голосового дашборда

Введение: почему вашему дисплею нужен AI-агент

TFT-дисплеи на контроллерах ILI9341 (320×240) и ST7789 (240×240, 135×240) стали де-факто стандартом для встраиваемых интерфейсов. Они стоят от 3 до 15 долларов, работают с любым микроконтроллером через SPI и выводят полноцветную графику. Но есть нюанс: чтобы такой дисплей показывал не просто «Hello, World», а живые данные — погоду, статусы датчиков, уведомления от умного дома — нужно писать прошивку, настраивать Wi-Fi, поднимать MQTT-брокер и вручную парсить каждый JSON. Это отнимает часы даже у опытного разработчика.

AI-агент ASI Biont решает эту проблему кардинально. Вместо того чтобы вручную писать код для ESP32, вы просто описываете на естественном языке, какой дашборд хотите видеть на экране. ASI Biont сам генерирует MicroPython-скрипт, подключается к вашему MQTT-брокеру (или COM-порту через Hardware Bridge) и начинает управлять дисплеем в реальном времени. Хотите, чтобы на экране отображалась температура с датчика DHT22 и анимированная иконка солнца? Скажите об этом AI — и через 30 секунд дисплей уже работает.

В этой статье я покажу, как интегрировать TFT LCD (ILI9341, ST7789) с ASI Biont через MQTT и Hardware Bridge, приведу рабочие примеры кода и разберу три реальных сценария: анимированный дашборд с погодой, голосовое управление выводом и автообновление виджетов.

Как ASI Biont подключается к дисплею: два основных сценария

ASI Biont не имеет физического интерфейса для прямого подключения к SPI-пинам дисплея. Вместо этого AI-агент управляет дисплеем через промежуточное устройство — обычно ESP32, Arduino или Raspberry Pi, к которому дисплей подключен физически. ASI Biont поддерживает несколько протоколов для связи с таким микроконтроллером:

Способ подключения Когда использовать Пример устройства
MQTT ESP32 с Wi-Fi, удалённое управление через интернет ESP32 + TFT LCD + DHT22
Hardware Bridge (COM-порт) Arduino или ESP32 подключены к ПК по USB, нужна низкая задержка Arduino Uno + TFT LCD
SSH Raspberry Pi с дисплеем, нужен доступ к GPIO Raspberry Pi + TFT LCD

В этой статье мы сосредоточимся на MQTT — это самый популярный и гибкий способ для IoT-дисплеев. Вы поднимаете MQTT-брокер (например, Mosquitto на Raspberry Pi или публичный HiveMQ), ESP32 подписывается на топик, а ASI Biont публикует в этот топик JSON с командами для отрисовки.

Сценарий 1: Анимированный дашборд с погодой и статусами

Задача: ESP32 с дисплеем ST7789 (240×240) висит на стене в гостиной. На экране должны отображаться текущая температура, влажность, иконка погоды (солнечно/облачно/дождь) и статус умного дома (открыты ли окна, включён ли свет). Данные приходят с датчика DHT22 и датчика движения.

Решение:

  1. На ESP32 загружается прошивка на MicroPython, которая подписывается на MQTT-топик home/display/command. Когда приходит JSON-сообщение, ESP32 парсит его и рисует на дисплее через библиотеку st7789py или ili9341.

  2. ASI Biont подключается к тому же MQTT-брокеру с помощью execute_python и библиотеки paho-mqtt. AI-агент получает данные с датчиков (через второй топик), формирует JSON-команду для отрисовки и публикует её в home/display/command.

Пример кода для ESP32 (MicroPython):

import network
import time
import ujson
from machine import Pin, SPI
import st7789py as st7789  # библиотека для ST7789

# Настройка дисплея
spi = SPI(1, baudrate=40000000, sck=Pin(10), mosi=Pin(11))
display = st7789.ST7789(spi, 240, 240, reset=Pin(12, Pin.OUT), dc=Pin(13, Pin.OUT), cs=Pin(9, Pin.OUT))
display.init()

# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('SSID', 'PASSWORD')
while not wlan.isconnected():
    time.sleep(1)

# MQTT
from umqtt.simple import MQTTClient
def callback(topic, msg):
    data = ujson.loads(msg)
    # data = {"temp": 23.5, "hum": 60, "icon": "sun", "windows": "closed"}
    display.fill(st7789.BLACK)
    display.text(str(data['temp']) + 'C', 20, 30, st7789.WHITE)
    display.text(str(data['hum']) + '%', 20, 60, st7789.WHITE)
    # здесь можно рисовать иконку по data['icon']
    display.text(data['windows'], 20, 120, st7789.GREEN if data['windows']=='closed' else st7789.RED)

client = MQTTClient('esp32_display', 'broker.hivemq.com', port=1883)
client.set_callback(callback)
client.connect()
client.subscribe(b'home/display/command')
while True:
    client.wait_msg()

Как это делается в чате с ASI Biont:

Пользователь пишет:

«Подключись к MQTT-брокеру broker.hivemq.com. Подпишись на топик sensors/home, где публикуются данные с DHT22. Каждые 30 секунд формируй JSON вида {"temp": ..., "hum": ..., "icon": "sun"} и публикуй в топик home/display/command. Если температура выше 30°C — меняй иконку на "hot".»

AI-агент генерирует и выполняет следующий Python-скрипт в sandbox:

import paho.mqtt.client as mqtt
import json
import time

def on_message(client, userdata, msg):
    data = json.loads(msg.payload)
    temp = data['temperature']
    hum = data['humidity']
    icon = 'sun' if temp < 30 else 'hot'
    command = {'temp': round(temp,1), 'hum': round(hum,1), 'icon': icon}
    client.publish('home/display/command', json.dumps(command))

client = mqtt.Client()
client.connect('broker.hivemq.com', 1883, 60)
client.subscribe('sensors/home')
client.on_message = on_message
client.loop_forever()

Результат: Дисплей обновляется каждые 30 секунд, показывает актуальную погоду и статусы. Всё без единой строчки рукописного кода со стороны пользователя.

Сценарий 2: Голосовое управление выводом на дисплее

Задача: Вы хотите, чтобы дисплей в мастерской показывал то, что вы скажете голосом — например, «Покажи список покупок», «Отобрази график температуры за сегодня» или «Выведи цитату дня».

Решение:

ASI Biont не имеет встроенного голосового ассистента, но вы можете использовать внешний сервис распознавания речи (например, Telegram-бот с голосовыми сообщениями или Google Speech-to-Text). Пользователь отправляет голосовое сообщение в Telegram-бота, тот транскрибирует его в текст и пересылает ASI Biont. AI-агент интерпретирует запрос, формирует JSON-команду для дисплея и публикует её через MQTT.

Пример: Пользователь говорит: «Покажи температуру в цехе и статус станка». ASI Biont получает текст, запрашивает данные с датчика (по MQTT или Modbus), формирует команду:

{
  "action": "show_data",
  "lines": [
    {"text": "Цех: 24.3°C", "font": "large", "color": "white"},
    {"text": "Станок: работает", "font": "medium", "color": "green"}
  ]
}

ESP32 получает команду и выводит текст на экран. Всё, что нужно пользователю — настроить один раз ESP32 на приём MQTT-команд.

Сценарий 3: Автообновление виджетов с датчиков через Hardware Bridge

Задача: У вас есть Arduino Uno с TFT LCD (ILI9341), подключённый к ПК через USB. Arduino считывает данные с аналогового датчика CO2 и выводит их на экран. Вы хотите, чтобы AI-агент анализировал показания CO2 и при превышении порога (например, >1000 ppm) менял цвет фона на красный.

Решение через Hardware Bridge:

  1. Пользователь скачивает bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge) и запускает на своём ПК:
    python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud 115200

  2. AI-агент использует industrial_command() с протоколом serial:// для отправки команд на COM-порт. Arduino слушает порт и при получении команды SET_COLOR_RED меняет цвет фона.

  3. Для регулярного опроса датчика AI использует execute_python с библиотекой pyserial (через Hardware Bridge этого делать нельзя, так как sandbox не имеет доступа к COM-портам — но можно настроить Arduino на автоматическую отправку данных раз в 5 секунд, а AI будет только анализировать и отправлять команды смены цвета).

Пример прошивки Arduino (C++):

#include <Adafruit_ILI9341.h>
#include <SoftwareSerial.h>

#define TFT_CS 10
#define TFT_DC 9
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

void setup() {
  Serial.begin(115200);
  tft.begin();
  tft.setRotation(1);
  tft.fillScreen(ILI9341_BLACK);
}

void loop() {
  if (Serial.available()) {
    String cmd = Serial.readStringUntil('\n');
    if (cmd == "SET_COLOR_RED") {
      tft.fillScreen(ILI9341_RED);
    } else if (cmd == "SET_COLOR_GREEN") {
      tft.fillScreen(ILI9341_GREEN);
    }
  }
  // здесь код чтения датчика CO2 и отправки данных в порт
}

Как это делается в чате с ASI Biont:

Пользователь пишет:

«Подключись к моему Hardware Bridge на порту COM3, скорость 115200. Я хочу, чтобы каждые 10 секунд ты проверял данные CO2 с Arduino (они приходят в формате "CO2: 850"). Если CO2 больше 1000 — отправь команду SET_COLOR_RED, если меньше — SET_COLOR_GREEN.»

AI-агент выполняет следующий код в sandbox (он не обращается к COM-порту напрямую, а использует execute_python с paho-mqtt — но в реальности команды на COM-порт отправляются через industrial_command):

# AI-агент обрабатывает данные, полученные от Hardware Bridge
# и отправляет команды через industrial_command
# industrial_command(protocol='serial', command='serial_write_and_read', data='5345545f434f4c4f525f5245440a')
# Ниже — логика анализа, которую AI выполняет в sandbox
import re
# Допустим, данные уже получены от bridge
co2_value = 1050
if co2_value > 1000:
    print("CO2 превышен, отправляю SET_COLOR_RED")
    # AI отправляет команду через industrial_command
else:
    print("CO2 в норме, отправляю SET_COLOR_GREEN")

На практике AI-агент сам решает, когда вызывать industrial_command — пользователь только описывает логику.

Почему это выгодно: AI вместо ручного кодирования

Традиционный подход к созданию умного дисплея требует:
- Написания прошивки для ESP32/Arduino (300-500 строк кода)
- Настройки MQTT-брокера и подключения
- Написания скрипта на Python или Node.js для обработки данных
- Отладки всех компонентов

С ASI Biont вы просто описываете задачу на русском языке. AI-агент:
1. Генерирует код прошивки для микроконтроллера
2. Создаёт и выполняет Python-скрипт для MQTT-интеграции
3. Подключается к вашему оборудованию через Hardware Bridge, если нужно
4. Адаптируется под изменения — «Добавь на экран график влажности» — AI перепишет код за секунды

Заключение: попробуйте сами

TFT LCD на ILI9341 или ST7789 — отличная основа для умного дисплея, а ASI Biont превращает его в полноценный AI-управляемый интерфейс. Больше не нужно тратить дни на написание и отладку кода: просто опишите, что вы хотите видеть на экране, и AI-агент сделает всю интеграцию за вас.

Хотите попробовать? Зайдите на asibiont.com, создайте API-ключ, скачайте bridge.py (если используете COM-порт) и напишите в чат: «Подключи мой ESP32 с дисплеем ST7789 к MQTT и покажи температуру с датчика DHT22». Результат будет через минуту.

← Все статьи

Комментарии