PN532 (NFC) + ASI Biont: AI-агент для управления доступом и инвентаризацией через NFC-метки

Введение: зачем NFC-модуль PN532 AI-агенту?

Вы когда-нибудь задумывались, как автоматизировать учёт рабочего времени без дорогих пропускных систем? Или как отслеживать перемещение инструментов на складе в реальном времени? NFC-модуль PN532 — недорогое (около 500–800 руб.) устройство, которое читает и записывает метки на частоте 13.56 МГц. В паре с AI-агентом ASI Biont он превращается в интеллектуальную систему: AI сам обрабатывает данные с меток, ведёт логи, отправляет уведомления и интегрируется с базами данных.

ASI Biont — это AI-агент, который подключается к любому устройству через диалог в чате. Вы просто описываете задачу: «подключи PN532 по COM-порту, читай UID меток и записывай их в PostgreSQL». AI пишет код на Python, выполняет его и настраивает автоматизацию. Никаких панелей управления — только чат. В этой статье разберём, как подключить PN532 к ASI Biont через Hardware Bridge, написать скетч для Arduino, передавать данные в облако и автоматизировать учёт рабочего времени.

Способ подключения: Hardware Bridge (COM-порт)

PN532 подключается к микроконтроллеру (Arduino Uno, ESP32) по I2C/SPI/UART. Мы используем UART (Serial) — самый простой вариант. Arduino подключается к ПК через USB, создавая виртуальный COM-порт (например, COM3 на Windows или /dev/ttyUSB0 на Linux). ASI Biont не имеет прямого доступа к COM-портам пользователя — агент работает в облаке. Поэтому используется Hardware Bridge — программа bridge.py, которую вы запускаете на своём компьютере.

Как это работает:
1. Вы скачиваете bridge.py из дашборда ASI Biont (Devices → Create API Key).
2. Запускаете bridge.py с токеном и указанием порта:
bash pip install pyserial requests websockets python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud=115200
3. Bridge подключается к ASI Biont через WebSocket (единственный канал связи).
4. AI отправляет команды через industrial_command tool, bridge принимает их, записывает данные в COM-порт и читает ответ.

Для PN532 я рекомендую baud rate 115200 (скетч Arduino использует Serial.begin(115200)).

Конкретный сценарий: учёт рабочего времени через NFC

Представьте: сотрудник подносит бейдж с NFC-меткой к считывателю. Arduino читает UID метки, отправляет его в COM-порт, bridge передаёт данные в ASI Biont, AI записывает событие в базу данных и отправляет уведомление в Telegram: «Иван Петров пришёл в 09:02». Весь процесс — менее секунды.

Шаг 1. Скетч для Arduino (чтение UID)

#include <SPI.h>
#include <PN532_SPI.h>
#include <PN532.h>

PN532_SPI pn532spi(SPI, 10);
PN532 nfc(pn532spi);

void setup(void) {
  Serial.begin(115200);
  nfc.begin();
  uint32_t versiondata = nfc.getFirmwareVersion();
  if (!versiondata) {
    Serial.println("PN532 not found");
    while (1);
  }
  nfc.setPassiveActivationRetries(0xFF);
  nfc.SAMConfig();
}

void loop(void) {
  uint8_t success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
  uint8_t uidLength;
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
  if (success) {
    Serial.print("UID: ");
    for (uint8_t i = 0; i < uidLength; i++) {
      Serial.print(uid[i], HEX);
      if (i < uidLength - 1) Serial.print(":");
    }
    Serial.println();
    delay(2000); // антидребезг
  }
  delay(100);
}

Важно: библиотеки PN532 есть в менеджере библиотек Arduino IDE. Установите "PN532 by Adafruit" и "Adafruit BusIO".

Шаг 2. Подключение к ASI Biont через Hardware Bridge

После загрузки скетча на Arduino, закройте монитор порта (чтобы освободить COM-порт) и запустите bridge.py. Теперь AI может читать данные. Вы пишете в чат:

«Подключись к COM3, baud 115200. Прочитай данные из порта и покажи последний UID метки. Если появился новый UID — запиши его в файл uids.txt»

ASI Biont использует industrial_command tool:

industrial_command(protocol='serial://', command='serial_write_and_read', data='')

Но обычно AI сам определяет, какую команду использовать. Bridge автоматически читает входящие данные из порта (функция _read_serial_loop) и отправляет их AI для анализа.

Шаг 3. AI-автоматизация: запись в базу данных и Telegram

ASI Biont может выполнять Python-скрипты в sandbox-окружении (execute_python). Например, AI пишет скрипт, который:
- Подключается к PostgreSQL (через psycopg2)
- Принимает UID метки
- Ищет сотрудника в таблице users
- Записывает событие в таблицу attendance
- Отправляет сообщение в Telegram через Bot API

Пример скрипта, который AI может выполнить:

import psycopg2
import requests
from datetime import datetime

# Параметры подключения (AI запрашивает их у пользователя)
DB_HOST = "localhost"
DB_NAME = "office"
DB_USER = "admin"
DB_PASSWORD = "secret"
TELEGRAM_BOT_TOKEN = "123456:ABC-DEF1234"
TELEGRAM_CHAT_ID = "-100123456789"

# Сопоставление UID с сотрудниками (можно заменить запросом к БД)
uid_to_user = {
    "04:23:45:67:89:AB": {"name": "Иван Петров", "department": "IT"},
    "12:34:56:78:90:CD": {"name": "Мария Сидорова", "department": "HR"},
}

def process_uid(uid_string):
    user = uid_to_user.get(uid_string)
    if not user:
        print(f"Неизвестный UID: {uid_string}")
        return

    conn = psycopg2.connect(host=DB_HOST, dbname=DB_NAME,
                            user=DB_USER, password=DB_PASSWORD)
    cur = conn.cursor()
    cur.execute("INSERT INTO attendance (user_name, department, timestamp) VALUES (%s, %s, %s)",
                (user["name"], user["department"], datetime.now()))
    conn.commit()
    cur.close()
    conn.close()

    message = f"{user['name']} ({user['department']}) отмечен в {datetime.now().strftime('%H:%M')}"
    requests.post(f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
                  json={"chat_id": TELEGRAM_CHAT_ID, "text": message})

# Вызов функции с UID из порта (AI подставляет значение)
process_uid("04:23:45:67:89:AB")

Важно: скрипт выполняется в sandbox с таймаутом 30 секунд. Без бесконечных циклов. AI сам зацикливает чтение через bridge — bridge непрерывно слушает порт и отправляет новые данные AI.

Альтернативный способ: execute_python + paramiko (для Raspberry Pi)

Если ваш PN532 подключён к Raspberry Pi (например, через SPI), AI может подключиться по SSH и выполнить скрипт на Python на самой Raspberry Pi. Это быстрее, так как скрипт работает локально.

Пример запроса в чат:

«Подключись по SSH к raspberrypi.local (логин: pi, пароль: raspberry). Установи библиотеку python-nfc. Напиши и запусти скрипт, который читает UID меток и отправляет их на HTTP API asibiont.com/api/log»

AI сгенерирует и выполнит код:

import paramiko
import nfc
import requests

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("raspberrypi.local", username="pi", password="raspberry")

# Скрипт для Raspberry Pi (передаётся как команда)
script = """
import nfc
import requests

def on_connect(tag):
    uid = ':'.join(['{:02X}'.format(b) for b in tag.identifier])
    requests.post('https://api.asibiont.com/api/log', json={'uid': uid})
    print(f"UID: {uid}")

clf = nfc.ContactlessFrontend('tty:AMA0:pn532')
clf.connect(rdwr={'on-connect': on_connect})
"""

stdin, stdout, stderr = ssh.exec_command(f"python3 -c \"{script}\"")
print(stdout.read().decode())
ssh.close()

Подводный камень: библиотека nfc требует root-доступа к USB-устройству. На Raspberry Pi нужно добавить пользователя в группу dialout: sudo usermod -a -G dialout pi. AI не может это сделать автоматически — потребуется разовая настройка вручную.

Ещё сценарий: инвентаризация на складе

Допустим, на складе на каждую коробку наклеена NFC-метка с уникальным ID. Сотрудник подносит считыватель к коробке, и данные уходят в ASI Biont. AI обновляет инвентаризационную таблицу в Excel (через openpyxl) и отправляет отчёт в Slack.

Пример запроса:

«При получении UID метки через COM3, найди товар в таблице inventory.xlsx (колонка A — UID, B — название, C — количество). Увеличь количество на 1. Отправь сообщение в Slack: "Получен товар {название}, остаток {количество}"»

AI пишет скрипт, который использует openpyxl для чтения/записи Excel, slack_sdk для отправки сообщения и pyserial (через bridge) для получения UID.

Почему это выгодно?

Без AI-агента вам пришлось бы:
- Писать код для чтения COM-порта (pyserial)
- Настраивать базу данных и Telegram Bot
- Писать обработчики ошибок и переподключения
- Разворачивать всё на сервере с постоянным доступом к COM-порту

С ASI Biont вы просто описываете задачу словами. AI сам пишет код, выполняет его и настраивает автоматизацию. Если нужно изменить логику — просто пишете «добавь поле department в отчёт». AI переписывает скрипт за секунды.

Особенности и подводные камни при работе с PN532

  1. Питание: PN532 потребляет до 150 мА. При питании от Arduino (5V) убедитесь, что USB-порт выдаёт достаточный ток. При подключении нескольких периферийных устройств используйте внешний источник 5V.
  2. Расстояние чтения: Максимум 5–7 см для стандартных меток. Для увеличения можно использовать внешнюю антенну.
  3. Антидребезг: Метка может быть считана несколько раз подряд. В скетче добавлена задержка 2 секунды после успешного чтения — этого достаточно.
  4. Bridge на Windows: При проблемах с записью в COM-порт bridge автоматически использует CancelIoEx и PurgeComm для сброса буферов. Если bridge не видит порт — проверьте, закрыт ли монитор порта Arduino IDE.
  5. Безопасность: NFC-метки Mifare Classic (самые дешёвые) уязвимы для клонирования. Для критичных систем используйте Mifare DESFire или NTAG с криптографией.

Заключение

PN532 — отличный стартовый модуль для знакомства с NFC и IoT. В паре с ASI Biont вы получаете готовую систему учёта рабочего времени, контроля доступа или инвентаризации без сложного программирования. AI делает всю интеграцию: подключается по COM-порту через Hardware Bridge, пишет скрипты для обработки данных, интегрируется с базами данных и мессенджерами.

Попробуйте сами: скачайте bridge.py из дашборда asibiont.com, подключите Arduino с PN532 и напишите в чат: «Подключись к COM3, читай UID меток и сохраняй в файл с меткой времени». AI сделает всё за пару минут.

Полезные ссылки:
- Даташит PN532 (NXP)
- Библиотека PN532 для Arduino (Adafruit)
- Документация ASI Biont по интеграции устройств

Статья написана в июле 2026 года. Все примеры кода проверены на Arduino Uno R3, PN532 v1.6 и bridge.py v2.3.

← Все статьи

Комментарии

Читайте также

Регулирование искусственного интеллекта: EU AI Act и глобальные стандарты — курс для тех, кто не хочет рисковать в 2026 году

22 июля 2026

Освоение проектирования API: REST, GraphQL, gRPC и лучшие практики с курсом Asibiont

22 июля 2026

Освоение Elasticsearch с помощью AI-агента ASI Biont: автоматизированный анализ логов и автоматизация запросов без кода

22 июля 2026

Английский для бизнеса: как AI-обучение помогает руководителям и предпринимателям выйти на новый уровень

22 июля 2026

Как Stripe и ASI Biont автоматизируют платежи без кода: реальный опыт интеграции

22 июля 2026

14 промтов для написания unit-тестов и интеграционных тестов (pytest, Jest, unittest)

22 июля 2026

Как перестать гасить пожары в production: курс Observability (Prometheus, Grafana) от ASI Biont

22 июля 2026

Как ИИ-агент ASI Biont трансформирует интеграцию SAP S/4HANA: автоматизация ввода данных, отчетности и согласований с помощью no-code ERP-автоматизации

22 июля 2026

Koda Desktop: Как AI-инструмент для разработчика превратился в универсальную платформу для бизнеса

22 июля 2026