Эксперименты с модулями технологии LoRa. Часть 2.
Николай Большаков /RA3TOX/ - г. Нижний Новгород
В своей первой статье я рассказал о технологии LoRa и добавил LCD дисплей в пример скетча приемника из библиотеки LoRa.
В этой статье мы расширим возможности этих замечательных модулей и добавим в них несколько полезных функций:
- Датчик температуры и влажности
- Датчик вскрытия (кнопка)
- Светодиод в передатчике для индикации посылки пакета
- Звуковой датчик в приемнике для извещении сигнала о приеме пакета
С таким набором функций уже можно собрать действующую систему для контроля температуры и влажности в теплице или охранную систему, например, для гаража. Данные о температуре и влажности, а также состояние кнопки вскрытия объекта передаются каждые 5 секунд (можно изменить в скетче).
Передающая часть
Раньше я уже говорил, что передатчик не требует больших вычислительных ресурсов и поэтому его можно выполнить непосредственно на микроконтроллере Atmega8. При этом можно исключить кварцевый резонатор и применить внутреннюю синхронизацию микроконтроллера.
Схема передатчика модуля LoRa для Atmega8.
На схеме мы видим новые введённые элементы. Это датчик температуры и влажности DHT11, кнопка Кн и светодиод. Кнопка Кн - это датчик вскрытия для охранной системы. При её замыкании передаётся сигнал вскрытия объекта, который фиксируется приемником. Светодиод вспыхивает во время передачи пакета, что говорит о работе охранной системы (по аналогии с автосигнализацией). При установки синего светодиода ограничительный резистор 100 ом можно не ставить, так как его рабочее напряжение 3 вольта.
HEX-файл для передатчика с частотой 868 МГц: LoRaSender_868_Alarm_Temp.hex
HEX-файл для передатчика с частотой 433 МГц: LoRaSender_433_Alarm_Temp.hexФьюзы для Atmega8 с внутренней синхронизацией 8 МГц в программе AVRDUDE_PROG:
Для желающих выполнить передатчик на модуле Arduino (Nano) схема имеет следующий вид:
При использовании Arduino необходимо установить стабилизатор на 3,3В для питания модуля LoRa. На модуле Arduino Nano есть контакт с напряжением 3,3В и в Интернете встречаються схемы, где питание берется с этого вывода. Но когда я замерил на нем напряжение, оно оказалось 4 В (видимо, просто 5В гасятся диодом).
Для Arduino Nano выводы стабилизатора AMS1117-3.3 как раз совпадают по шагу контактов (5V/GND), поэтому припаиваем его прямо на контакты модуля:Программное обеспечение передатчика написано таким образом, что при нормальном состоянии датчика вскрытия в начале пакета передачи передается слово "ОК". В случае замыкании контактов сигнализации в начале пакета передается слово "Alarm". Приемник распознает эти слова и при срабатывании сигнализации выводит на экран сообщение "Alarm", а на "пищалку" телеграфом поступает сигнал SOS.
Cкетч для передатчика, выполненного на платформе Arduino: LoRaSender_Alarm_Temp.ino
Скетч кроме библиотеки модуля LoRa также содержит внешнюю библиотеку для термодатчика DHT11, поэтому не забудьте её установить перед компиляцией программы.
Приемная часть
В приемник я добавил "пищалку", издающую звук при приеме пакета. Это мне пригодилось при определении зоны покрытия передатчика во время удаления от него. Как только приемник перестал издавать звуковой сигнал - значит вы вышли из зоны действия передатчика. Не надо постоянно смотреть на экран монитора, чтобы отслеживать пропадание сигнала. Маленькая мелочь - но приятно.
В качестве "пищалки" применяется активный зуммер, звучащий при подаче на него постоянного напряжения. Лучше его подключить через тумблер, чтобы можно было отключать при необходимости. Вместо зуммера можно поставить светодиод, который будет кратковременно загораться при получении пакета.
Схема приемника с LCD дисплеем на Arduino Nano:
Вот такая информация отображается на дисплее при работе с вышеуказанным передатчиком:
Вместо LCD дисплея можно применить более компактный OLED-дисплей. Схема приемника при этом несколько упрощается, так как уменьшается количество контактов подключения дисплея.
Схема приёмника на Arduino с OLED дисплеем отличается только меньшим количеством соединений c дисплеем:
Принимаемая информация на OLED-дисплее выглядит так:
Скачать код приёмника:
Для схемы с LCD дисплеем - LoRaReceiver_868_lcd.ino
Для схемы с OLED дисплеем - Lora_rx_433_oled.inoКак я сказал выше , программа приемника распознает слово "Alarm" при срабатывании сигнализации и выводит на экран сообщение "Alarm", а на "пищалку" телеграфом поступает сигнал SOS. Если Вы имеете опыт программирования модулей Arduino, то можете изменить параметры выводимого сигнала тревоги. Например, можно задействовать другой порт и подключить к нему исполнительное реле (естественно через коммутирующий транзистор) с выводом на более мощную сирену или световой прожектор. Всё зависит от вашей фантазии.
Напомню, что скетчи приемников кроме библиотеки модуля LoRa также содержат библиотеки для работы дисплеев, поэтому не забудьте их установить в среду программирования Arduino IDE перед компиляцией программы!
Применяемые библиотеки :
- Для работы с модулями LoRa - Arduino-LoRa-master.zip
- Для работы датчика температуры и влажности - dht11.zip
- Для работы с LСD дисплеем - LiquidCrystal.zip
- Для работы с OLED дисплеем - Adafruit_SSD1306-master.zip
- Для работы с OLED дисплеем - Adafruit.zip
Вот несколько фотографий моих конструкциий из этого проекта:
Приёмник на диапазон 433 МГц с OLED дисплеем:
Приёмник на диапазон 868 МГц с LCD дисплеем:
Передатчики, выполненные на Arduino Nano и на микроконтроллере:
Удачи и творческих успехов!
Февраль 2020 г.
Публикация в других источниках разрешена со ссылкой на автора и сайт "Радиофанат" - http://rfanat.ru