Эксперименты с модулями технологии LoRa. Часть 2.


Николай Большаков /RA3TOX/ - г. Нижний Новгоород
           В своей первой статье я рассказал о технологии LoRa и добавил LCD дисплей в пример скетча приемника из библиотеки LoRa.
           В этой статье мы расширим возможности этих замечательных модулей и добавим в них несколько полезных функций:

           С таким набором функций уже можно собрать действующую систему для контроля температуры и влажности в теплице или охранную систему, например, для гаража. Данные о температуре и влажности, а также состояние кнопки вскрытия объекта передаются каждые 5 секунд (можно изменить в скетче).

Передающая часть

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

           Схема передатчика модуля LoRa для Atmega8.

LoRa_Atm8_cx2a.jpg

           На схеме мы видим новые введённые элементы. Это датчик температуры и влажности DHT11, кнопка Кн и светодиод. Кнопка Кн - это датчик вскрытия для охранной системы. При её замыкании передаётся сигнал вскрытия объекта, который фиксируется приемником. Светодиод вспыхивает во время передачи пакета, что говорит о работе охранной системы (по аналогии с автосигнализацией). При установки синего светодиода ограничительный резистор 100 ом можно не ставить, так как его рабочее напряжение 3 вольта.

           HEX-файл для передатчика с частотой 868 МГц: LoRaSender_868_Alarm_Temp.hex
           HEX-файл для передатчика с частотой 433 МГц: LoRaSender_433_Alarm_Temp.hex

          Фьюзы для Atmega8 с внутренней синхронизацией 8 МГц в программе AVRDUDE_PROG:

fuze_atm8_int_osc-8mhz.jpg

           Для желающих выполнить передатчик на модуле Arduino (Nano) схема имеет следующий вид:

arduino-nano_lora-per.jpg

           При использовании Arduino необходимо установить стабилизатор на 3,3В для питания модуля LoRa. На модуле Arduino Nano есть контакт с напряжением 3,3В и в Интернете встречаються схемы, где питание берется с этого вывода. Но когда я замерил на нем напряжение, оно оказалось 4 В (видимо, просто 5В гасятся диодом).
           Для Arduino Nano выводы стабилизатора AMS1117-3.3 как раз совпадают по шагу контактов (5V/GND), поэтому припаиваем его прямо на контакты модуля:

Arduino-nano_lora-3v.jpg

           Программное обеспечение передатчика написано таким образом, что при нормальном состоянии датчика вскрытия в начале пакета передачи передается слово "ОК". В случае замыкании контактов сигнализации в начале пакета передается слово "Alarm". Приемник распознает эти слова и при срабатывании сигнализации выводит на экран сообщение "Alarm", а на "пищалку" телеграфом поступает сигнал SOS.

           Cкетч для передатчика, выполненного на платформе Arduino: LoRaSender_Alarm_Temp.ino

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

Приемная часть

zummer.jpg В приемник я добавил "пищалку", издающую звук при приеме пакета. Это мне пригодилось при определении зоны покрытия передатчика во время удаления от него. Как только приемник перестал издавать звуковой сигнал - значит вы вышли из зоны действия передатчика. Не надо постоянно смотреть на экран монитора, чтобы отслеживать пропадание сигнала. Маленькая мелочь - но приятно.

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

           Схема приемника с LCD дисплеем на Arduino Nano:

arduino-nano_lora-lcd.jpg

           Вот такая информация отображается на дисплее при работе с вышеуказанным передатчиком:

lora-lcd.jpg

          Вместо LCD дисплея можно применить более компактный OLED-дисплей. Схема приемника при этом несколько упрощается, так как уменьшается количество контактов подключения дисплея.

           Схема приёмника на Arduino с OLED дисплеем отличается только меньшим количеством соединений c дисплеем:

          Принимаемая информация на OLED-дисплее выглядит так:

Скачать код приёмника:

Для схемы с LCD дисплеем - LoRaReceiver_868_lcd.ino
Для схемы с OLED дисплеем - Lora_rx_433_oled.ino

           Как я сказал выше , программа приемника распознает слово "Alarm" при срабатывании сигнализации и выводит на экран сообщение "Alarm", а на "пищалку" телеграфом поступает сигнал SOS. Если Вы имеете опыт программирования модулей Arduino, то можете изменить параметры выводимого сигнала тревоги. Например, можно задействовать другой порт и подключить к нему исполнительное реле (естественно через коммутирующий транзистор) с выводом на более мощную сирену или световой прожектор. Всё зависит от вашей фантазии.

           Напомню, что скетчи приемников кроме библиотеки модуля LoRa также содержат библиотеки для работы дисплеев, поэтому не забудьте их установить в среду программирования Arduino IDE перед компиляцией программы!

           Применяемые библиотеки :


Вот несколько фотографий моих конструкциий из этого проекта:

Приёмник на диапазон 433 МГц с OLED дисплеем:
lora_rx-433-1.jpg lora_rx-433-2.jpg

Приёмник на диапазон 868 МГц с LCD дисплеем:
lora_rx-868-1.jpg lora_rx-868-2.jpg

Передатчики, выполненные на Arduino Nano и на микроконтроллере:
lora_tx-433-1.jpg lora_tx-433-2.jpg

lora_tx-868-1.jpg lora_tx-868-2.jpg
lora_tx-868-3.jpg

Удачи и творческих успехов!
Февраль 2020 г.

[ На главную ]


Публикация в других источниках разрешена со ссылкой на автора и сайт "Радиофанат" - http://rfanat.ru