От микрофона к умному дому за одну минуту
Представьте: вы говорите «включи свет» — и лампа зажигается. Никаких пультов, приложений или голосовых ассистентов с закрытыми API. Всю логику берёт на себя AI-агент ASI Biont, который подключается к вашему микрофону через ESP32 и MQTT. Ни строчки кода писать не нужно — достаточно описать задачу в чате.
В этой статье разберём, как подключить аналоговый (MAX9814) или цифровой (INMP441) микрофон к ESP32, настроить распознавание голосовых команд и передать управление AI-агенту, который сам напишет код интеграции и будет выполнять ваши сценарии.
Какие микрофоны подходят и чем отличаются
Оба модуля предназначены для захвата звука, но работают по‑разному:
| Модель | Тип | Интерфейс | Когда использовать |
|---|---|---|---|
| MAX9814 | Аналоговый | Линейный выход (Vout) | Простые проекты, где не нужна высокая частота дискретизации; легко читать через ADC ESP32. |
| INMP441 | Цифровой (MEMS) | I²S (битклок, словный клок, данные) | Высококачественный звук, подавление шума, работа с голосовыми ассистентами. |
Для голосового управления с распознаванием команд лучше выбрать INMP441 — он даёт чистый цифровой сигнал, не требующий дополнительной фильтрации. MAX9814 тоже подойдёт, но потребует настройки АЦП.
Как ASI Biont подключается к микрофону?
Микрофон — сенсор, он не может напрямую выходить в интернет. Поэтому мы используем связку ESP32 (микроконтроллер) → MQTT (протокол) → ASI Biont (AI-агент).
AI подключается к MQTT-брокеру через библиотеку paho-mqtt в режиме execute_python. Пользователь просто пишет в чате:
«Подключи ESP32 с микрофоном INMP441 к моему MQTT-брокеру mosquitto.org:1883, топик voice/command. Когда услышишь команду „включи свет“, отправь MQTT-сообщение на топик home/light с payload 1»
AI сам генерирует Python-скрипт, который:
- подписывается на voice/command;
- парсит JSON из топика;
- публикует управляющие команды в другие топики.
Никаких панелей, кнопок «добавить устройство» — только диалог в чате.
Конкретный сценарий: голосовое управление освещением
1. Настройка ESP32 + INMP441
Соберите схему:
- INMP441 VDD → ESP32 3.3V
- GND → GND
- LR (Left/Right Select) → GND (левый канал)
- DOUT (Data Out) → GPIO32
- BCLK (Bit Clock) → GPIO26
- WS (Word Select) → GPIO25
Прошиваем ESP32 скетчем на Arduino, который:
- захватывает аудио через I²S;
- распознаёт ключевые слова (например, «включи свет» или «выключи свет») с помощью TensorFlow Lite для микроконтроллеров;
- публикует результат в MQTT.
Пример фрагмента (полный скетч доступен в документации библиотеки ESP32-I2S):
#include <WiFi.h>
#include <PubSubClient.h>
#include <I2S.h>
// Настройка MQTT
const char* mqtt_server = "broker.hivemq.com";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
// ... подключение к WiFi
client.setServer(mqtt_server, 1883);
// Инициализация I2S
I2S_Init();
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
// Захват аудио и распознавание (упрощённо)
if (detectedCommand == "light_on") {
client.publish("voice/command", "{\"cmd\":\"light_on\",\"confidence\":0.95}");
}
// аналогично для "light_off"
}
2. Интеграция с ASI Biont
В чате с AI-агентом отдаём инструкцию:
«Подпишись на топик voice/command, при команде „light_on“ опубликуй в home/light значение 1, при „light_off“ — 0»
AI мгновенно создаёт и выполняет такой Python-скрипт:
import paho.mqtt.client as mqtt
import json
import time
def on_connect(client, userdata, flags, rc):
print("Connected to broker")
client.subscribe("voice/command")
def on_message(client, userdata, msg):
try:
payload = json.loads(msg.payload)
cmd = payload.get("cmd")
if cmd == "light_on":
# Публикуем команду включения света (например, на ESP32-реле)
client.publish("home/light", "1")
print("Light ON")
elif cmd == "light_off":
client.publish("home/light", "0")
print("Light OFF")
except Exception as e:
print("Error:", e)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.hivemq.com", 1883, 60)
client.loop_start()
time.sleep(30) # сэндбокс работает 30 секунд, можно увеличить
Скрипт выполняется в защищённом окружении ASI Biont (sandbox) на стороне облака. Все данные передаются через MQTT — никаких открытых портов не требуется.
3. Результат
Говорите «включи свет» — ESP32 распознаёт команду, публикует JSON, AI принимает решение и включает лампу. Всё происходит за доли секунды.
Почему это выгодно?
- Не нужно писать код самому. AI пишет скрипты за вас на Python с использованием реальных библиотек (
paho-mqtt,json). - Подключается к любому устройству. Кроме MQTT, ASI Biont умеет работать через SSH, COM-порт (Hardware Bridge), Modbus TCP, OPC UA и ещё десяток протоколов.
- Гибкость. Вы можете менять сценарии прямо в чате: «добавь команду „открой шторы“ и отправляй MQTT на топик home/curtain». AI адаптирует интеграцию за секунду.
- Никаких панелей управления. Всё — через диалог. Просто, быстро, без лишнего UI.
Альтернативный способ: Hardware Bridge
Если вы хотите получать сырой аудиопоток на ПК и обрабатывать его локально, можно использовать Hardware Bridge. Но для голосового управления через облако MQTT — оптимальное решение.
Заключение
Подключение микрофона к AI-агенту открывает мир голосового управления без привязки к коммерческим ассистентам. ASI Biont берёт на себя всю сложность написания кода и интеграции — вы просто описываете задачу, а AI её выполняет.
Попробуйте сами: зайдите на asibiont.com, создайте API-ключ, опишите свою систему умного дома с микрофоном — и через минуту вы будете управлять светом, климатом и техникой голосом.
Комментарии