Пятница, 13:00. Середина августа. За окном +35°C, и ваши растения, скорее всего, уже просят пить. Если вы, как и я, любите умные устройства, но не готовы неделями разбираться в микроконтроллерах и облачных сервисах, этот гайд — для вас. Сегодня я покажу, как за один вечер собрать систему умного сада на ESP32 и шине I2C, подключить её к AI-агенту ASI Biont и почти без кода получить автополив, Telegram-алерты и аналитику роста. ASI Biont сам напишет интеграцию — нужно только описать в чате, какие датчики у вас есть и что они должны делать. Пора выбросить лейку и доверить зелень искусственному интеллекту!
Что такое I2C и почему это идеальная шина для умного сада
I2C (Inter-Integrated Circuit) — это синхронная двухпроводная шина, разработанная Philips (теперь NXP) ещё в 1982 году. Всего два сигнала: SDA (данные) и SCL (тактовый сигнал) — и к микроконтроллеру можно подключить до 128 устройств, используя всего два пина. Датчики DHT20, BMP280, OLED-дисплеи SSD1306, модули влажности почвы — почти вся популярная периферия для IoT работает по I2C. Каждое устройство имеет уникальный 7-битный адрес, поэтому конфликты решаются сменой адреса на модуле. Для новичка это означает минимум пайки и максимум тюнинга.
Собираем железо: ESP32 + датчики
Для проекта мне понадобились:
- ESP32 DevKit (любой вариант с Wi-Fi) — $5
- Датчик температуры и влажности DHT20 (около $3)
- Датчик влажности почвы емкостного типа (аналоговый, ~$2)
- Датчик давления и температуры BMP280 (для компенсации атмосферного давления, $3)
- OLED-дисплей 0.96\" на контроллере SSD1306 ($4)
Схема подключения простая: SDA и SCL всех устройств — на GPIO21 и GPIO22 ESP32 соответственно. Питание — 3.3V и GND. Я использовал макетную плату и соединительные провода.
| Устройство | SDA (GPIO21) | SCL (GPIO22) | VCC | GND |
|---|---|---|---|---|
| DHT20 | SDA | SCL | 3.3V | GND |
| BMP280 | SDA | SCL | 3.3V | GND |
| OLED SSD1306 | SDA | SCL | 3.3V | GND |
| Датчик почвы | — (аналог GPIO36) | — | 3.3V | GND |
Прошивка ESP32: читаем данные по I2C и отправляем в UART
Чтобы данные попали в ASI Biont, самый простой путь — выводить их в UART (USB) в виде строки. Я использовал MicroPython, но подойдёт и C++ (Arduino). Вот минимальный код для чтения DHT20 и аналогового датчика почвы:
from machine import Pin, I2C, ADC
import dht20, time
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000)
dht = dht20.DHT20(i2c)
soil = ADC(Pin(36))
soil.atten(ADC.ATTN_11DB)
while True:
dht.measure()
temp = dht.temperature()
hum = dht.humidity()
soil_value = soil.read()
soil_percent = (4095 - soil_value) / 4095 * 100
print(f"temp={temp:.1f};hum={hum:.1f};soil={soil_percent:.1f}")
time.sleep(10)
Обратите внимание: в MicroPython нет готового класса dht20 в стандартной прошивке. Я скопировал библиотеку из репозитория dht20-micropython на GitHub. Для BMP280 и OLED — аналогично, ищите по запросу micropython bmp280 и micropython ssd1306.
Почему я вывожу данные в UART? Потому что ASI Biont имеет штатный механизм для COM-портов — Hardware Bridge (мост). Практически любой микроконтроллер можно подключить к компьютеру через USB, получить виртуальный COM-порт и передавать данные в AI-агента.
Подключение к ASI Biont через Hardware Bridge
ASI Biont — это AI-агент, который умеет подключаться к устройствам через разные протоколы: MQTT, Modbus, SSH, OPC-UA, CAN и другие. Но для COM-портов используется специальный скрипт bridge.py, который скачивается из дашборда ASI Biont (не с GitHub!). Он создаёт мост между физическим портом и AI-агентом. Запускается так:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud=115200 --rate=10
Где --token — ваш ключ из личного кабинета ASI Biont, --ports — порт, к которому подключён ESP32, --baud — скорость UART (в моём случае 115200), --rate — частота опроса в герцах.
Теперь всё, что ESP32 печатает в UART, автоматически уходит в ASI Biont. Но как заставить AI-агента реагировать на эти данные? Никаких панелей управления. Вы просто пишете в чате ASI Biont задачу на естественном языке:
«Слушай COM3. Если влажность почвы меньше 30% — отправь мне сообщение в Telegram и включи насос на 5 секунд. Данные пиши в Google Sheets каждые 10 минут.»
ASI Biont использует универсальный execute_python — он сам пишет и исполняет Python-скрипт (в песочнице), который через pyserial читает COM-порт, парсит данные, принимает решение и отправляет команды. Поэтому вам не нужно ждать, пока разработчики добавят готовую интеграцию для вашего датчика. Подключается что угодно: ESP32, Arduino, Raspberry Pi, промышленные контроллеры — через любой протокол (pyserial, paramiko, paho-mqtt, pymodbus, aiohttp и др.).
Пример интеграции: автополив и алерты в Telegram
Допустим, я хочу, чтобы при падении влажности почвы ниже 30% AI присылал уведомление в Telegram. Вот как это делает ASI Biont (в упрощённом виде — код генерируется агентом):
import serial
import requests
ser = serial.Serial('COM3', 115200, timeout=1)
line = ser.readline().decode('utf-8').strip()
# Пример строки: "temp=25.3;hum=60;soil=20"
data = dict(item.split('=') for item in line.split(';'))
soil = float(data['soil'])
if soil < 30:
requests.post(
'https://api.telegram.org/bot<ВАШ_ТОКЕН>/sendMessage',
json={'chat_id': '<ЧАТ_ID>', 'text': f'⚠️ Почва просохла до {soil}%! Нужен полив.'}
)
# Отправляем команду на ESP32 включить насос
industrial_command(protocol='serial', command='PUMP_ON')
Кто бы мог подумать, что для интеграции достаточно просто описать логику словами? AI генерирует этот код, выполняет его в sandbox, и всё работает. Никакой ручной настройки параметров соединения — pyserial уже установлен.
Реальный сценарий: умный сад на балконе
Расскажу, как я развернул эту систему у себя на балконе. Собрал ESP32 с датчиками, подключил к ноутбуку (Rock Pi, который работает 24/7). Запустил bridge. В чате ASI Biont написал:
«Найди устройство на COM3. Сделай дашборд с показаниями температуры, влажности воздуха и почвы. Если влажность почвы < 35% — пришли мне алерт в Telegram и включи реле на GPIO26 на 10 секунд. Раз в день присылай сводку.»
Через пару секунд AI ответил: «Готово, контролирую. Ниже ваши данные.» И теперь я получаю уведомления. Когда розы просятся пить — приходит сообщение. Автополив включается автоматически. А один раз я заметил, что температура на балконе поднялась до 40°C — прилетел алерт, я занёс датчик в тень. Это спасло рассаду.
Подводные камни, которые я обнаружил
- Питание. ESP32 может питаться от USB, но если датчиков больше трёх, напряжение проседает. Используйте отдельный стабилизатор 3.3V.
- Адреса I2C. DHT20 и BMP280 по умолчанию имеют разные адреса (0x38 и 0x76), но если они совпадут, вы увидите мусор в данных. Проверяйте командой
i2c.scan(). - Кодировка UART. В MicroPython
print()добавляет\r\n, а pyserial читает по одному символу. Используйтеtimeoutи буферизацию. - Не все библиотеки поддерживают MicroPython. Например, официальной библиотеки DHT20 нет, но есть порты вроде mcauser/micropython-dht20. Изучите такие репозитории перед покупкой датчика.
- Безопасность. Если ваша система использует Telegram API, токен должен быть секретным. Не публикуйте его в открытых скриптах.
Почему это выгоднее, чем писать интеграцию с нуля
Обычно для подключения нового устройства к облаку вам нужно: изучить документацию протокола, написать сервер, настроить веб-хуки, написать фронтенд для управления. С ASI Biont весь этот пайплайн сжимается до двух шагов: описать устройство и логику в чате. AI сам пишет код, выполняет его и выдаёт результат. Это работает благодаря функции execute_python — безопасного выполнения Python-скриптов в sandbox на стороне агента. Поэтому, если вас не устраивает стандартный Modbus или MQTT, вы можете реализовать свой драйвер прямо в чате.
Подключение через execute_python поддерживает любые библиотеки (pyserial, paramiko, paho-mqtt, pymodbus, aiohttp, opcua-asyncio), а значит, устройство может быть каким угодно — от умной лампочки до промышленного контроллера. Не нужно ждать, пока разработчики добавят вашу модель в список поддерживаемых.
Что дальше?
Мой умный сад — это лишь один из вариантов. Вы можете добавить датчики освещённости, влажности воздуха, CO2, видеокамеру (через OpenCV), и ASI Biont будет управлять всем этим. Экосистема строится на диалоге с AI-агентом: описали задачу — получили интеграцию.
Попробуйте сами: перейдите на asibiont.com, создайте проект, скачайте bridge.py из дашборда и подключите свой ESP32. С помощью execute_python вы сможете читать любые I2C-датчики, выводить данные в Telegram, Google Sheets или просто отправлять команды на реле. Приёмник готов — дело за поливом!
Комментарии