Arduino RFLink build

24/02/2018 - Arduino, RFLink

RFLink provides a firmware which, when loaded onto an Arduino Mega with the correct radio transmitter/receiver attached, can communicate with a range of wireless devices. It is possible to buy kits with all the required components, optionally including assembly, here. In this article, we will instead attempt to build our own 433 MHz gateway from the individual parts. Another build guide is available here.

Parts

Information about radio transmitters/receivers and wiring can be found here. The parts used and indicative prices:

  • Arduino MEGA2560, £7.86
  • Arduino MEGA2560 prototype shield with breadboard, £1.66
  • RXB6 433MHz receiver module, £1.27
  • FS1000A 433MHz transmitter module, £0.99 for 2
  • Helical sprint antenna 433MHz, £0.99 for 5

Wiring

For the RXB6:

  • GND to Arduino GND
  • DATA to pin 19
  • +5V to Arduino pin 16
  • ANT to antenna

For the FS1000A:

  • GND to Arduino GND
  • VCC to Arduino pin 15
  • DATA to Arduino pin 14

Installing the firmware

The following was done with r48 of the RFLink firmware. Download the latest firmware from the website and connect the Arduino to a computer. If you are using Windows, then there is an RFLinkLoader program in the zip file which can be used to upload to the Arduino. For Linux, you can use the avrdude program, which can be installed with apt on Ubuntu.

When in the same directory as the RFLink.cpp.hex file, the following command will upload the firmware to an Arduino connected to /dev/ttyACM0:

avrdude -v -p atmega2560 -c stk500 -P /dev/ttyACM0 -b 115200 -D -U flash:w:RFLink.cpp.hex:i

Example output can be seen here.

Testing

I use the picocom program to connect to the Arduino (also available with apt on Ubuntu) and test if we can communicate with the firmware. The following command opens the terminal assuming the Arduino is connected to /dev/ttyACM0:

picocom --baud 57600 --omap crlf --echo /dev/ttyACM0

After the Terminal ready prompt, press the reset button on the Arduino and it should send some output to the terminal (the first line, below). In the following, lines starting 20 are sent from the Arduino, while lines starting 10 are typed in and sent to the Arduino. The line sent to the Arduino turns on debug mode, and the response confirms that debug mode has been activated. After switching on debug mode, I press the button on a 433MHz remote and see the signal being captured by the gateway. To quit, press Ctrl-A Ctrl-X.

20;00;Nodo RadioFrequencyLink - RFLink Gateway V1.1 - R48;
10;rfdebug=on;
20;01;RFDEBUG=ON;
20;02;DEBUG;Pulses=100;Pulses(uSec)=2460,2430,2400,2460,2370,2430,2400,2460,2370,2430,2370,2430,2370,2460,4710,1200,1170,1200,1170,540,570,540,570,540,510,1200,570,540,1170,1200,570,540,510,540,540,570,540,540,540,570,540,540,1170,1200,540,570,540,570,540,570,510,570,510,570,540,540,540,570,540,570,540,570,540,540,540,570,1170,540,540,1200,540,570,540,570,540,540,540,540,1200,1200,1170,1200,1170,540,540,1200,1170,1200,1170,1200,540,570,1170,1200,1200,1200,1170,1200,1170,6990;
20;03;Debug;RTS P1;a11e004a052f2e;
20;04;RTS;ID=063a5b;SWITCH=01;CMD=STOP;