Введение
TFT-дисплеи на контроллерах ILI9341 и ST7789 — одни из самых популярных графических экранов в DIY-проектах и встраиваемых системах. Они выводят цветную картинку, шрифты, графики — идеально для создания приборной панели: температура, влажность, давление, статусы системы. Но чтобы это заработало, обычно нужно писать прошивку на C++, рисовать буферы, обрабатывать прерывания. А если данных много, а требования к визуализации меняются каждый день? Тут на помощь приходит AI-агент ASI Biont.
В этой статье мы разберём, как подключить TFT LCD (ILI9341 или ST7789) к ASI Biont и превратить AI в «мозг» вашего дисплея. Вы узнаете, как AI-агент через MQTT собирает данные с датчиков, анализирует их и отправляет команды на ESP32, который рисует на экране всё что нужно: от текущей температуры до push-уведомлений. Никакого ручного кодирования сложной логики — AI сделает интеграцию за секунды по вашему описанию.
Почему именно TFT LCD и AI?
Традиционный подход — жёсткая прошивка, где все сценарии отображения зашиты в код. Хотите добавить новый индикатор? Перепрошивайте ESP32. Хотите, чтобы дисплей показывал прогноз погоды или уведомления из Telegram? Нужен новый код.
AI-агент меняет подход: вы описываете желаемый вид экрана, а AI генерирует и выполняет Python-скрипт, который через MQTT отправляет команды на ESP32. Дисплей становится динамическим — он реагирует на события в реальном времени, на данные сотен датчиков, на команды из чата. И всё это без изменения прошивки микроконтроллера.
Как ASI Biont подключается к TFT LCD?
Существует несколько способов интеграции. Для TFT LCD, который чаще всего работает в связке с ESP32 или Arduino, оптимальны два варианта:
- MQTT — ESP32 подключен к Wi-Fi и MQTT-брокеру. AI использует
execute_pythonс библиотекойpaho-mqttдля подписки на данные с датчиков и публикации команд на дисплей. - Hardware Bridge + COM-порт — если ESP32/Arduino подключен к ПК по USB (программатор). Пользователь запускает
bridge.py, который соединяется с ASI Biont через WebSocket. AI отправляетindustrial_commandс протоколомserial://, пишет hex-команды в порт, и микроконтроллер рисует на дисплее.
В этой статье мы сосредоточимся на MQTT-сценарии, как наиболее гибком для IoT-проектов.
Реальный сценарий: умная метеостанция с AI-управлением
Задача
Собрать данные температуры и влажности с датчика DHT22 (ESP32 + TFT LCD) и выводить их на экран в реальном времени. При этом AI-агент должен анализировать тренды: если температура превышает 30°C — отправлять уведомление в Telegram и менять цвет фона дисплея на красный. Владелец может в любой момент попросить AI изменить оформление или добавить новый индикатор — без перепрошивки.
Схема подключения
[DHT22] → GPIO (ESP32) → SPI (TFT LCD)
[ESP32] ←→ [Wi-Fi Router] ←→ [MQTT Broker (mosquitto)]
[MQTT Broker] → ASI Biont (облако)
ESP32 публикует данные с DHT22 в топик sensor/dht22. AI-агент подписывается на этот топик, анализирует, и публикует команды для дисплея в топик display/command. ESP32 подписан на display/command и рисует на экране.
Что нужно подготовить
- ESP32 (например, ESP32-WROOM-32)
- TFT LCD на ILI9341 (SPI) или ST7789
- Датчик DHT22
- MQTT-брокер (можно локальный Mosquitto или облачный HiveMQ)
- Аккаунт ASI Biont
- Установленный на ПК bridge.py (скачивается из дашборда ASI Biont → Devices → Create API Key) — для первоначальной прошивки ESP32, если не хотите настраивать его вручную.
Прошивка ESP32 (Arduino IDE)
Приведём пример прошивки, которая подключается к Wi-Fi, читает DHT22, публикует данные в MQTT и слушает команды для дисплея. Код можно скопировать и загрузить в Arduino IDE.
#include <WiFi.h>
#include <PubSubClient.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <DHT.h>
// Пины
#define TFT_CS 15
#define TFT_DC 2
#define TFT_RST 4
#define DHTPIN 5
#define DHTTYPE DHT22
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
DHT dht(DHTPIN, DHTTYPE);
WiFiClient espClient;
PubSubClient client(espClient);
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
const char* mqtt_server = "broker.hivemq.com";
void setup() {
Serial.begin(115200);
tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("Connecting...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
dht.begin();
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP32TFT")) {
client.subscribe("display/command");
} else {
delay(5000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length) {
String msg;
for (int i=0; i<length; i++) msg += (char)payload[i];
// Разбор JSON-команды: {"action":"show_temp","value":25.3}
if (msg.indexOf("\"action\":\"clear\"") >= 0) {
tft.fillScreen(ILI9341_BLACK);
} else if (msg.indexOf("\"action\":\"color\"") >= 0) {
// Меняем цвет фона
int r = getValue(msg, "r").toInt();
int g = getValue(msg, "g").toInt();
int b = getValue(msg, "b").toInt();
tft.fillScreen(tft.color565(r,g,b));
} else if (msg.indexOf("\"action\":\"text\"") >= 0) {
String text = getValue(msg, "text");
int x = getValue(msg, "x").toInt();
int y = getValue(msg, "y").toInt();
tft.setCursor(x, y);
tft.setTextColor(ILI9341_WHITE);
tft.println(text);
}
}
String getValue(String data, String key) {
int start = data.indexOf("\"" + key + "\":\"");
if (start == -1) return "";
start += key.length() + 4;
int end = data.indexOf("\"", start);
return data.substring(start, end);
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
float h = dht.readHumidity();
float t = dht.readTemperature();
if (!isnan(h) && !isnan(t)) {
String payload = "{\"temp\":" + String(t) + ",\"hum\":" + String(h) + "}";
client.publish("sensor/dht22", payload.c_str());
}
delay(10000);
}
Этот код — основа. Вы можете загрузить его на ESP32 через Arduino IDE. После загрузки ESP32 будет публиковать данные и слушать команды.
Интеграция с ASI Biont
Теперь самое интересное: как заставить AI-агента управлять дисплеем.
В ASI Biont все интеграции делаются через диалог с AI. Пользователь просто пишет в чате, что нужно сделать. Агент сам пишет Python-скрипт и выполняет его в защищённом окружении (execute_python).
Пример запроса в чат ASI Biont
«Подключись к MQTT брокеру broker.hivemq.com:1883. Подпишись на топик sensor/dht22. Получай данные температуры и влажности. Если температура > 30°C, отправь уведомление в Telegram (токен бота: 123456:ABC) и опубликуй в топик display/command JSON: {"action":"color","r":255,"g":0,"b":0}. Если температура < 20°C, сделай фон синим. Иначе фон зелёный. Каждые 10 секунд выводи на дисплей текущие показания текстом через JSON команду text.»
AI-агент сгенерирует и выполнит следующий Python-скрипт (упрощённый):
import paho.mqtt.client as mqtt
import json
import time
import requests
# Конфигурация
BROKER = "broker.hivemq.com"
PORT = 1883
SENSOR_TOPIC = "sensor/dht22"
DISPLAY_TOPIC = "display/command"
TELEGRAM_TOKEN = "123456:ABC"
CHAT_ID = "123456789"
def send_telegram(text):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
requests.post(url, json={"chat_id": CHAT_ID, "text": text})
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
temp = data.get("temp", 25)
hum = data.get("hum", 50)
# Определяем цвет фона
if temp > 30:
color = {"r": 255, "g": 0, "b": 0}
send_telegram(f"🔥 Температура {temp}°C! Срочно!")
elif temp < 20:
color = {"r": 0, "g": 0, "b": 255}
else:
color = {"r": 0, "g": 255, "b": 0}
# Отправляем команду смены фона
client.publish(DISPLAY_TOPIC, json.dumps({"action": "color", **color}))
# Отправляем команду вывода текста
text_msg = f"Temp: {temp:.1f}C Hum: {hum:.1f}%"
client.publish(DISPLAY_TOPIC, json.dumps({"action": "text", "x": 10, "y": 100, "text": text_msg}))
# Подключаемся
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.subscribe(SENSOR_TOPIC)
client.loop_start()
# Оставляем работать на 300 секунд (ограничение sandbox)
time.sleep(300)
client.loop_stop()
Важно: Sandbox ASI Biont имеет таймаут 30 секунд. Для долгоживущих подписок используется client.loop_forever() в реальном bridge-скрипте, но в облачном окружении AI может запускать скрипт повторно или использовать внешний брокер с webhooks. Однако для демонстрации достаточно.
AI-агент выполнит этот скрипт, и вы увидите, как дисплей ESP32 начнёт менять цвет и выводить показания в реальном времени.
Альтернативный способ: Hardware Bridge + COM-порт
Если ESP32 подключён к ПК по USB (через UART), можно обойтись без Wi-Fi. Пользователь скачивает bridge.py из дашборда ASI Biont (Devices → Create API Key), запускает его с параметрами:
pip install pyserial requests websockets
python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud 115200
Затем в чате ASI Biont пишет:
«Подключись к порту COM3 через bridge. Отправь на ESP32 команду "hello" в hex. После этого подпишись на данные с датчика и отправляй команды на дисплей.»
AI использует industrial_command(protocol='serial://', command='serial_write_and_read', data='68656c6c6f0a') для записи и чтения ответа.
Этот способ удобен для отладки или когда нет Wi-Fi.
Какие ещё сценарии возможны?
| Сценарий | Что делает AI | Результат на дисплее |
|---|---|---|
| Мониторинг сервера | Читает load average через SSH на Raspberry Pi | График нагрузки, текстовая строка |
| Уведомление о движении | Получает сигнал от PIR-сенсора через MQTT | Мигающий текст "Движение!" + смена фона |
| Статус умного дома | Опрашивает реле и датчики через Modbus TCP | Список состояний: свет, розетки, окна |
| Прогноз погоды | Запрашивает OpenWeatherMap API | Температура, иконка погоды (если дисплей цветной) |
| Трекер криптовалют | Получает цену биткоина через HTTP API | Крупные цифры зелёным/красным |
Все эти сценарии AI-агент реализует за секунды, генерируя подходящий Python-код с библиотеками requests, paho-mqtt, pymodbus, paramiko и т.д.
Преимущества подхода
- Нулевое ручное кодирование логики отображения — вы описываете желание, AI пишет скрипт.
- Гибкость — хотите добавить новый виджет? Просто напишите в чат.
- Универсальность — один AI-агент может управлять десятками дисплеев, датчиков и исполнительных устройств.
- Интеграция с любыми сервисами — Telegram, email, базы данных, облачные API — всё доступно через execute_python.
- Экономия времени — вместо дней разработки — минуты настройки.
Как начать?
- Зарегистрируйтесь на asibiont.com.
- Соберите ESP32 с TFT LCD и DHT22 по схеме выше.
- Загрузите прошивку-заготовку (или используйте свою).
- В дашборде ASI Biont создайте API-ключ и скачайте bridge.py (если нужен COM-порт) или используйте MQTT напрямую.
- Напишите в чате AI-агенту задачу, как в примере.
Заключение
TFT-дисплей перестаёт быть просто выводным устройством с фиксированной прошивкой. В связке с AI-агентом ASI Biont он становится адаптивным, динамическим и управляемым через естественный язык. Вы больше не привязаны к жёсткому коду — AI автоматизирует интеграцию, визуализацию и реакции на события.
Попробуйте сами: подключите свой первый дисплей к ASI Biont сегодня и увидьте, как AI оживляет данные.
Комментарии