Введение
Представьте: на стене вашего офиса или дома висит светодиодная матрица — MAX7219 или WS2812B. На ней может отображаться курс биткоина, погода на завтра, статус сервера или просто приветствие для гостей. Раньше для этого нужно было писать прошивку на C++, разбираться с протоколами, настраивать веб-интерфейс. Теперь это делает AI-агент ASI Biont за несколько минут. Вы просто описываете в чате, что хотите видеть на табло, — и AI сам подключается к вашей LED-матрице, пишет код интеграции и настраивает автоматическое обновление данных. В этой статье — пошаговый гайд: как подключить MAX7219 или WS2812B к ASI Biont, какие способы интеграции использовать и какие сценарии уже работают.
Почему LED-матрица и AI-агент — идеальная пара
Светодиодные матрицы — одни из самых популярных устройств для DIY-проектов и умного дома. Они дёшевы, просты в подключении и позволяют выводить любую текстовую и графическую информацию. Но их главная проблема — статичность. Обычно матрица показывает одно и то же сообщение, пока вы не перепрошьёте контроллер. С AI-агентом матрица становится динамической: она сама подтягивает данные из интернета, реагирует на команды из Telegram и обновляется в реальном времени.
ASI Biont умеет подключаться к LED-матрицам двумя основными способами:
- через MQTT (для ESP32/ESP8266, которые работают по Wi-Fi);
- через Hardware Bridge (для Arduino, подключённого к ПК по USB).
Оба варианта мы разберём на примерах.
Способ 1: ESP32 + WS2812B + MQTT
Что понадобится
- ESP32 (или ESP8266)
- LED-матрица на WS2812B (например, 8×32 или 16×16 пикселей)
- Блок питания 5V (для больших матриц — с запасом)
- Установленный Arduino IDE или PlatformIO
Как это работает
ESP32 прошивается скетчем, который подключается к вашему MQTT-брокеру (можно использовать бесплатный HiveMQ Cloud или Mosquitto на локальном сервере). ASI Biont по команде из чата пишет Python-скрипт, который публикует в MQTT-топик строку текста или JSON с данными. ESP32 получает сообщение и выводит его на матрицу.
Пример: вывод курса BTC
Пользователь пишет в чат ASI Biont:
"Подключись к моему ESP32 по MQTT. Брокер: test.mosquitto.org, порт 1883, топик led/matrix. Напиши скрипт, который раз в час получает курс BTC с CoinGecko и публикует его в этот топик. Скрипт должен работать в execute_python."
AI генерирует и выполняет следующий код:
import paho.mqtt.client as mqtt
import requests
import time
BROKER = "test.mosquitto.org"
TOPIC = "led/matrix"
def get_btc_price():
url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd"
resp = requests.get(url)
data = resp.json()
price = data["bitcoin"]["usd"]
return f"BTC: ${price}"
client = mqtt.Client()
client.connect(BROKER, 1883, 60)
message = get_btc_price()
client.publish(TOPIC, message)
print(f"Sent: {message}")
client.disconnect()
Важно: код не содержит бесконечных циклов, так как sandbox ASI Biont имеет лимит в 30 секунд. Для периодического обновления AI может настроить внешний планировщик (cron на сервере) или использовать встроенный планировщик ASI Biont.
На стороне ESP32 нужно загрузить скетч, который подписан на топик led/matrix и при получении сообщения выводит текст на матрицу. Пример скетча для WS2812B с использованием библиотеки FastLED:
#include <WiFi.h>
#include <PubSubClient.h>
#include <FastLED.h>
#define LED_PIN 5
#define NUM_LEDS 256 // 16x16
#define BRIGHTNESS 64
CRGB leds[NUM_LEDS];
WiFiClient espClient;
PubSubClient client(espClient);
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
const char* mqtt_server = "test.mosquitto.org";
void callback(char* topic, byte* payload, unsigned int length) {
String message = "";
for (int i = 0; i < length; i++) message += (char)payload[i];
// Здесь — код для вывода текста на матрицу
// Например, с помощью библиотеки LEDMatrix
Serial.println("Received: " + message);
}
void setup() {
Serial.begin(115200);
FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
client.connect("ESP32_LED");
client.subscribe("led/matrix");
}
void loop() {
client.loop();
}
После этого матрица будет автоматически показывать курс BTC, который обновляется раз в час.
Способ 2: Arduino + MAX7219 + Hardware Bridge
Что понадобится
- Arduino Uno / Nano
- LED-матрица MAX7219 (например, 4 модуля по 8×8)
- Провода и breadboard
- ПК с Windows/Linux/macOS
Как это работает
Вы запускаете на своём ПК bridge.py — специальное приложение от ASI Biont, которое соединяется с облаком через HTTP long polling. Bridge имеет доступ к COM-портам вашего компьютера. Вы даёте AI команду в чате — и он отправляет industrial_command с протоколом serial://, bridge получает её, открывает COM-порт и отправляет данные на Arduino. Arduino обрабатывает команду и выводит текст на MAX7219.
Запуск bridge
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --default-baud=9600
Пример: статус сервера
Пользователь пишет в чат:
"Подключись к Arduino через bridge на COM3, 9600 baud. Напиши скрипт, который каждые 5 минут проверяет доступность моего сервера example.com по ICMP (через ping) и отправляет на Arduino статус: ONLINE или OFFLINE. Используй industrial_command с протоколом serial://."
AI генерирует и выполняет код в execute_python:
import subprocess
import time
def check_server(host):
result = subprocess.run(["ping", "-c", "1", host], capture_output=True, text=True)
return result.returncode == 0
host = "example.com"
status = "ONLINE" if check_server(host) else "OFFLINE"
# Отправка через industrial_command — это tool call, а не Python-функция
# В реальном чате AI вызовет:
# industrial_command(protocol='serial://', command='serial:send', params={'port': 'COM3', 'baud': 9600, 'data': status})
print(f"Server {host} is {status}")
На стороне Arduino — скетч, который читает данные из Serial и выводит на MAX7219 с помощью библиотеки LedControl:
#include <LedControl.h>
LedControl lc = LedControl(12, 11, 10, 4); // DIN, CLK, CS, количество матриц
String inputString = "";
void setup() {
Serial.begin(9600);
for (int i = 0; i < 4; i++) {
lc.shutdown(i, false);
lc.setIntensity(i, 8);
lc.clearDisplay(i);
}
}
void loop() {
while (Serial.available()) {
char c = Serial.read();
if (c == '\n') {
// Вывод текста на матрицу
printString(inputString);
inputString = "";
} else {
inputString += c;
}
}
}
void printString(String s) {
// Упрощённо: очищаем и выводим посимвольно
for (int i = 0; i < 4; i++) lc.clearDisplay(i);
for (int i = 0; i < s.length(); i++) {
lc.setChar(0, i, s[i], false);
}
}
Теперь Arduino, подключённая к ПК, будет показывать статус сервера, который AI проверяет каждые 5 минут.
Другие сценарии
LED-матрица с ASI Biont может отображать:
- Погоду — AI подключается к OpenWeatherMap API и публикует данные в MQTT;
- Уведомления из Telegram — приходит команда "Покажи на табло: "Встреча в 15:00"";
- Статус умного дома — температура, влажность, включены ли свет или сигнализация;
- Тикер криптовалют — несколько монет по очереди.
Почему это выгодно
Вам не нужно писать код вручную. ASI Biont сам генерирует скрипты под ваш сценарий, используя реальные библиотеки (paho-mqtt, pyserial, requests). Достаточно описать задачу в чате — и через минуту устройство уже работает. Не нужно ждать, пока разработчики добавят поддержку конкретного дисплея — AI подключается к любому устройству через execute_python, MQTT, Hardware Bridge или SSH.
Заключение
LED-матрица MAX7219 или WS2812B — отличный способ визуализировать данные из интернета или статус ваших систем. С ASI Biont настройка занимает минуты, а не дни. Вы просто говорите AI, что хотите видеть на табло, и он делает всё остальное.
Попробуйте сами на asibiont.com — создайте агента, опишите своё устройство и начните управлять дисплеем через Telegram. Бесплатный тариф уже доступен.
Комментарии