[Программирование микроконтроллеров, Разработка для интернета вещей, DIY или Сделай сам] «Умная» детская коляска «Максимка»

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
25-Авг-2020 14:35

Во время прогулки с ребенком в коляске мозг немного освобождается от ежедневных забот и начинает мыслить творчески. Так, в одной из прогулок, и родилась идея умной детской коляски, которая может предоставить родителям некоторую информацию, в какой-то мере обеспечить безопасность передвижения по улицам, сделать коляску выделяемой из множества других.
Как у меня обычно бывает, когда приходит какая-то идея, то она обдумывается, а потом (Остапа начинает нести) она обрастает дополнительными функциями о которых изначально не задумывался. Эти мысли зажигают страсть творчества и начинается процесс.

Итак, все началось с того, что во время прогулки необходимо было видеть текущее время, чтобы знать время прогулки…
Каждый раз смотреть время на телефоне не удобно, а часы давно уже не ношу. Значит, нужен индикатор в удобном месте, который отображает текущее время, а также время прогулки, чтобы не рассчитывать каждый раз. Гуляя в темное время суток, ребенка не видно в коляске, а значит надо оснастить люльку подсветкой. Также при движении по местам без искусственного освещения, неплохо было бы иметь впереди фару, освещающую путь. В холодное время года хотелось бы знать температуру воздуха в люльке, а также температуру воздуха за бортом.
Для обеспечения видимости коляски в темное время суток, при передвижении по улицам, появилась мысль оснастить раму коляски светодиодной подсветкой. А чтобы подсветка была не скучной, то применил «умные» светодиоды для рамы и колес.
Индикатор и кнопки управления должны быть в доступном месте, а в моем случае это рама коляски.
Источник питания устройства должен обеспечивать работоспособность системы с учетом включенной декоративной подсветки и фары. Также должен заряжаться от USB.
Это были основные функции, которые хотелось воплотить в жизнь. Но мысль пошла далее. Захотелось знать расстояние, которое проехала коляска за текущую прогулку, за день, за все время. Также текущую скорость движения.
Однажды не заметил спущенного колеса и 4 км ехал домой на спущенном колесе. Задумался о контроле давления в шинах.
Ну и, в конце концов, пора задуматься о безопасности самой коляски. Для этого планировал применить GPS/ГЛОНАСС приемник и GSM-модем.
Полный реализованный функционал умной детской коляски:
  • подсветка внутри люльки;
  • отображение точного времени с синхронизацией от систем GPS/ГЛОНАСС;
  • контроль температуры внутри люльки;
  • контроль температуры воздуха за бортом;
  • фара для освещения дороги впереди коляски при движении;
  • декоративная подсветка коляски, которая выделяет коляску в темное время суток;
  • датчик включенной тормозной системы;
  • датчик скорости и пройденного расстояния;
  • индикатор для отображения всей информации устройства;
  • контроллер заряда аккумулятора;
  • система контроля давления в шинах (TPMS);
  • акселерометр для контроля информирования о неровностях на дорогах;
  • звуковой информатор;
  • применение GPS/ГЛОНАСС трекинга через сайт спутникового слежения;
  • GSM-модем для передачи данных трекинга.


Описание аппаратной части устройства
Так как схема содержит множество элементов и емкий аккумулятор, то решено было исполнить устройство в двух блоках – основной и блок индикации. Основной блок изображен на рис.1, блок индикации на рис.2.

Рис.1. Принципиальная схема основного блока устройства

Рис.2. Принципиальная схема блока дисплея
В качестве контроллера устройства D1 был выбран ARM. Блок заряда аккумулятора реализован на микросхемах D3, D4 по стандартной схеме включения. Заряд происходит от зарядного устройства телефонов через USB-разъем. Также, опционально, предусмотрен заряд аккумулятора от бортовой сети с напряжением 6-20 вольт. Температура внутри люльки, за бортом и аккумулятора реализованы на DS18B20. Т.к. люлька может сниматься с рамы с целью транспортировки либо замены на летний вариант, то на люльке прикреплен разъем, который отключает блок термометров и подсветку внутри люльки от устройства.
Для определения локальных координат и точного текущего времени применен GPS/ГЛОНАСС приемник. При наличии сигнала от GPS системное время записывается в D2. При плохих условиях приема GPS/ГЛОНАСС сигналов, текущее время не корректируется, но часы D2 сохраняют ход.
Для хранения данных различной статистики применяется D14 (EEPROM 24CL16).
Декоративная подсветка выполнена на «умных» светодиодах WS2812b. Все элементы подсветки, включая переднюю фару и колеса, выстроены в одну информационную цепью.
Блок информатора собран на элементах D6, D7, D8. Схема скопирована с китайского MP3-модуля на основе JQ6500. Музыкальные MP3 фрагменты зашиваются во Flash D7 посредством USB.
В качестве акселерометра D9 применена ADXL345. Данные от акселерометра используются для контроля неровностей на дорогах, а также для охранных целей.
Подсистема контроля давления шин увлекла меня надолго и поэтому удостоена отдельной статьи [1]. Дело в том что китайская TPMS, которую я использую в своем устройстве имеет приемный блок, который предназначен для контроля давления в диапазоне 1,1 атм – 3,2 атм. Давление вне этого диапазона штатная системы оповещает писком при каждом опросе датчиков. Опрос датчиков происходит периодически примерно через 30-60 сек в нормальном режиме работы. Поэтому просто поставить штатный блок в коляску не представляется возможным. Да и не интересно. Куда интереснее исследовать протокол и внедрить в свою систему, что и было сделано. Система состоит из четырех внешних датчиков, которые накручиваются на штуцер колеса.

Датчики беспроводные, периодически передают информацию о давлении колеса и температуре воздуха в колесе. Частота вещания датчиков 433,92 МГц с модуляцией FSK. Для захвата сигналов от датчиков был применен модуль трансивера на микросхеме SI4432.
Для передачи данных на сайт GPS-трекинга используется GSM-модем SIM800C. Трекинг используется для противоугонной системы охраны коляски, а также для сохранения треков прогулки, для истории.
Основной блок и блок дисплея выполнены на печатных платах и изображены на рис.3. и рис.4.
Рис.3. Внешний вид платы основного блока «умной» детской коляски

Рис.4. Внешний вид платы дисплея

В устройстве применен OLED дисплей на контроллере SSD1306. Дисплей маленький и умещается на ручке коляски. Но это и большой минус, т.к. при вибрации коляски в процессе движения не видно мелкого шрифта. Поэтому экраны главной информации отображены крупным шрифтом.

Основной блок и блок индикации соединены между собой последовательным портом, что сокращает количество проводов.
В качестве датчика скорости и датчика активации тормозной системы применены датчики Холла. Датчики смонтированы на отдельной плате на колесе, покрыты лаком от влаги и загерметизированы.

Светодиоды декоративной подсветки смонтированы на раме в алюминиевых профилях со светофильтрами и также загерметизированы от внешней среды. Светодиодные кольца выполнены с классом защиты IP30, поэтому их пришлось герметизировать от влаги.

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

Система постоянно находится в режиме ожидания. Все второстепенные устройства отключены ключом VT3. Контроллеры обоих блоков работают на пониженной частоте и ненужная периферия ARM также отключена. Как только нажимается определенная последовательность кнопок (защита от включения незнакомцем), то происходит пробуждение системы, включается ключ VT3, происходит инициализация модулей.
Все аварийные события сопровождаются всплывающими сообщениями на дисплее и соответствующей мелодией информатора.
Описание программной части устройства
Первоначальное включение системы производится скрытым тумблером и система запускается в режим ожидания. Дальнейшее включение и отключение системы производится нажатием определенной комбинации кнопок с блока дисплея.
При включении системы в рабочий режим контроллеры переходят на повышенную частоту, инициализируются различные подсистемы, проигрывается мелодия включения.
Далее каждый блок начинает свою работу, данные обрабатываются и генерируются события по информированию об авариях или по выходу величин за заданные пределы.
Уставки величин давления в шинах, ускорения по осям, превышения скорости и прочие задаются разово в программе. Нет смысла динамически менять эти величины из меню.
Все данные, которые собираются системой, передаются на блок дисплея, который формирует изображения информационных экранов. Также от блока дисплея приходят команды для основного блока по управлению периферией.
При подаче питания на модуль GPS/ГЛОНАСС он начинает сбор информации со спутников и, собрав необходимые данные, начинает анализ. Когда приемник выдает флаг актуальности данных, то из пакета GPRMC/GNRMC берется текущее время, дата и координаты. Время записывается в RTC DS3231. На открытом небе при первом включении поиск спутников происходит около двух минут. Примененный GPS/ГЛОНАСС приемник имеет «процедуру предсказания» на две недели. При каждом включении ему не надо собирать большое количество данных, поэтому адекватные координаты выдаются в течение нескольких секунд. Это при условии, что за время от последнего включения приемник не переместился на большое расстояние от предыдущей точки, а также при наличии батареи резервного питания.
Система зарядки аккумулятора аппаратная и не зависит от состояния системы. Но сигналы о процессе зарядки заходят на контроллер для анализа. При подключении зарядного устройства, контроллер видит, что началась зарядка. Для расчета длительности зарядки, а также времени последнего заряда, чтобы вести статистику по аккумулятору, контроллер на короткое время включает ключ включения периферии, считывает время, обращается к EEPROM и отключает ключ. По завершению зарядки производятся подобные действия, но уже записывается время окончания заряда и считается длительность зарядки.

Температура блока питания, внутри люльки и за бортом контролируются датчиком DS18B20. Процедура опроса использует полудуплексный режим UART порта и контроллер DMA.
Для передачи данных в Интернет используется модем. В целях экономии энергии модем включается только тогда, когда нужна передача данных. Это происходит либо в «противоугонном» режиме, либо при ручном включении.
Изначально модем не планировался, но так схема уже и так содержала все необходимое для трекинга, то модем просто напрашивался для его применения. Но интереснее всего «противоугонная» система. Суть заключается в том, чтобы незаметно проинформировать о том, что производится «угон» и в режиме реального времени передавать координаты коляски. Если коляска стоит дома, то необходимости в «противоугонке» нет, но если она стоит на площадке за дверью и доступ могут иметь чужие люди, то такой режим актуален.
Итак, коляска стоит за дверью в режиме ожидания. Включить коляску с панели могут только те пользователи, которые знают последовательность нажатия кнопок. Злоумышленник не подозревает о наличии в коляске какой-либо системы. Просто берет и укатывает коляску. Контроллер видит наличие вибрации от акселерометра, также видит несанкционированное вращение колес и активирует бесшумный режим тревоги. Подает питание на все модули, инициализирует модем и отсылает тревожную SMS на телефон владельца. Он записан в ячейку №1 SIM-карты. Далее начинает отсылать на сайт трекинга информацию о LAC и CID базовых станция сотового оператора. По приходу адекватных данных о координатах от GPS/ГЛОНАСС приемника, они включаются в пакет передачи.
Дисплей в это время отключен и не подаются никакие звуковые сигналы.
Если авторизированный пользователь случайно забыл включить систему перед прогулкой, то отключить систему можно, правильно включив ее, с панели дисплея и вручную остановить трекинг.
Была мысль сделать подачу коротких сигналов при вибрации в режиме ожидания или сказать какую-либо фразу, но тогда злоумышленник будет знать, что коляска не простая и аппетит угнать возрастет, но он будет уже подготовлен. Поэтому остановился на бесшумном режиме.
Делать свой сайт для трекинга не было никакого желания. Времени и так не хватает ни на что. Поэтому решил посмотреть, что на сегодняшний момент есть готового. Был очень удивлен, когда обнаружил множество сайтов для трекинга, которые позволяют подключать огромное количество протоколов готовых GPS-трекеров, а также они могут привязать ваш уникальный протокол трекера в свою систему, ребята-админы помогут в этом. Мне не хотелось напрягать админов для того чтобы они подстраивались под мой протокол и, поэтому, было решено сделать протокол обмена, который уже поддерживают сайты. Все равно все пишется с нуля. Хотя на том сайте, что я выбрал, админы выслали их самодельный формат пакета, который принимает их сайт, но я решил остановиться на одном из стандартных. Мне понравился формат GPS-трекера MegaStek.
Формат пакета передачи данных с трекера на сайт свободно доступен. У меня получился такой пакет:
$MGV002,351233456789,_TrackerName,R,200220,092552.000,A,3340.2243,N,02532.3216,E,00,04,00,1.20,02.5,15.9,280.06,02.312,250,02,0000,0000,25,1111,0105,1201 1201, 302 302,0401,23.4,07.2,,10,81.4,Timer;!
В нем передается уникальный ID устройства, имя устройства, координаты, время, направление движения, LAC,CID и прочее.
Чтобы посмотреть положения вашего трекера, надо зарегистрироваться на сайте. Можно смотреть через сайт, а можно через приложение на телефоне. Мне очень понравилось приложение, оно не большое, удобное в навигации, есть выбор карт. Но главное что можно зарегистрировать несколько трекеров бесплатно, а если оплатить аккаунт, то предоставляется доступ к расширенным функциям. В общем, сервисы трекинга, на сегодняшний день, очень меня порадовали, по сравнению с прошлым периодом.

Работа с MP3-информатором происходит через UART посредством команд. Запись MP3-файлов во Flash информатора происходит через софт китайского разработчика подключением по USB. Выбираем файлы и отсылаем. Более чем достаточно. Инициализирую JQ6500, устанавливаю уровень громкости и далее, по приходу событий, отсылается команда на проигрывание файла с нужным номером. Перед проигрыванием файла снимается сигнал Mute с цифрового усилителя мощности D8.
Команды полностью расписаны в описании на микросхему, а также в сторонних библиотеках, поэтому не буду на них останавливаться.
Система контроля давления в шинах, как было описано выше, строится на штатных беспроводных датчиках, сигнал от которых принимается в системе посредством трансивера SI4432. Трансивер настраивается на частоту, модуляцию, девиацию датчиков. Далее сигнал планировалось анализировать программно, принимая сырой пакет из эфира. Но наличие в этом трансивере обработки пакета очень облегчило жизнь основного контроллера. Мне удалось настроить трансивер на пакетный прием сигналов. Сам трансивер делал все необходимые операции по приему преамбулы, синхрослова, самих данных, а по приему всего пакета генерировал прерывание. По прерыванию основной контроллер всего лишь считывал принятый пакет, анализировал контрольную сумму и декодировал приемные данные.
При низком заряде аккумулятора происходит отключение декоративной подсветки и передней фары для экономии энергии.
Если в режиме ожидания от акселерометра приходит сигнал о тряске коляски и если зафиксировано вращение колес, но устройство не включено в штатный режим работы, то включается режим тревоги. Активируются все модули, дисплей продолжает оставаться отключенным. Т.е. со стороны выглядит как будто все отключено. Как только появляется сигнал от GPS, то GSM-модем отсылает SMS о тревоге на телефон и начинает транслировать данные о текущих координатах на сайт трекинга. Также передаются данные о давлении в шинах.

Текущая скорость определяется по датчику Холла, установленному на колесе. Также скорость берется от модуля GPS/ГЛОНАСС.
При постановке коляски на тормоз внешняя подсветка переходит в режим попеременного стробирования левых и правых фонарей.
Устройство информирует всплывающем сообщением на дисплее и звуковым сигналом о превышении скорости движения более 7 км/ч, о неровностях на дороге, о низком давлении воздуха в колесах. Звуковыми мелодиями отмечается каждый час прогулки и каждый новый астрономический час.
Освещение внутри люльки коляски имеет возможность менять яркость длительным нажатием и удержанием кнопки включения освещения, но для моих нужд не использую.

Блок дисплея имеет три кнопки, которые отрабатывают короткие и длинные нажатия. Короткое нажатие на кнопку включения декоративной внешней подсветки включает переднюю фару, а длинное нажатие управляет различными цветовыми схемами подсветки рамы и колес.
На дисплей выводится вся необходимая информация о работе устройства. Из-за малого размера дисплея информация выводится на нескольких экранах. Переключение экранов осуществляется кнопкой на панели дисплея. Имеются два основных экрана на которых отображается текущее время большим шрифтом и экран прогулки, где отображается пройденное расстояние за прогулку, текущая скорость, время прогулки, температура внутри люльки. На остальных экранах отображается диагностическая информация по работе подсистем контроля давления в шинах, акселерометра, модема, аккумулятора и сводная информация. Все изображения формируются в буфере контроллера, откуда разом пересылается в дисплей посредством контроллера DMA.

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

Экран зарядки аккумулятора содержит информацию о текущем напряжении аккумулятора, режиме работы зарядного устройства, даты последнего заряда. Контроллер коляски может заряжаться от любого источника напряжения 5В, будь то зарядное устройство смартфона или, как на рисунке, от фонаря наружного освещения, оснащенного USB-розеткой.

Коляска имеет съемные люльки: стандартную, в которой ребенок только лежит, и прогулочную где может, также, сидеть. Обе люльки оснащены светодиодной подсветкой внутреннего пространства и датчики температуры за бортом и внутри. Было предусмотрено разъемное соединение люльки и основного блока, и выбор пал на стандартный USB-разъем. При снятии или замене люльки, сначала следует отключить разъем, а потом уже извлекать люльку из рамы коляски. После установки люльки соединить разъем. По уникальным серийным номерам термометров контроллер знает какая люлька в данный момент используется.

Корпус
Корпуса смоделированы в соответствии с особенностями кривизны поверхностей рамы коляски и напечатаны на 3D-принтере.

Развитие
Можно применять на велосипедах, детских машинках с бортовым питанием 6..20 Вольт.
Можно использовать другой тип дисплея, заменив только блок дисплея.
Заключение
Реализация данного проекта из-за катастрофической нехватки времени заняла около 8 месяцев.
При разработке системы было много исследовано и опробовано по различным модулям и системам: работа акселерометра, протокол обмена GPS-трекера, передача данных через GPRS-модем, работа с трансивером, работа с различной периферией ARM. Исследование только системы TPMS заняло месяц, но было интересно.
Демонстрация работы системы
https://youtu.be/P1ZXArB1F7w
Благодарности
Выражаю огромную благодарность друзьям и близким, которые помогли мне в осуществлении этого проекта.
Спасибо Евгению, Алексею, Наталье, Ольге.
Ссылки
1. Исследование протокола системы контроля давления воздуха в шинах автомобиля habr.com/ru/post/516460
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_programmirovanie_mikrokontrollerov (Программирование микроконтроллеров), #_razrabotka_dlja_interneta_veschej (Разработка для интернета вещей), #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_detskaja_koljaska (Детская коляска), #_tjuning (тюнинг), #_maksimka (Максимка), #_programmirovanie_mikrokontrollerov (
Программирование микроконтроллеров
)
, #_razrabotka_dlja_interneta_veschej (
Разработка для интернета вещей
)
, #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
Профиль  ЛС 
Показать сообщения:     

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

Текущее время: 22-Ноя 18:38
Часовой пояс: UTC + 5