Приемник на ардуино с олед дисплеем
С таким набором функций уже можно собрать действующую систему для контроля температуры и влажности в теплице или охранную систему, например, для гаража. Данные о температуре и влажности, а также состояние кнопки вскрытия объекта передаются каждые 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 г.
Еще одно FM радио на RDA5807 под управлением Ардуино
На эту тему было много толковых публикаций, однако я сделал все по-своему, вдобавок создал трехмерную модель корпуса с практичным и оригинальным дизайном. В результате получился вполне законченный проект, достаточно простой для повторения начинающим любителем электроники. Счастливый владелец 3D принтера сможет похвастаться красивой самоделкой, способной конкурировать с фабричной продукцией.
Хочешь разорить друга — подари ему фотоаппарат. Хочешь заставить раскошелиться радиолюбителя — подкинь ему ссылку на китайский модуль RDA5807.
Крохотный квадратик размером около сантиметра и ценой около двадцати рублей. На удивление, внутри вполне приличный цифровой радиоприемник с автопоиском радиостанций и умеющий читать RDS.
Скажу честно: обольщаться на дешевизну модуля RDA5807 не стоит, чтоб запустить эту прелесть, нужно все остальное: ардуинка, усилитель с динамиками, и маленький дисплейчик для большой красоты. Вместо батареек просится аккумулятор, значит добавляем в проект контроллер заряда от USB. Скетч можно отладить на макетной плате, но для готового устройства нужен приличный корпус. Внешнее оформление — вопрос очень творческий, но к нам на помощь приходит технология 3D печати.
Стараемся сделать все максимально просто и дешево. Ардуинку берем такую:
дисплей — вот такой:
питание от аккумулятора 18650, а для него такой вот контроллер заряда.
Усилитель низкой частоты — стандартный элемент для очень многих проектов, а потому имеем в запасе вот такие самодельные модули.
Полная электрическая схема получается вот такой.
Вместо дефицитной советской микросхемы К174УН14 применяем доступную TDA2003. Диод D1 нужен, чтобы при максимальном заряде аккумулятора напряжение на модуле приемника оставалось ниже четырех вольт. Надо заметить, RDA5807 не перегорает даже от пяти вольт, но на повышенном напряжении либо вообще не работает, либо ловит всякий шум вместо радиостанций. Для него четыре вольта — уже многовато, по очень хорошему надо бы питать через кренку на 3.3 вольта.
При напряжении ниже трех вольт устройство перестает реагировать на кнопки, поскольку затыкается ардуинка. Но даже при 2.5 вольт RDA5807 стойко держит прежнюю частоту и качество приема не ухудшается.
Если подключить аккумулятор к контроллеру заряда напрямую, то при выключенном USB зарядник превращается в нагрузку, вытягивая из аккумулятора ток примерно в 2 микроампера. Много это или мало — не знаю, но сам факт просто возмутительный. В качестве решения ставим герконовое реле K1, которое при подключении USB замыкает контакты K1.1.
Релюшка самодельная, изготавливается путем намотки в навал эмалированного провода диаметром не более 0,1 мм непосредственно на корпус геркона. Чем больше провода удастся намотать, и чем тоньше он будет — тем меньше будет потребляемый ток. Намотать слишком много, так, чтобы не хватало пяти вольт для срабатывания, адекватный человек не сможет, здравый смысл заставит вовремя остановиться.
Как китайцы крепят контроллер заряда, — не знаю. Могу предложить припереть винтиками с боков.
Чтоб было видно индикацию, пришлось заменить планарный светодиод на обыкновенный. Можно было бы сделать световод из толстой рыболовной лески или прозрачного прутка для 3D принтера, но ничего, сойдет и так.
Теперь пишем скетч, библиотеки берем стандартные SSD1306Ascii для дисплея и RDA5807M для радио.
Оказалось, в строке RDS есть хитрости. Там три блока: текущее время, имя радиостанции и собственно сама информационная строка. Я так и не понял, то ли в библиотеке кривой парсер, то ли радиостанция как то не так транслирует текущее время. Вразумительные цифры там появляются далеко не всегда. В результате первый блок был отброшен. А если читать саму строку, выясняется, что там ничего нет, кроме телефонов рекламной службы. Пришлось оставить только имя радиостанции, никакой другой пользы из строки RDS извлечь не удалось. Кроме названия радио, дисплей показывает силу сигнала, заряд аккумулятора и рабочую частоту.
Планировал делать память для рабочих частот, но лень матушка меня остановила. Не захотел я делать много кнопок, оставил всего две: одну для запуска автопоиска, другую для регулировки громкости. С одной кнопки поиск идет по кругу, потому иногда для выбора нужной станции приходится пробегать весь диапазон. К счастью, у нас не слишком много передатчиков, чтобы такой серфинг сильно напрягал.
Регулировка громкости происходит так: при первом нажатии уровень сбрасывается на самый минимум, и далее при каждом последующем нажатии увеличивается на одну ступень. Если возникает пауза более двух секунд — очередное нажатие считается первым. Таким образом, за все про все две кнопки.
Два динамика, смотрящие в противоположные стороны и включенные противофазно, орут как надо: на самом первом уровне громкости вполне нормально слушать. Если немного добавить — услышат даже соседи.
Как люди жили без 3D принтера я помню, но это была не жизнь, а кошмарный сон. В наши дни корпус можно просто распечатать. Разве что, его надо сперва нарисовать. Но это намного проще, чем разворачивать полномасштабные слесарные работы. Могу поделиться своими моделями, замечу только, что они рассчитаны для динамиков 3-ГДШ-8. Все материалы проекта выложены на GitHub.
Я не маркетолог, но не мог не заметить, насколько мощно модуль RDA5807 стимулирует продажи.
Все происходит за счет цепочки расходов, каждый из которых кажется сущей мелочью. Ардуинка за 120 руб, но только если доставка Super Economy. Иными словами, посылка не отслеживаемая и срок может растянуться на три месяца Хочешь получить трек номер и получить быстрее — заплати побольше. Дисплейчик — тоже 120 рублей — и снова Super Economy. Контроллер заряда совсем дешевый, но продается только пачками, еще сто рублей. Самое дорогое — аккумулятор, разброс цен широкий, но неизбежно более двухсот рублей. Усилитель можно купить готовым модулем, а можно собирать из компонентов самому. В любом случае меньше сотни не получается. Не забываем про динамики — их два, значит дважды по сто рублей.
В моем случае корпус получился очень дешевым. На печать ушло около 40 метров прутка ABS, это на самом деле не так много. Трудно рассчитать, сколько это в деньгах, но явно пустяки. А если решать проблему корпуса как-то иначе, он превратится в самую дорогую деталь, в смысле расходов, и в смысле головной боли.
У радиолюбителя многие компоненты давно лежат в запасе, а потому кажется, будто достались даром. Но если непреклонно складывать все подряд, общая стоимость проекта приближается к тысяче. Готовый китайский приемник, вполне симпатичный, можно купить за пятьсот рублей, другое дело, что информационный повод с этого никакой. Вот почему мы чертим схемы и пишем скетчи. Иначе неинтересно.
Arduino.ru
Карманное FM Радио на RDA5807m, IIC Oled 1.3″ и Arduino Nano
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
grandfox, «кроны» созданы для экономичных схем, где нужно питание 9 вольт. Подключая крону на Vin вы отправляете половину энергии и без того дохлой кроны в фонд всемирного потепления.
Банку лития на пин «+5V», и вопрос решен.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
dimax, да, питание от +5 В хорошее решение, но. ну никак не вписывается в имеющийся корпус с отсеком под «крону». А остальным на заметку. Плюсик.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
grandfox, Никто ж не заставляет брать банку 18650. В габариты посадочного места кроны запросто влезет компактный аккум и зарядка. Сейчас выпускаются аккумуляторы любых габаритов.
PS: вы тестировали, сколько он проработает от обычной кроны? Кушает то вся эта конструкция поди в разы больше, чем родной приёмник.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Родной приемник ток покоя 23 мА, при приеме сигнала потребление скорее всего сопоставимо. Часов на 10-15, в зависимости от конкретной «кроны», думаю хватит.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
grandfox, ток потребления у микроконтроллерных схем имеет импульсный и высокочастотный характер, обычный мультиметр скорее всего даст сильно заниженные показания. Что бы вычислить средний ток нужно включить резистор последовательно питанию Ом на 10, и зашунтировать его конденсатором, не менее 1000мкФ, далее измерить напряжение на резисторе при работе, и вычислить ток по закону Ома.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Замер косвенным способом (резистор 10 Ом+конденсатор 1000 мкФ) дал тот же результат