Прототип системы удаленного мониторинга температуры в погребе на 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. Буду рад ими поделиться.
Добавить в избранное +49 +81
+
avatar
  • AndryG
  • 30 марта 2020, 16:14
+32
купил, купил, потом еще купил, потом еще купил, и еще купил.

Тема интересна, но про LoRa я ничего в тексте не нашел — только покупки и платы.

Не проверить максимальную дальность LoRa в статье про LoRa. Серьезно? Но указать про дикое энергопотребление и описать, что надо исправлять.

Переработайте статью до состояния интересной и информативной. Уберите воду и оставьте только лору и непосредственно с ней связанное (история про родителей излишня, ваш косяк про лень тоже, анализ температур в погребе за борт — мы не про погреб читаем). И сделайте тест расстояний!
+
avatar
  • KiV
  • 30 марта 2020, 16:46
+7
купил, купил, потом еще купил, потом еще купил, и еще купил.
только покупки и платы.
Ну платы человек сам сделал. И программы сам написал.
Ещё как минимум есть ссылки на готовые модули — это тоже интересно.
Плюс ссылки на гитхаб с исходным кодом.

А про лору можно много где прочитать. И лучше всего у производителя модулей КМК. Вот ссылки на сайты и документацию не помешают. И тест скорости и дальности передачи будет интересен.
+
avatar
  • pet80
  • 30 марта 2020, 17:51
+4
Ну платы человек сам сделал. И программы сам написал.
Таки это имхо и должно быть изложенном труде.
А про лору можно много где прочитать
Но не в данном обзоре.
+
avatar
  • KiV
  • 30 марта 2020, 19:29
+11
Вот не совсем понимаю критикующих.
Человек:
— купил модули и дал ссылки на магазины
— сделал схемы/платы и дал ссылки на них
— разработал программу для этого всего и дал ссылки на исходники
— написал об этом статью.
Что ещё?
Ах да, не описал LoRa. Но вот если я захочу рассказать например, о некоем устройстве на USB… мне описание всех стандартов USB в статье придётся привести?
Или можно коротко:
«USB — стандарт связи компьютеров с периферией, позволяющий по одному кабелю передавать данные и питание»
«LoRa — стандарт беспроводной передачи данных со специальной модуляцией, позволяющий обеспечить связь на большие дистанции при малых мощностях передатчика»
+
avatar
0
Но не в данном обзоре.
А это и не обзор. Пост размещён в DIY.
+
avatar
  • pet80
  • 31 марта 2020, 21:41
+1
А это и не обзор. Пост размещён в DIY.
Пост — это где вы пишите комментарий, или имеете ввиду комментарий от KiV.
+
avatar
  • KiV
  • 01 апреля 2020, 11:17
0
Ну, если следовать Вашей логике, то здесь обзор прототипа системы мониторинга температуры, а не протокола LoRa.
)))))))
+
avatar
  • pet80
  • 01 апреля 2020, 14:39
+1
здесь обзор прототипа
Совершенно верно. И не это логика, а факт.
+
avatar
  • dima191
  • 30 марта 2020, 17:01
+1
Покупал две платы LoRa — дальность 100-150 метров, причем на открытой местности.
+
avatar
  • Lucky13
  • 30 марта 2020, 17:43
+4
Модули на 433 Мгц показали результат примерно в 1 км на относительно открытой местности. Модули на 868 МГц в городской застройке — порядка 300 м по прямой, а дальше прямую видимость перекрывали дома.
+
avatar
+1
Все зависит от антенн. Покупал что-то похожее на те, что в посте — КСВ около 4 был, то есть дерьмо еще то, за антенну можно не считать. И дальность на этих антеннах у меня получилась соответствующая.
+
avatar
  • Lucky13
  • 30 марта 2020, 17:37
+4
Тема интересна, но про LoRa я ничего в тексте не нашел — только покупки и платы.

Я хотел сделать статью именно о практическом использовании LoRa-трансиверов в моем случае на примере мониторинга температуры в погребе, а не от технологии LoRa и её возможностях.
Не проверить максимальную дальность LoRa в статье про LoRa. Серьезно?
Дальность я проверял, но тестирование нельзя назвать объективным и для меня дальность связи в данном случае не важна так как расстоянием между приемником и передатчиком совсем небольшое.
Уберите воду и оставьте только лору и непосредственно с ней связанное (история про родителей излишня, ваш косяк про лень тоже, анализ температур в погребе за борт — мы не про погреб читаем).
А жаль, я писал именно про мониторинг температуры в погребе.
+
avatar
  • AndryG
  • 30 марта 2020, 17:56
-1
для меня
Но статью вы пишете не для себя.

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

Тема очень интересна и работы проведено много. Вот только описание подкачало.
+
avatar
  • loole
  • 30 марта 2020, 18:54
-3
я писал именно про мониторинг температуры в погребе
И это основная ошибка, на мой взгляд. Вряд ли такое использование именно лора модулей здесь оправдано. Копеечные ардунья + HC-11/HC-12 и помониторят и в термостат смогут. При наличии терморегулятора достаточно сигнализировать о выходе температуры за установленные пределы. Потому как следить за температурой родители конечно же конечно забудут…
+
avatar
  • Lucky13
  • 30 марта 2020, 19:09
+3
Вряд ли такое использование именно лора модулей здесь оправдано.
Не могу поспорить, оправдано это или нет. Было желание удаленно видеть температуру и были LoRa-модули.
Копеечные ардунья + HC-11/HC-12
HC-11/HC-12 стоят примерно те же 3$, что и SX1276.
+
avatar
  • pet80
  • 30 марта 2020, 17:49
+3
купил, купил, потом еще купил, потом еще купил, и еще купил.
Справедливо, это не первый обзор автора на муське, в принципе можно было и поставить оценку труду.
Раздел называется: «Блог DIY или Сделай сам», а что сделал сам внятно не описано.
+
avatar
  • Lucky13
  • 30 марта 2020, 18:56
+3
Жаль, что для многих тема оказалась не раскрыта. Я хотел вести повествование именно в таком ключе: как развивался проект от подбора комплектующих до проектирования плат, как тестировался, какие результаты получены и что ещё необходимо доработать.
+
avatar
  • kvl
  • 30 марта 2020, 16:17
0
Я так понимаю что бы уменьшить энергопотребление до приемлимых значений, необходимо все это выкинуть и все спроектировать заново на другой элементной базе и на других частотах?
+
avatar
  • KiV
  • 30 марта 2020, 16:52
0
Нет, очень многое от программной реализации зависит.
Если у автора предусмотрена в железе возможность отключать или программно усыплять сильно жрущих потребителей энергии — не всё потеряно.
+
avatar
  • kvl
  • 30 марта 2020, 17:51
0
Практика показывает, что экономия на мелочах не приводит к успеху, основное энергопотребление идет на прием/передачу информации и среднее энергопотребление элементной базы.
+
avatar
  • KiV
  • 30 марта 2020, 18:53
+1
Не совсем верно. У меня в разработках как раз таки экономия на самых малопотребляющих компонентах давала максимальный результат.

Это выглядит примерно так:
0,01 секунды передача с током 50 мА — итого 0,5 мА сек
10 минут спим с током 5 мкА — итого 3 мА сек (!!!)
Самое малое потребление больше всего выедает батарейку.

Затем уменьшили ток спячки всего на 3 мкА — увеличили время автономной работы вдвое!
+
avatar
  • penzet
  • 30 марта 2020, 16:38
+1
Если погреб предполагается обогревать, то запитать передатчик от внешнего источника энергии, а не автономно?
+
avatar
  • Lucky13
  • 30 марта 2020, 17:40
+1
Погреб не предполагается обогревать, поэтому единственный вариант автономное питание. Если был бы внешний источник питания я бы, наверное, использовал какой-нибудь GPRS-модуль с отправкой температуры непосредственно на сервер мониторинга.
+
avatar
+8
ватермарка китайфона на фото как наклейка на очках глупого человека
+
avatar
  • yualeks
  • 30 марта 2020, 18:02
0
зачем такие сложности с передатчиками, есть куча автономных проектов которые следят за температурой и влажностью. Влажность начала расти включилась вентиляция, температура начала падать включился обогреватель.
+
avatar
  • Lucky13
  • 30 марта 2020, 18:52
0
Наверняка у таких решений и бюджет совершенно другой. Да и еще раз хочется отметить, что это просто неотапливаемый погреб, расположенный на некотором удалении от дома задача была, скорее ради интереса, удаленно следить, как изменяется температура.
+
avatar
  • rx3apf
  • 30 марта 2020, 19:58
0
В таком варианте решение (ради интереса), конечно, тоже имеет право на жизнь (альтернатива — логгер с постобработкой), но все же стоит подумать и об обогреве тоже. Бросить (хоть сезонной времянкой из полевки по воздуху или даже по земле) 24 вольт переменкой — позволит и подогреть немного при необходимости, и освещение будет, и, при необходимости, вентиляция, и телеметрия бонусом. В идеале все ж стационарную линию, тоже низковольтную.
+
avatar
  • smartly
  • 30 марта 2020, 18:07
+1
Семён тут кстати не при чём — фирма называется всё таки Semtech
+
avatar
  • DSLTIP
  • 30 марта 2020, 19:48
+5
Тоже недавно понадобилась метеостанция… Думал, где же мне экранчик взять, в итоге купил Xiaomi-шный девайс, вырезал из него блютуз процессор, вставил свой Zigbee-шный! Теперь стоит на полке — показывает температуру на улице и внутри квартиры, и даже уровень CO2 показывает, если превышен.
+
avatar
  • _bo
  • 03 апреля 2020, 12:46
+2
Можете поподробнее? Очень интересует
+
avatar
  • DSLTIP
  • 03 апреля 2020, 13:41
+2
В нем был установлен микроконтроллер с блютузом, который считывает температуру/влажность с датчика SHT3X и выводит их на LCD диплей через драйвер BU9795. Я тот контроллер вырезал(отпаять не смог) и установил туда модуль cc2530-zigbee(места внутри достаточно) и написал под него свою прошивку. Теперь cc2530 считывает показания с SHT3X и отправляет их мне на сервер по zigbee, а также получает от сервера значения температуры на улице и уровня СО2, ну и выводит на LCD. Фоток не делал, нечего показать. От cc2530 до LCD — 4е провода(припаивался прямо к микросхеме BU9795), до SHT3x — два провода(TP9-SCL,TP10-SDA). Питание cc2530 взял с платы TP15-3V.
+
avatar
  • Yuri_K
  • 30 марта 2020, 21:34
0
Использую вот такой wi-fi термостат-гидрометр
aliexpress.ru/item/32966490341.html
На лоджии ящик для картошечки, с подогревом из самодельного мата из самого дешманского керамического кабеля. Управляется через эту wi-fi розетку.
+
avatar
  • mike888
  • 30 марта 2020, 21:39
+1
В погреб можно поставить старый авто аккум для тестов. Но по моему за вваленые деньги можно было просто туда провод кинуть
+
avatar
0
А если всё-же поставить лимит температуры и подымать передатчик лишь когда приближаемся к +3 и ниже?
Думаю батарейки хватит надолго :)
+
avatar
+1
Не могу поверить, что в погреб даже не подведено электричество для освещения…
Питание на аккумуляторе при низких температурах это плохая идея.
+
avatar
  • udavst
  • 03 апреля 2020, 21:17
+1
2 батарейки ааа, простояли почти год в самодельном датчике. ардуина pro mini nrf24 tpl5110 датчик (не помню по i²c, влажность и темпреатура)
+
avatar
  • udavst
  • 03 апреля 2020, 21:18
0
… на улице, где и -32 было. батарейки из палатки дешманские.
+
avatar
0
Щелочные батарейки на морозе тоже плохо отдают емкость. хотя не так подвержены саморазряду как аккумуляторы.
+
avatar
+1
Важно чтобы они приносили пользу. Какая периодичность опроса датчика, потребление тока?
почти год это не выдающиеся показатели.
+
avatar
  • udavst
  • 28 апреля 2020, 18:03
0
частота передачи данных на базу — 15 минут, в момент передачи около 20мА, потом даю сигнал на tpl, и она рубит питание всей схеме, сама она — таймер с микропотреблением, даже не измерял, как саморазряд батарейки наверное, потом таймер срабатывает, полевик открывается, схема запитывается, измеряет, передаёт через nrf24, и так по кругу. время работы ну не больше секунды, если связь устойчивая, если нет — до 15 попыток повторной передачи.
+
avatar
0
а можно поподробнее, как вот тут? не очень шарю, а по шагам могу воспроизвести. хотелось бы как у ТС мониторить.
+
avatar
  • Vmedic
  • 31 марта 2020, 07:56
+2
Раз к погребу электричество не подведено зачем тогда вообще сей девайс в нем? Ну показал зкранчик что температура в минус ушла- какие действия? Бежать соленья-варенья в дом перетаскивать или костёр в погребке разводить?

Сама разработка интересная, почитал, узнал что то новое. Повествование конечно своеобразное, но у каждого свой стиль. За дайвай однозначно плюс.
+
avatar
  • MrSAV
  • 31 марта 2020, 21:56
+2
Расскажу на примере родительского погреба в деревне — если сразу после уборки урожая его закрыть на зиму — картохе жарко и душно, ей от этого становится плохо.
Поэтому до морозов люк в погреб не утепляют, вытяжку не закрывают. Девайс как раз поможет понять, когда всё-таки «пора» закрывать на зиму.
+
avatar
0
Есть неотапливаемый зимний погреб, расположенный на некотором удалении от дома, недалеко баня, где вещает Wi-fi, всегда, подключен по PoE. Тащить 220 в погреб нет возможности и желания, как можно реализовать посмотреть температуру?

Передатчик: TTGO T-Base + SX1276 + DS18b20
Приемник: TTGO T-Watch + SX1276 как у топикстартера дорого.

Мне бы что-то типа WIFI датчик температуры на базе WIFI модуля ESP8266(ESP-0) и датчика температуры DS18B20. Собирал как то на коленке, но эта штука жрет как конь.