Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Прототип автоматизированной системы передачи показаний счетчиков воды на основе LoRa-модулей

    Прототип автоматизированной системы передачи показаний счетчиков воды на основе LoRa-модулей



    Введение в LoRa

    Я живу в многоквартирном доме. У нас установлены автоматизированные счетчики электричества, которые передают показания сами. К большому сожалению передача показаний счетчиков воды не была автоматизирована, хотя все возможности для этого есть: установлены счетчики с герконами, которые, в случае подключения к питанию, обычно выдают импульс при расходе каждых 10 кубов. Обычно этого бывает вполне достаточно.

    Мне показалось интересным реализовать систему передачи и подсчета таких импульсов самостоятельно. В интернете есть примеры реализации подобных систем на основе Wi-fi, Bluetooth и Arduino [1][2][3][4][5], но в 2021 году это уже очень скучно и, к тому же, потребляет много энергии. Я решил построить подобную систему на основе модных радиомодулей LoRa (нодах), которые потребляют очень мало энергии и могут быть объединены с помощью сети LoRaWAN и подключены к шлюзам (Gateways), которые, в свою очередь, соединяются через интернет с сервером.


    Как работает сеть LoraWAN[6]


    Такая система придумана для экономии энергии на оконечных нодах. Например, в моем туалете нет электричества, или мне просто не хочется штробить стены и выводить проводку для розеток. Вместо этого я беру один аккумулятор 18650, и подключаю к нему LoRa-модуль, который будет передавать единичку на такой же LoRa-модуль в шлюзе, подключенном в обычную розетку в жилой комнате, когда срабатывает геркон. Шлюз подсчитывает, сколько воды утекло, и передает эти данные по домашнему Wi-Fi или 4G управляющей компании. В качестве LoRa-модуля можно использовать, например, RFM95 или аналогичный ему Semtech SX1276. Цена этих модулей составляет 300-400 рублей, но я где-то покупал и за 270. В качестве шлюза можно использовать, например, модули Heltec WiFi LoRa 32 или Lilygo TTGO lora32. Эти модули стоят по 1000 рублей, но нужно учитывать, что такой модуль требуется всего один, и в него будут поступать все данные со многих модулей, если делать умный дом на основе LoRa. В Европе и России военные согласовали для LoRa частоты 830-870 МГц. Исходя их этого приобретайте модули на 868 МГц (в США 915 МГц, в Азии 433 МГц).


    Варианты LoRa-модулей RFM95-98, работающих на различных частотах


    Варианты LoRa-модулей с Wi-fi на основе ESP32, которые можно использовать в качестве шлюза для подключения к сети LoRaWAN


    Казалось бы, все очень красиво и предельно просто. Но при ближайшем рассмотрении возникают особенности. Сам по себе LoRa-модуль потребляет очень мало, но standalone он работать не может. Для управления LoRa-модулем нужен контроллер. Китайцы придумали специальные модули на основе Atmega328p, в которые можно впаять LoRa-модуль, и залить в контроллер прошивку, даже написанную на фреймворке Arduino.

    Прототип автоматизированной системы передачи показаний счетчиков воды на основе LoRa-модулей


    Но мы не ищем легких путей! Специализированные модули на Atmega328p стоят около 300 рублей, но как бы жаба душит, потому что мы уже купили сами LoRa-модули и шлюз, а на продукт китайского сумрачного гения как-то не рассчитывали. Для управления LoRa-модулем не нужен мощный контроллер, для этих целей вполне может сгодиться дешевый контроллер серии Attiny. Энтузиасты уже реализовали подобные модули для измерения температуры самостоятельно на основе распространенного и дешевого Attiny85 [7][8][9][10].

    Примеры реализации LoRa-модулей под управлением Attiny85[9]


    В ходе рассмотрения подобных проектов я выяснил, что реализации на Attiny85 остро не хватает свободных ног, что ведет к необходимости правки фьюзов для нормализации RESET-ноги. Это меня категорически не устроило при том, что существует вполне нормальная и не сильно более дорогая альтернатива в виде Attiny84 с 14-ю ногами, на последнем микроконтроллере и было решено остановиться. При использовании Attiny84 совместно с фреймворком Arduino нужно иметь ввиду, что номера выводов Attiny сильно отличаются в этом фреймворке от привычных при программировании на чистом AVR.



    Наиболее близкий к моим надобностям проект был скоро найден [11]:



    Разработчик реализовал LoRa-ноду с контроллером Attiny84 с возможностью подключения нескольких датчиков к свободным ногам микроконтроллера.



    В ходе рассмотрения данного проекта и подобных ему выяснилось, что члены сообщества thethingsnetwork (4000 LoRa-узлов) написали библиотеки для LoRa-модулей в связке с Attiny, адаптировав их к условиям сети LoRaWan. В этих библиотеках кроме, собственно, передачи данных, присутствует очень много кода, связанного с шифрованием. Кроме того было выяснено, что их реализация несколько отличается по методу расчета несущих частот от реализации библиотеки Arduino-LoRa [12], которую я планировал использовать для модуля Lilygo TTGO lora32 v1, выступающего в роли шлюза. В результате было решено изменить частоту при использовании Arduino-LoRa с 866 до 868.1 МГц, а код библиотеки RFM95.cpp из проекта [11] переписать, выпилив шифрование и приведя значения, записывающиеся в регистры LoRa-модуля, к значениям из библиотеки Arduino-LoRa, все равно мои импульсы из туалета пока никому кроме меня не нужны, а также заменить метод расчета несущих частот. Работа с регистрами оказалась самой сложной и долгой частью реализации прототипа. Впоследствии, конечно, можно адаптировать разрабатываемую систему для сети LoRaWAN, но пока моей задачей было получить работоспособный прототип, способный просто адекватно считывать и передавать данные.

    Разработка программного обеспечения велась в PlatformIO. Это удобная IDE, реализованная в виде дополнения к VSCode. На данный момент разработка в ней ничем принципиально не отличается от Arduino IDE кроме обязательного присутствия в коде заголовочного файла Arduino.h. Плюсом PlatformIO является то, что в ней можно работать не только с фреймворком Arduino, а еще с добрым десятком различных фреймворков для встраиваемых систем.

    Описание системы

    Сначала был реализован неудачный прототип, который должен был совмещать все функции на одной плате. С ЛУТ для прототипирования мне принципиально связываться не хотелось, и в наличии было очень много SOP/DIP переходников, поэтому я решил их использовать, спаяв на макетной плате гнезда для них. Это позволило использовать в прототипе именно те электронные SOP-компоненты, которые в будущем будут в устройстве. В случае выхода из строя таких компонентов их можно легко заменить. Поскольку шаг отверстий под вилки в LoRa-модулях составляет 2.0 мм, мне требовалась макетная плата, сочетающая в себе шаги отверстий 2.0 мм и 2.54 мм. Такие платы существуют, и стоят от 50 до 100 рублей в зависимости от жадности продавца.



    На плате должны были находиться модуль питания от литиевого аккумулятора 3.7 В, Attiny84, LoRa-модуль SX1276 и IPEX-коннектор для выносной антенны, чтобы не быть ограниченным пластиковым корпусом. Попытка уместить все это на одной плате закончилась неудачно - бесконечная борьба с возникающими непонятно откуда КЗ вынудили разделить прототип на два модуля.



    Первый модуль питания в итоге был собран на основе макетной платы DIKAVS.



    Я очень рекомендую эти макетные платы. Их качество стоит их высокой цены, а примененный вариант платы очень удобен для прототипирования небольших устройств или модулей, так как имеет две скрытые внутри шины VCC и GND с несколькими выводами. Это позволяет реализовать большинство простых схемок именно в том виде, как они нарисованы.



    У модуля питания две функции: стабилизация напряжения питания на уровне 2.5 В и разрыв цепи батареи при напряжении менее 3.15 В, чтобы не убить батарею. Для последнего была использована известная схема на основе формирователя импульса MCP100-315T, который стоит всего около 40 рублей.



    Понижение напряжения до 2.5 В осуществлялось с помощью малошумящего стабилизатора напряжения LP2985-28DBVT с низким значением Dropout Voltage производства TI. Такое напряжение питания было выбрано для обеспечения максимального времени использования литиевой батареи с учетом применения формирования импульса и минимального падения напряжения на стабилизаторе. Перед пайкой все соединения были прорисованы во Fritzing.



    Все остальные компоненты прототипа были размещены на упомянутой плате "2.54 мм/2.0 мм", к ним был также добавлен ICSP-коннектор для подключения программатора USBAsp через переходник "10 на 6".



    Питание осуществлялось через известный модуль AMS1117-5.0/3.3, так как это позволяло быстро менять напряжение питания.

    Работа с Attiny, вообще говоря, представляет определенную сложность, так как данная серия микроконтроллеров не обладает полноценным SPI и не имеет на борту hardware serial. Это влечет за собой невозможность простой отладки кода через последовательный порт. Существует большое количество библиотек-реализаций software serial, но ни одна из них у меня так и не заработала на Attiny84. Таким образом, было решено проводить отладку влоб - с помощью OLED-экрана ssd1306. С подключением этого распространенного экрана к Attiny84 также существуют определенные сложности, но опытным путем были найдены библиотеки, позволяющие все-таки выводить на этот экран данные с Attiny84 [13][14].
    По факту получилось выводить информацию только единожды, затем контроллер зависал, но и этого оказалось достаточно для того, чтобы убедиться: АЦП контроллера правильно измеряет напряжение питания с точностью 50 мВ, и эти данные можно далее передавать через LoRa-модуль.



    Напряжение питания измерялось и передавалось, так как была необходимость получать и передавать именно цифры. Передающий и приемный модули записывают и получают данные из определенных регистров. Эти данные хранятся и передаются в виде строк. На стороне Attiny84 строка считывается в виде массива char и конвертируется в ссылку unsigned char*. А на стороне Lora32 данные принимаются из регистра в виде строки String. Все это не очень удобно для передачи цифр. Цифры приходится передавать, запаковывая их в строку побайтово и интерпретировать полученное, деля строку также побайтово. Если этого не делать, то вы просто получите так называемые "крякозябры", которые являются ничем иным, как различными малоиспользуемыми символами UTF-8.


    Пример успешной передачи напряжения питания LoRa-модуля и вывода на OLED-экран с помощью библиотеки Arduino-Lora


    Проверка модуля с герконом

    Итоговой целью было наладить взаимодействие разработанной системы с герконом счетчика воды. На уровне прототипа было решено использовать готовый модуль, имитирующий геркон счетчика и имеющий в схеме компаратор LM393, который позволяет интерпретировать импульс от геркона как высокий логический уровень (boolean true или int 1) при приложении магнита. Модуль геркона был соединен с Attiny84 по приведенной схеме.




    Магнит рядом с модулем геркона формирует логическую единицу на стороне Attiny84. На стороне TTGO Lora32 на OLED-экран выводится переданная единица


    Из-за огромного объема материала создание готового устройства на основе разработанного прототипа вышеприведенных схем будет рассмотрено в следующей статье.

    Код ноды
    Код шлюза
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
    Подборки: lora lorawan attiny84 Счетчик

    Гиропульт на Arduino

    Дубликатор RFID меток на 13МГц и IButoon

    10
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    10
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    9.5
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 9.83 из 10 (голосов: 2 / История оценок)

    Добавить комментарий

    53 комментария
    Korolev #55874
    Eig,
    повторяетесь
    Ну, если уж с одного раза не доходит, то для особо сообразительных не грех и повторить.
    Это понятно?


    Eig #55872 Автор
    Korolev,
    повторяетесь. Но ничего полезного так и не написали. А все полезное, сделанное десятки лет назад, осталось где-то в архивах минобороны видимо, под грифом секретно.
    Korolev #55871
    Eig,
    Чтобы не получить от меня пинка под зад
    Свой прикрой, смердит!
    Eig #55869 Автор
    Korolev,
    я ничего не пытаюсь прикрывать, мне это совершенно не нужно. Чтобы не получить от меня пинка под зад, просто не нужно надо мной ржать. Это понятно?
    Korolev #55868
    Eig,
    ну так вы же сами и провоцируете. Вот и получаете закономерно.
    Не надо прикрывать элементарную невоспитанность и неприкрытое хамство несуществующими "провокациями". А потом недоумевать по поводу:
    Вот который раз я уже сталкиваюсь с совершенно немотивированной агрессией 
    Ещё раз настоятельно рекомендую примерить на себя свои же сентенции. 
    Eig #55866 Автор
    Pronin,
    а где вы здесь видели науку или что-то околонаучное? Это просто самоделка для дома, которая использует доступные электронные компоненты и материалы. Не я эти счетчики ставил, а строители.
    Eig #55864 Автор
    Korolev,
    ну так вы же сами и провоцируете. Вот и получаете закономерно.
    Korolev #55863
    Eig,
    Вот который раз я уже сталкиваюсь с совершенно немотивированной агрессией.
    А Вы за своим-то "базаром" последите: Eig:
    А еще из-за людей, подобных вам, привыкших все делать по-минимуму, в самой простой форме, у нас в России загибаются целые отрасли ...  Вы можете предложить только вещи в себе, и это ваша огромная ошибка и упущение ... что вы вместе с нашими доблестными военными брезгуете ... у кого-то даже лет через 40 очко жим-жим ...  болванам великовозрастным?    
    Или вам-то всё дозволено? Примерьте-ка на себя свои же сентенции:
    Вам самим-то не стыдно? ... Вы ведь просто хамите, ничего позитивного не несете с собой. Зачем вы здесь? Чтобы унижать людей?
    Элементарные издерки воспитания.  

    Pronin #55862
    Стандартно было на RT-11 гибкий 5,25"  - 360кб. От IBM...
    В 2006г. пришлось делать датчик расхода технологической воды. Для установки (электропечь). Был модернизирован механический счетчик воды. Добавлением магнитика и датчика Холла (это недорогой вариант).Так там на 1л воды было не один (и не два срабатывания), а МНОГО. Так что околонаучный стриптиз "с герконом" не продвигнет на новые рубежи   mda   
    Eig #55859 Автор
    Korolev,
    дискеты бывают разные.

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

    Вот который раз я уже сталкиваюсь с совершенно немотивированной агрессией. Сделал что-то человек, рассказал об этом. Вместо конструктивной критики "набигают" и начинают просто ржать. Вам самим-то не стыдно, болванам великовозрастным? Что за последние 10 лет сами сделали кроме брюзжания? Вы ведь просто хамите, ничего позитивного не несете с собой. Зачем вы здесь? Чтобы унижать людей?
    Korolev #55857
    Eig,
    там речь шла о другой технологии, а не о всем известных перезаписываемых флоппиках
    Сложно дискутировать с человеком, путающимся в терминологии: Eig: Сегодня, 00:43 
    В 80-х наши соотечественники изобрели дискету, имеющую 10Мб памяти, если мне память не изменяет. Один нюанс - память была неперезаписываемая
    Ну лично вы мне ничего не преподносили, тем более Советское/Российское государство. Все, что я сейчас имею, к великому сожалению преподнес мне дядя Сэм
    Хлебушек-то чей кушаешь, дядюшки Сема?
    а у кого-то даже лет через 40 очко жим-жим из-за подписок о неразглашении 
    Своё прикрой, смердит!
     

    Eig #55856 Автор
    Korolev,
    там речь шла о другой технологии, а не о всем известных перезаписываемых флоппиках. Даст счастливый случай - найду.

    Ну лично вы мне ничего не преподносили, тем более Советское/Российское государство. Все, что я сейчас имею, к великому сожалению преподнес мне дядя Сэм. Кстати, так произошло именно потому, что вы вместе с нашими доблестными военными брезгуете зажигать лампочки в сортирах через интернет, ибо абсолютно все секретно, а у кого-то даже лет через 40 очко жим-жим из-за подписок о неразглашении. Вот и думайте, что вы сделали не так, и почему пролюбили все полимеры.
    В красногорском МВД, кстати, даже вручную эти лампочки при входе не зажигают. Экономят видимо. Пусть люди на льду с лестницы падают - бабы еще нарожают. Вот это ваш типичный скрепный советский подход - окопаться с вещами в себе и молчать в тряпочку, лишь бы никто не узнал - секретно ведь.
    Korolev #55855
    Eig,
    В 80-х наши соотечественники изобрели дискету, имеющую 10Мб памяти, если мне память не изменяет
    Изменяет! Соотечественники-то может и Ваши, но:
    1967 — Алан Шугарт возглавлял команду, которая разрабатывала дисководы в лаборатории фирмы IBM, где были созданы накопители на гибких дисках. Дэвид Нобль (англ. David Noble), один из старших инженеров, работающих под его руководством, предложил гибкий диск (прообраз дискеты диаметром 8 дюймов) и защитный кожух с тканевой прокладкой. 
    Диске́та, ги́бкий магни́тный диск (ГМД)[1], (англ. floppy disk, англ. diskette),  — сменный носитель информации, используемый для многократной записи и хранения данных
    Вы можете предложить только вещи в себе, и это ваша огромная ошибка и упущение. 
    Мы, во времена моей студенческой юности, изобретали и изготавливали микроспутники Земли, и один из них был-таки доставлен на орбиту и работал. Я лично, будучи студентом, принимал участие в разработке и изготовлении автоматизированной системы распознавания образов (надеюсь подписка о неразглашении уже утратила силу). И это во времена, когда у нас даже калькуляторов не было! И как вы используете уникальные наработки, поднесённые вам на блюдечке? Свет в сортире включаете? smile  

    Eig #55853 Автор
    Korolev,
    необходимость и достаточность - понятия очень лабильные и широко изменяемые. В 80-х наши соотечественники изобрели дискету, имеющую 10Мб памяти, если мне память не изменяет. Один нюанс - память была неперезаписываемая. Но авторы прямо так и написали: этой памяти столько много, что можно даже не беспокоиться о том, что у вас отмирают сектора. Вам этой памяти хватит на долгие годы. Что мы видим сейчас?
    Банковская система США построена на Cobol. Когда-то это было круто, сейчас возможностей языка не хватает - фундаментальные ограничения. Тысячи человекочасов и миллионы долларов вбухивают, чтобы переписать систему на современных языках.
    Нет, малым можно ограничиваться в тестах, но никак не в реальной жизни. Всегда должен оставаться открытым огромный путь для расширения системы и ее модернизации. И поэтому любая вещь сейчас должна являться частью чего-то большего, а не быть вещью в себе. Вы можете предложить только вещи в себе, и это ваша огромная ошибка и упущение.
    Korolev #55852
    Eig,
    можно бесконечно над этим иронизировать, но ведь были люди, которые и унитаз считали глупостью
    Согласен:
     «Даже в Библии говорится, что у каждого человека должна быть лопатка, и “когда будешь садиться, выкопай яму и опять зарой испражнение свое”» ... История туалета начала меняться еще в середине XVI века. Тогда Джон Харрингтон специально для королевы Елизаветы I изобрел первый унитаз со сливным бачком. 
    А еще из-за людей, подобных вам, привыкших все делать по-минимуму, в самой простой форме, у нас в России загибаются целые отрасли.
    Не согласен, это из-за людей, подобных вам, не понимающих границ необходимой и достаточной целесообразности у нас такой бардак! smile
    Надеюсь вы хотя бы понимаете, что управление лампочками там просто до кучи
    Ну вот Вы и сами очень точно определили необходимость управления освещением туалета через сервак xaxa !
    Eig #55850 Автор
    Korolev,
    можно бесконечно над этим иронизировать, но ведь были люди, которые и унитаз считали глупостью. Зачем это нужно, если можно сесть в позе орла за овин? Это же гораздо проще - канализацию рыть не нужно, воду тратить. А зачем?
    Надеюсь вы хотя бы понимаете, что управление лампочками там просто до кучи? У меня дома как минимум есть робот-пылесос и очиститель воздуха, которые потенциально могут через это работать.
    А еще из-за людей, подобных вам, привыкших все делать по-минимуму, в самой простой форме, у нас в России загибаются целые отрасли.
    Вы думаете я не знаю, как автоматизировать управление лампочкой с помощью простой микросхемы? Я знаю, но мне это не нужно, потому что это невозможно сделать частью какой-то экосистемы. Самая простая экосистема - включать все руками по кнопкам, но думаю, что мы все это давно должны перерасти.

    Korolev #55845
    Eig,
    Люди целый home assistant на raspberry pi или удаленном серваке поднимают, чтобы эти лампочки включать
    Энтузиазм, достойный лучшего применения! А искусственный интеллект ещё никто не привлекал задницы подтирать? Дарю ещё одну идею! xaxa 
    Eig #55842 Автор
    Korolev,
    а как вы думаете, я бы затевал эту идею, если бы у УК не было веб-морды, через которую она принимает показания вручную?

    Да, спасибо, приму к сведению. Люди целый home assistant на raspberry pi или удаленном серваке поднимают, чтобы эти лампочки включать, а вы смеетесь.
    Korolev #55841
    Eig,
    никто не запрещает передавать эти данные через веб-интерфейс
    Так же как и никто не обязывает эти данные принимать! smile
    Свет в туалете сейчас как только ни включают:
    А через Кьюриосити ещё никто не пытался? Дарю идею!  xaxa 
    Eig #55840 Автор
    Korolev,
    никто не запрещает передавать эти данные через веб-интерфейс. Боты в 2021 году умеют заполнять веб-формы.

    герконовый датчик в счетчике находится, ничего там устанавливать не нужно. Нужно к нему просто подключиться. Свет в туалете сейчас как только ни включают: кто через PIR-датчики, кто через микроволновые с wi-fi, bluetooth, с мобильника через веб-морды и приложухи, так что я ничему уже не удивляюсь.
    Korolev #55838
    Шлюз подсчитывает, сколько воды утекло, и передает эти данные по домашнему Wi-Fi или 4G управляющей компании.
    На деревню дедушке? Управляющая компания, для начала, должна организовать "сбор" таких "показаний" с никем не сертифицированных самоделок. smile
    Например, в моем туалете нет электричества, или мне просто не хочется штробить стены и выводить проводку для розеток. Вместо этого я беру один аккумулятор 18650, и подключаю к нему LoRa-модуль, который будет передавать единичку на такой же LoRa-модуль в шлюзе, подключенном в обычную розетку в жилой комнате, когда срабатывает геркон
    А проще включать свет в туалете - никак? Только через шлюз, тем более, что геркон-то всё равно устанавливать? xaxa  
    Eig #55822 Автор
    ovsoft,
    может быть. А может и нет. В одном из источников написано 10 кубов. Когда соберу устройство будет шанс проверить.
    У меня обычно 3 куба горячей и 7 кубов холодной в месяц уходит, поэтому отсечка 10 кубов раз в 2-3 месяца только будет передаваться, но и это уже неплохо.
    ovsoft #55821
    установлены счетчики с герконами, которые, в случае подключения к питанию, обычно выдают импульс при расходе каждых 10 кубов. Обычно этого бывает вполне достаточно.
    Один импульс на 10 кубов - это очень мало. Наверное, на 10 литров всё-таки.

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии