2022-09-10

Подключение OLED дисплея к ESP32 Cam

Стало интересно, можно ли подключить дисплей к модулю ESP-32 Cam. Модуль ESP-32 Cam имеет на борту камеру, и слот для SD карты. Если бы можно было еще подключить дисплей, то из этого модуля могла бы получиться дешевая цифровая камера с возможностью просматривать отснятые изображения с карты памяти. У меня завалялся монохромный дисплей SSD1306 который я попытался подключить к ESP-32 по интерфейсу I2C, однако, поскольку свободные выводы I2C на этой плате уже заняты для работы с SD картой то стандартные библиотеки от Adafrut использовать у меня не получилось.

Оказалось, однако, что такое вполне возможно, и даже обнаружил работающий проект на сайте robotzero.one.

Проект представляет собой некое подобие цифровой камеры, которая умеет делать снимки, сохранять их на SD карту и показывать их на встроенном сайте устройства по WiFI. Чтобы видео показывалось на маленьком монохромном OLED дисплее картинка подвергается масштабированию и сглаживанию методом Флойда-Штайнбурга.

Прошивку пришлось немного модифицировать, так как у меня не нашлось таких модных сенсорных кнопок используемых автором. Подошли обычные механические - их я посадил на землю а в коде скетча заменил инициализацию пинов с INPUT на INPUT_PULLUP и в соответствующих условиях на проверку состояния пинов заменил HIGH на LOW так как логика работы пинов стала инверсной.

Теперь думаю можно ли из подобного проекта cделать что-либо полезное? Выглядит уже довольно интересно.

 

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

 
  2022-06-26

Противоугонное устройство для велосипеда

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

Кажется, я нащупал правильную платформу для реализации задуманного. В качестве аппаратной начинки используется плата LILYGO TTGO T-SIM7000G ESP32 которая показывает прекрасную автономность и имеет на борту полный фарш коммуникационных протоколов, включая GPS, GSM, 3G, Wifi, Bluetooth а также преобразователь для зарядки аккумулятора от солнечной батареи.

Поскольку 3d принтера у меня сейчас нет, то корпус прототипа нарисовал 3d ручкой.

Разместил устройство под седло, где оно практически не заметно.

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

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

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

 

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

 
  2022-03-28

Впечатляющая автономность LILYGO TTGO T-SIM7000G ESP32

Дошли руки до купленной больше года назад платы LILYGO TTGO T-SIM7000G ESP32. Подключил солнечные батареи, адаптировал под эту плату прошивку, созданную для умного велосипеда. Устройство сидит на подоконнике уже три дня и не выказывает ни малейших признаков усталости.

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

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

Пожалуй, в качестве велосипедного компьютера устройство подходит даже лучше чем SIM600 - в нем уже интегрирован чип с GPS и GSM что значительно улучшает энергоэффективность.

 

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

 
  2021-04-05

Видео стриминг с 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 секунд, возможно для коммерческих устройств это будет неприемлемо, но для домашнего видеонаблюдения будет вполне достаточно. Стоимость компонентов при этом оказывается совсем смешной по сравнению со стоимостью "взрослых" решений.

 

 

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

 
  2020-12-18

Измерение ёмкости аккумулятора

Потребовалось измерить емкость аккумуляторной батареи. Однако никакого готового устройства для этого в доме не оказалось.

Заказывать на амазоне не хотелось, поэтому собрал из того что было небольшое устройство для измерения ёмкости аккумулятора на базе Arduino и ino219.

На макетной плате расположены arduino pro mini датчик тока и напряжения ina219 контроллер зарядки TP4056 и стабилизатор step-up который повышает напряжение 3.7 Вольт аккумулятора до 5 Вольт который нужен arduino и OLED дисплей. Устройство питается от элемента 18650.

Данная схема позволяет измерять ёмкость аккумулятора при зарядке и разрядке литий-ионных аккумуляторов и отображать ее на дисплее.

Когда внешнего питания нет устройство работает от аккумулятора и одновременно измеряет ёмкость аккумулятора при его разрядке. 

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

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

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

Кроме этого, каждая сессия заряда или разряда записывается в EEPROM устройства и если вы случайно выключите все устройство то после включения устройство продолжит зарядку с прерванного момента. В EEPROM устройства сохраняются последние десять сессий заряда разряда.

Таким образом можно измерить емкость литий-ионного или литий-полимерного аккумулятора при его разрядке или зарядке. 

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

Прошивка, как всегда, выложена на github.

 
 

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

 
  2020-11-15

Заказал интересную плату

Вторую неделю вся контекстная реклама мне подсовывает новую железку от TTGo : TTGO T-SIM7000G Module ESP32-WROVER-B Chip WiFi Bluetooth 18560 Batterie Halter Solar Ladung Entwicklung Bord

Выглядит очень интересно - процессор ESP32, на борту 3g интернет, WiFi, GPS, и все это питается от аккумулятора 18560 с возможностью зарядки от солнечной батареи. По автономности это должна быть очень крутая штука для всяких дистанционных устройств - онлайн трекеров и подобных самоделок с автономным питанием.

Стоит удовольствие около 30 Евро. Неизвестно правда, нужно ли будет платить пошлину - в Германии весь китайский импорт облагается пошлиной, и не маленькой, - вот и посмотрим.

P.S. Уже давно амфиботропная асфиксия мешает мне заказать нормальный Raspberry Pi чтобы, наконец, доделать GSM гейт - а тут под действием момента взял и заказал совершенно ненужный девайс. Сработала контекстная реклама.

 

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

 
  2020-08-23

Велотрекер

Согласно статистике каждые полторы минуты в одной только Германии воруют один велосипед. В прошлом году было украдено 332 486 велосипедов на сумму более 120 миллионов евро, и это только задокументированные случаи воровства. Во всем остальном мире ситуация обстоит не лучшим образом.

После того как моему любимому велосипеду приделали ноги, стал думать как бы этого можно было бы избежать подобного в будущем. Как правило, украденный велосипед не увозят далеко - одному моему коллеге повезло больше чем мне - тот нашел свой велосипед на соседней улице пристегнутым к забору другим замком. Свой велосипед подобным образом мне найти, увы, не удалось. Если бы на велосипеде стоял GPS трекер, то его можно было бы найти за считанные минуты.

После того как TTGO выпустили плату с ESP32 и SIM600 на борту я подумал, что это почти готовый GPS трекер, на нём уже есть контроллер LiPo аккумулятора и слот для SIM карты - нужно только добавить в связку GPS! Из недорогих на рынке оказался модуль NEO6m который удивительно прост в управлении. Трекер питается от LiPo аккумулятора емкостью 700mAh

Все компоненты достаточно компактные, их можно поместить, например, в велофонарь, раму, сиденье - в велосипеде не так много вариантов, но они есть.

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

Трекер посылает телеметрию на собственный сервер каждые десять минут - возможно в будущем это время будет увеличено чтобы добиться большей автономности.

Готовое устройство внешне выглядит как обычный задний велофонарь и является неразборным, для герметичности фара залита термоклеем, поэтому прошивку нужно обновлять по воздуху, это первое что я реализовал, так как снимать устройство каждый раз когда нужно залить новую прошивку мне совершенно не хочется. Сама прошивка написана на C++ в среде Ардуино.

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

Все ссылке в этой статье ведут на немецкий Амазон где я заказывал компоненты устройства. В России те же самые детали можно купить на AliExpress, в Германии из за высоких пошлин и трудностей с таможней AliExpress, увы, не так популярен. 

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

 

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

 
  2020-05-08

Посылаем данные в облако через мобильную сеть

Пришел интересный модуль - TTGO T-Call ESP32 SIM800L.

По сути это ESP-32 Wrover соединенный с модулем SIM800L который умеет работать с 2G сетями. С 3G уже не умеет, но это и не нужно если объем передаваемых данных не велик.

Залил тестовую прошивку, найденную у RandomNerd предварительно адаптировав ее для работы https://requestbin.com/.

И ура! Теперь я могу посылать данные по GPRS!

Тестовый скетч залил на Github.

 

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

 
  2020-04-22

Подсветка светодиодной лентой WS2812b - продолжение

Решил спаять новое устройство на смену временной макетной плате, которая стоит на шкафу и пылиться.

Новая плата чуть менее временная, но все равно макетка:

Сказано сделано - спаял новое устройство. Однако, работать оно поначалу не захотело.

Сначала при включении светодиоды начинали хаотически мигать. Опытным путем было установлено, что эффект проявлялся только если напряжение питания модуля 3.33 вольта и ниже. Если повысить напряжение до 3.5 вольт все начало работать нормально. Видимо, пятивольтовая логика ленты WS2812b не совместима с 3.33 вольтовой логикой ESP32. По идее нужен преобразователь уровня.

В определенный момент всплыл другой глюк. Опять стали подмигивать отдельные светодиоды. Стал искать причину. Выяснилось следующее: из-за того, что новая плата у меня ESP 32 Wroom а не ESP 32 Cam при заливке прошивки я выбрал другой тип платы - ESP32 Dev Board с частотой 120MГц. Раньше прошивал с настройками для ESP32 Wroover на 80МГц и на 40МГц. Интересно, что система прошилась нормально, а вот лента стала странно подмигивать. При этом эффект уже не зависел от напряжения питания. Вернул предыдущие настройки - все стало опять хорошо.

И вот устройство стоит, лампочки мигают, казалось бы все хорошо. Однако через некоторое время устройство перестает отзываться по Wifi. При этом оне не зависает, нет - выбранный световой эффект продолжает работать - просто устройство отказывается открываться по сети. Лекарство пока не нашел, хотя есть несколько предположений, почему это происходит.  В новой прошивке есть возможность отключать энергосбережение WiFi - предполагается это может решить проблему. Так ли это - посмотрим.

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

Upd2: переключил на роутере WiFi на другой канал, так как домашние жаловались не нестабильную связь - зависания устройства сразу прекратились.

 

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

 
  2019-12-24

Новогодняя иллюминация

На выходных сделал новую поделку:

 

Сначала хотел такое сам сделать, потом поискал, и оказалось, что уже есть замечательная прошивка для контроллеров от Espressif. Работает на ESP32 и более младщих сериях. Поддерживает голосовые ассистенты типа Гугла и Алексы, прошивка сделана на редкость профессионально хоть и Ардуино.

Очень понравилось.

 

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