Видеонаблюдение на Raspberry Pi. Подключаем камеру к Raspberry Pi Raspberry pi 3 код для камеры

Raspberry Pi - одноплатный компьютер, который возымел популярность еще в момент своего выхода. Это случилось благодаря неплохим техническим характеристикам, простоте работы, а главное - возможности подключения всевозможных модулей. Одним из них, в свою очередь, является Raspberry Pi camera.

Особенности камеры для Raspberry Pi

Для Raspberry Pi камера появилась в 2014 году, и она стала самым популярным модулем для данного одноплатника. Используя его, пользователи-разработчики получили возможность реализовывать самые разные проекты, в числе которых:

  • телескопы;
  • устройства для слежения за животными;
  • системы видеонаблюдения с функцией распознавания лиц и т. д.

Первая версия камеры имела 5-мегапиксельную матрицу. Производством соответствующих оптических сенсоров занималась компания Omnivision. И уже в конце 2014-го она сняла их с производства, в связи с чем пришлось подыскивать замену.

Вскоре вышла Raspberry Pi camera v2, которая была даже лучше, чем предыдущая. В ней использовался 8-мегапиксельный сенсор от Sony, который имеет название IMX 219 EXMOR RS.

Новая камера научилась снимать с частотой кадров 60 FPS в HD-разрешении, тогда как старая выдавала лишь 30 FPS. И, как и первая генерация, вторая также могла записывать FullHD-видео с 30-кадровым фреймрейтом.

Также устройство стало быстрее, а главное - научилось лучше корректировать баланс белого.

Следует отметить, что Raspberry camera не потребляет процессорное время, так как у нее есть свой видеоускоритель. Это положительно отличает ее от обычных USB-камер.

Как подключить камеру Raspberry Pi

Предположим, что камера уже извлечена из упаковки, а одноплатник находится на столе. Все, что нужно, чтобы подсоединить модуль к Raspberry - вставить шлейф в CSI-порт, который имеет соответствующую подпись - CAMERA.

Важно: цветовой ключ нужно направить на Ethernet-порт. Подключение, в свою очередь, следует производить только при обесточенной плате.

Когда загрузится рабочий стол Raspbian, понадобится:

  • открыть меню;
  • перейти к пункту Preferences;
  • запустить программу Raspberry Pi Configuration.

Откроется утилита конфигурирования, в интерфейсе которой есть четыре вкладки - нужно перейти на Interfaces. Оказавшись на ней, потребуется найти переключатель Camera (он, обычно, идет первым) и поставить его в положение "Включено" (Enabled). Далее нужно просто нажать на OK и выполнить перезагрузку.

Если устройство исправно и все вышеперечисленное выполнено правильно, к Raspberry Pi подключение камеры должно быть выполнено успешно. Но, конечно, это следует проверить. Для этого после загрузки Raspbian потребуется: открыть меню, перейти к пункту Programming и открыть Python 3.

Запустится IDLE, в котором потребуется создать файл с названием camera.py (можно по-другому, но, чтобы было понятно, лучше оставить так).

  • from picamera import PiCamera
  • # вышеуказанная инструкция подключает интересующий модуль
  • from time import sleep
  • # теперь объявим переменную для камеры
  • camera = PiCamera()
  • # затем запустим просмотр поступающего с камеры сигнала так, чтобы изображение выводилось поверх любых окошек
  • start_preview()
  • # пусть картинка выводится 15 секунд
  • sleep(15)
  • # завершаем предпросмотр
  • stop_preview()

Когда код введен, потребуется выполнить сохранение (клавиши CTRL+S), а затем - запустить исполнение кода, что делается нажатием на F5. Если на экране появится картинка, которую видит сенсор, значит Py camera Raspberry работает исправно.

Теперь, когда есть уверенность, что камера подключена правильно, необходимо определиться с целями, для которых она будет использоваться. Например, можно при помощи Raspberry Pi видеонаблюдение вести, следить за птицами или использовать как-то иначе.

При желании возможно самому написать код, но если нет времени, то нужно зайти на GitHub и найти подходящий скрипт на Python - их там около тысячи. Используя какой-нибудь из них, может быть создана IP-камера из Raspberry Pi или что-то другое. Рассматривать инструкции по установке скриптов здесь нет смысла, так как они присутствуют на GitHub.

Как подключить USB-камеру к Raspberry

Что касается того, как выполняется к Raspberry Pi подключение камеры по USB, то следует сказать, что это делается так же, как и во всех дистрибутивах Linux.

Принцип настройки такой:

  • подключение камеры;
  • обновление списка репозиториев и ПО (опционально);
  • установка программы Motion;
  • конфигурирование приложения.

Настройка заключается в изменении содержания двух файлов: motion/motion.conf и default/motion - оба из них находятся в директории etc.

В первом нужно изменить два параметра: DAEMON - на ON и Webcam_local - на OFF. Во, втором, в свою очередь, следует после знака "=" у параметра start_motion_daemon написать yes (по умолчанию стоит - no).

Чтобы запустить Motion Raspberry Pi, нужно запустить его сервис. Это делается командой: service motion start (естественно, под sudo). Останавливается демон той же командой, только вместо start нужно указывать stop.

Если же требуется трансляция в интернет, то нужно в роутере открыть для Raspberry порт 8081. Затем к камере можно будет обращаться так: http://адрес_роутера:8081.

Чтобы проверить работу камеры, нужно в браузере ввести следующий адрес: http://адрес_raspberry:8081. Вот таким нехитрым образом была настроена Raspberry Pi web camera usb.

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

Рассмотрим методы правильного подключения камеры к Raspberry Pi и работу с ней через терминальное окно и с помощью языка программирования Python.
Материалы по теме: ,
Подключая камеру к Raspberry помним следующее:
  • камера боится статического электричества, прикасаться к ней во время работы желательно через антистатический материал
  • камера потребляет 250 мА - при использовании посредственного блока питания Малины подключение камеры может вызвать нехватку питания при активной работе камеры
  • в камере нет микрофона
  • верх камеры находится со стороны противоположной выходу шлейфа, но для отражение изображения по вертикали есть специальная команда - об это ниже.

Подключение

Желательно выполнять подключение камеры к выключенной Raspberry. Быстро выключить Малину можно командой
sudo shutdown now
Шлейфовый разъем CSI находится рядом с HDMI:Плюс подключения камеры через этот разъем в отличие от USB - в разгрузке процессора при передаче данных через интерфейс CSI
Для удобства фиксации камеры есть готовые решения, например - Акриловый холдер .
Интерфейс камеры должен быть активирован в настройках Raspberry:
После активации камеры (если это требовалось) Малину необходимо перезагрузить:sudo reboot now
Для работы с камерой в Raspbian уже предустановлены необходимые утилиты и драйвера. Обновим пакеты для использования свежих версий: sudo apt-get update -y sudo apt-get dist-upgrade -y Если все сделано верно, попробуем получить пробный кадр с камеры - создадим папку для фотографий, перейдем в нее и выполним команду захвата изображения: mkdir ~/pi_cam/ cd ~/pi_cam/ raspistill -v -o test.jpg
В случае фейла следует проверить предыдущие шаги, либо прозвонить контакты разъемов на камере и на Малине.
В ОС Raspbian предустановлены следующие пакеты для работы с камерой:
  • raspivid, raspvidyuv - захват видео
  • raspistill, raspiyuv- получение фотографий
Полное руководство по перечисленным утилитам на английском языке находится на офф. сайте Raspberry Pi
Все утилиты запускаются из терминала и достаточно просты в использовании.
Пакеты, с названиями, оканчивающимися на “yuv” не используют компонент кодирования - сохраняют “сырую” необработанную информацию, полученную сенсором камеры. Рассмотрим работу с каждым пакетом, но прежде познакомимся со списком общих для всех пакетов параметров камеры, а далее рассмотрим специфические аргументы и конкретные примеры их применения.

Общие параметры

Рассмотрим значения параметров. Стоит заметить, что:
  • Если какой то аргумент не указан при обращении к утилите, то применяется его значение по умолчанию.
  • ЕСЛИ КОЛОНКА “ДИАПАЗОН ДОПУСТИМЫХ ЗНАЧЕНИЙ” ПУСТА - значит никаких дополнительных значений передавать не нужно - достаточно передачи самого аргумента.
  • Превью демонстрируется только на подключенном к Raspberry физическом мониторе. В случае доступа к Малине через удаленный рабочий стол (VNC) превью демонстрироваться не будет при любых настройках так как изображение превью посылается напрямую на монитор поверх остальной информации
  • Аналогичная с просмотром видео через рабочий стол
Аргумент
Описание
Диапазон допустимых значений
Значение по умолчанию
-p
Параметры окна предпросмотра
ширина,высота,x-координата, y-координата
-f
Предпросмотр во весь экран
no
-n
Без предпросмотра
-op
Прозрачность окна предпросмотра
0...255
255
-sh
Резкость
-100...100
0
-co
Контраст
-100...100
0
-br
Освещенность
0...100
50
-sa
Насыщенность
-100...100
0
-ISO
Чувствительность датчика в камере
-100...100
0
-vs
Стабилизация видео
(только для видео)
no
-ev
Экспокоррекция
-10...10
0
-ex
Экспозиция
  • night
  • nightpreview
  • backlight: подсветка позади объекта съемки
  • spotlight: освещение прожектором
  • sports: объект в движении
  • snow: снежный пейзаж
  • beach: пляжный пейзаж
  • verylong: затяжная экспозиция
  • fixedfps: ограничение FPS до фиксированного значения
  • antishake: антитряска
  • fireworks: пейзаж с фейерверками
auto
-awb
Баланс белого
  • sun: 5000K...6500K - солнечно
  • cloud:6500K ... 12000K облачно
  • shade: в тени
  • tungsten: 2500K ... 3500K вольфрам
  • fluorescent: 2500K ... 4500K
  • incandescent: раскаленный металл
  • flash: со вспышкой
  • horizon
auto
-ifx
Разнообразные эффекты
none, negative, solarise, posterise, whiteboard, blackboard, sketch, denoise, emboss, oilpaint, hatch, gpen, pastel, watercolour, film, blur, saturation, colourswap, washedout, colourpoint, colourbalance, cartoon
none
-cfx
Баланс цветов
0...255:0...255
128:128
-mm
Замер экспозиции
  • average: среднее
  • spot: точка
  • backlit: считать изображение с подсветкой
  • matrix: матричный замер
average
-rot
Поворот
0 ... 359
0
-hf
Отражение по горизонтали
No
-vf
Отражение по вертикали
No
-roi
Область интереса сенсора
координаты от левого верхнего угла и ширина и высота области
0 … 1,0 … 1,0 … 1,0 … 1
0,0,1,1
-ss
Скорость затвора
в микросекундах
6000000
-drc
Сжатие динамического диапазона
off
-st
показывать статистику
No
Далее рассмотрим утилиты по отдельности.


raspistill - захват фото

Эта утилита выдает кодированное сжатое изображение, и для выполнения этого действия есть немало параметров, передающихся аргументами при запуске raspistill.

Аргументы

Аргумент
Описание
Диапазон допустимых значений
Значение по умолчанию
-w
Ширина
0...макс
макс
-h
Высота
0...макс
макс
-q
Качество
0...100
75
-o
Имя файла
путь к файлу
-
-v
Вывод в терминал
Информация о процессе захвата
no
-t
Задержка перед действием
в миллисекундах
0
-tl
Таймлапс
пример: -tl 2000 -o image%04d.jpg
2000 - интервал
%04d - шаблон 4х значного числа
-
-e
Кодирование в формат
jpg, bmp, gif, and png
jpg
-x
Добавление EXIF тегов
до 32 тегов
-
-r
Сохранение массива Байера в Мeta-данных кодированного избражения
-

Примеры

Рассмотрим конкретные примеры использования raspistill:
Захват стандартного изображения через 2 секунды с сохранением в файл image.jpg (в той папке, в которой сейчас находитесь). Разрешение при этом будет стандартным (максимальным) raspistill -t 2000 -o image.jpg Тоже самое, но в разрешении 640х480 raspistill -o image.jpg -w 640 -h 480 Захват изображения с заниженным 5% качеством с сохранением в файл image.jpg (в той папке, в которой сейчас находитесь). При таком качестве размер изображения будет существенно меньше raspistill -o image.jpg -q 5 Получение изображения, кодированного в формат PNG с сохранением в файл image.png raspistill -o image.png –e png Получение стандартного изображения с двумя зашитыми EXIF-тегами: Артист - Борис, GPS-высота - 123,5 м raspistill -o image.jpg -x IFD0.Artist=Boris -x GPS.GPSAltitude=1235/10 Создание таймлапс-набора изображений, которые будут захватываться с интервалом в 10 секунда на протяжении 10 минут (600 000 мс) и называться image_num_001_today.jpg, image_num_002_today.jpg и так далее. Завершающее изображение будет иметь имя latest.jpg raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l latest.jpg Захват изображений при нажатии клавиши Enter, файлы будут сохраняться рядом и называться my_pics01.jpg my_pics02.jpg и т.д. raspistill -t 0 -k -o my_pics%02d.jpg

raspiyuv

Аргументы запуска в точности как у raspistill (см. выше), из них НЕДОСТУПНЫ только следующие:
-q - качество
-e - указание целевого формата изображения
-x - Добавление EXIF тегов
-r - Сохранение массива Байера в Meta-данных кодированного изображения
Однако имеется СОБСТВЕННЫЙ аргумент
-rgb - сохранение “сырых” raw-данных в формате RGB888 (8 бит/канал)

raspivid - захват видео

Параметры запуска

Аргумент
Описание
Диапазон допустимых значений
Значение по умолчанию
-w
Ширина
0...макс
1920
-h
Высота
0...макс
1080
-b
Битрейт видео
количество бит в секунду.
10Mbits/s задается -b 10000000
-o
Имя файла
путь к файлу
-
-v
Вывод в терминал
Информация о процессе захвата
-t
Задержка перед действием
в миллисекундах
0
-fps
Фреймрейт
Количество кадров в секунду 2...30
-k
Запуск/останов записи по нажатию Enter
процесс прерывается нажатием “X”
-sg
Сохранение отрезков видео с фиксированной продолжительностью в отдельные файлы
Задается длительность одного отрезка и маска файлов
-sg 3000 -o video%04d.h264
-wr
Ограничение максимального количества файлов при сегментации
Применяется с аргументом -sg и по сути реализует циклическую перезапись как в видеорегистраторах
Разрешение по умолчанию - 1080p (1920x1080)
Рассмотрим конкретные примеры:
Запись 5-ти секундного стандартного видео (1920x1080, 30 кадров/сек) с сохранением в файл video.h264 raspivid -t 5000 -o video.h264 Запись 5-ти секундного ролика с разрешением 1080p и специфическим битрейтом 3.5Mbits/s с сохранением в файл video.h264 raspivid -t 5000 -o video.h264 -b 3500000 Запись 5 секунд видео стандартного разрешения с частотой кадров 5fps с сохранением в файл video.h264 raspivid -t 5000 -o video.h264 -f 5 Если к Raspberry подключен монитор через HDMI, то записанное видео можно посмотреть с помощью плеера omxplayer: sudo apt-get install omxplayer #если плеер еще не установлен omxplayer video.h264 Через VNC просмотр видео недоступен

Коды ошибок

  • 0 - успешное завершение
  • 64 - передана неверная команда (ошибка в синтаксисе)
  • 70 - ошибка в утилите или при связи с камерой
  • 130 - выполнение прервано пользователем (сочетанием клавиш Ctrl + C)

Библиотека PiCamera

Это библиотека для языка программирования Python позволяющая упростить и автоматизировать работу с камерой Raspberry
Полное описание библиотеки на английском
В современных версиях дистрибутива Raspbian библиотека уже предустановлена, проверить это можно через консоль Python python3 import picamera В случае фейла необходимо покинуть консоль введя команду exit() или сочетанием клавиш Ctrl + D и установить библиотеку командой sudo apt-get install python3-picamera Работа с камерой из кода Python аналогично рассмотренным выше терминальным командам. Получить стандартное изображение с камеры можно легко прямо в консоли Питона: import picamera #импортируем библиотеку работы с камерой camera = picamera.PiCamera() #создаем объект камеры camera.capture("image.jpg") #вызываем у объекта камеры метод захвата изображения camera.close() #закрываем сессию работы с камерой Изображение сохраниться в файл image.jpg в текущей папке.

Приветствую! В данном обзоре хочу рассказать о Raspberry Pi 3 и его применении в качестве домашнего видео наблюдения в тамбуре (видеоглазок). На рынке существует множество решений от китайских производителей, однако их качество и функционал меня не устраивал. Есть решения, которые мне понравились, например или , но цены от 200 до 240 евро - это очень дорого! Поэтому принял решение сделать своё устройство. В обзоре концепт, который будет дорабатываться.
Итак, реализацию видео наблюдения решил делать на Raspberry по следующим причинам:
Во-первых, за небольшую цену получаем мини-компьютер с большими функциональными возможностями (как программными, так и аппаратными) в отличие от стационарных ip камер (видеоглазков);
Во-вторых, есть возможность подключить видеокамеру посредством интерфейса CSI (Camera Serial Interface), который минимально задействует процессор. На сегодняшний день существует два варианта таких камер (с разрешением 5 и 8Мп);
В-третьих, много источников информации в случае появления проблем и вопросов;

Все необходимое заказал в магазине Gearbest.
1.
2.
3.
4. На всякий случай набор , много было страшилок о перегреве третьей малины.

Скрин заказа



Подробно описывать Raspberry Pi 3 я не буду, это можно сделать, прочитав обзор. Приведу лишь основные характеристики:
Процессор: 64-битный 4-ядерный ARM Cortex-A53 с тактовой частотой 1,2 ГГц на однокристальном чипе Broadcom BCM2837;
оперативная память: 1ГБ LPDDR2 SDRAM;
цифровой видеовыход: HDMI;
композитный выход: 3,5 мм (4 pin);
USB порты: USB 2.0×4;
сеть: WiFi 802.11n, 10/100 Мб RJ45 Ethernet;
Bluetooth: Bluetooth 4.1, Bluetooth Low Energy;
разъем дисплея: Display Serial Interface (DSI);
разъем видеокамеры: MIPI Camera Serial Interface (CSI-2);
карта памяти: MicroSD;
порты ввода-вывода: 40;
габариты: 85x56x17 мм.

Видеокамеру решил использовать первого поколения, для тамбурного наблюдения этого более чем достаточно.
Характеристики:
-Матрица 5МП Omnivision 5647 с фиксированным фокусом;
-Максимальное разрешение фотоснимка 2592х1944 пикселей;
-Разрешение видеосъемки: 1080p (30 кадров в секунду), 720p (60 кадров в секунду), 640x480p (60/90 кадров в секунду);

Упаковка, плата, комментарии

«Raspberry pi 3» упакована в такую коробочку


Написано, что сделано в Китае


Внутри, инструкция по быстрому началу работы и безопасности


Сама плата находится в антистатическом пакете


Распберри с разных ракурсов










Местами флюс плохо отмыт


Упаковка модуля камеры




Плата камеры




Модуль камеры подключается к распберри ленточным 15ти жильным кабелем.

Долго думал, что выбрать в качестве программного обеспечения для моих задач. Есть множество программ пакетов типа GStreamer, Motion, mjpg-streamer и прочие. Но в каждой из них есть существенные недостатки. Понимаю, что знатоки Linux могут собрать все нужные пакеты воедино, написать GUI и оптимизировать работу. Однако моих знаний в Linux будет маловато. Значит, для таких, как я, нужно решение, работающее «из коробки». И такая программа была найдена!!! Называется MotionEye OS . Это даже не отдельная программа, а линуксовый дистрибутив со своим графическим интерфейсом.

Возможности MotionEye OS:
- Работа с несколькими камерами
- Синхронизация времени по интернету
- Поддержка Ethernet и Wi-Fi
- Запись лог журналов событий
- Настройка режимов работы камеры (яркость, контрастность, насыщенность, авто баланс яркости, скорость кадров в секунду, вращение и разрешение камеры). Есть возможность задать собственные нестандартные настройки.
- Сохранение скриншотов и видео по сценариям. С возможностью сохранения на sd карту, сетевую шару или облако (поддерживается Google Drive и DropBox).
- По детектору движения отправка Get/Post запросов, выполнения собственных скриптов, отправка уведомления на e-mail
- Наложение любого текста на изображение
- Одновременная трансляция видео в интернет с возможностью ограничения доступа и собственными настройками разрешения и fps камеры.
- Тонкая настройка детектора движения
- Работа по расписанию.
- Данный дистрибутив абсолютно бесплатный

Так выглядит основное окно программы


Основные окна настроек MotionEye















Пример изображения с камеры, разрешением 1280х1024

Итак, MotionEye OS может быть установлена на: Banana PI, Cubietruck, Odroid C1 (and C1+), Odroid XU4, Raspberry PI (A, B, A+, B+, Compute Module and Zero models), Raspberry PI 2, Raspberry PI 3.
Существует два способа установки.

Способ первый - установка «голого» образа.
Скачать дистрибутив с . Образ устанавливается на Micro sd карту посредством . Первый запуск дистрибутива должен выполняться с подключенным Ethernet кабелем!!! Логин admin без пароля. Админка будет доступна в браузере по ip, полученным малиной.
Данный способ быстрый, но будет установлена только MotionEye OS. А это не есть хорошо, т.к. сильно урезаем функционал Raspberry.

Способ второй - установка на Raspbian.
1. Установить Raspbian (как это сделать, думаю, объяснять не надо).
2. Проверить и установить обновления
sudo apt-get update sudo apt-get upgrade
3. Установить кодек ffmpeg
sudo wget https://github.com/ccrisan/motioneye/wiki/precompiled/ffmpeg_2.8.3.git325b593-1_armhf.deb sudo dpkg -i ffmpeg_2.8.3.git325b593-1_armhf.deb
4. Если в системе есть старые кодеки, их надо удалить и поставить новые
sudo apt-get remove libavcodec-extra-56 libavformat56 libavresample2 libavutil54 sudo apt-get install libavutil54 libavformat56 libswscale3
5. Установить motion
sudo apt-get install motion sudo wget https://github.com/ccrisan/motioneye/wiki/precompiled/motion-mrdave-raspbian -O /usr/local/bin/motion sudo chmod +x /usr/local/bin/motion
6. Установить зависимые пакеты
sudo apt-get install python-pip python-dev curl libssl-dev libcurl4-openssl-dev libjpeg-dev
7. Установить motioneye
sudo pip install motioneye
8. Сконфигурировать директории
sudo mkdir -p /etc/motioneye sudo cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf sudo mkdir -p /var/lib/motioneye
9. Запускаем motionEye и добавляем его в автозагрузку
sudo cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service sudo systemctl daemon-reload sudo systemctl enable motioneye sudo systemctl start motioneye
10. Для обновления и получения новой версии motionEye
sudo pip install motioneye --upgrade sudo systemctl restart motioneye
11. Для поддержки работы модуля камеры нужно добавить запись bcm2835_v4l2 в /etc/modules
sudo nano /etc/module
На этом установка закончена. Доступ к админке можно получить в браузере, указав ip малины и порт 8765. Теперь у нас есть полноценный raspbian и работающий motioneye.

Далее добавим полезную функцию, такую как Push уведомление на телефон в случае обнаружения движения. Это может быть полезно, если кто-то топчется перед вашей дверью, а вас нет дома.
Первое, что надо сделать, - это перейти на сайт . Там скачать приложение на Android или iOS. Пройти регистрацию. Затем зарегистрировать приложение «Register an Application». Затем заполнить поля «Name», «Description», во вкладке «Type» выбрать «Application». При желании можно добавить иконку. После подтверждения будет добавлено приложение с уникальным API Token/Key. На главное странице указан ваш User Key.
Следующим этапом нам надо написать скрипт на Python.

#!/usr/bin/python import httplib, urllib conn = httplib.HTTPSConnection("api.pushover.net:443") conn.request("POST", "/1/messages.json", urllib.urlencode({ "token": "am25zkm2p3msdgtmohaho9fraiieb", # Insert app token here "user": "umsxy2qh9ub14rbkc59711fzca5nfx", # Insert user token here "html": "1", # 1 for HTML, 0 to disable "title": "Tambur web camera", # Title of the message "message": "Motion detect !!", # Content of the message "url": "http://192.168.1.33:8081", # Link to be included in message "url_title": "View live stream", # Text for the link "sound": "siren", # Define the sound played }), { "Content-type": "application/x-www-form-urlencoded" }) conn.getresponse()
Не пытайтесь мне ничего отправлять, ключи я изменил))
Далее создадим файл pushover.py для этого
touch ./pushover.py
Открыть и добавить приведенный выше текст скрипта. Сохраняем. Закрываем файл.
sudo nano pushover.py
Назначим файлу права
sudo chmod 777 pushover.py
Теперь наш скрипт готов к запуску. Осталось его добавить в меню «Motion Notifications» в поле «Run a command» /home/pi/pushover.py

Немного тестов.
Для тестировании использовал Ethernet подключение. На картинках виден максимальный fps в обычном режиме и при обнаружении движения.






Загрузка процессора составляет 20-30%. Температура в работе 45 - 48 градусов, процессор дополнительного охлаждения не требует.

Заключение.
Безусловно, есть небольшие задержки при отображении картинки. Оптимальным разрешением считаю 1024 х 768 и ниже. В целом результатами работы камеры я остался доволен. В планах добавить возможность записи звука с микрофона при обнаружении движения.

Обзор получился с уклоном в программную часть, но я долго собирал информацию по данному вопросу и захотел об этом рассказать. Прошу прощения за возможные ошибки, я с линуксоподобными системами пока на ВЫ)) Дополнения и замечания очень приветствую! Также готов ответить на вопросы.

P.s. Сейчас цена в данном магазине на Raspberry pi 3 составляет $35.99

Планирую купить +85 Добавить в избранное Обзор понравился +54 +117

Два года назад, когда я только начал заниматься мультикоптерами, мне пришлось сделать небольшой . Поскольку квадрокоптер задумывался сугубо автономным, все что требовалось от этого пульта - это управлять беспилотником во время испытаний и настройки.

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

  1. Батарейки в корпус никак не влазили, поэтому приходилось их приматывать к корпусу изолентой:)
  2. Настройка параметров была вынесена на четыре потенциометра, которые оказались очень чувствительными к температуре. В помещении настраиваешь одни значения, выходишь на улицу - а они уже другие, уплыли.
  3. У Arduino Nano, которую я использовал в пульте, есть всего 8 аналоговых входов. Четыре были заняты настроечными потенциометрами. Один потенциометр служил газом. Два входа были подключены к джойстику. Оставался свободен только один выход, а параметров для настройки гораздо больше.
  4. Единственный джойстик был вовсе не пилотным. Управление газом с помощью потенциометра тоже весьма угнетало.
  5. А еще пульт не издавал никаких звуков, что иногда бывает крайне полезно.

Чтобы устранить все эти недостатки, я решил кардинально переделать пульт. И железную часть, и софт. Вот что мне захотелось сделать:

  • Сделать большой корпус, чтобы в него можно было запихнуть все что хочется сейчас (включая батарейки), и что захочется позже.
  • Как-то решить проблему с настройками, не за счет увеличения числа потенциометров. Плюс, добавить возможность сохранения параметров в пульте.
  • Сделать два джойстика, как на нормальных пилотных пультах. Ну и сами джойстики поставить православные.

Новый корпус

Идея чрезвычайно проста и эффективна. Вырезаем из оргстекла или другого тонкого материала две пластины и соединяем их стойками. Все содержимое корпуса крепится либо к верхней, либо к нижней пластине.

Элементы управления и меню

Чтобы управлять кучей параметров, нужно либо разместить на пульте кучу потенциометров и добавить АЦП, либо делать все настройки через меню. Как я уже говорил, настройка потенциометрами не всегда хорошая идея, но и отказываться от нее не стоит. Так что, решено было оставить в пульте четыре потенциометра, и добавить полноценное меню.

Чтобы перемешаться по меню, и менять параметры обычно используют кнопки. Влево, вправо, вверх, вниз. Но мне захотелось использовать вместо кнопок энкодер. Эту идею я подсмотрел у контроллера 3D-принтера.


Разумеется, за счет добавления меню, код пульта распух в несколько раз. Для начала я добавил всего три пункта меню: "Telemetry", "Parameters" и "Store params". В первом окне отображается до восьми разных показателей. Пока я использую только три: заряд батареи, компас и высота.

Во втором окне доступны шесть параметров: коэффициенты PID регулятора для осей X/Y,Z и корректировочные углы акселерометра.

Третий пункт позволяет сохранять параметры в EEPROM.

Джойстики

Над выбором пилотных джойстиков я долго не размышлял. Так получилось, что первый джойстик Turnigy 9XR я добыл у коллеги по квадрокоптерному делу - Александра Васильева, хозяина небезызвестного сайта alex-exe.ru . Второй такой же заказал напрямую на Hobbyking.


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

Питание

В старом пульте я использовал простой регулятор напряжения LM7805, который кормил связкой из 8 батареек AA. Жутко неэффективный вариант, при котором 7 вольт уходили на нагрев регулятора. 8 батареек - потому что под рукой был только такой отсек, а LM7805 - потому что в то время этот вариант мне представлялся самым простым, и главное быстрым.

Теперь же я решил поступить мудрее, и поставил достаточной эффективный регулятор на LM2596S. А вместо 8-ми AA батареек, установил отсек на два LiIon аккумулятора 18650.


Результат

Собрав все воедино, получился вот такой аппарат. Вид изнутри.


А вот с закрытой крышкой.


Не хватает колпачка на одном потенциометре и колпачков на джойстиках.

Наконец, видеоролик о том, как происходит настройка параметров через меню.


Итог

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

По ходу настройки пульта, были выявлены недостатки. Во-первых, нижние углы пульта упираются в руки:(Наверное я немного перепроектирую пластины, сглажу углы. Во-вторых, даже дисплея 16х4 не хватает для красивого вывода телеметрии - приходится названия параметров сокращать до двух букв. В следующей версии девайса установлю точечный дисплей, либо сразу TFT матрицу.

Одноплатный компьютер Raspberry Pi может использоваться не только для создания систем домашней автоматики и других нересурсоемких проектов, но и для работы с видео, в частности для передачи потокового видео с вебкамеры по сети.



В данном материале будет приведена пошаговая инструкция для настройки Raspberry Pi в качестве сервера с вебкамерой, с которого по сети будет передаваться потоковое видео с помощью специального программного обеспечения. В нашем случае будет использоваться программный пакет Motion, который является бесплатным и находится в открытом доступе.


Итак, для данного проекта потребуется Raspberry Pi Model B или новее, адаптер USB WiFi, USB-вебкамера с микрофоном, SD-карта с ОС Raspbian, доступ к Raspberry Pi через клавиатуру и мышь или удаленно.


Убедитесь, что все программные пакеты получили необходимые обновления. Для этого можно просто ввести:


sudo apt-get update


Затем нужно установить приложение Motion:


sudo apt-get install motion


Если вы хотите использовать специальный модуль камеры для Raspberry Pi, то данная версия Motion пока не поддерживает его. Чтобы добавить поддержку модуля камеры, нужно скачать и установить определенную сборку следующим образом:



sudo apt-get install -y libjpeg62 libjpeg62-dev libavformat53 libavformat-dev libavcodec53 libavcodec-dev libavutil51 libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 libpq-dev


Теперь нужно настроить это программное обеспечение. Первым делом необходимо отредактировать конфигурационный файл motion.conf. Введите следующую строку:


sudo nano /etc/motion/motion.conf


Здесь нужно изменить следующее: DAEMON = OFF (меняем на ON), Webcam_localhost = ON (Меняем на OFF). Далее нам нужно активировать Daemon-сервис. Печатаем:


sudo nano /etc/default/motion


И меняем start_motion_daemon = no (изменить на yes).


Теперь нужно запустить вебкам-сервер. Убедитесь, что вебкамера подключена к Raspberry Pi через USB. Введите следующую строку:


sudo service motion start


Если вы хотите остановить этот сервис, то воспользуйтесь такой командой:


sudo service motion stop


Для перезапуска сервиса Motion можете воспользоваться следующей командой:


sudo service motion restart


Если Motion работает, то вы можете открыть веб-страницу на вашем обычном настольном компьютере, в адресной строке которой будет IP вашего Raspberry Pi и порт 8081 (или другой, если вы его меняли). Тогда вы увидите изображение с вебкамеры, подключенной к Raspberry Pi.






Copyright © 2023 Базовые компьютерные навыки.