Видео стриминг с ESP32
В сети есть много примеров того как превратить плату esp32 cam в веб-камеру способную стримить видео поток. Однако, такая веб-камера может раздавать контент только на одно устройство, что делает такое решение не очень функциональным.
Задался вопросом, как сделать так, чтобы видеопоток от веб-камеры можно было принимать на нескольких устройствах. К удивлению, в сети, почему-то, очень мало успешных решений для потокового вещания с ESP32, хотя подобный проект мог бы быть довольно интересным.
Однако, существуют примеры того, как организовать потоковое вещание при помощи nginx от других источников, ту же идею можно применить и для нашего случая.
После нескольких вечеров экспериментов мне удалось организовать стриминг от устройства на esp32 cam в локальной сети на несколько устройств. В качестве реверсивного прокси-сервера используется nginx. FFMpeg преобразует RTSP поток от веб-камеры в RTMP видео поток который посылается на веб-сервер и раздается нескольким устройствам одновременно. В качестве видео плеера я использовал VLC но может подойти и любой другой.
Таким образом, сервер получает трафик виде одного потока от камеры esp32 который затем уже раздаётся на несколько потребителей. Веб сервер был поднят на устройстве Raspberry Pi Zero W - мини компьютера размером с половину пластиковой карточки и стоимостью в десять долларов. Вычислительных способностей этого малыша оказалось достаточно для перекодирования в реальном времени видеопотока с ESP32 Cam и раздачи его на оконечные устройства.
Команда для перекодирования потока при помощи ffmpeg у меня получилась вот такой:
ffmpeg -rtsp_transport tcp -i rtsp://192.168.0.61:8554/mjpeg/1 \
-f flv -tune zerolatency -preset ultrafast -r 10 -an \
rtmp://localhost:1935/live/ccc
В ходе экспериментов было выявлено, что задержка при подобном способе раздачи контента составляет около 30 секунд, возможно для коммерческих устройств это будет неприемлемо, но для домашнего видеонаблюдения будет вполне достаточно. Стоимость компонентов при этом оказывается совсем смешной по сравнению со стоимостью "взрослых" решений.
Чем снимали фильм про дворец Путина
На сайте радио свобода статья посвященная модели дрона, который использовался для съёмки фильма.
Оказывается, что поскольку территория над дворцом Путина объявлена бесполетной зоной и дроны DJI залетать в нее не могут из-за ограничений в прошивке, а вот Autel Evo II вполне может!
Похоже, продажи этих коптеров теперь подскочат!
Самобалансирующий робот из Lego EV3
Давно хотел сделать самобалансирующего робота. У ребенка есть Lego EV3 Home Edition. В сети есть инструкции как собрать такого из набора EV3 Education у которого в комплекте есть гиро датчик. В Home Edition гиро датчика нет - но ведь его можно купить!
Зашел на сайт Lego сделал заказ и через два дня посылка была у меня, благо в Берлине доставка не занимает много времени.
GyroBoy показался мне слишком сложным - к тому же у нас не было некоторых деталей, поэтому решил собрать модель попроще Balanc3R. Вот она наша прелесть:
Измерение ёмкости аккумулятора
Потребовалось измерить емкость аккумуляторной батареи. Однако никакого готового устройства для этого в доме не оказалось.
Заказывать на амазоне не хотелось, поэтому собрал из того что было небольшое устройство для измерения ёмкости аккумулятора на базе Arduino и ino219.
На макетной плате расположены arduino pro mini датчик тока и напряжения ina219 контроллер зарядки TP4056 и стабилизатор step-up который повышает напряжение 3.7 Вольт аккумулятора до 5 Вольт который нужен arduino и OLED дисплей. Устройство питается от элемента 18650.
Данная схема позволяет измерять ёмкость аккумулятора при зарядке и разрядке литий-ионных аккумуляторов и отображать ее на дисплее.
Когда внешнего питания нет устройство работает от аккумулятора и одновременно измеряет ёмкость аккумулятора при его разрядке.
На дисплее показывается циклические напряжение аккумулятора ток который течет через него и одновременно накапливается ёмкость в ампер часах и в Ватт часах.
Если мы подключим что-нибудь ещё дополнительно какую-нибудь нагрузку мы можем ускорить процесс разрядки и испытать аккумулятор под нагрузкой. В теории, емкость аккумулятора при разных токах разрядки может отличаться.
Если мы подключим внешнее питание, то устройство перейдет в режим зарядки, для чего нужно нажать кнопку для подтверждения смены режима. Это нужно для того чтобы если вы случайно отключили питание чтобы устройство осталось в том же режиме в котором было и продолжило считать параметры зарядки и это не повлияло бы на уже накопленные результаты.
Кроме этого, каждая сессия заряда или разряда записывается в EEPROM устройства и если вы случайно выключите все устройство то после включения устройство продолжит зарядку с прерванного момента. В EEPROM устройства сохраняются последние десять сессий заряда разряда.
Таким образом можно измерить емкость литий-ионного или литий-полимерного аккумулятора при его разрядке или зарядке.
Устройство можно использовать как продвинутый power bank для питания других устройств, в случае, если вам необходимо контролировать параметры энергопотребления схемы, или же как зарядное устройство с контролем емкости заряжаемого аккумулятора.
Прошивка, как всегда, выложена на github.