Введение
PIR (Passive Infrared) сенсор движения — один из самых распространённых датчиков в системах умного дома, охранной сигнализации и промышленной автоматизации. Он фиксирует тепловое излучение движущихся объектов (человек, животное) и выдаёт цифровой сигнал (HIGH / LOW) при обнаружении. Но сам по себе PIR — лишь «глаз», который не умеет анализировать, классифицировать событие и принимать сложные решения. Интеграция PIR-сенсора с AI-агентом, таким как ASI Biont, превращает простой датчик в интеллектуальный узел: AI может отличить движение человека от животного, настроить временные триггеры, объединить данные с других сенсоров, отправить уведомление в Telegram или включить реле. В этой статье мы разберём, как подключить PIR-датчик к ASI Biont через ESP32 и COM-порт (Hardware Bridge), какие сценарии автоматизации открываются и почему для этого не нужно писать код вручную — AI сделает всё за вас.
Как ASI Biont подключается к PIR-датчику
ASI Biont — это AI-агент, который общается с пользователем через чат и умеет подключаться к любому физическому устройству более чем 10 протоколами. Для PIR-датчика на базе ESP32 или Arduino оптимальный способ — COM-порт через Hardware Bridge. Пользователь запускает на своём ПК программу bridge.py (скачивается из дашборда ASI Biont), которая соединяется с облачным AI через WebSocket. AI отправляет команды через инструмент industrial_command, bridge получает их и взаимодействует с портом через библиотеку pyserial. Таким образом, AI «видит» ваш COM-порт как локальный ресурс.
Почему именно COM-порт?
- PIR-датчики на Arduino/ESP32 чаще всего подключаются по UART (Serial), а не по Ethernet или Wi-Fi.
- Hardware Bridge не требует настройки роутера, проброса портов или статического IP.
- Протокол надёжен: bridge использует атомарную операцию serial_write_and_read (отправляет данные в порт и сразу читает ответ).
- На Windows в bridge реализована защита от зависаний: CancelIoEx + PurgeComm + синхронный WriteFile.
Пошаговая инструкция: PIR + ESP32 + ASI Biont
Шаг 1. Схема подключения
Вам понадобится:
- ESP32 (например, ESP32 DevKit V1)
- PIR-датчик HC-SR501 (или HC-SR602)
- Соединительные провода
- USB-кабель для подключения ESP32 к ПК
Схема соединений:
| ESP32 | PIR HC-SR501 |
|---|---|
| 3.3V | VCC |
| GND | GND |
| GPIO4 | OUT |
На HC-SR501 можно отрегулировать чувствительность (потенциометр Sx) и время задержки (потенциометр Tx). Для теста оставьте их в среднем положении.
Шаг 2. Прошивка ESP32 (MicroPython)
Загрузите на ESP32 MicroPython (например, с помощью Thonny или esptool.py). Затем залейте следующий код, который отправляет данные о движении на COM-порт каждые 100 мс:
from machine import Pin
import time
pir = Pin(4, Pin.IN) # GPIO4
while True:
motion = pir.value()
if motion == 1:
print("MOTION_DETECTED")
else:
print("NO_MOTION")
time.sleep(0.1)
Этот код выводит строку MOTION_DETECTED или NO_MOTION в последовательный порт каждые 100 мс.
Шаг 3. Настройка Hardware Bridge
- Откройте дашборд ASI Biont (asibiont.com).
- Перейдите в раздел Devices → Create API Key.
- Скачайте файл
bridge.py. - Установите зависимости:
pip install pyserial requests websockets. - Подключите ESP32 к ПК через USB. Узнайте номер порта:
- Windows:
COM3,COM4(проверьте в Диспетчере устройств) - Linux/macOS:
/dev/ttyUSB0,/dev/ttyACM0 - Запустите bridge:
bash python bridge.py --token=YOUR_API_KEY --ports=COM3 --baud 115200 --rate=10
Где: --token— ваш API-ключ из дашборда--ports— порт, к которому подключена ESP32--baud— скорость (должна совпадать с прошивкой, у нас 115200)--rate— лимит запросов в секунду (10 — для быстрого чтения)
После запуска bridge подключится к ASI Biont через WebSocket. Теперь AI может читать данные с PIR.
Шаг 4. AI-агент читает данные и принимает решения
В чате с ASI Biont напишите:
Подключись к COM3 на 115200 baud. Читай строки. Если видишь MOTION_DETECTED, отправь мне уведомление в Telegram на @my_chat_id. Если NO_MOTION — ничего не делай.
ASI Biont выполнит industrial_command с протоколом serial://, командой serial_write_and_read, и начнёт мониторинг. AI сам напишет Python-скрипт для обработки данных. Выглядеть это будет так (пользователь этого не видит, AI показывает только итог):
import requests
import time
TELEGRAM_TOKEN = "ВАШ_ТОКЕН"
CHAT_ID = "@my_chat_id"
def send_telegram(text):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
requests.post(url, json={"chat_id": CHAT_ID, "text": text})
# Чтение с порта (через bridge)
while True:
data = industrial_command(protocol="serial://", command="read_line") # упрощённо
if "MOTION_DETECTED" in data:
send_telegram("⚠️ Движение обнаружено!")
time.sleep(0.2)
Важно: Вся интеграция выполняется AI-агентом. Пользователь только описывает задачу на естественном языке.
Реальные сценарии автоматизации
1. Автоматическое освещение
PIR-датчик в коридоре: при обнаружении движения AI включает свет через реле (ESP32 + релейный модуль), при отсутствии движения в течение 2 минут выключает. AI анализирует время суток (через datetime) и не включает свет днём, если есть естественное освещение (данные с фоторезистора).
Пример команды в чате:
Подключи ESP32 с PIR на GPIO4 и реле на GPIO5. Если PIR показывает движение и время с 18:00 до 06:00, включи реле на 120 секунд. Отправляй лог в Telegram раз в час.
2. Охранная сигнализация
PIR-датчик в помещении, где никого не должно быть в рабочее время. Если AI обнаруживает движение, он:
- Отправляет тревожное сообщение в Telegram с фото (если есть камера)
- Включает сирену (через второй GPIO)
- Логирует событие в Google Sheets (через HTTP API)
Пример команды:
Создай скрипт охраны: PIR на COM3. Если движение — отправь уведомление в Telegram и запиши в лог-файл на сервере.
3. Умный дом с AI-аналитикой
Объедините данные с PIR, датчика температуры (DHT22) и датчика влажности. AI может:
- Предсказывать, когда в комнате появятся люди, на основе исторических данных (через scikit-learn)
- Корректировать работу кондиционера (включать за 15 минут до прихода)
- Отправлять отчёт о занятости комнаты за день
Пример команды:
Проанализируй данные с PIR за последнюю неделю. Построй график занятости по часам с помощью matplotlib и сохрани в PNG.
4. Управление уведомлениями через email
При обнаружении движения AI может отправить письмо на почту:
import smtplib
from email.mime.text import MIMEText
msg = MIMEText("В офисе движение!")
msg["Subject"] = "AI Alert"
msg["To"] = "admin@example.com"
with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login("user@gmail.com", "password")
server.send_message(msg)
Почему ASI Biont упрощает интеграцию?
Традиционно для подключения PIR-датчика к AI пришлось бы:
- Писать скрипт на Python с pyserial
- Настраивать веб-сервер для приёма данных
- Разворачивать бота в Telegram
- Реализовывать логику триггеров
С ASI Biont всё это заменяется диалогом в чате:
1. Вы описываете задачу (например, «подключи PIR на COM3, при движении отправляй в Telegram»).
2. AI сам генерирует код интеграции на Python с использованием pyserial, requests и других библиотек из sandbox.
3. Код выполняется в облаке (через execute_python) или на bridge (через industrial_command).
4. AI адаптирует поведение под ваши уточнения (время работы, чувствительность, каналы уведомлений).
Никаких панелей управления, кнопок «добавить устройство» или длительных настроек. Всё через чат.
Сравнение способов подключения
| Способ | Когда использовать | Сложность | Скорость |
|---|---|---|---|
| COM-порт (Hardware Bridge) | ESP32, Arduino, STM32 по USB | Низкая | Высокая |
| MQTT | ESP32 по Wi-Fi, умные розетки | Средняя | Средняя |
| SSH | Raspberry Pi, Jetson Nano | Средняя | Высокая |
| HTTP API | Устройства с REST (камеры, термостаты) | Низкая | Средняя |
| Modbus/TCP | Промышленные контроллеры | Высокая | Высокая |
Для PIR-датчика на ESP32 оптимальны COM-порт (если ESP32 подключена по USB к ПК) или MQTT (если ESP32 имеет Wi-Fi).
Пример: MQTT-версия для ESP32
Если ваша ESP32 подключена к Wi-Fi, можно использовать MQTT — это удобно для удалённого доступа.
Прошивка ESP32 (Arduino IDE):
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
const char* mqtt_server = "broker.hivemq.com";
WiFiClient espClient;
PubSubClient client(espClient);
#define PIR_PIN 4
void setup() {
pinMode(PIR_PIN, INPUT);
WiFi.begin(ssid, password);
client.setServer(mqtt_server, 1883);
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
int motion = digitalRead(PIR_PIN);
if (motion == HIGH) {
client.publish("home/pir/motion", "1");
} else {
client.publish("home/pir/motion", "0");
}
delay(100);
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP32_PIR")) {}
delay(5000);
}
}
Интеграция с ASI Biont:
В чате пишем:
Подпишись на MQTT-брокер broker.hivemq.com, топик home/pir/motion. Если приходит 1, включи красный светодиод на GPIO2 через MQTT publish на home/led/state.
AI сгенерирует и выполнит скрипт с paho-mqtt, и всё заработает.
Заключение
PIR-датчик движения — простой, но мощный сенсор, который в паре с AI-агентом ASI Biont становится интеллектуальным устройством. Вы можете подключить его за 5 минут через Hardware Bridge или MQTT, а AI возьмёт на себя анализ данных, логику триггеров и отправку уведомлений. Не нужно писать код с нуля — достаточно описать задачу в чате. ASI Biont поддерживает более 10 протоколов, так что вы можете подключить практически любое устройство: от Arduino до промышленных контроллеров.
Попробуйте интеграцию прямо сейчас: зайдите на asibiont.com, создайте API-ключ, скачайте bridge.py и подключите свой первый датчик. AI-агент уже готов помочь.
Комментарии