Цель: трейлер, размещенный в удаленном месте, нуждается в контроле доступа и видеомониторинге через точку доступа сотовой связи, сопровождаемом уведомлениями в реальном времени и изображениями активности, происходящей внутри и вокруг трейлера.
Основным приоритетом проекта была установка облачной коммерческой системы контроля доступа, а также камер IP-видеонаблюдения, которые записывают данные на ПК, расположенный в трейлере. Этого было легко добиться, но чтобы ограничить полосу пропускания, используемую для наблюдения за камерами и получения уведомлений, было реализовано специальное решение.
Пико ПЛК
Первоначально я рассматривал возможность использования стандартного ПЛК для этого проекта, но решил, что это будет слишком дорого. Вместо этого я решил попробовать использовать микроконтроллер Raspberry Pi Pico, отсюда и название, которое я выбрал для этого проекта — Pico PLC.
Я распечатал корпус пико на 3D-принтере, а также припаял соединение к плате.
Ссылку на 3D-печатный кейс я использовал. (Спасибо пользователю GrevTech на Printables.com за разработку корпуса)
Что оно делает?
Pico подключен к нескольким датчикам для обнаружения действий, происходящих внутри и вокруг прицепа, а также для отправки снимков с камеры по электронной почте.
Pico подключен к:
- Датчик движения над столом
- Реле, подключенное к кнопке задней двери (чувствует нажатие кнопки)
- Реле системы контроля доступа (определяет разблокировку двери через систему контроля доступа)
- К ПК через последовательное соединение USB
Датчик движения:
Это используется для обнаружения того, что кто-то пишет в бортовом журнале, расположенном на столе в трейлере. Над головой установлена камера. Когда движение обнаруживает кого-то, снимок журнала отправляется по электронной почте.
Реле контроля доступа:
Это используется для обнаружения того, когда кто-то входит в главную дверь, с помощью системы контроля доступа. Когда он срабатывает, делается снимок экстерьера и двух внутренних камер, а затем, через 30 секунд, снимки делаются снова и отправляются по электронной почте.
Реле задней двери:
Это используется, когда кто-то нажимает кнопку, расположенную внутри прицепа. Когда он срабатывает, делается снимок экстерьера и двух внутренних камер, а затем, через 30 секунд, снимки делаются снова и отправляются по электронной почте.
Строим это
Чтобы система работала, я использовал комбинацию Node-Red, Python и сервера MQTT.
Базовый код Python на Pico выглядит примерно так.
import sys
from machine import Pin
import time
pin_button = Pin(14, Pin.IN, Pin.PULL_DOWN)
while True:
if pin_button.value() == 1:
print('on')
time.sleep(1.2)
else:
pass
Node-Red считывает последовательное соединение с Pico и запускает различные потоки в зависимости от того, какой вход инициируется с Pico.
Когда на Pico срабатывает вход, Node-Red запускает соответствующий поток, который захватывает изображение с камеры через узел ONVIF и отправляет его на удаленный сервер Node-Red через MQTT.
Использование вторичного сервера Node-Red было решено для того, чтобы удаленному компьютеру приходилось выполнять меньше работы на его ограниченной пропускной способности, а также потому, что в конечном итоге будет развернуто несколько трейлеров.
Заключение
Впервые попытка реализации такого проекта прошла довольно хорошо. В настоящее время эта система установлена на трех прицепах, планируется добавить еще.
В долгосрочной перспективе я планирую написать программу на Python, которая заменит Node Red и упростит развертывание и устранение неполадок системы для себя и всех, кто работает с системой.