Smart turret

Автоматическая турель

  • Обзор
  • Прошивка
  • 3D модель

Введение

Автоматическая турель — это поворотная платформа с приводами по двум осям, камерой, системой распознавания объектов на базе ИИ и механизмом запуска. Она самостоятельно обнаруживает движение, определяет — человек это или нет, наводится и либо сообщает владельцу, либо производит выстрел небоевым снарядом. Всё это — без участия человека в реальном времени.

Собранная автоматическая турель на столе: поворотная платформа с двумя осями, камера на кронштейне, пейнтбольный маркер сверху, провода уложены в кабель-каналы, вид в три четверти

В этом руководстве мы собираем турель с пейнтбольным маркером — исключительно для личного использования на собственной территории. Конструкция универсальная: платформа, оси, электроника и прошивка одинаковы для любого исполнительного устройства. Вместо пейнтбольного маркера можно установить сирену, прожектор, лазерный указатель или звуковой отпугиватель — в зависимости от задачи и законодательства вашей страны.

Ключевые функции системы: обнаружение движения через PIR-датчик и радар, распознавание человека через ИИ на базе OpenCV, автоматическое наведение по двум осям, режим «свой/чужой» через распознавание лиц, оповещение владельца на телефон с фото обнаруженного объекта и трансляция видео в реальном времени.

Важно: данное руководство описывает сборку охранной системы с небоевым исполнительным устройством. Автор не несёт ответственности за использование конструкции в целях причинения вреда людям или имуществу. Перед сборкой обязательно ознакомьтесь с законодательством вашей страны.

Правовой статус

Прежде чем приступить к сборке, необходимо разобраться в правовом статусе подобных устройств. Ситуация сильно различается в зависимости от страны, региона и типа исполнительного устройства.

Что разрешено

Схема разрешённых применений турели: иконки сирены, прожектора, лазерного указателя, пейнтбольного маркера с зелёными галочками, текст 'охрана частной территории'

В большинстве стран разрешено использование автоматических охранных систем с небоевыми исполнительными устройствами на частной закрытой территории. К разрешённым, как правило, относятся: звуковая сирена, световой прожектор, лазерный указатель (не боевой), пейнтбольный маркер на частной территории для обозначения нарушителя, а также системы, работающие только в режиме оповещения без физического воздействия.

Охранная система с камерой и автоматическим оповещением владельца — полностью легальна повсеместно. Именно этот режим является основным и наиболее безопасным с правовой точки зрения.

Запреты и риски

Автономные системы, способные причинять физический вред людям без участия человека в принятии решения о применении, в большинстве развитых стран прямо запрещены или попадают под действие законов об оружии. Даже пейнтбольный маркер в автономном режиме на общедоступной территории может квалифицироваться как незаконное применение оружия.

Ключевой правовой риск — автономное применение. Если система сама принимает решение произвести выстрел без подтверждения владельца, это создаёт серьёзные правовые последствия при любом инциденте. Поэтому в прошивке предусмотрен режим обязательного подтверждения: система обнаруживает цель, присылает фото на телефон, и только после нажатия кнопки «подтвердить» производит выстрел.

Ответственность

Владелец несёт полную ответственность за действия автоматической системы на его территории. Рекомендации: использовать систему только в режиме оповещения или с обязательным подтверждением, чётко обозначить территорию предупредительными табличками, исключить возможность поражения лиц, не являющихся нарушителями (дети, гости, сотрудники), перед установкой проконсультироваться с юристом.

Данное руководство описывает техническую сторону сборки. Юридическую ответственность за применение несёт исключительно владелец. Автор рекомендует использовать систему в режиме охранного оповещения без автономного применения исполнительного устройства.

Обзор моделей

Турель — это универсальная платформа. Механика, электроника и прошивка одинаковы для всех вариантов. Различается только исполнительное устройство сверху. Рассмотрим три базовых конфигурации.

Охранная (сигнал)

Охранная турель: поворотная платформа с камерой и сиреной 120 дБ сверху, прожектор на кронштейне сбоку, вид спереди на нейтральном фоне

Самая простая и полностью легальная конфигурация. Исполнительное устройство — сирена 120 дБ и/или мощный стробоскопический прожектор. При обнаружении нарушителя турель наводится на него, включает сирену и прожектор, одновременно отправляя фото и видео на телефон владельца. Никакого физического воздействия — только мощный звуковой и световой отпугиватель.

Это оптимальный вариант для большинства применений: дача, гараж, склад, периметр частного дома. Работает круглосуточно в автономном режиме без участия владельца.

Пейнтбольная

Пейнтбольная турель: поворотная платформа с установленным пейнтбольным маркером, бункер с шарами сверху, соленоидный клапан выстрела подключён к плате управления, вид сбоку

Конфигурация для охраны собственной закрытой территории. Пейнтбольный маркер устанавливается на платформу и управляется соленоидным клапаном от Arduino. Выстрел производится только по подтверждению владельца через приложение — полностью ручное принятие решения, автономный огонь отключён в прошивке.

Для данной конфигурации используется стандартный пейнтбольный маркер с электронным спуском или переделанный пневматический маркер с соленоидным клапаном. Бункер на 200 шаров обеспечивает длительную автономную работу без перезарядки.

Универсальная платформа

Базовая платформа с быстросъёмным верхним креплением. Стандартный интерфейс крепления (две точки М6 с шагом 50 мм) позволяет устанавливать любое оборудование: водяная пушка, лазерный дальномер, прожектор, маркер, камера увеличения для детального осмотра. Смена исполнительного устройства — 2 минуты без инструмента.

Именно эту конфигурацию мы и собираем в данном руководстве — универсальную платформу, которую вы дополните нужным исполнительным устройством самостоятельно.

Механика и оси

Механика турели — двухосевая поворотная платформа типа pan-tilt. Горизонтальная ось (pan) обеспечивает вращение по азимуту, вертикальная (tilt) — наклон по углу места. Обе оси независимы и управляются отдельными приводами.

Горизонтальная ось (pan)

Горизонтальная ось турели в разрезе: нижнее основание, упорный подшипник 51104, ведущая шестерня на моторе, ведомая шестерня на поворотном столе, ось вращения отмечена стрелкой

Горизонтальная ось обеспечивает полный поворот на 360° или ограниченный сектор (например, 180° для настенной установки). Основа — упорный подшипник 51104 (20×35×10 мм), воспринимающий вес всей верхней части конструкции. Привод передаётся через зубчатую передачу: шестерня на валу мотора вращает большую кольцевую шестерню на поворотном столе.

Передаточное отношение 1:5 или 1:8 — снижает скорость вращения и увеличивает момент, что обеспечивает точное позиционирование даже при большой нагрузке (тяжёлый маркер сверху). Угловой энкодер или концевики фиксируют нулевое положение для точного позиционирования после перезапуска.

Вертикальная ось (tilt)

Вертикальная ось турели: качающаяся каретка на двух подшипниках 608ZZ, сервопривод DS3218 справа, рычаг с регулируемой тягой, диапазон качания -20°...+45° обозначен дугой

Вертикальная ось качает верхнюю каретку с исполнительным устройством в диапазоне от −20° (вниз) до +45° (вверх). Для большинства охранных применений достаточно диапазона −10°...+30°. Ось реализована на двух подшипниках 608ZZ с центральной осью М8.

Привод — сервопривод DS3218 (20 кг/см) с рычажной тягой. Серьга соединяет диск сервопривода с кареткой. Длина тяги регулируется для настройки нейтрального положения. Важно: центр тяжести исполнительного устройства должен располагаться как можно ближе к оси вращения — это снижает нагрузку на сервопривод и уменьшает дрожание при удержании позиции.

Каретка и крепления

Верхняя каретка — несущий элемент, на котором крепится исполнительное устройство и камера прицеливания. Жёсткость каретки критична: любой люфт превращается в промах при прицеливании. Каретка печатается из PETG с заполнением 60% и 4 периметрами стенок, в нагруженных точках устанавливаются алюминиевые вставки М6.

Камера прицеливания крепится соосно с исполнительным устройством — её оптическая ось должна совпадать с направлением выстрела. Это достигается регулировочными болтами М3 в горизонтальной и вертикальной плоскостях. Начальная юстировка делается на этапе сборки, финальная — программно через смещение точки прицела в прошивке.

3D-печать корпуса

Рендер 3D-модели турели в PrusaSlicer: все детали разобраны и расставлены по платформе принтера, цветовая маркировка — синие детали основания, оранжевые детали каретки

Корпус состоит из трёх основных сборок: неподвижное основание с мотором горизонтальной оси, поворотный стол с опорами вертикальной оси, качающаяся каретка. Все детали печатаются из PETG, нагруженные детали — из ABS или нейлона.

Параметры печати: заполнение 50–60%, 4 периметра, высота слоя 0,2 мм. Резьбовые термовставки M3 и M6 устанавливаются паяльником во все точки крепления. Для наружной установки корпус после печати покрывается двумя слоями эпоксидной смолы для защиты от влаги.

STL-файлы всех деталей, разбитые по сборкам, доступны для скачивания в разделе «Компоненты и стоимость».

Приводы и моторы

Выбор сервоприводов

Три сервопривода рядом: MG996R (9 кг/см), DS3218 (20 кг/см), Dynamixel AX-12A — с подписями момента, точности и цены, вид сверху на белом фоне

Для вертикальной оси (tilt) с нагрузкой 1–2 кг на плече 10–15 см требуется момент минимум 10–15 кг/см с двукратным запасом. Оптимальный выбор — DS3218 (20 кг/см, цифровой, металлические шестерни, ~550 руб.). Он точнее удерживает позицию под нагрузкой по сравнению с MG996R и значительно дешевле Dynamixel.

Для горизонтальной оси (pan) с зубчатой передачей 1:5 нагрузка на привод снижается — здесь достаточно MG996R (9,4 кг/см). Если используется шаговый двигатель для pan (см. следующий раздел) — сервопривод на эту ось не нужен.

Шаговые двигатели

Для горизонтальной оси шаговый двигатель NEMA17 с драйвером TMC2209 даёт принципиально лучшую точность позиционирования, чем сервопривод: 200 шагов/оборот (1,8°/шаг), с микрошагом 1/16 — 0,1125° на шаг. Это критически важно для точного прицеливания на дистанции 10–20 метров.

TMC2209 работает в тихом режиме StealthChop — практически бесшумное вращение, что важно для скрытной охранной системы. Ток обмотки 1,5–2А, напряжение питания 12–24В. Подключается к Arduino через UART или по пинам STEP/DIR.

Arduino

#include <AccelStepper.h>

// Пины шагового двигателя горизонтальной оси
const int STEP_PIN = 3;
const int DIR_PIN  = 4;
const int EN_PIN   = 5;

AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);

void setup() {
    pinMode(EN_PIN, OUTPUT);
    digitalWrite(EN_PIN, LOW); // включить драйвер

    stepper.setMaxSpeed(800);      // шагов/сек
    stepper.setAcceleration(400);  // шагов/сек²
}

// Поворот на заданный угол (градусы)
void panToAngle(float angle) {
    // 200 шагов * 16 микрошагов = 3200 шагов/оборот
    // передача 1:5 → 16000 шагов/оборот платформы
    long steps = (long)(angle / 360.0 * 16000);
    stepper.moveTo(steps);
    while (stepper.distanceToGo() != 0) {
        stepper.run();
    }
}
        

Механизм пуска

Схема механизма пуска: соленоид 12В подключён к Arduino через транзистор MOSFET IRLZ44N, диод защиты 1N4007 параллельно соленоиду, кнопка спуска маркера нажата штоком соленоида

Пуск пейнтбольного маркера осуществляется соленоидом 12В, нажимающим кнопку спуска маркера. Соленоид управляется MOSFET-транзистором IRLZ44N от цифрового пина Arduino. Обязательно: диод 1N4007 параллельно соленоиду для защиты от обратного тока при выключении.

Для электронного маркера с соленоидным клапаном (более распространённый вариант) — клапан подключается напрямую к MOSFET. Длительность импульса 50–100 мс соответствует одному выстрелу. Пауза между выстрелами минимум 200 мс для перезарядки пневматики.

Arduino

const int TRIGGER_PIN = 8; // MOSFET затвор

void fire(int shots = 1) {
    for (int i = 0; i < shots; i++) {
        digitalWrite(TRIGGER_PIN, HIGH); // соленоид вкл
        delay(80);                       // длительность импульса
        digitalWrite(TRIGGER_PIN, LOW);  // соленоид выкл
        delay(300);                      // пауза между выстрелами
    }
}
        

Камеры и сенсоры

Основная камера

Камера Raspberry Pi Camera Module 3 Wide на кронштейне турели: угол обзора 102°, фокусное расстояние 2.75 мм, рядом лента CSI-кабеля 30 см, вид спереди

Основная камера — Raspberry Pi Camera Module 3 Wide (угол обзора 102°, 12 МП, автофокус). Широкий угол захватывает большую зону наблюдения, автофокус обеспечивает чёткое изображение как на 1 метре, так и на 15 метрах. Подключается к Raspberry Pi по CSI.

Для задач распознавания на дальних дистанциях (20–50 метров) используется телеобъектив с фокусным расстоянием 8–12 мм — угол обзора сужается до 30–40°, но объекты крупнее и лучше распознаются. В этом случае PIR-датчик широкого угла обзора обнаруживает движение, а камера телеобъектива уточняет детали.

ИК и ночное зрение

Для работы ночью камера заменяется на NoIR-версию (без ИК-фильтра) в паре с ИК-прожектором 850 нм мощностью 5–10 Вт. Прожектор невидим для глаз, камера видит освещённую зону как днём. Дальность ночного обнаружения — 10–20 метров в зависимости от мощности прожектора.

Переключение между дневным и ночным режимом — автоматическое по датчику освещённости BH1750. Прожектор включается через реле при падении освещённости ниже порога. Дневная камера и ночная NoIR могут работать одновременно как дублирующая система.

PIR и радар

Два датчика движения: PIR HC-SR501 (угол 110°, дальность 7 м) и радарный модуль RCWL-0516 (работает сквозь стены, дальность 5–7 м) — рядом на белом фоне с подписями характеристик

PIR HC-SR501 — основной датчик первичного обнаружения. Угол обзора 110°, дальность до 7 метров, реагирует на тепловое движение. Потребляет менее 1 мА в режиме ожидания — турель может спать в экономичном режиме и просыпаться только при срабатывании PIR. Это критически важно при питании от аккумулятора.

RCWL-0516 — радарный модуль на основе микроволн. Работает сквозь тонкие препятствия (деревянная дверь, пластик), обнаруживает движение там, где PIR не срабатывает — например, человек в толстой одежде в холодный день почти не виден для PIR. Два датчика вместе дают значительно меньший процент ложных тревог.

Архитектура обнаружения: PIR или радар срабатывает → Raspberry Pi выходит из режима ожидания → камера начинает анализ кадра → ИИ определяет, человек ли это → если да, запускается наведение и оповещение.

Система прицеливания

Прицельная система работает по принципу «центр детектированного объекта — точка прицела». OpenCV возвращает bounding box обнаруженного человека, центр этого прямоугольника является целевой точкой. Координаты центра переводятся в угловые отклонения от текущего положения турели и передаются приводам как команды коррекции.

Лазерный целеуказатель (опционально) — модуль лазерного диода 5 мВт, 650 нм (красный), закреплённый соосно с камерой прицеливания. Визуально показывает точку прицеливания. Включается только при ручном управлении с подтверждением — для предотвращения случайного воздействия на глаза.

Пристрелка системы: в прошивке задаётся смещение точки прицела (offset_x, offset_y в пикселях), которое компенсирует несоосность камеры и исполнительного устройства. Определяется эмпирически при первоначальной настройке.

Электропитание и плата

Выбор контроллера

Два контроллера рядом: Arduino Mega 2560 слева, Raspberry Pi 4 справа, между ними стрелка с надписью 'UART Serial', подписи функций каждого — Arduino: моторы и пуск, RPi: ИИ и камера и Wi-Fi

Турель использует двухуровневую архитектуру управления. Raspberry Pi 4 — верхний уровень: обработка видео, запуск ИИ-моделей, Wi-Fi соединение, отправка уведомлений. Arduino Mega — нижний уровень: управление моторами в реальном времени, чтение датчиков, управление соленоидом пуска.

RPi передаёт Arduino команды по UART: целевые углы для осей и команду пуска. Arduino выполняет их немедленно и докладывает о достижении позиции. Такое разделение позволяет RPi заниматься тяжёлыми вычислениями (распознавание занимает 100–300 мс) без потери управляемости моторами.

Схема питания

Схема питания турели: аккумулятор 12В/20Ач → предохранитель 30А → силовой выключатель → шина 12В (моторы, соленоид, прожектор) и DC-DC 5В/5А → Raspberry Pi и Arduino и датчики

Питание разделено на две шины. Силовая шина 12В питает мотор горизонтальной оси, сервоприводы (через понижающий до 7,4В), соленоид пуска, ИК-прожектор и сирену. Логическая шина 5В (от DC-DC преобразователя) питает Raspberry Pi, Arduino, камеры и датчики.

Источник питания зависит от режима эксплуатации. Стационарная установка: блок питания 12В/10А от сети. Автономная: свинцово-кислотный АКБ 12В/20Ач (хватает на 8–12 часов) или Li-Fe 4S с BMS. В автономном варианте добавляется контроллер заряда и солнечная панель 30–50 Вт для непрерывной работы.

Подключение модулей

Схема подключения Arduino Mega

// Горизонтальная ось (шаговый двигатель)
STEP  → D3    DIR   → D4    EN    → D5

// Вертикальная ось (сервопривод DS3218)
Signal → D9   (PWM)

// Соленоид пуска (через MOSFET)
Gate  → D8

// Датчики
PIR       → D2   (прерывание INT0)
RCWL-0516 → D10
BH1750    → A4(SDA), A5(SCL)

// Связь с Raspberry Pi
TX1 (D18) → RX на RPi GPIO15
RX1 (D19) → TX на RPi GPIO14

// Реле прожектора
IN → D11
        

Защита схемы

Защитные элементы обязательны при работе с индуктивными нагрузками (соленоид, мотор). Диод 1N4007 параллельно каждой индуктивной нагрузке защищает от обратного тока. Конденсатор 1000 мкФ по питанию Arduino защищает от просадок при старте моторов. Предохранитель 30А последовательно с аккумулятором — главная защита при КЗ.

Для наружной установки все незащищённые разъёмы герметизируются силиконом, плата управления размещается в герметичном корпусе IP65. Кабели вводятся через гермовводы PG7/PG9.

Прошивка и ИИ

Arduino и Python

Прошивка двухуровневая. На Arduino — скетч на C++, управляющий моторами и датчиками. На Raspberry Pi — Python-скрипт, обрабатывающий видео и реализующий ИИ-логику. Общение — по Serial UART на скорости 115200 бод.

Python — отправка команд на Arduino

import serial
import json

arduino = serial.Serial('/dev/ttyAMA0', 115200, timeout=1)

def send_command(pan_angle, tilt_angle, fire=False):
    cmd = {
        "pan":  round(pan_angle, 2),
        "tilt": round(tilt_angle, 2),
        "fire": 1 if fire else 0
    }
    arduino.write((json.dumps(cmd) + '\n').encode())

def read_status():
    line = arduino.readline().decode().strip()
    if line:
        return json.loads(line)
    return None

# Пример: навести на 90° по горизонтали, 10° вверх
send_command(pan_angle=90.0, tilt_angle=10.0)
        

OpenCV и детекция

Кадр с камеры турели: человек в кадре обведён зелёным прямоугольником bounding box, в углу надпись Person 94%, красная точка прицела в центре прямоугольника, координаты X:312 Y:240

Детекция людей реализована на базе YOLOv8n (nano-версия) — самая лёгкая модель семейства YOLO, оптимизированная для работы на слабом железе. На Raspberry Pi 4 выдаёт 5–8 кадров/сек, что достаточно для отслеживания медленно движущегося человека. Модель работает только с классом «person» (class 0 в COCO), остальные классы игнорируются.

Python — детекция и наведение

from ultralytics import YOLO
import cv2

model = YOLO('yolov8n.pt')
cap   = cv2.VideoCapture(0)

FRAME_W, FRAME_H = 640, 480
CENTER_X = FRAME_W // 2
CENTER_Y = FRAME_H // 2

# Коэффициент перевода пикселей в градусы
PIX_TO_DEG_H = 0.075  # горизонталь
PIX_TO_DEG_V = 0.075  # вертикаль

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model(frame, classes=[0], conf=0.5, verbose=False)

    for box in results[0].boxes:
        x1, y1, x2, y2 = map(int, box.xyxy[0])
        cx = (x1 + x2) // 2  # центр по X
        cy = (y1 + y2) // 2  # центр по Y

        # Отклонение от центра кадра
        err_x = cx - CENTER_X
        err_y = cy - CENTER_Y

        # Перевод в градусы для приводов
        delta_pan  = err_x * PIX_TO_DEG_H
        delta_tilt = err_y * PIX_TO_DEG_V

        send_command(delta_pan, -delta_tilt)
        break  # берём первую (ближайшую) цель
        

Наведение на цель

Алгоритм наведения — пропорциональный регулятор (P-регулятор). Ошибка позиционирования (разница между центром цели и центром кадра) умножается на коэффициент и передаётся приводам как команда коррекции. Простой, но эффективный алгоритм для задачи слежения.

Python — PID-регулятор наведения

class TrackingPID:
    def __init__(self, kp=0.08, ki=0.001, kd=0.02):
        self.kp = kp
        self.ki = ki
        self.kd = kd
        self.prev_err = 0
        self.integral = 0

    def compute(self, error):
        self.integral  += error
        derivative      = error - self.prev_err
        self.prev_err   = error

        output = self.kp * error + \
                 self.ki * self.integral + \
                 self.kd * derivative
        return output

pid_pan  = TrackingPID(kp=0.08)
pid_tilt = TrackingPID(kp=0.06)

# В цикле детекции:
correction_pan  = pid_pan.compute(err_x)
correction_tilt = pid_tilt.compute(err_y)
send_command(correction_pan, -correction_tilt)
        

Распознавание свой/чужой

После обнаружения человека система проверяет, является ли он «своим». Используется та же библиотека face_recognition, что и в умном зеркале: база лиц «своих» хранится локально, при обнаружении человека делается снимок лица и сравнивается с базой.

Если лицо совпадает с базой (расстояние меньше порога 0.5) — тревога не объявляется, турель возвращается в режим ожидания. Если лицо не опознано — запускается цепочка оповещения. Это позволяет системе не реагировать на хозяина, членов семьи и известных гостей.

Добавление нового «своего»: через веб-интерфейс или Telegram-бота загружается несколько фотографий человека, система строит векторный слепок и сохраняет в базу. Занимает 2 минуты.

Система оповещения

Уведомления на телефон

Уведомление в Telegram на смартфоне: сообщение от бота 'Обнаружен человек 23:47', прикреплено фото с камеры турели, кнопки 'Подтвердить выстрел' и 'Игнорировать'

Оповещение реализовано через Telegram Bot API — самый простой и надёжный способ получать уведомления на телефон без установки дополнительных приложений. При обнаружении неопознанного человека бот мгновенно присылает сообщение с фото, временем и локацией камеры.

Python — отправка уведомления в Telegram

import requests
import cv2

BOT_TOKEN = "ВАШ_ТОКЕН_БОТА"
CHAT_ID   = "ВАШ_CHAT_ID"

def send_alert(frame, message="⚠️ Обнаружен человек!"):
    # Сохраняем кадр
    cv2.imwrite("/tmp/alert.jpg", frame)

    # Отправляем текст
    url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
    requests.post(url, data={"chat_id": CHAT_ID, "text": message})

    # Отправляем фото
    url_photo = f"https://api.telegram.org/bot{BOT_TOKEN}/sendPhoto"
    with open("/tmp/alert.jpg", "rb") as photo:
        requests.post(url_photo, data={"chat_id": CHAT_ID},
                      files={"photo": photo})

    # Кнопки подтверждения (Inline keyboard)
    keyboard = {"inline_keyboard": [[
        {"text": "🔴 Выстрел", "callback_data": "fire"},
        {"text": "✅ Игнорировать", "callback_data": "ignore"}
    ]]}
    requests.post(url, json={
        "chat_id": CHAT_ID,
        "text": "Ваше решение:",
        "reply_markup": keyboard
    })
        

Трансляция камеры

Видеопоток транслируется через встроенный веб-сервер на базе Flask. Открываете браузер на телефоне, вводите IP-адрес турели в домашней сети — видите картинку в реальном времени с наложением рамок детекции. Также доступно управление: ручное наведение стиками и кнопка выстрела.

Для доступа из интернета (вне домашней сети) используется туннель ngrok или VPN. Ngrok создаёт публичный URL для локального сервера RPi — удобно для быстрой настройки без настройки роутера.

Журнал событий

Все события логируются в SQLite базу данных: время, тип события (движение / человек / свой / чужой / выстрел), скриншот кадра, результат действия. База хранится на microSD и доступна через веб-интерфейс в виде таблицы с фильтрами и возможностью экспорта в CSV.

Еженедельная сводка отправляется в Telegram: количество срабатываний за неделю по дням, топ-3 времени суток активности, количество опознанных и неопознанных. Это помогает оценить реальную картину активности на охраняемой территории.

Сборка и тестирование

Пошаговая сборка

Четыре этапа сборки турели в сетке: 1-основание с упорным подшипником и мотором pan, 2-поворотный стол с опорами оси tilt, 3-каретка с сервоприводом и камерой, 4-полностью собранная турель

Шаг 1. Запрессовать упорный подшипник 51104 в основание. Установить шаговый двигатель NEMA17 с ведущей шестернёй. Проверить соосность шестерён.

Шаг 2. Установить ведомую кольцевую шестерню на поворотный стол. Насадить стол на подшипник. Убедиться в плавном вращении без люфта и заеданий.

Шаг 3. Установить опоры вертикальной оси с подшипниками 608ZZ. Собрать каретку, установить сервопривод DS3218, подсоединить рычажную тягу.

Шаг 4. Собрать электронный блок: Arduino Mega и RPi на монтажной плате, DC-DC преобразователи, предохранители. Проложить провода по кабель-каналам.

Шаг 5. Установить камеру и PIR-датчик. Закрепить исполнительное устройство на каретке. Подключить все разъёмы по схеме.

Шаг 6. Включить питание только Arduino, без RPi. Проверить движение осей по Serial Monitor командами. После подтверждения работы — подключить RPi и загрузить полную прошивку.

Калибровка осей

Калибровка выполняется через Serial Monitor Arduino. Командой HOME турель устанавливается в нулевое положение (концевики). Командами PAN 90 и TILT 15 проверяется точность позиционирования — измерьте реальный угол транспортиром и сравните с командой. Поправочный коэффициент вносится в константу STEPS_PER_DEGREE в прошивке Arduino.

Юстировка прицела: установите мишень на 5 метрах. Наведите лазерный указатель на центр мишени вручную. Сделайте снимок камерой и определите пиксельные координаты лазерной точки. Разница от центра кадра — значения OFFSET_X и OFFSET_Y в прошивке Python.

Настройка ИИ

Проверьте детекцию: встаньте перед камерой и убедитесь, что вокруг вас рисуется рамка с надписью «Person». Проверьте дальность — на каком расстоянии система перестаёт уверенно распознавать. При низкой уверенности (менее 50%) система не реагирует — это защита от ложных тревог.

Настройте режим «свой/чужой»: добавьте себя в базу через веб-интерфейс, встаньте перед камерой, убедитесь, что тревога не объявляется. Затем попросите постороннего человека встать перед камерой — должно прийти уведомление в Telegram.

Настройте коэффициенты PID наведения: если турель «рыскает» вокруг цели — уменьшите Kp, если реагирует вяло — увеличьте. Начните с Kp=0.05 и постепенно увеличивайте до оптимального значения.

Типичные ошибки

Турель дёргается, не держит цель — слишком высокий Kp в PID. Уменьшите в 2 раза и повторите тест.

Шаговый двигатель пропускает шаги — превышен момент нагрузки или слишком высокая скорость. Уменьшите MaxSpeed и увеличьте ток обмотки в драйвере TMC2209.

Много ложных тревог от PIR — датчик реагирует на тепловые источники: кошки, нагрев на солнце, сквозняк. Поднимите порог чувствительности потенциометром на PIR или добавьте условие: срабатывание PIR И RCWL одновременно.

YOLOv8 не запускается на RPi — недостаточно RAM или не установлены зависимости. Убедитесь, что используется RPi 4 с 2–4 ГБ RAM и установлена версия ultralytics для ARM: pip install ultralytics --extra-index-url https://download.pytorch.org/whl/cpu.

Telegram не отправляет фото — нет интернета на RPi или неверный токен. Проверьте соединение: ping api.telegram.org. Токен бота получается у @BotFather в Telegram.

Доработки и апгрейд

Схема возможных апгрейдов: от базовой турели стрелки к улучшениям — второй экземпляр на периметре, лидар, дальномер, солнечная панель, интеграция с сигнализацией

Лазерный дальномер — модуль TF-Luna (ToF, дальность до 8 метров) или VL53L1X (до 4 метров) определяет расстояние до цели. Это позволяет автоматически корректировать угол tilt с учётом дистанции — важно для пейнтбольного маркера, у которого шар летит по параболе.

Несколько турелей в сети — несколько устройств подключаются к единому серверу управления. При обнаружении человека одной турелью остальные получают уведомление и поворачиваются к ожидаемой позиции цели. Реализуется через MQTT-брокер.

Интеграция с охранной сигнализацией — при срабатывании турели автоматически активируется внешняя сигнализация, блокируются ворота, включаются прожекторы по всему периметру. Через GPIO RPi или MQTT.

Солнечная панель и АКБ — полностью автономная работа без внешнего питания. Панель 50 Вт + Li-Fe АКБ 50 Ач обеспечивает круглосуточную работу даже в пасмурную погоду.

Тепловизор — модуль AMG8833 (8×8 пикселей теплового изображения) или MLX90640 (32×24) добавляет тепловое обнаружение. Работает в полной темноте, через дым и лёгкие препятствия. Используется как первичный детектор вместо PIR.

Анализ поведения — улучшенная версия ИИ анализирует не только факт присутствия человека, но и его поведение: бежит / крадётся / стоит. Крадущийся человек ночью — выше приоритет тревоги. Реализуется через обучение на кастомном датасете.

Компоненты и стоимость

Ориентировочная стоимость сборки базовой версии турели с пейнтбольным маркером при заказе компонентов на AliExpress.

Все компоненты турели разложены на столе: Raspberry Pi 4, Arduino Mega, NEMA17 с TMC2209, DS3218, Camera Module 3 NoIR, PIR HC-SR501, RCWL-0516, MOSFET IRLZ44N, детали корпуса — с подписями цен

Компонент Модель Цена, руб.
Основной компьютерRaspberry Pi 4 Model B 2GB~5 000
Контроллер моторовArduino Mega 2560~700
Шаговый двигатель (pan)NEMA17 17HS4401~400
Драйвер шагового (pan)TMC2209 StepStick~350
Сервопривод (tilt)DS3218 20 кг/см~550
КамераRPi Camera Module 3 NoIR~1 800
ИК-прожектор850 нм, 10 Вт~600
PIR-датчикHC-SR501~80
Радарный датчикRCWL-0516~100
MOSFET (соленоид)IRLZ44N × 2 шт.~80
DC-DC преобразовательLM2596 5В/3А~150
Подшипник упорный51104 (20×35×10)~120
Подшипники 608ZZ × 48×22×7 мм~100
Пластик PETG, 1 кгдля печати корпуса~800
Крепёж, провода, разъёмынабор~400
microSD картаSamsung 32 ГБ~600
Блок питания 12В/10Асетевой адаптер~700
Итого (без маркера)~12 530 руб.
Пейнтбольный маркербазовая модель с электроспуском~3 000–8 000
Итого с маркером~15 500–20 500 руб.

STL-файлы корпуса, схемы подключения, прошивки Arduino и Python-скрипты доступны для скачивания. Базовые файлы — бесплатно, полный пакет с подробным руководством и поддержкой — платно.

⬇ Скачать файлы проекта (ZIP)

Заключение

Готовая турель установлена на углу забора: поворотная платформа с камерой и пейнтбольным маркером, ИК-прожектор сбоку, провода убраны в гофру, вечернее освещение

Автоматическая турель — один из наиболее технически насыщенных проектов в любительской робототехнике. Здесь сходятся механика (двухосевая платформа с точными приводами), электроника (двухуровневая система управления), компьютерное зрение (YOLOv8, распознавание лиц) и системная интеграция (уведомления, веб-интерфейс, журнал событий).

Самый полезный режим — охранное оповещение без исполнительного устройства. Турель-наблюдатель, которая обнаруживает людей, отличает своих от чужих и мгновенно присылает фото на телефон — это уже законченная и практически полезная система. Пейнтбольный маркер можно добавить позже, когда убедитесь в надёжности всех остальных компонентов.

Начните с охранной конфигурации, отработайте прошивку и ИИ, убедитесь в стабильности работы — и только потом добавляйте исполнительное устройство. Задавайте вопросы в комментариях, делитесь результатами сборок.

Оставьте Ваш комментарий

Защита от ботов: Выберите фигуру "Квадрат"
shape
shape
shape
shape

Рекомендуем также

  • Инструкция
  • + чертёж

ЧПУ станок своими руками, качество и минимум затрат

Подробное руководство, видео по сборке, список компонентов и точный чертёж для вашего удобства.

  • Инструкция
  • 3D модель

Умная лодка с камерой и пультом управления

Отличный помощник для осмотра территории на воде, с системой автономного мониторинга и GPS