2020-08-23

Велотрекер

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

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

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

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

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

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

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

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

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

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

 

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

 
  2020-08-22

U-Center

Удалось успешно запустить U-Center на Линукс. U-Center это такая программа позволяющая конфигурировать GPS модули от фирмы Ublox. Это программа разработана только под Windows но создатели утверждают что под Wine она тоже работает.

Для этого поставил Wine.

sudo aptitude install wine-stable

Чтобы настроить последовательный порт необходимо запустить редактор реестра при помощи команды wine regedit и создать новую запись COM1 со значением /dev/ttyUSB0 в разделе HKEY_LOCAL_MACHINE\Software\Wine\Ports, после чего перезапустить Wine командой wineserver -k.

Для соединения с компьютером использовал переходник USB - UART с резистивным делителем, так как Neo6m имеет трех вольтовую логику.

Теперь я могу посылать команды непосредственно с компьютера, а то через Ардуино это занимает слишком много времени.

 

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

 
  2020-08-10

Спят усталые игрушки

Почему-то отладочная плата на TTGO T-Call ESP32 SIM800L не хочет работать столько сколько мне бы хотелось от одной зарядке.

Стал грешить на модуль NEO6m. Спящий режим в нем поначалу никак не хотел включаться затем я разобрался как это сделать, но сборка все равно не показывала чудеса автономности. Поэтому встала задача измерить его реальный ток потребления, однако, почему-то, при включенном амперметре плата никак не хочет работать. Видимо, модуль питания, увидев что внутреннее сопротивления литий полимерного аккумулятора выросло на величину шунта сходит с ума. INA219 с шунтирующим резистором 0.1 Ом тоже не сработал.

Пришлось собирать отдельное устройство для опытов. Для этого использовал Arduino Pro Mini INA219 и маленький монохромный дисплей.

Оказалось что все не так уж и плохо. В спящем режиме устройство потребляет около 1.4 mA что в принципе не плохо. В активном режиме ток потребления около 20-30 mA что тоже вполне неплохо.

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

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

 

 

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

 
  2020-06-21

Особенности TTGO T-Call ESP32 SIM800L

Продолжаю изучать отладочную плату TTGO T-Call ESP32 SIM800L. Несколько недоумеваю по поводу используемых портов. У ESP32 есть три аппаратных UART при этом нa плате для соединения ESP32 с SIM800 используются выходы 26 и 26 на которых аппаратного UART нету! То есть, заместо аппаратного нужно использовать программный UART который хуже по определению! При этом эти ноги еще выведены на гребенку платы - зачем, если использовать их уже нельзя?

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

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

 

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

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

Upd3: Написал более подробную статью про освещение светодиодной лентой, статья пока в разработке, но уже из нее можно многое почерпнуть про изготовление устройства.

 

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

 
  2019-12-24

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

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

 

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

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

 

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

 
  2019-12-08

Подсветка светодиодной лентой WS2812b

Давно хотел сделать какую-нибудь поделку со светодиодной лентой. Во первых это красиво, во вторых, первого пункта вполне достаточно. 
Для микроконтроллера я выбрал ESP32 - мой последний фаворит - у него есть Wifi и Bluetooth - а что еще нужно для IoT поделки? Лента - WS2812b это - RGB светодиодная лента с индивидуальной адресацией. 
Кроме этого, ESP32 позволяет заливать прошивку по воздуху. В сети полно примеров как это делается. Cамым простым вариантом для меня было создавать прошивку на C++ и Arduino. Знаю это не спортивно, но задо это быстро.
И вот все компоненты будущей системы мне были доставлены. Сама светодиодная лента WS2812b представляет собой ленту длиной 5 м с 150ми светодиодами в каждый из которых интегрирован чип управления управляемый по одному проводу. Оказалось, что лента питается напряжением 5 Вольт, в то время как я заказал блок питания на 12 вольт. Каждый светодиод на полную яркость потребляет около 50mA а значит у меня не получается запитать всю ленту целиком поэтому в тестовой прошивке я зажигаю пока лишь несколько светодиодов одновременно. Так как у меня нет правильного блока питания то и лента и микроконтроллер питаются от пяти вольт через понижающий на Step Down стабилизатор который может давать ток до 1 ампера, в то время как лента на полную мощность потребляет около 7 ампер. Значит все светодиоды пока включать не будем.
Получилось настроить и обновление прошивки по воздуху. Так как устройство расположено на шкафу и доступ к нему затруднен обновление по воздуху было для меня самым главным требованием. 
Родная прошивка модуля esp32 CAM не захотела обновлять скетч по воздуху, устройство просто перезагружалось, однако, когда я сменил в настройках Arduino тип устройства на esp32 Wrover все прекрасно заработало.
Библиотека для работы с лентой от Аdafruit у меня почему-то тоже не стала работать корректно и некоторые светодиоды остались зажженными. При этом если выбирать малое количество светодиодов библиотека работает более или менее стабильно. Возможно дело в каких-то аппаратных проблемах или же у меня имеются наводки на сигнальный провод.
Однако, когда я поставил другую библиотеку - FastLED она сработала вполне стабильно. Но пока я все еще недоволен быстродействием. 
Возможно всё дело в неэффективности кода или я что-то сделал не так, но анимация в виде бегущего огонька у меня происходит краааайне медленно. 
Поскольку ленту нужно включать дистанционно реализовал работу с лентой через веб интерфейс, таким образом включать и выключать ленту можно из со странички в локальной сети. 
Интересно что также есть возможность использования mdns - это такой легковесный DNS для локальной сети - само устройство появится в сети с именем devicename.local. C компьютера эта функция у меня сработала без проблем но с телефона через mdns почему-то работать не захотела. Возможно дело в настройках браузера.
В общем нужно заказывать хороший блок питания на 5 вольт и током не менее десяти ампер - а лучше двадцати, так как я хочу ленту еще удлинить.
 
P.S. Извиняюсь за дикий русский язык - писал это в воскресенье вечером, был уже слегка не в себе :)
 

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

 
  2019-11-16

ESP-32 и INA219

Как измерить напряжение батареи при питании вашей самоделки на базе базе ESP32?

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

Поэтому, другим вариантом было использования отдельного датчика на базе INA219. Этот чип общается с внешним миром через i2c - для этого можно использовать любые две ноги ввода-вывода - в моем случае это 13 -SDA, 15-SDL. Для того чтобы все заработало как полагается в стандартный пример от Adafruit достаточно добавить одну единственную строчку для инициализации i2c на нестандартных выводах:

 Wire.begin(13, 15);

Питание микороконтроллера осуществляется Step Down стабилизатором выходное напряжение которого устанавливается переменным резистором - на нем я выставил напряжение около 3.3 вольта.

Интересно, что если ничего не подать на ногу V+ INA219 то она показывает напряжение около 0.8 В и ток порядка 10mA - уж не знаю почему - во всех примерах которые я видел в сети на него ничего не подается и эти ноги используются только при измерении токов - у меня же, почему то так не заработало - нужно было сигнал подавать именно на +V при том что я запитал сам сенсор от 3.3 вольта от которого запитал и микроконтроллер.

Вот код прошивки.

Вот так выглядит моя схема. 

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

Вот что выводится в терминал:

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

 

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

 
  2019-08-24

ESP-32 ist Kaputt

В Германии не очень популярен АлиЭкспресс, но зато все заказывают с местного аналога -  amazon.de. Товары на нём уже растаможенные, так как без растаможки тут можно заказывать из-за границы на сумму не более 21 евро в месяц. Чтобы иметь возможность поэкспериментировать с некоторыми железками, заказал себе набор юного радиолюбителя в который входит паяльник, тестер, кусачки и ещё куча всякого разного. Дополнительно, заказал макетную плату с кучей соединительных проводов резисторов конденсаторов, транзисторов и ещё всякими разными другими активными элементами которые могут пригодиться. 

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

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

 

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