Микроконтроллер со встроенным LoRa модулем 433МГц
LoRa Radio Node может использоваться в качестве универсального автономного контроллера для удаленного (до нескольких километров) управления исполнительными устройствами или сбора данных с различных датчиков. Перейти к полному описанию
Артикул: 24363667
Доставка для г. Санкт-Петербург:
Самовывоз сегодня до 20 часов: бесплатно
Доставка до двери: 300 руб.
Доставка до ПВЗ: загрузка
LoRa Radio Node v1.0 433МГц ー модуль построен связке микроконтроллера ATmega328P и LoRa модуля Maple Micro RFM96. Микроконтроллер работает на частоте 8МГц, имеет 32КБ Flash памяти и 2КБ оперативной памяти, а также использует 3.3В логику. В чип “прошит” бутлоадер от ProMini. LoRa модуля Maple Micro RFM98 обеспечивает обмен данными на небольшой скорости на расстояние до нескольких километров. Мощность встроенного радио до 100 мВт.
На плате имеются четыре 3-х пиновых разъема для подключения к аналоговым портам A0 и A1, а также к цифровым портам D3 и D4. Кроме этого имеются два 4-х пиновых разъема I2C. На каждый разъем выведено питание. Также имеется порт ICSP и предусмотрены контактные площадки для подключения пинов D5-D8 и DIO1, 2, 3 и 5.
Для питания платы можно использовать встроенный регулятор напряжения, позволяющий использовать внешний источник постоянного тока, напряжением 3.7-12 В, или аккумулятор типа 14500. Плата отличается высокой энергоэффективностью. В активном режиме LoRa Radio Node потребляет не более 120 мА. В режиме прослушивания эфира потребление находится на уровне 40 мА, а в режиме сна ー 300 мкА.
Все это позволяет использовать LoRa Radio Node в качестве универсального автономного контроллера для удаленного управления исполнительными устройствами или сбора данных с различных датчиков.
Лора на батарейках (мечта каждого мужчины)
Как-то мне понадобилось разработать систему автоматизации для загородного хозяйства — для меня это дело привычное, там вроде бы нет ничего сложного — центральный модуль, удалённые датчики и актуаторы, какой-то алгоритм управления и т. д., всё как обычно. Поскольку речь шла о загородном хозяйстве с его значительными расстояниями между объектами, то первым кандидатом на обеспечение беспроводной связи в системе стала всеми горячо любимая и широко используемая технология LoRa.
Всё вроде бы шло по плану, но при ближайшем рассмотрении вдруг возникла проблема в самом неожиданном месте — для различных беспроводных датчиков понадобились батарейные LoRa модули — и вдруг оказалось, что нормальных батарейных долгоживущих модулей, которые могли бы обеспечить автономную работу LoRa сенсоров в течение нескольких лет, просто нет в продаже.
Можно было бы сделать свои батарейные LoRa модули (благо прототипы есть и прекрасно работают), но не хотелось тратить время на изобретение велосипеда, а просто купить что-то готовое, и я заказал с Aliexpress несколько плат-кандидатов для тестирования.
Одна из таких плат — LoRa Radio Node, отчёт о её разборе (по косточкам) и тестировании я и предлагаю вашему вниманию.
Сначала о самой плате

Сама идея разработчиков LoRa Radio Node правильная — они попытались создать универсальный батарейный (аккумуляторный) LoRa модуль, и во многом им это удалось. Подключили необходимые датчики (или актуаторы), залили прошивку, вставили аккумулятор формата 14500 — и LoRa нода для вашей системы готова.
Просто, быстро и не нужно ничего изобретать и паять — купили нужное количество плат LoRa Radio Node и раскидали их по вашему объекту. В общем, всё это так и работает, но есть нюансы, о которых мы и поговорим далее.
Достоинства и недостатки
В общем, на первый взгляд, плата LoRa Radio Node производит благоприятное впечатление, перечислю её достоинства, которые сразу бросаются в глаза:
- Правильная концепция (один из вариантов правильной концепции) — LoRa модуль + ATmega328 в варианте клона Arduino Pro Mini, правильные для батарейного сенсора параметры 8 МГц и 3,3 В, плюс прошитый Arduino-загрузчик.
- Достаточно компактный дизайн и крепёжные отверстия в плате.
- Разъём для программирования через USB-UART переходник.
- Отдельный разъём для питания 3,7-12 В.
- 3 разных варианта запитки платы — от аккумулятора, через разъём питания и через пины USB-UART переходника.
- Возможность подключения дополнительных компонентов по SPI и I2C интерфейсам и отдельные разъёмы для них.
- Отдельные разъёмы с питанием для подключения дополнительных компонентов к цифровым и аналоговым пинам микроконтроллера.
- Выносная антенна для LoRa модуля.
- Специальный разъём и возможность перекоммутации выводов LoRa модуля DIO1, DIO2, DIO3, DIO5 на пины D5, D6, D7, D8.
- Правильная коммутация на плате выводов LoRa модуля DIO0, RESET, NSS на выводы D2, D9, D10.
- Кнопка перезапуска RESET на плате.
- Светодиод на плате, подключённый к выводу D13. С одной стороны, светодиод потребляет энергию (крайне ценную в случае питания от батареи), с другой стороны, это потребление небольшое в импульсном режиме, а светодиод удобно использовать для индикации активности платы.
- В качестве преобразователя питающего напряжения использован чип SPX3819 с минимальным током потребления по даташиту 90 мкА, что очень много для батарейного сенсора (подробнее мы поговорим об этом ниже).
- Собственно запитка платы от аккумулятора 14500 (3,7 В). Это решение нельзя назвать ни плохим, ни хорошим — это просто один из возможных вариантов запитки подобных сенсоров. Просто тут нужно учитывать свойства самих аккумуляторов и, например, не выставлять подобные сенсоры на 20-градусный мороз.
Технические характеристики
Основные технические характеристики платы LoRa Radio Node:
- Микроконтроллер ATmega328P 8 МГц 3,3В;
- LoRa модуль: RFM96 868 МГц;
- Разъём для программирования через USB-UART переходник;
- Разъёмы SPI и I2C (2 шт.);
- Разъёмы для подключения дополнительных компонентов (4 шт.);
- Разъём для подключения питания 3,7-12 В;
- Питание: аккумулятор 14500 (3,7 В);
- Размеры: 40×60 мм.
Внешний вид
Фото платы LoRa Radio Node «в сборе», со вставленным аккумулятором 14500. Всё сделано аккуратно и логично для базы LoRa ноды — осталось только подключить сенсоры, залить прошивку и установить плату в какой-нибудь корпус.

Схемотехника
Теперь давайте разберёмся со схемотехникой LoRa Radio Node. Для начала вид платы сверху.

Вид снизу. Никаких установленных деталей, только достаточно подробные пояснения и маркировка выводов.

▍ Подсистема питания
Подсистема питания выполнена на специализированном (LDO 500 мА) регуляторе напряжения SPX3819 с выходным напряжением 3,3 В и током покоя по даташиту 90 мкА. Питаться контроллер может от встроенного аккумулятора или от источника питания 3,7-12 В, подключаемого к разъёму J2.

В принципе, это неплохое решение для питания контроллера от батареи, но заявленные 90 мкА — это очень много для устройства, которое должно питаться от аккумулятора годами (подробнее о реальном потреблении платы LoRa Radio Node и её тестировании мы поговорим ниже).
▍ Разъём для программирования
Разъём для подключения USB-UART переходника и программирования LoRa Radio Node. Через этот же разъём можно запитывать плату от USB-UART переходника. С запиткой и программированием контроллера через этот разъём никаких проблем выявлено не было.

▍ Микроконтроллер
В качестве ядра использован микроконтроллер ATmega328P в конфигурации 8 МГц и 3,3В и прошитым Arduino-загрузчиком, фактически это Arduino Pro Mini. Такое решение является правильным выбором для построения долгоживущего батарейного сенсора.

Обвязка MCU и его распиновка в целом тоже не вызывают никаких нареканий. Разве что есть несколько неиспользуемых GPIO, которые тоже можно было бы вывести в разъёмы для подключения дополнительных компонентов.
▍ LoRa модуль
Для обеспечения беспроводной LoRa связи использован модуль HOPERF RFM96 с выносной подключаемой антенной. Для нас здесь важным является то, что этот модуль является совместимым с Arduino LoRa библиотекой (см. ниже) и выводы DIO0, RESET, NSS подключены к D2, D9, D10. В этом варианте даже не требуется переопределять стандартные пины в коде скетчей.

Также стоит отметить, что разработчики LoRa Radio Node сделали специальный разъём J3 и дали возможность свободной перекоммутации выводов DIO1, DIO2, DIO3, DIO5 на пины D5, D6, D7, D8 микроконтроллера.
▍ Разъёмы
С разъёмами для подключения датчиков всё совсем хорошо — есть отдельный разъём ICSP, 2 разъёма I2C и отдельные разъёмы с питанием 3,3 В для двух цифровых и двух аналоговых пинов микроконтроллера — в таком варианте подключение дополнительных компонентов и датчиков к LoRa Radio Node не вызывает никаких проблем.

Распиновка
Ну и распиновка платы LoRa Radio Node. В целом всё правильно и логично, небольшие вопросы возникают только по поводу пинов A2, A3, A6, A7 — разработчики по какой-то причине забыли о них и не развели на плате.

Как я уже отметил выше, LoRa модуль подключён правильно и дана возможность свободной перекоммутации выводов DIO1, DIO2, DIO3, DIO5.
Программирование
Программирование LoRa Radio Node производится при помощи любого USB-UART переходника, в моём случае был использован популярный вариант FTDI (не забудьте только переключить напряжение на 3,3 В).

Если вы ранее имели дело с LoRa, то программирование LoRa Radio Node не вызывает никаких трудностей — сама плата и подключение LoRa модуля разведены правильно, поэтому и работа со стандартной LoRa библиотекой не вызывает никаких проблем.
Вот пример скетча посылки LoRa пакетов с данными (пример разрабатывался и тестировался в среде Arduino 1.8.5).
Вывод в Serial тестового скетча посылки LoRa данных платой LoRa Radio Node:

И контроль реальных посылок в эфир при помощи программы SDRSharp:

Всё работает так, как и ожидалось.
Расчёт потребления
Теперь давайте выясним, насколько LoRa Radio Node подходит для выполнения своих прямых обязанностей — работы в качестве батарейного (долгоживущего) LoRa сенсора.
Здесь нужно сказать несколько слов о том, что я понимаю под термином «батарейный долгоживущий сенсор». Очевидно, что если у вас сенсор, например, в теплице, будет через месяц пропадать из системы по причине разряда питающей батареи, то такая «автоматизация» вам быстро надоест — если у вас на объекте десяток или больше таких сенсоров, то вы вынуждены будете постоянно «бегать» и менять в них батарейки.
Поэтому «нормальным батарейным сенсором» я считаю сенсор, который может проработать в автономном режиме не менее года (чем больше — тем лучше). В крайнем случае более-менее приемлемым результатом можно считать срок автономной работы не менее полугода, но это уже экстремальный вариант на грани фола.
Дальнейшую оценку времени автономной работы LoRa Radio Node мы и будем производить, исходя из этих критериев: норма 12+ месяцев, минимально приемлемый результат 6+ месяцев.
Методика расчёта
Примечание . Если у вас передающий батарейный сенсор, то это не значит, что он не может принимать данные и команды от «базы» — просто в этом случае вам придётся усложнить программное обеспечение и организовать окна приёма данных «по расписанию» или «по запросу».
Примечание 2 . Я специально не упоминал и, надеюсь, вам понятно, что мы не можем создать online LoRa сенсор на батарейках, поскольку LoRa модуль в режиме постоянного приёма очень быстро разрядит питающую батарею.
В качестве питающих батарей я буду использовать Li-ion аккумуляторы формата 14500 с типичной для таких аккумуляторов ёмкостью 900 мАч.

▍ Потребление в режиме сна
Я провёл специальные эксперименты по измерению тока потребления LoRa Radio Node в режиме сна (а это основной режим любого батарейного сенсора) — переводим микроконтроллер в режим сна, используя специальную LowPower библиотеку:
и переводим LoRa модуль тоже в режим сна:
Замеряем ток потребления, который, оказывается, равен 78 мкА (0,078 мА). Делим ёмкость аккумулятора 900 мАч на ток потребления 0,078 мА и получаем (теоретические) 11538 часов работы сенсора от этого аккумулятора (480 дней или 16 месяцев).
Другими словами, если наш LoRa Radio Node сенсор ничего не будет делать и не будет ничего передавать в эфир, то на этом аккумуляторе он продержится 16 месяцев. Что уже не так много, остаётся только посчитать, насколько хватит ёмкости батареи при тех или иных режимах работы LoRa передатчика.
▍ Потребление в режиме передачи
LoRa модуль в кооперации с микроконтроллером ATmega328 в режиме передачи может потреблять ток от 30 до 110 мА, в зависимости от режима. Среднее типовое значение для режима по умолчанию PA_OUTPUT_PA_BOOST_PIN = 17 составляет 80 мА, его мы и примем за основу для наших расчётов.
В качестве тестового блока данных возьмём 32 байта. При дефолтном Spreading факторе (7) передача этого блока в эфир занимает 74 мс.
Используя эти типовые параметры в качестве исходных, можно посчитать, что (с учётом потребления нашего контроллера в режиме сна) он сможет проработать 1 год при беспроводной активности (выходе в эфир с указанными параметрами) раз в 4 минуты (15 раз в час).
Изменяя Spreading фактор, длину пакета и мощность излучения и можно добиться как увеличения частоты сеансов связи, так и увеличения времени автономной работы (уменьшая количество сеансов связи). Здесь всё зависит от вашего IoT проекта — где-то достаточно 1-го сеанса в день, а где-то будет мало и 1-го пакета в минуту.
Выводы
В целом, LoRa Radio Node экзамен выдержал — на основе этой платы можно создать батарейный LoRa сенсор со временем автономной работы 1 год. При необходимости можно даже создать динамичную беспроводную LoRa ноду с сетевой активностью 1-4 пакета в минуту, но за это придётся расплатиться подбором параметров передачи данных и снижением времени автономной работы до 6-и месяцев (что не здорово, но может быть приемлемо в некоторых случаях).
Как выяснилось в процессе тестирования, «бутылочным горлышком» этой платы является чип преобразователя питания SPX3819, который потребляет ток 78-90 мкА, что мало приемлемо для такого контроллера. Трудно сказать, чем руководствовались китайцы, когда применяли этот чип в LoRa Radio Node, но я думаю, скорее всего, соображениями экономии.
Соответственно, здесь есть два решения — либо использовать эту плату «как есть», имея в виду, что сколько-нибудь активный LoRa сенсор со временем жизни больше года на ней построить нельзя, либо взять в руки паяльник и переделать питание этой платы на основе какого-нибудь более подходящего чипа с током потребления 5-20 мкА и меньше — это сразу добавит сенсору несколько лишних лет жизни при питании от батареи.
disk91.com – the IoT blog
IoT, Sigfox, LoRaWan, technology, hardware, security, hacking (DiY)
First steps with LoRa Radio Node (Arduino)

The LoRa Radio Node is an AVR Arduino board with a RFM95 LoRa module. This all-in-one LoRa module allows to have a LoRaWan device for a reasonable price around 15€. You need to add a battery (like a LS14500 3,7V battery) on the battery holder for a 4€ extra cost to make it mobile. LiPo option are also available using the power connector. Even if the connectors are looking like grove, they are not compatible so you will have to make your own wiring to connect extensions.
This post is reviewing how to getting started with this board to fire your first LoRaWan frame over The Things Network.
Powering the board
There are different ways to power the board:
- After some long search on a good way to power this board, I finally found something that looks good ! I’m using 2x 1/2 AA (LS14250) 3V style LiSoCL2 in series to get a 6V input and support the current pic during transmission. Price is about 4.00€ for that pack.
- You can use a LS14500 LiSo4 battery inserted in the battery holder. This will be the best use of the board as it takes half of the PCB so that’s better to use this space. The limitation of a such battery is the cost as you can’t recharge it. The use of Arduino low power is needed in a such configuration. VBat is passing through the LDO and over a diode to regulate 3.3V. When the battery is under 3.2V the VDD Voltage will be Battery Voltage – Diode Voltage – LDO Voltage drop.
- You can use a LiPo batteries 3,7V or 7,4V connected to the VCC/GND pins with a 2,54 pin spacing connector. There is an LDO to regulate 3.3V on the board from 2.5V to 16V.
- You can use the programming cable to supply a 3,3V. This is ok until you fire RF messages as in most of the case the FTDI cable only deliver 50mAh. This is ok for running the MCU, not for emitting on RF.
There is an issue to manage regarding power with this board: when you are using Lithium Thyonil LS14500 you need to take into account the current delivery capacity of the battery. It is normally 50mA not more. It means you can’t transmit on LoRaWan over 12-14dB. If you want to use more power (typically for North America) you need to select another source of power like a LiPo battery, LiFESo4 or Lithium Ion 3,7 & 3,2V can match with this kind of requirement. Check the previously linked post to find the one best matching with your need.
The second issue to manage is a bug into the LMIC library: even if you setup 14dB or less as transmission power, the device will transmit at +20dB. You will have a 120mA consumption peak. With a LS14500 your device will reboot right after trying to connect. Here is a major issue as the RFM95 on the board will require 50mA only when you will transmit at +5dB. You need to consider this point when selecting your battery.
See details of this issue at end of the post.
Programming the board
The LoRa Radio Node is a Arduino Pro or Arduino Mini compatible board. You need to select this type of board in Arduino tool to program it. Then you need to select the ATMega328P, 3,3V, 8Mhz subtype. With this setting you will be able to program the board with a FTDI Cable.

On the left you can see the kind of FTDI module I’m using. This have a male connector so you can easily adapt the pin mapping to the board as the LoRa Radio Node do not have a standard FTDI connector.
The cabling is following this mapping:

The DIO1, DIO2, DIO3, DIO5 are not connected directly, they are connected through a Header J3 and, by default unconnected. This will have an impact when implementing the LoRaWan stacks as usually DIO0 and DIO1 are at least needed. So you will have to short the J3 corresponding pins. Only these pins need to be shortcut.
Please note this important point.

Minimal setting you need for having LoRaWan stack working with Interruption. Connect the J3 pins like above.
The Board led is as usual with Arduino associated with D13. This pin is also used by SPI so once the LoRaWan part is setup you can’t use it anymore. In case you want to use it, you need to SPI.end(), then pinMode it for using it and after being back with SPI.begin().
You can fin the detailed of the schematics on project GitHub.
Demo program
Now, as the setup is completed, we can upload our first sketch ! The sketch is the one I used for the RFM95 test previously. You can go to my post on RFM95 on Arduino to get it.
The only modification is the following lines for the configuration:
If you directly want to load a already configured sketch with a simplified access to the LMIC function you can take a look to my sample demo code for LoRa Radio Node V1.0 on Github.
Low Power & Power question
As in the previously given Github sample code, you can run the Arduino MCU low power mode. The result is quite good with a 70uA consumption during the sleep phase. I’ve been surprised by the 120mA peak on transmission as in Europe we are more around 60mA for 14dB. Let me know if you achieve lower consumption during sleep.

The peak of current is due to a bug in the LMIC library for RFM95 (and others) board. According to the Semtech documentation the consumption during transmission may be the following:

The 120mA are corresponding to +20dB. This is out of standard and regulation for Europe so be careful with this.
So to go back to the normal transmission power and normal current consumption a battery will support you can make some change in the LMIC code until a bugfix will be provided.
Edit the radio.c file in the LMIC library and change as following: (I’m not fan of it actually bust its the best compromise I found.
In the lmic_project_config.h you need to add the following setting:
This is due to the RFM95 module: this module only have PA_BOOST connected and not RFO. As a consequence you have an over consumption for low power transmission. For +20dB you need 120mA (normal) but for +14dB you need 93mA. At +5dB you will consume 55mA. I assume the reason is related to the RFM95 module on boarded. I assume they are using 915Mhz version for all zone. Due to unmatching with the 868Mhz it is possible to get a such over-consumption.
LoRa Radio Node v1.0
Sign up to get notified when this product is back in stock!
The LoRa Radio Node v1.0 based on the ATmega328P and RFM98 433Mhz radio module. The main chip ATmega328P clocked at 8 MHz and at 3.3V logic
The LoRa Radio Node v1.0 based on the ATmega328P and RFM98 433Mhz radio module. The main chip ATmega328P clocked at 8 MHz and at 3.3V logic, which uses the Arduino pro mini 8Mhz 3.3V bootloader, usag…
The LoRa Radio Node v1.0 based on the ATmega328P and RFM98 433Mhz radio module. The main chip ATmega328P clocked at 8 MHz and at 3.3V logic, which uses the Arduino pro mini 8Mhz 3.3V bootloader, usage same as the Arduino pro mini. This chip has 32K of flash and 2K of RAM.
On board with a 3.7V 14500 battery holder, so it can use anywhere you like. In this LoRa Radio Node, we break out 2 IIC ports, 2 analog port (A0 A1) and 2 digital port (D3 D4) with 4 pin and 3 pin 2510-I type header.
Features
- Power supply: 3.7V 14500 Lipo battery Or 3.7-12V DC power(VCC GND: 2PIN 2510-I Type connect)
- Size: 40mm x 60mm
- ATmega328P @ 8MHz with 3.3V logic/power
- 3.3V regulator with 500mA peak current output
- Hardware Serial, hardware I2C, hardware SPI support
- 1 x PWM pins: D3
- 2 x analog inputs: A0 A1
- Pin #13 BLUE LED for general purpose blinking
- 2 mounting holes
- Reset button
This LoRa Radio Node uses the extra space left over to add an RFM9x LoRa 433 MHz radio module. These radios are not good for transmitting audio or video, but they do work quite well for small data packet transmission when you need more range than 2.4 GHz (BT, BLE, WiFi, ZigBee).
