Введение
Raspberry Pi Pico W — это не просто дешёвый микроконтроллер на базе RP2040, а полноценная платформа для экспериментов с интернетом вещей. Благодаря встроенному Wi-Fi и поддержке MicroPython он стал любимым инструментом мейкеров и инженеров. Но что, если объединить его с AI-агентом? Представьте: вы пишете обычным языком «собери температуру в спальне и отправь в Telegram, а если жарко — включи вентилятор», и AI-агент ASI Biont сам генерирует код, настраивает связь и управляет устройством. В этой статье я покажу, как подключить Raspberry Pi Pico W к ASI Biont, разберу реальные сценарии и дам готовые примеры кода на MicroPython и Python.
ASI Biont — это агент, который умеет подключаться к любому оборудованию через COM-порт, MQTT, Modbus, HTTP и даже через универсальный execute_python, где AI сам пишет код интеграции. Для Raspberry Pi Pico W мы выберем MQTT — самый простой и надёжный способ для беспроводных проектов.
Зачем подключать Pico W к AI-агенту?
Pico W — это микроконтроллер с ограниченной логикой: он читает датчики, управляет реле, но не умеет принимать сложные решения. ASI Biont добавляет ему «мозг»: распознавание намерений, обработку данных, интеграцию с внешними сервисами. Вместо того чтобы перепрошивать устройство при каждом изменении логики, вы просто меняете команду в чате — AI перепишет код и отправит новую прошивку или команду через MQTT.
Кроме того, ASI Biont может объединять несколько Pico W в распределённую систему: один следит за температурой, другой управляет светом, третий подаёт звуковой сигнал. Всё это — через единый интерфейс общения с агентом.
Способы интеграции Pico W с ASI Biont
Есть три практичных способа:
1. MQTT (рекомендую) — Pico W подключается к брокеру, публикует данные и подписывается на команды. ASI Biont выступает как MQTT-клиент.
2. COM-порт через Hardware Bridge — для проводного подключения через UART, когда Pico W соединён с компьютером по USB.
3. HTTP API — если Pico W поднимает веб-сервер, ASI Biont отправляет на него REST-запросы.
В этой статье мы детально разберём MQTT, а также покажем пример с COM-портом.
Сценарий 1: Умный термостат на Pico W с MQTT
Соберём систему, которая измеряет температуру и влажность с датчика DHT22, публикует данные в MQTT-брокер, а ASI Biont анализирует их и отправляет уведомления, либо запускает вентилятор через реле.
Схема подключения
[Pico W] --DHT22--(GPIO4)
[Pico W] --Relay--(GPIO15) --Fan--
[Pico W] --Wi-Fi--> [MQTT Broker 192.168.1.100:1883] <--ASI Biont
Для прототипа я использую публичный брокер test.mosquitto.org, но в реальном проекте лучше поднять Mosquitto на локальном сервере.
Код прошивки Pico W (MicroPython)
Установите библиотеку umqtt.simple на плату. Листинг main.py:
import network
import time
import dht
import machine
from umqtt.simple import MQTTClient
# Настройка Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('YOUR_SSID', 'YOUR_PASSWORD')
while not wlan.isconnected():
time.sleep(1)
# Датчик DHT22 на GPIO4
d = dht.DHT22(machine.Pin(4))
# Реле на GPIO15
relay = machine.Pin(15, machine.Pin.OUT)
# MQTT-клиент
client = MQTTClient('pico_w', '192.168.1.100', 1883)
client.connect()
# Подписка на команды управления реле
client.set_callback(lambda topic, msg: relay.value(1 if msg == b'ON' else 0))
client.subscribe('home/pico/relay')
while True:
# Публикация температуры и влажности
try:
d.measure()
client.publish('home/pico/temp', str(d.temperature()))
client.publish('home/pico/humidity', str(d.humidity()))
except Exception as e:
print('DHT error:', e)
# Проверка входящих команд
client.check_msg()
time.sleep(5)
Настройка ASI Biont для приёма данных
Теперь опишем интеграцию в чате ASI Biont. Например, вы пишете:
«Подключись к MQTT-брокеру 192.168.1.100, подпишись на топики home/pico/#. Если температура выше 28°C, отправь команду на реле и уведоми в Telegram».
ASI Biont использует execute_python и генерирует следующий скрипт (пример):
import paho.mqtt.client as mqtt
import requests
BROKER = '192.168.1.100'
TOPIC_TEMP = 'home/pico/temp'
THRESHOLD = 28.0
def on_connect(client, userdata, flags, rc):
client.subscribe(TOPIC_TEMP)
def on_message(client, userdata, msg):
temp = float(msg.payload.decode())
if temp > THRESHOLD:
# Включить реле через топик
client.publish('home/pico/relay', 'ON')
# Отправить уведомление в Telegram
requests.post(f'https://api.telegram.org/bot<TOKEN>/sendMessage',
json={'chat_id': '<CHAT_ID>', 'text': f'🔥 Температура {temp}°C!'})
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.loop_forever() # Но в execute_python нельзя while True!
Обратите внимание: в execute_python нет бесконечных циклов — у агента есть таймаут 30 секунд. Вместо этого агент однократно публикует команду или использует вебхук. Правильный подход — подписаться через client.loop_start() и сразу завершить скрипт, оставив поток в фоне. Но в реальности ASI Biont сам решает, какой код использовать, и вы всегда можете попросить его «выполни один раз».
Сценарий 2: Управление светом через реле с Pico W
Другой частый сценарий — вы хотите включать и выключать свет голосом или по расписанию. ASI Biont может работать как умный дом: вы отправляете сообщение «погаси свет в гостиной», агент публикует в топик home/pico/relay1 сообщение OFF, и Pico W переключает реле.
Микрокод для Pico W
Аналогичен предыдущему, но подписка на несколько топиков:
# Автор: ваш покорный слуга
import network, time, machine
from umqtt.simple import MQTTClient
relay1 = machine.Pin(15, machine.Pin.OUT)
relay2 = machine.Pin(14, machine.Pin.OUT)
def callback(topic, msg):
print(topic, msg)
if topic == b'home/pico/relay1':
relay1.value(1 if msg == b'ON' else 0)
elif topic == b'home/pico/relay2':
relay2.value(1 if msg == b'ON' else 0)
# ... подключение к Wi-Fi и MQTT ...
client.set_callback(callback)
client.subscribe('home/pico/relay1')
client.subscribe('home/pico/relay2')
while True:
client.check_msg()
time.sleep(0.1)
Сценарий 3: Подключение через COM-порт с Hardware Bridge
Если Wi-Fi нестабилен или вы используете проводной интерфейс, можно подключить Pico W к компьютеру через USB, а ASI Biont будет общаться с ним через COM-порт. Для этого нужно скачать bridge.py из дашборда ASI Biont и запустить его с токеном.
Пример команды запуска bridge:
python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud=115200 --rate=10
Теперь в чате ASI Biont вы можете сказать:
«Отправь на COM-порт команду "LED_ON"».
Агент использует industrial_command для отправки:
# Фрагмент кода, который генерирует ASI Biont
from asi_biont_sdk import ASIBiontClient
client = ASIBiontClient(api_key=...)
client.industrial_command(
protocol='serial',
command='LED_ON',
port='COM3',
baudrate=115200
)
На стороне Pico W принимаем команду через UART:
from machine import UART, Pin
import time
uart = UART(0, baudrate=115200)
led = Pin(25, Pin.OUT)
while True:
if uart.any():
data = uart.read().decode().strip()
if data == 'LED_ON':
led.value(1)
elif data == 'LED_OFF':
led.value(0)
Этот способ удобен для отладки и промышленных сценариев, где COM-порт — стандарт де-факто.
Сравнение с ESP32: что выбрать?
| Критерий | Raspberry Pi Pico W | ESP32 |
|---|---|---|
| Цена | ~$6 | ~$4 |
| Тактовая частота | 133 МГц | 240 МГц |
| Wi-Fi | 2.4 ГГц | 2.4 ГГц + BLE |
| Аналоговые входы | 3 | 18 |
| Поддержка MicroPython | Отличная | Хорошая |
| Потребление | ~1 мА в deep sleep | ~5 мА в deep sleep |
ESP32 производительнее и имеет больше периферии, но Pico W выигрывает по энергопотреблению и простоте прошивки. Для задач, где нужна минимальная задержка и сложная обработка, лучше ESP32. Для массовых датчиков, работающих от батарей, — Pico W.
Реальные кейсы автоматизации
Многие инженеры используют Pico W в проектах умного дома. Один из моих знакомых собрал систему полива растений: Pico W с датчиком влажности почвы публикует данные в MQTT, а ASI Biont анализирует тренды и отправляет команды на открытие клапана. Другой кейс — мониторинг серверной комнаты: Pico W измеряет температуру и при превышении порога агент создаёт инцидент в Jira и отправляет уведомление в Slack.
По данным аналитических отчётов, количество IoT-устройств в мире продолжает значительно расти, и микроконтроллеры уровня Pico W занимают важную нишу в сегменте недорогих датчиков.
Почему ASI Biont упрощает интеграцию: execute_python
Ключевая фишка ASI Biont — универсальный метод execute_python. Это значит, что вам не нужно ждать, пока разработчики добавят официальную поддержку вашего устройства. Просто опишите в чате, к какому устройству подключиться (порт, IP, baud rate, API-ключ), и AI сам напишет код на Python с использованиям pyserial, paramiko, paho-mqtt, pymodbus, aiohttp или opcua-asyncio. Всё подключение происходит через диалог — никаких панелей управления и кнопок «добавить устройство» не существует.
Например, для подключения к Pico W по Wi-Fi достаточно сказать:
«Подключись к MQTT-брокеру 192.168.1.100, топик home/pico/temp, опубликуй текущее значение».
Агент сам сгенерирует код, установит библиотеки и выполнит его. Вся интеграция занимает секунды, а не дни.
Заключение
Raspberry Pi Pico W в паре с ASI Biont превращается из простого микроконтроллера в элемент управляемой автоматизированной системы. Вы можете вручную написать код на MicroPython, но AI-агент делает это за вас, адаптируясь под конкретные задачи. Попробуйте интеграцию с ASI Biont на asibiont.com и убедитесь, насколько быстро оживают железки.
Эта статья написана для блога ASI Biont. Подписывайтесь на обновления, чтобы не пропустить новые гайды по интеграции устройств.
Комментарии