What is it?

RNode is an integrated, long-range data-radio that uses raw LoRa modulation in a variety of frequency bands. It connects to a host via USB or serial, or can be directly programmed for independent operation.

Or in short: A swiss army-knife of a LoRa-based communication device.

RNode can functions as a:

  • LoRa interface for your computer (or any device with a USB or serial port)
  • Packet sniffer for LoRa networks
  • LoRa development board
  • A LoRa-based KISS-compatible TNC
  • Network adapter for RNS
  • A flexible platform for experiementing with LoRa technology
  • LoRaWAN support is coming in a future firmware update

RNode is controlled by a powerful ATmega1284p MCU, and is fully Arduino compatible. You can use the included firmware, or it can be programmed any way you like, either from the Arduino IDE, or using any of the available tools for AVR development. The included firmware can also be edited and compiled directly from the Arduino IDE.

For adding RNode to your Arduino environment, please see this post.

For configuring an RNode, please have a look at the RNode Config Utility.

RNodes are now shipping, get yours from my shop

Specifications

  • High-quality LoRa module with genuine Semtech SX1276 chip
  • Powered by an ATmega1284p MCU clocked at 16 MHz
  • 128 kilobytes of flash
  • 16 kilobytes of RAM
  • Large payloads with a packet MTU of 500 bytes
  • Up to 17 dBm continuous TX output in 820-1020 MHz
  • Up to 14 dBm continuous TX output in 410-525 MHz
  • Sensitivity down to -139 dBm
  • Data rates ranging from 20 bps to 21.88 kbps
  • Mini-USB connector
  • SMA antenna connector
  • Fully programmable
  • Arduino compatible
  • Open source firmware and config util
  • 15 general purpose IO ports available
    • All ports can be used as digital inputs or outputs
    • 5 ports can be used as analog inputs
    • An extra UART serial port is available on two of the pins
    • I2C port
    • Two PWM outputs are available
    • JTAG port available
  • Operating range: -20°C to 60°C (non-condensing)
  • 23.3 mA idle power consumption

Frequency Bands

RNode can operate in the following two frequency bands:

  • 410 – 525 MHz
  • 820 – 1020 MHz

Operating Modes

RNode can operate in two modes, host-controlled (default) and TNC mode:

  • When RNode is in host-controlled mode, it will stay in standby when powered on, until the host specifies frequency, bandwidth, transmit power and other required parameters. In host-controlled mode, promiscuous mode can be activated to sniff any LoRa frames.
  • When RNode is in TNC mode, it will configure itself on powerup and enable the radio immediately. This mode can be enabled by using the configuration utility (the utility will guide you through the settings if you don’t specify them directly).

Resources and Downloads

Examples and Learning Resources

If you want some inspiration to get started with RNode, have a look at the following examples. Most of them contain step-by-step instructions on how to do them yourself.

Programming Interface

Using the included libraries, it’s easy to use RNode in your software. Here’s a Python example:

from RNode import RNodeInterface

def gotPacket(data, rnode):
	print "Received a packet: "+data

rnode = RNodeInterface(
	callback = gotPacket,
	name = "My RNode",
	port = "/dev/ttyUSB0",
	frequency = 868000000,
	bandwidth = 125000,
	txpower = 2,
	sf = 7,
	cr = 5,
	loglevel = RNodeInterface.LOG_DEBUG)

rnode.send("Hello World!")

USB and Serial Protocol

You can communicate with RNode either via the on-board USB connector, or using the serial pins on the board (labeled RX0 and TX0). RNode uses a standard FTDI USB chip, so it works out of the box without additional drivers in most operating systems.

All communications to and from the board uses KISS framing with a custom command set. RNode also does not use HDLC ports in the command byte, and as such uses the full 8 bits of the command byte is available for the actual command. Please see table below for supported commands.

Command Byte Description
Data frame 0x00 A data packet to or from the device
Frequency 0x01 Sets or queries the frequency
Bandwidth 0x02 Sets or queries the bandwidth
TX Power 0x03 Sets or queries the TX power
Spreading Factor 0x04 Sets or queries the spreading factor
Coding Rate 0x05 Sets or queries the coding rate
Radio State 0x06 Sets or queries radio state
Radio Lock 0x07 Sets or queries the radio lock
Device Detect 0x08 Probe command for device detection
Promiscuous 0x0E Sets or queries promiscuous mode
Ready 0x0F Flow control command indicating ready for TX
RX Stats 0x21 Queries received bytes
TX Stats 0x22 Queries transmitted bytes
Last RSSI 0x23 Indicates RSSI of last packet received
Blink 0x30 Blinks LEDs
Random 0x40 Queries for a random number
Firmware Version 0x50 Queries for installed firmware version
ROM Read 0x51 Read EEPROM byte
ROM Write 0x52 Write EEPROM byte
TNC Mode 0x53 Enables TNC mode
Normal Mode 0x54 Enables host-controlled mode
ROM Erase 0x59 Completely erases EEPROM
Error 0x90 Indicates an error

A few notes on the EEPROM

As a completely open device, RNode does not block you from modifying the EEPROM contents, which specifies things like radio parameters, serial number, manufacture date and similar. But please be aware that doing so might render the device inoperable or burn out the radio. Before making any modifications, please make sure to create a backup of the EEPROM. RNode includes a cryptographic signature of the EEPROM contents, which validates all the information stored within it. You will not be able to re-create a valid signature if you erase it! Without this signature, the board will still function, but warranty will be void. If you upload your own programs or alternative firmwares to RNode, you should make sure that they don’t write to the last 200 bytes of EEPROM. You can back up your EEPROM with the config utility.

How do I get it?

You can buy one from my shop, or make it yourself. Using the circuit design files, it is possible to build a fully functional RNode on a breadboard.

17 thoughts on “RNode

    1. Hi there! They’ll be available in my shop very soon. You can preorder them already, and I will ship out as soon as the first production batch is ready, on the 12th of July the latest, but probably before that.

      If you want to build it yourself, there’s some preliminary resources available in the GitHub repository, but it will be easier once I upload files for a breadboard layout.

    1. Hi there!
      Absolutely, RNode works perfectly with a Raspberry Pi!

        1. Will do! You can also subscribe to the blog feed, I’ll definitely write a post when it’s ready.

  1. Hello,
    Is it possible to set IPAddress to Arduino device using RNode and send/receive data within Arduino devices itself?
    I want to connect one more sensor in Arduino device with Rnode and send sensor data to another server also should able to receive commands from server using ipaddress.

    1. Hi there!
      Currecntly RNode itself does not include an IP stack in the firmware. As such, it is up to the host device (computer, Raspberry Pi, other Arduino or similar) to implement the IP stack, or other networking layer. That being said, there is still enough room in the firmware, that a simple TCP/IP stack could be included on board. I might add this in a future firmware update, but not making any promises as to when 😉

    1. Because it’s much more sturdy and mechanically secure than micro USB. I also find micro-b much more fiddly to connect, and harder to visually see the orientation at a glance. You can still buy mini-b cables most places online 🙂

    1. I will have new stock on november 14th, I really underestimated how popular these would be, so sorry for the wait! I’m considering opening pre-orders, since so many are asking when they will be back.

Leave a Reply

Your email address will not be published. Required fields are marked *