Введение
7-сегментные дисплеи на чипе TM1637 — это классика индикации в DIY-проектах и промышленных панелях. Благодаря простому I²C-подобному интерфейсу и низкой цене (около 150–300 рублей за модуль) они используются везде: от термометров до систем обратного отсчёта. Однако ручное программирование логики отображения (смена данных, анимация, обработка ошибок) отнимает время и требует навыков. AI-агент ASI Biont решает эту задачу: он подключается к дисплею через ESP32 и MQTT, автоматически генерирует код на MicroPython для ESP32 и Python-скрипт для облака, а затем управляет индикацией по командам из чата. В этой статье я покажу, как за 15 минут настроить отображение температуры с датчика DHT22, обратный отсчёт и статус системы без написания кода вручную.
Почему TM1637 и ASI Biont?
TM1637 — это контроллер для управления 4- или 6-разрядными 7-сегментными светодиодными индикаторами. Он поддерживает яркость (8 уровней) и двоеточие. Обычно его подключают к микроконтроллеру (ESP32, Arduino) по двум проводам (CLK и DIO). ASI Biont — AI-агент, который специализируется на интеграции с оборудованием через промышленные протоколы. Комбинация этих двух технологий позволяет:
- Выводить на дисплей данные с любых датчиков (температура, влажность, давление) в реальном времени.
- Управлять индикацией удалённо — через MQTT-команды из чата.
- Автоматизировать сценарии: например, при превышении температуры дисплей мигает или показывает «Err».
Какой способ подключения используем?
Для интеграции TM1637 с ASI Biont я выбрал MQTT (через paho-mqtt). Почему:
- TM1637 подключается к ESP32, который работает как MQTT-клиент.
- ASI Biont в облаке (на Railway) не имеет прямого доступа к COM-портам пользователя, но может подписаться на топики MQTT-брокера (например, Mosquitto).
- AI-агент пишет Python-скрипт, который выполняется в sandbox-окружении (через execute_python) и взаимодействует с ESP32 через MQTT-брокер.
- Это позволяет управлять дисплеем из любой точки мира, где есть интернет.
Альтернативы: Hardware Bridge (COM-порт) — если ESP32 подключён к ПК через USB-UART, но это ограничивает удалённый доступ. Modbus — редко используется с TM1637. HTTP API — возможен, но требует веб-сервера на ESP32.
Сценарий: отображение температуры с DHT22 на TM1637 через ASI Biont
Что нужно:
- ESP32 (например, ESP32-DevKitC) — около 500 руб.
- Модуль TM1637 (4-разрядный) — 200 руб.
- Датчик DHT22 (температура и влажность) — 300 руб.
- Компьютер для прошивки ESP32 (Arduino IDE или Thonny для MicroPython).
- MQTT-брокер: можно использовать публичный
test.mosquitto.orgили локальный Mosquitto. - Аккаунт на asibiont.com.
Схема подключения
ESP32 TM1637
GPIO18 -------> CLK
GPIO19 -------> DIO
3.3V -------> VCC
GND -------> GND
ESP32 DHT22
GPIO4 -------> DATA
3.3V -------> VCC
GND -------> GND
Подключение простое: четыре провода к TM1637 (два сигнальных, питание и земля) и один цифровой пин к DHT22.
Код MicroPython для ESP32
На ESP32 загружаем прошивку MicroPython (рекомендую версию 1.23). Затем отправляем скрипт через Thonny или ampy:
from machine import Pin
import time
import network
from umqtt.simple import MQTTClient
import dht
# Настройки Wi-Fi
WIFI_SSID = "your_ssid"
WIFI_PASS = "your_password"
# Настройки MQTT
BROKER = "test.mosquitto.org"
TOPIC_TEMP = "home/temperature"
TOPIC_CMD = "home/display_cmd"
# Класс для TM1637 (упрощённый)
class TM1637:
def __init__(self, clk, dio):
self.clk = Pin(clk, Pin.OUT)
self.dio = Pin(dio, Pin.OUT)
self._write_cmd(0x40) # автоинкремент
self._write_cmd(0x88 | 7) # яркость 7 (макс)
self._clear()
def _start(self):
self.dio.value(0)
self.clk.value(0)
def _stop(self):
self.dio.value(0)
self.clk.value(1)
self.dio.value(1)
def _write_byte(self, b):
for i in range(8):
self.dio.value((b >> i) & 1)
self.clk.value(1)
self.clk.value(0)
self.clk.value(1)
ack = self.dio.value()
self.clk.value(0)
return ack
def _write_cmd(self, cmd):
self._start()
self._write_byte(cmd)
self._stop()
def _clear(self):
self._write_cmd(0xC0) # адрес 0
for i in range(4):
self._write_byte(0x00)
self._stop()
def show_number(self, num):
digits = [0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F] # 0-9
s = f"{int(num):04d}"[:4]
self._write_cmd(0xC0)
for ch in s:
self._write_byte(digits[int(ch)])
self._stop()
# Инициализация
display = TM1637(clk=18, dio=19)
sensor = dht.DHT22(Pin(4))
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASS)
while not wlan.isconnected():
time.sleep(1)
print("WiFi connected")
# MQTT клиент
def cb(topic, msg):
print("Received:", msg)
if msg == b"clear":
display._clear()
elif msg == b"test":
display.show_number(1234)
client = MQTTClient("esp32", BROKER)
client.set_callback(cb)
client.connect()
client.subscribe(TOPIC_CMD)
print("MQTT connected")
# Основной цикл
while True:
try:
sensor.measure()
temp = sensor.temperature()
display.show_number(temp)
client.publish(TOPIC_TEMP, str(temp))
time.sleep(5)
except Exception as e:
print("Error:", e)
display.show_number(9999) # ошибка
time.sleep(1)
Этот код каждые 5 секунд измеряет температуру, отображает её на дисплее и публикует в MQTT-топик home/temperature. Также он подписан на топик home/display_cmd для приёма команд (например, clear или test).
Интеграция с ASI Biont: AI пишет код за секунды
Теперь — ключевая часть. Вместо того чтобы вручную писать Python-скрипт для облака, мы просто описываем задачу в чате ASI Biont:
«Подключись к MQTT-брокеру test.mosquitto.org, подпишись на топик home/temperature, каждые 30 секунд читай последнее значение, и если температура выше 30°C — опубликуй в топик home/display_cmd команду "alert", иначе "ok". Выведи лог в чат.»
AI-агент ASI Biont анализирует запрос, генерирует Python-скрипт с использованием paho-mqtt и выполняет его в sandbox-окружении через execute_python. Вот пример того, что AI создаст:
import paho.mqtt.client as mqtt
import time
BROKER = "test.mosquitto.org"
TOPIC_TEMP = "home/temperature"
TOPIC_CMD = "home/display_cmd"
THRESHOLD = 30.0
def on_connect(client, userdata, flags, rc):
print("Connected to broker")
client.subscribe(TOPIC_TEMP)
def on_message(client, userdata, msg):
try:
temp = float(msg.payload.decode())
print(f"Temperature: {temp:.1f}°C")
if temp > THRESHOLD:
client.publish(TOPIC_CMD, "alert")
print("Alert published")
else:
client.publish(TOPIC_CMD, "ok")
print("OK published")
except Exception as e:
print(f"Error: {e}")
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.loop_start()
# Ждём 30 секунд (sandbox ограничен 30 сек)
time.sleep(30)
client.loop_stop()
AI выполняет этот код и сразу видит результат в чате: Temperature: 28.5°C, OK published. Если температура превышает 30°C, дисплей на ESP32 получает команду alert, и вы можете запрограммировать ESP32 на мигание или отображение «HOT». Всё без ручного написания кода — только диалог.
Другие сценарии
- Обратный отсчёт: Попросите AI: «Настрой таймер на 60 секунд, публикуй в топик home/display_cmd значение секунд каждую секунду. На ESP32 пусть отображается обратный отсчёт.»
- Статус системы: «Подключись к моему серверу по SSH, проверь загрузку CPU и публикуй в топик home/display_cmd значение нагрузки (0–100%). На дисплей выводи число.»
- Уведомления: «Если в топике home/alert появится сообщение "fire", опубликуй в home/display_cmd "8888" — пусть дисплей показывает четыре восьмёрки.»
Почему это выгодно
- Экономия времени: AI генерирует код за 2–3 секунды. Ручная разработка заняла бы 20–30 минут с отладкой.
- Гибкость: Не нужно ждать обновлений софта. Подключайте любое устройство через MQTT, Modbus, SSH или COM-порт — AI сам напишет интеграцию.
- Доступность: Всё управление через чат. Нет панелей управления или кнопок «добавить устройство». Просто опишите задачу.
- Отказоустойчивость: AI может добавить обработку ошибок, таймауты и логирование — как в примере выше, где при сбое публикуется
alert.
Заключение
7-сегментный дисплей TM1637 в паре с ESP32 и AI-агентом ASI Biont превращается в интеллектуальный индикатор, который автоматически отображает данные из облака, реагирует на команды и сигнализирует о проблемах. Всё, что нужно — описать задачу в чате, и AI сам напишет код для MicroPython и Python, настроит MQTT-мост и запустит интеграцию. Никаких сложных IDE, никакого ручного кодинга — только диалог с AI.
Попробуйте сами: зарегистрируйтесь на asibiont.com, подключите ESP32 с TM1637 и датчиком, напишите в чат «Покажи температуру на дисплее» — и AI сделает всё за вас. Это будущее автоматизации, доступное уже сегодня.
Комментарии