RSS блога
Подписка
Прототип системы удаленного мониторинга температуры в погребе на LoRa
Есть такое утверждение: «что не делай на ардуино (а равно как и esp8266/esp32) получается метеостанция». Но метеостанций много не бывает и помимо жилых помещений есть ещё множество мест, в которых хотелось следить за температурой и влажностью. Мои родители живут за городом и для хранения продуктов, как и многие, используют погреб, который зимой необходимо хорошо утеплять и следить, чтобы овощи не померзли. Я подумал, что было бы удобно следить за температурой, а заодно и влажностью в погребе не выходя из дома. Так появился проект мониторинга температуры и влажности в погребе.
Проект состоит из двух частей — приемника и передатчика. Передатчик содержит датчик влажности и температуры, работает автономно, питаясь от аккумулятора, и с определенным интервалом делает измерения и отправляет на приемник. В промежутках между измерениями передатчик спит.
Приемник принимает данные от передатчика и отображает их на дисплее, при этом данные записываются в лог и есть возможность просмотреть историю изменения температуры и влажности за прошедший период.
У родителей нет единой точки доступа в интернет, все пользуются мобильным со своих устройств, поэтому в процессе продумывания системы мониторинга появился проект-концепт роутера для интернета вещей. Но проект пока находится в стадии концепта.
В качестве беспроводного протокола передачи данных между передатчиком и приемником я решил использовать LoRa, так как когда впервые о нем услышал, был прямо поражен показавшимися мне фантастическими характеристиками дальности связи и энергопотребления. «LoRa» это запатентованный компанией Semtech метод модуляции. Технологию «LoRa» поддерживают, выпускаемые Sementch микросхемы SX1278/SX1276 и др., на которых и основаны представленные на рынке приемеопередатчики. LoRa трансиверы обещают длительную работу от батарейки и связь на расстоянии в несколько километров.
Изначально для проекта были куплены модули Ra-02 (SX1278) от Ai-Thinker на 433МГц, спроектирована и изготовлена плата адаптера для Wemos D1 mini.
Позже я нашел более подходящий вариант для передатчика – TTGO T-Base. Он по распиновке полностью совместим с Wemos D1 mini, но при этом уже содержит схему зарядки и контроля напряжения аккумулятора.
Так проект понемногу обрастал железом и развивался, но в процессе неудачного эксперимента TTGO T-Base канул в небытие, к тому же появились новые железки, которые перетянули внимание на себя и проект был приостановлен. Одной из таких железок завладевших моим вниманием стал конструктор смарт-часов на ESP32 — TTGO T-Watch.
Я активно слежу за развитием этой платформы и мне вновь посчастливилось стать участником тестирования и получить плату расширения с LoRa-модулем на борту.
LoRa-модуль основан на SX1276, который работает на частоте 868 МГц, в моем же распоряжении были модули на SX1278 с частотой 433 МГц, поэтому для теста был дополнительно заказан трансивер на соответствующую частоту.
Характеристики трасивера SX1276
Технология FSK/GFKS, технология LoRa
Полудуплексная связь
Чувствительность приемника -139dbm.
Мощность передатчика 20dBm
Ток в режиме приема 10-12 мА
Для теста был возрожден проект мониторинга температуры в погребе с новыми комплектующими. Теперь он выглядит так:
Передатчик: TTGO T-Base + SX1276 + DS18b20
Приемник: TTGO T-Watch + SX1276
Изначально для проекта на LoRa-модулях работающих на частоте 433Мгц были куплены соответствующие антенны, предполагалось, что антенна передатчика будет вынесена из погреба на поверхность. В данном же случае для приемника будет использоваться идущая в комплекте спиральная антенна, а для передатчика антенна от GSM-модуля.
LoRa-модуль на SX1276 совпадает по размерам, количеству пинов и шагом между пинами с модулем Ra-02 на SX1278, но назначение пинов отличается. Я принялся проектировать новую плату LoRa-шидла для Wemos d1 mini, а для теста припаял провода непосредственно к модулю трансивера. Также для теста использовал не датчик влажности и температуры, а просто термодатчик DS18b20 в водонепроницаемом исполнении.
Для доступа пинам GPIO платформы T-Watch я сменил базовую плату расширения, которая по умолчанию установлена в T-Watch, на дополнительную, теперь же вместо нее необходимо установить плату расширения с LoRa модулем. Платы расширения и основная плата соединяются гибким шлейфом, такой способ соединения не предполагает частой смены плат расширения в отличие от похожей по концепции платформы M5Stack, но это закономерный результат стремления к максимальной компактности платформы.
Пользуясь случаем покажу как выглядит основная плата T-Watch с ESP32.
Переходим к проверке работоспособности системы.
В репозитории есть пример для работы с LoRa модулем. Библиотека lvgl, на которой основан пример, для меня по-прежнему темный лес, поэтому я написал свой скетч без её использования. Я адаптировал примеры LoRa_sender и LoRa_reciver из библиотеки LoRa.h, использованные мною ранее для модулей на 433МГц. Пока есть только одно устройство можно проверить его работоспособность в качестве передатчика с помощью SDR-приемника.
Передатчик, собранный на проводах, выглядит весьма непривлекательно и работает нестабильно, доставка же плат затянулась в связи с новогодними праздниками. После получения печатных плат шилд наконец-то был собран.
Важной характеристикой передатчика является его энергопотребление. На рисунке показан график потребляемого тока передатчика, отправка значений происходит каждую минуту, после чего esp8266 переходит в режим глубокого сна. Замер производился с помощью USB-тестера c Bluetooth, который не отличается высокой разрешающей способностью и частотой дискретизации, поэтому на графике отображены не все пики, соответствующие циклу бодрствования микроконтроллера. В цикле сна же потребление вовсе равно 0, что было бы конечно просто замечательно, если было бы правдой.
Согласно проведенным замерам, за пару часов работы передатчик израсходовал порядка 70мАч. При таком расходе электроэнергии аккумулятора емкостью 1500 мАч хватит всего на пару суток, что очень мало. Тем не менее передатчик работает уже несколько дней непрерывно.
Для уменьшения энергопотребления в реальных условиях можно уменьшить частоту отправки измеренных параметров, убрать с платы T-Base светодиод и, возможно, переработать плату LoRa-шилда.
Приемник на базе T-Watch отображает последнее значение температуры, максимальное, минимальное значение и график из 240 последних значений. Очевидно, что на данном этапе приемник работает весьма неэффективно и есть множество программных моментов, которые требуют оптимизации.
Тестирование в реальных условиях.
Передатчик собран в корпус от губки для обуви за неимением на данный момент другого.
Так как я, к сожалению бываю у родителей не очень часто, до настоящего времени удалось протестировать систему только два раза. Первый тест оказался не совсем удачным: я поленился лезть в погреб, передатчик оставил на крышке погреба, а сам датчик температуры опустил внутрь. Но, видимо, из-за мороза аккумулятор довольно быстро разрядился и проследить какую-бы то ни было динамику температуры в погребе не удалось.
Второй тест оказался более удачным. Передатчик, помещенный внутрь погреба, проработал почти сутки, пока я не забрал его. Сигнал уверенно принимался во всем доме, на расстоянии примерно 50м, что для конечно LoRa очень мало. Максимальную же дальность не проверял, так как не было необходимости. При этом следует учесть, что передатчик находился на глубине пары метров под землей, а между ним и приемником было несколько преград.
На не совсем удачной фотографии показан график температуры, при установке его в погребе. Можно увидеть, что температура не опустилась ниже 1 С, при этом на улице было около -14 С.
Код приемника и передатчика.
TODO
Поменять датчик DS18B20 на датчик влажности.
Добавить возможность отключения дисплея приемника.
Добавить контроль заряда батареи передатчика.
Подобрать корпус для передатчика, желательно герметичный.
Оптимизировать код приемника.
Вывод
Система работоспособна и может быть использована в реальных условиях, при этом необходимо уменьшить энергопотребление передатчика, а также оптимизировать код приемника.
P.S.
У меня остались платы LoRa-шилда для Wemos D1 mini спроектированные, как под модули Ra-02 (SX1278), так и под SX1276. Буду рад ими поделиться.
Проект состоит из двух частей — приемника и передатчика. Передатчик содержит датчик влажности и температуры, работает автономно, питаясь от аккумулятора, и с определенным интервалом делает измерения и отправляет на приемник. В промежутках между измерениями передатчик спит.
Приемник принимает данные от передатчика и отображает их на дисплее, при этом данные записываются в лог и есть возможность просмотреть историю изменения температуры и влажности за прошедший период.
У родителей нет единой точки доступа в интернет, все пользуются мобильным со своих устройств, поэтому в процессе продумывания системы мониторинга появился проект-концепт роутера для интернета вещей. Но проект пока находится в стадии концепта.
В качестве беспроводного протокола передачи данных между передатчиком и приемником я решил использовать LoRa, так как когда впервые о нем услышал, был прямо поражен показавшимися мне фантастическими характеристиками дальности связи и энергопотребления. «LoRa» это запатентованный компанией Semtech метод модуляции. Технологию «LoRa» поддерживают, выпускаемые Sementch микросхемы SX1278/SX1276 и др., на которых и основаны представленные на рынке приемеопередатчики. LoRa трансиверы обещают длительную работу от батарейки и связь на расстоянии в несколько километров.
Изначально для проекта были куплены модули Ra-02 (SX1278) от Ai-Thinker на 433МГц, спроектирована и изготовлена плата адаптера для Wemos D1 mini.
Позже я нашел более подходящий вариант для передатчика – TTGO T-Base. Он по распиновке полностью совместим с Wemos D1 mini, но при этом уже содержит схему зарядки и контроля напряжения аккумулятора.
Так проект понемногу обрастал железом и развивался, но в процессе неудачного эксперимента TTGO T-Base канул в небытие, к тому же появились новые железки, которые перетянули внимание на себя и проект был приостановлен. Одной из таких железок завладевших моим вниманием стал конструктор смарт-часов на ESP32 — TTGO T-Watch.
Я активно слежу за развитием этой платформы и мне вновь посчастливилось стать участником тестирования и получить плату расширения с LoRa-модулем на борту.
LoRa-модуль основан на SX1276, который работает на частоте 868 МГц, в моем же распоряжении были модули на SX1278 с частотой 433 МГц, поэтому для теста был дополнительно заказан трансивер на соответствующую частоту.
Характеристики трасивера SX1276
Технология FSK/GFKS, технология LoRa
Полудуплексная связь
Чувствительность приемника -139dbm.
Мощность передатчика 20dBm
Ток в режиме приема 10-12 мА
Для теста был возрожден проект мониторинга температуры в погребе с новыми комплектующими. Теперь он выглядит так:
Передатчик: TTGO T-Base + SX1276 + DS18b20
Приемник: TTGO T-Watch + SX1276
Изначально для проекта на LoRa-модулях работающих на частоте 433Мгц были куплены соответствующие антенны, предполагалось, что антенна передатчика будет вынесена из погреба на поверхность. В данном же случае для приемника будет использоваться идущая в комплекте спиральная антенна, а для передатчика антенна от GSM-модуля.
LoRa-модуль на SX1276 совпадает по размерам, количеству пинов и шагом между пинами с модулем Ra-02 на SX1278, но назначение пинов отличается. Я принялся проектировать новую плату LoRa-шидла для Wemos d1 mini, а для теста припаял провода непосредственно к модулю трансивера. Также для теста использовал не датчик влажности и температуры, а просто термодатчик DS18b20 в водонепроницаемом исполнении.
Для доступа пинам GPIO платформы T-Watch я сменил базовую плату расширения, которая по умолчанию установлена в T-Watch, на дополнительную, теперь же вместо нее необходимо установить плату расширения с LoRa модулем. Платы расширения и основная плата соединяются гибким шлейфом, такой способ соединения не предполагает частой смены плат расширения в отличие от похожей по концепции платформы M5Stack, но это закономерный результат стремления к максимальной компактности платформы.
Пользуясь случаем покажу как выглядит основная плата T-Watch с ESP32.
Переходим к проверке работоспособности системы.
В репозитории есть пример для работы с LoRa модулем. Библиотека lvgl, на которой основан пример, для меня по-прежнему темный лес, поэтому я написал свой скетч без её использования. Я адаптировал примеры LoRa_sender и LoRa_reciver из библиотеки LoRa.h, использованные мною ранее для модулей на 433МГц. Пока есть только одно устройство можно проверить его работоспособность в качестве передатчика с помощью SDR-приемника.
Передатчик, собранный на проводах, выглядит весьма непривлекательно и работает нестабильно, доставка же плат затянулась в связи с новогодними праздниками. После получения печатных плат шилд наконец-то был собран.
Важной характеристикой передатчика является его энергопотребление. На рисунке показан график потребляемого тока передатчика, отправка значений происходит каждую минуту, после чего esp8266 переходит в режим глубокого сна. Замер производился с помощью USB-тестера c Bluetooth, который не отличается высокой разрешающей способностью и частотой дискретизации, поэтому на графике отображены не все пики, соответствующие циклу бодрствования микроконтроллера. В цикле сна же потребление вовсе равно 0, что было бы конечно просто замечательно, если было бы правдой.
Согласно проведенным замерам, за пару часов работы передатчик израсходовал порядка 70мАч. При таком расходе электроэнергии аккумулятора емкостью 1500 мАч хватит всего на пару суток, что очень мало. Тем не менее передатчик работает уже несколько дней непрерывно.
Для уменьшения энергопотребления в реальных условиях можно уменьшить частоту отправки измеренных параметров, убрать с платы T-Base светодиод и, возможно, переработать плату LoRa-шилда.
Приемник на базе T-Watch отображает последнее значение температуры, максимальное, минимальное значение и график из 240 последних значений. Очевидно, что на данном этапе приемник работает весьма неэффективно и есть множество программных моментов, которые требуют оптимизации.
Тестирование в реальных условиях.
Передатчик собран в корпус от губки для обуви за неимением на данный момент другого.
Так как я, к сожалению бываю у родителей не очень часто, до настоящего времени удалось протестировать систему только два раза. Первый тест оказался не совсем удачным: я поленился лезть в погреб, передатчик оставил на крышке погреба, а сам датчик температуры опустил внутрь. Но, видимо, из-за мороза аккумулятор довольно быстро разрядился и проследить какую-бы то ни было динамику температуры в погребе не удалось.
Второй тест оказался более удачным. Передатчик, помещенный внутрь погреба, проработал почти сутки, пока я не забрал его. Сигнал уверенно принимался во всем доме, на расстоянии примерно 50м, что для конечно LoRa очень мало. Максимальную же дальность не проверял, так как не было необходимости. При этом следует учесть, что передатчик находился на глубине пары метров под землей, а между ним и приемником было несколько преград.
На не совсем удачной фотографии показан график температуры, при установке его в погребе. Можно увидеть, что температура не опустилась ниже 1 С, при этом на улице было около -14 С.
Код приемника и передатчика.
TODO
Поменять датчик DS18B20 на датчик влажности.
Добавить контроль заряда батареи передатчика.
Подобрать корпус для передатчика, желательно герметичный.
Оптимизировать код приемника.
Вывод
Система работоспособна и может быть использована в реальных условиях, при этом необходимо уменьшить энергопотребление передатчика, а также оптимизировать код приемника.
P.S.
У меня остались платы LoRa-шилда для Wemos D1 mini спроектированные, как под модули Ra-02 (SX1278), так и под SX1276. Буду рад ими поделиться.
Самые обсуждаемые обзоры
+68 |
3230
133
|
+50 |
3479
65
|
+28 |
2433
43
|
+37 |
2716
38
|
+55 |
1993
37
|
Тема интересна, но про LoRa я ничего в тексте не нашел — только покупки и платы.
Не проверить максимальную дальность LoRa в статье про LoRa. Серьезно? Но указать про дикое энергопотребление и описать, что надо исправлять.
Переработайте статью до состояния интересной и информативной. Уберите воду и оставьте только лору и непосредственно с ней связанное (история про родителей излишня, ваш косяк про лень тоже, анализ температур в погребе за борт — мы не про погреб читаем). И сделайте тест расстояний!
Ещё как минимум есть ссылки на готовые модули — это тоже интересно.
Плюс ссылки на гитхаб с исходным кодом.
А про лору можно много где прочитать. И лучше всего у производителя модулей КМК. Вот ссылки на сайты и документацию не помешают. И тест скорости и дальности передачи будет интересен.
Но не в данном обзоре.
Человек:
— купил модули и дал ссылки на магазины
— сделал схемы/платы и дал ссылки на них
— разработал программу для этого всего и дал ссылки на исходники
— написал об этом статью.
Что ещё?
Ах да, не описал LoRa. Но вот если я захочу рассказать например, о некоем устройстве на USB… мне описание всех стандартов USB в статье придётся привести?
Или можно коротко:
«USB — стандарт связи компьютеров с периферией, позволяющий по одному кабелю передавать данные и питание»
«LoRa — стандарт беспроводной передачи данных со специальной модуляцией, позволяющий обеспечить связь на большие дистанции при малых мощностях передатчика»
)))))))
Я хотел сделать статью именно о практическом использовании LoRa-трансиверов в моем случае на примере мониторинга температуры в погребе, а не от технологии LoRa и её возможностях.
Дальность я проверял, но тестирование нельзя назвать объективным и для меня дальность связи в данном случае не важна так как расстоянием между приемником и передатчиком совсем небольшое.
А жаль, я писал именно про мониторинг температуры в погребе.
Соглашусь, что критика слишком эмоциональна. Это вызвано тем, что под таким интересным заголовком оказались крупицы практической и важной информации среди, да и те разбавлены водой.
Тема очень интересна и работы проведено много. Вот только описание подкачало.
HC-11/HC-12 стоят примерно те же 3$, что и SX1276.
Раздел называется: «Блог DIY или Сделай сам», а что сделал сам внятно не описано.
Если у автора предусмотрена в железе возможность отключать или программно усыплять сильно жрущих потребителей энергии — не всё потеряно.
Это выглядит примерно так:
0,01 секунды передача с током 50 мА — итого 0,5 мА сек
10 минут спим с током 5 мкА — итого 3 мА сек (!!!)
Самое малое потребление больше всего выедает батарейку.
Затем уменьшили ток спячки всего на 3 мкА — увеличили время автономной работы вдвое!
https://aliexpress.ru/item/item/32966490341.html
На лоджии ящик для картошечки, с подогревом из самодельного мата из самого дешманского керамического кабеля. Управляется через эту wi-fi розетку.
Думаю батарейки хватит надолго :)
Питание на аккумуляторе при низких температурах это плохая идея.
почти год это не выдающиеся показатели.
Сама разработка интересная, почитал, узнал что то новое. Повествование конечно своеобразное, но у каждого свой стиль. За дайвай однозначно плюс.
Поэтому до морозов люк в погреб не утепляют, вытяжку не закрывают. Девайс как раз поможет понять, когда всё-таки «пора» закрывать на зиму.
Передатчик: TTGO T-Base + SX1276 + DS18b20
Приемник: TTGO T-Watch + SX1276 как у топикстартера дорого.
Мне бы что-то типа WIFI датчик температуры на базе WIFI модуля ESP8266(ESP-0) и датчика температуры DS18B20. Собирал как то на коленке, но эта штука жрет как конь.