Оглавление:

Кто за дверью, система камер с активированной Алекса: 3 шага
Кто за дверью, система камер с активированной Алекса: 3 шага

Видео: Кто за дверью, система камер с активированной Алекса: 3 шага

Видео: Кто за дверью, система камер с активированной Алекса: 3 шага
Видео: ДОМОФОН СНОВА НЕ ПУСКАЕТ ДОМОЙ ⛔ / ПРАНК 2024, Июль
Anonim
Кто за дверью, система камер с активированной Алекса
Кто за дверью, система камер с активированной Алекса
Кто за дверью, система камер с активированной Алекса
Кто за дверью, система камер с активированной Алекса
Кто за дверью, система камер с активированной Алекса
Кто за дверью, система камер с активированной Алекса

Иногда во время просмотра телевизора не хочется открывать дверь, если это не важно. Этот проект позволяет вам увидеть человека у двери, просто сказав устройству Amazon Echo «Алекса, включи дверной монитор». Вы проверяете, кто появляется на экране телевизора, а затем возвращаетесь к обычным телепрограммам «Алекса, включи телевизор». Система также может быть полезна для пожилых людей или детей, которые могут быть использованы продавцами, ворами и т. П. Это позволяет телевизору с большим экраном вашей развлекательной системы быть монитором камеры не только для камеры на входной двери, но и для любых других камер видеонаблюдения, которые у вас могут быть; на самом деле его можно даже расширить для отображения видео с интернет-камер, таких как пляжные камеры и т. д.

Части:

Развлекательная система:

Телевизор с несколькими входами HDMI (они есть в большинстве телевизоров)

Кабель или коробка DVR

Маршрутизатор и подключение к Интернету через кабельную коробку (может не понадобиться, если у вас есть Wi-Fi)

Amazon Echo («Алекса»)

Harmony Hub

Камера (ы)

IP-камера у входной двери (предпочтительно Power Over Ethernet -POE-)

Raspberry Pi3 в проектной коробке (оригинальный Pi может работать) с кабелем HDMI

Arduino Pro Mini 8 МГц, 3,3 В

ИК-модуль (подойдут самые распространенные типы)

Шаг 1: Настройка, предварительное программирование (тестирование)

Настройка, предварительное программирование (тестирование)
Настройка, предварительное программирование (тестирование)
Настройка, предварительное программирование (тестирование)
Настройка, предварительное программирование (тестирование)
Настройка, предварительное программирование (тестирование)
Настройка, предварительное программирование (тестирование)

Этот проект основан на Pi3 omxplayer, который декодирует видео с аппаратным ускорением. Omxplayer можно запустить в тестовом режиме из командной строки в терминале Pi, используя соответствующий формат rtsp: // user @ password @ ipaddress, который требуется вашей камере. Pi должен быть подключен к Ethernet (хотя Pi3 также может быть подключен через Wi-Fi, но не тестировался) и физически расположен в развлекательном центре, чтобы выходной кабель HDMI Pi мог подключаться к входному разъему HDMI телевизора. Arduino и ИК-модуль будут подключаться к Pi и передавать информацию, полученную при чтении нажатий кнопок пульта дистанционного управления телевизором. Pi может выполнять это декодирование непосредственно из модуля IR, но я лучше разбираюсь в программировании на Arduino, чем на Python, и, кроме того, это экономит ресурсы процессора для основной задачи Pi - декодирования видеопотока (ов).

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

Одна из проблем заключается в том, что 4 размера окна, указанные в программе, могут не соответствовать вашему конкретному разрешению телевизора. Узнайте, какое разрешение поддерживает ваш монитор, отметив разрешение камеры, которое имеют ваши камеры. Большинство IP-камер имеют поток с высоким разрешением (1080p) и низким разрешением (640x480), поэтому, если вам просто нужно одно видео с высоким разрешением для входной двери, используйте поток с высоким разрешением rtsp: // format. Выбирайте поток с низким разрешением для камер в 4 квадрантах, вы не заметите большой разницы с меньшими размерами изображения. Вы можете использовать мой сценарий bash (test.sh) с размерами окон (в режиме разрешения 1080p, отображающих 4 камеры равного размера 640x480, масштабируемые по размеру). В противном случае используйте миллиметровую бумагу для разметки ваших телевизионных пикселей, а затем нарисуйте, сколько прямоугольников вы хотите в этой области. Затем определите, сколько видео с разрешением 640x480 уместится без особого изменения формата (растяжение по горизонтали выглядит лучше, чем по вертикали). Бордюры не люблю, поэтому на них не рассчитывала. Пронумеруйте прямоугольники от верхнего левого угла до нижнего правого 1, 2, 3 и т. Д. Затем создайте столбец номеров окон, для каждой строки этих чисел запишите верхний левый пиксель x, y и нижний правый пиксель x, y. Затем эти числа подставляются в сценарий, чтобы получить настраиваемый дисплей, при желании вы можете получить дисплей 3 x 3. Если вам нужен только один дисплей, просто закомментируйте остальные 3 камеры и сделайте размер окна равным разрешению всего экрана (и используйте поток rtsp с высоким разрешением) и назовите скрипт «test1.sh». Создайте столько скриптов, сколько захотите, программа btn.py Python будет вызывать их, когда Arduino меняет контакты GPIO.

Одна из проблем в получении стабильного изображения (верхняя часть изображения в порядке, но нижние вертикальные полосы изображения) заключается в том, что многие камеры намного лучше передают поток с использованием rtsp по tcp (я использую IP-камеры Hikvision от 2 до 5 Мп). Поэтому используйте "--avdict rtsp_transport: tcp" в omxplayer, как показано. Другие полезные команды omxplayer - это громкость (--vol -6000 для отключения звука) и буфер (--video queue x), где x = 1 или больше.

Настройки IP-камеры также могут вызвать проблемы с omxplayer. Все IP-камеры должны быть настроены на одинаковую частоту кадров в секунду, иначе изображение прервется. Когда установлены радикально разные частоты кадров, время, отображаемое на одной временной метке камеры, фактически на несколько секунд идет назад, затем вперед, затем назад и т. Д. Убедитесь, что окна вашего omxplayer не перекрываются, иначе перекрывающаяся часть будет мерцать.

Шаг 2: Собираем все вместе

Собираем вместе
Собираем вместе

Вы можете вручную управлять кабельной приставкой и телевизором, чтобы Pi отображал камеру на входной двери. Однако для этого требуется довольно много нажатий кнопок, включая соответствующее переключение универсального пульта дистанционного управления из режима кабеля в режим ТВ, чтобы можно было изменить источник входного сигнала HDMI на декодер камеры Pi (HDMI 2). Если вы хотите иметь возможность отображать дополнительные экраны камеры, вам также необходимо переключить универсальный пульт на AUX для управления Arduino и, следовательно, выбора камеры Pi. Чтобы упростить этот процесс, используйте Harmony Hub и связанное с ним приложение для смартфона Harmony, научите его управлять телевизором и кабельной приставкой для нормального просмотра ТВ в одном Activity, а затем создайте другое Activity для управления видеомонитором Pi. Действие включает в себя включение телевизора, вход телевизора на HDMI 2 и управление виртуальным телевизором NECx TV (например, Arduino и Pi) кнопками с 0 по 5. Это позволяет управлять всем через приложение для смартфона Harmony. Чтобы упростить задачу, свяжите приложение Amazon Echo Dot (Alexa) с приложением Harmony для голосового управления телевизором или функциями мониторинга дверей. На веб-сайте Harmony представлена подробная информация о том, как использовать эти новые навыки Alexa. Новые навыки. После связывания с новыми навыками Alexa такие ключевые слова, как «Включите телевизор» или «Включите дверной монитор», позволят выполнять соответствующие действия без необходимости использования ИК-порта универсального пульта дистанционного управления.

Pi подключен через Ethernet к вашей локальной сети и через кабель HDMI к телевизору. Я установил 3,3-вольтовый Pro Mini через провода к Pi в качестве опции, чтобы добавить дополнительное переключение камеры. Pro Mini может питаться от вывода 3,3 В на Pi. ИК-модуль подключается к контакту 2 Arduino, и прикрепленный эскиз декодирует нажатие кнопки от 0 до 5 (на самом деле от 0 до 9, но некоторые контакты Arduino еще не подключены). Выходы Arduino подключаются к контактам GPIO цифрового входа Pi, где прерывание сценария bash определяет, какая «кнопка» была нажата, затем останавливает один вариант отображения и запускает другой.

Моя кабельная приставка от Spectrum (ранее Time Warner Cable), это модель Motorola DVR DCX3510. Он использует протокол GI Cable для ИК. Телевизор Sony использует протокол Sony 2. Я подумал, что один или другой из этих кодов подойдет для управления ИК-приемником Pi, и оба они работали, хотя оказалось, что это непрактично. Пульт ДУ ожидает дополнительных команд или автоматически изменяет источник входного сигнала при нажатии кнопок от 0 до 9. Поэтому мне пришлось использовать другой код, который не взаимодействовал бы с кабельным тюнером или телевизором. Я обнаружил, что на моем универсальном пульте дистанционного управления был ранее запрограммированный код для устройства AUX (не знаю, что он контролирует), и решил использовать его. В созданных кодах говорилось, что используется 32-битный код NECx, поэтому я ввел эти коды кнопок в скетч Arduino IR_Rev_Codes_Pi_Monitor. Измените программу, если у вас другая модель, используя программу приема в IRLib2, и отметьте производителя, протокол и шестнадцатеричные значения для нажатых кнопок.

Шаг 3: Заключение

Заключение
Заключение
Заключение
Заключение
Заключение
Заключение

Дверной монитор - это практичный проект домашней автоматизации. Это был мой первый опыт программирования Pi с помощью Python. Python позволяет программировать прерывания - функция, которую я думал, была зарезервирована для микроконтроллеров. Прерывание позволяет программе работать нормально, запустив omxplayer, без постоянной проверки, требуется ли другое действие, например, переключение дисплея на новый канал камеры. Однако, если происходит прерывание, программа затем определяет, какой новый видеопоток должен быть запущен. Arduino настроен на подачу импульса для запуска прерывания Python. Если происходит прерывание, программа ищет, какой именно выход Arduino (соответствующий нажатой кнопке ИК-пульта дистанционного управления) активирован. Наконец, программа убивает любой текущий дисплей omxplayer и запускает новый дисплей omxplayer.

Я узнал, что Pi не устанавливает свои контакты GPIO для ввода, как Arduino по умолчанию - это не ошибка Pi, но Broadcom BCM2837 так поступает с завода. Мне нравится 4-ядерный процессор с частотой 1,2 ГГц, маломощный недорогой компьютер, способный отображать отличное HD-видео. ИК-кнопка 1 отображает четырехъядерный дисплей, а кнопки со 2 по 5 показывают один большой дисплей камеры в высоком разрешении.

Нажатие кнопки 0 на ИК-пульте отменяет отображение видео и отображает командную строку Pi. Если вы хотите смотреть видео на Youtube или что-то подобное, используйте клавиатуру Bluetooth, введите «startx» и используйте браузер Pi, чтобы перейти к видео Youtube и воспроизвести его в полноэкранном режиме в высоком разрешении.

Рекомендуемые: