Home | Guides | Software | Hardware | Discussions | Shop | Contact Me | Donate


2022-01-26

How To Make Your Own RNodes

This article will outline the general process, and provide the information you need, for building your own RNode from a few basic modules. The RNode will be functionally identical to a commercially purchased board. If you haven't already, you migh also want to check out how to install the RNode firmware directly on complete LoRa development boards.

A Homemade RNode A homemade RNode, based on an ESP32 board and a transceiver module, ready for use

Since there is not one right way to cut this pie, this article will probably not give the exact steps for the combination of components you choose, but will instead attempt to provide you with the information you need to build RNodes from a wide variety of microcontroller boards and LoRa modules. Generally speaking, you will need three things to construct a working RNode:

Preparing the Hardware

Currently, the RNode firmware supports a variety of different microcontrollers, and more are being added regurlarly. That means that there is a lot of boards to choose from. You can probably use most boards that are based on either the ATmega1284P, ATmega2560 or ESP32 microcontrollers. Regarding microcontroller boards there is a few key points to take note of:

Regarding the LoRa transceiver module, there is going to be an almost overwhelming amount of options to choose from. To narrow it down, here are the essential characteristics to look for:

Keeping those things in mind, you should be able to select a suitable combination of microcontroller board and transceiver module.

Assembling the RNode

Ok, having gone through the endless combinations and selected a board and a module, you are actually almost done. Connecting the devices together is pretty simple, and should only take a few minutes. I recommend that you place both devices in a solderless breadboard initially, to make sure everything is working as expected. Once you have a working setup, you can make it more durable and permanent by soldering it to a prototyping board, and connecting permanent lines between the devices.

In the photo above I used an Adafruit Feather ESP32 board and a ModTronix inAir4 module. That will result in an RNode suitable for the 420 MHz to 520 MHz range. To complete the device I did the following:

  1. Connect the GND pin of the microcontroller board to the GND rail of the breadboard.
  2. Connect the GND pin of the transceiver module to the GND rail of the breadboard.
  3. Connect the 3.3 volt output line of the microcontroller board to the V_IN pin of the transceiver module.
  4. Connect the chip select pin of the microcontroller board to the chip select pin of the transceiver module.
  5. Connect the SPI clock pin of the microcontroller board to the SPI clock pin of the transceiver module.
  6. Connect the MOSI pin of microcontroller board to the MOSI pin of the transceiver module.
  7. Connect the MISO pin of the microcontroller board to the MISO pin of the transceiver module.
  8. Connect the transceiver reset pin of the microcontroller board to the reset pin of the transceiver module.
  9. Connect the DIO0 pin of the transceiver module to the DIO0 interrupt pin of the microcontroller board.
  10. You can optionally connect transmit and receiver LEDs to the corresponding pins of the microcontroller board.

The pin layouts of your transceiver module and microcontroller board will vary, but you can look up the correct pin assignments for your processor type and board layout in the Config.h file of the RNode Firmware.

Loading the Firmware

Once the hardware is assembled, you are ready to load the firmware onto the board and configure the configuration parameters in the boards EEPROM. Luckily, this process is completely automated by the RNode Configuration Utility. To prepare for loading the firmware, make sure that python3 and pip is installed on your system, then install rnodeconf by issuing the command pip install rnodeconf. If installation goes well, you can now move on to the next step.

Take Care: A LoRa transceiver module must be connected to the board for the firmware to start and accept commands. If the firmware does not verify that the correct transceiver is available on the SPI bus, execution is stopped, and the board will not accept commands. If you find the board unresponsive after installing the firmware, or EEPROM configuration fails, double-check your transceiver module wiring!

At this point, it is probably a good idea to make a separate directory for storing files related to your RNode installations. While this step is not strictly necessary, it can be very useful at a later point if you intend to make a lot of RNodes, and want to use some of the more advanced functionality. In your terminal make a new directory and enter it:

mkdir rnode_installs
cd rnode_installs

The autoinstaller will give each RNode you make a unique (but completely anonymous) hardware ID, that you can later use for various things such as addressing and remote configuration, but for this to work, the installer needs to store a database of the devices you make, so be sure to install your RNodes from the same directory, if you want this functionality.

Having double-checked that everything is connected correctly, it is time to power up the board and install the firmware. Run the rnodeconf autoinstaller by executing the command:

rnodeconf --autoinstall

The installer will now ask you to insert the device you want to set up, scan for connected serial ports, and ask you a number of questions regarding the device. When it has the information it needs, it will install the correct firmware and configure the necessary parameters in the device EEPROM for it to function properly.

If the install goes well, you will be greated with a success message telling you that your device is now ready. To confirm everything is OK, you can query the device info with:

rnodeconf --info /dev/ttyUSB0

Remember to replace /dev/ttyUSB0 with the actual port the installer used in the previous step. You should now see rnodeconf connect to your device and show something like this:

[2022-01-27 20:11:22] Opening serial port /dev/ttyUSB0...
[2022-01-27 20:11:25] Device connected
[2022-01-27 20:11:25] Current firmware version: 1.26
[2022-01-27 20:11:25] Reading EEPROM...
[2022-01-27 20:11:25] EEPROM checksum correct
[2022-01-27 20:11:25] Device signature validated
[2022-01-27 20:11:25]
[2022-01-27 20:11:25] Device info:
[2022-01-27 20:11:25]   Product            : LilyGO LoRa32 v2.0 850 - 950 MHz (b0:b8:36)
[2022-01-27 20:11:25]   Device signature   : Validated - Local signature
[2022-01-27 20:11:25]   Firmware version   : 1.26
[2022-01-27 20:11:25]   Hardware revision  : 1
[2022-01-27 20:11:25]   Serial number      : 00:00:00:02
[2022-01-27 20:11:25]   Frequency range    : 850.0 MHz - 950.0 MHz
[2022-01-27 20:11:25]   Max TX power       : 17 dBm
[2022-01-27 20:11:25]   Manufactured       : 2022-01-27 20:10:32
[2022-01-27 20:11:25]   Device mode        : Normal (host-controlled)

On the hardware side, you should see the status LED flashing briefly approximately every 2 seconds. If all of the above checks out, congratulations! Your RNode is now ready to use.

If you want to use it with Reticulum, Nomad Network, LoRaMon, or other such applications, leave it in the default Normal (host-controlled) mode.

If you want to use it with legacy amateur radio applications that work with KISS TNCs, you should set it up in TNC mode.