Wireless sensor application Tutorial of RF5151&RF4432S

Release time:2016-07-03


RF5151&RF4432S are very easily incorporated in designing wireless data logger, sensor network, telemetry and other wireless applications. Their products mostly use RF transceiver chips from ADI, Infineon, and Silicon Labs. Some of their RF modules have an additional preprogrammed microcontroller that allows direct interface of selected analog and digital sensors to the module. This means you don’t need any external MCU or to write codes for these sensors. I have been playing with their RF5151 and DRF4432S RF modules for past couple weeks and I should admit that they are very versatile and easy to use. In this blog post, I will describe these two modules briefly, and illustrate how to put them together to construct a simple wireless sensor application where data from a remote sensor are received and displayed on a PC, without using any external microcontrollers.



RF5151 wireless sensor module


RF5151 transmitter module
RF5151 is a 433 MHZ ISM band transmitter module based on Infineon’s TDA5150 device, which is a low power, multiband, multichannel ASK/FSK/GFSK RF transmitter chip for the sub 1GHz ISM bands (300-320 MHz, 425-450 MHz, 863 – 928 MHz) and with RF-output power of up to +10 dBm. The RF5151 module has also got an ultra-low power STM8L151 microcontroller on board that is preprogrammed to control the overall operation of the transmitter. The module operates from 2.1-3.6V. The power supply and input/output pins are brought out to 0.1″ male header pins to make prototyping easier. The module can be configured to operate in one of the following two modes:

1. Data transmission mode
In data transmission mode the RF5151 module acts as a normal data transmitter. It receives data from a host MCU through a standard UART serial port and then sends them out to RF receiving module. The receiving RF module that can be used with RF5151 is RF4432S. We will talk about that later. The RF5151 also features sleep mode during which no data is transmitted and the module consumes only 1.5µA of current.
2. Sensor data mode
The preprogrammed STM8L151 microcontroller on board allows you to connect selected digital and analog sensors directly to the RF5151 module, which is a very nice feature of it. In this mode, the RF5151 transmits the sensor data continuously at a preset interval along with its ID and the battery voltage information. The ID is useful to identify the source of transmission when there is more than one DRF5150S modules transmitting. The ID is divided into two parts: Group ID and Slave ID. The Group ID of the receiving module (RF4432S) should match with the Group ID of the transmitting module otherwise the receiver will ignore the transmitted data. However, multiple RF5151 modules can share the same Group ID, but they should have different Slave ID’s for identification on the receiving end. The module provides a 12-bit ADC channel that allows you to connect analog sensors, such as PT1000, LM34, LM35, TMP35, etc. It also features direct interfacing capability for DS18B20, SHT1X, and SHT2X digital sensors. The following picture shows the RF5151 module and its pin configurations. The RXD and TXD are UART receive and transmit lines. They do have alternative functions based on the mode of operation.


RF5151 PINOUT


Configuration tool


As I mentioned earlier, the RF5151 provides multiple modes of operation. The module can be configured for a particular mode using a PC software, DRF Tool, downloadable from Appconwireless website. The DRF Tool is a Windows based GUI application that communicates with the RF5151 module connected to the PC through an USB-UART adapter. The TXD, RXD, VCC, and GND pins of the RF5151 module should be connected to the corresponding pins of the USB-UART module. Note that the VCC voltage should be 3-3.6V. Here is a snapshot of the DRF Tool. All supported modes can be seen through the Sensor Type drop-down menu, and you pick one that you want to configure your RF5151 module to. There are lot of other things that you can do with this tool, such as setting the TX interval, RF frequency and data rate, sensor ID, etc.


RF Tool for configuring RF5151 module



RF5151 RF transmitter and DS18B20 setup on breadboard


I have made this setup on a breadboard and powered the circuit with a coin cell 3V battery (see the picture above). The RF5151 reads 12-bit temperature data from the DS18B20 sensor and transmit it (with 2 seconds interval) at 50KBPS data rate using 434 MHz GFSK modulation. The transmitted data format of the DRF5150S is,

ID bytes (Group+Slave) + Data + BAT
The Group and Slave IDs are 1 byte each. The Data is 2 byte long for DS18B20 sensor. The last byte (BAT) contains the information of the battery strength. You can calculate the battery voltage from BAT as,
Battery voltage = (BAT+200)/100
Altogether 5 bytes are transmitted for each temperature sample.
Now lets look at the RF4432S module which is a matching receiver for the RF5151 transmitter. In order to make this pair to work together, they must be configured identically.


RF4432S receiver module
The RF4432S is a GFSK receiver module based on Silicon Laboratories’ Si4432 wireless ISM transceiver chip. This module is used together with RF5151 to build wireless sensor applications. It receives data from the RF5151 transmitter module and transfers it through an UART serial interface. The picture below shows the pin diagrams of the RF4432S module. Please refer the datasheet to find more details about these pins and their functions.



RF4432S pins

The RF4432S module must be configured in the same working mode as its complementary RF5151 module. The configuration of the RF4432S is done in the similar way using the DRF Tool. Again you need to connect the RF4432S to the PC using an USB-UART adapter. Make sure you chose the same parameters in the DRF Tool for the receiver as you did for the transmitter. For our test application, the RF4432S receiver module is also configured to DS18B20 High Resolution Mode, with RF frequency 434 MHz, RF data rate 50KBPS, and TX interval 2 sec. The transmitting and receiving modules can be configured to operate in a different frequency channel with 200 KHz spacing.

RF4432S is configured similarly as RF5151


We now interface the RF4432S to the PC through the USB-UART adapter so that the received data bytes can be transferred to the PC. A PC application is developed using Processing language, which receives the data and displays them on screen. The Enable (EN) pin of the RF4432S must be pulled low in order for it to work. If the EN pin is pulled high, the receiver goes in to sleep mode. Since the RF4432S has got an on-board 3.3V regulator, it can operate from 3.4V to 5.5V.



RF4432S is connected to PC using an USB-UART adapter


RF4432S and USB-UART connection

The output data format of the RF4432S receiver is
ID (group ID + slave ID) +Data + Bat + RSSI
It is same as that of the transmitter module except there is an additional byte (RSSI) which gives the field strength of received signal. The higher value of RSSI means more reliable wireless link. The product datasheet says if RSSI < 64 at 50Kbps RF data rate, then the field strength is considered weak and the probability of package loss is high. N
Processing application
The following Processing code is written to receive six bytes of data from the RF4432S receiving module connected to the PC through an USB-UART interface. Information like temperature of the remote station as sent by the RF5151 module, slave ID of the remote transmitting module, the battery voltage on the transmitting side, and the strength of the RF link between the transmitter and the receiver are extracted and displayed on the computer screen.


/*

Project: Wireless sensor application using DRF5150S and DRf4432S

Written by: ForbeLaw

Date: 2012/08/2

*/

//import Serial communication library

import processing.serial.*;

// Variable declaration

PFont font22, font44, font14;

PFont font12;

float tempC;

float tempF;

float y, h, BattV,Slave_ID, Byte1, Byte2, Byte3, Byte4, Byte5, Byte6, RSSI;

Serial USB_UART;

int i, j, xx=-15;

void setup() {

// Define size of window

size(350, 350);

//setup fonts for use throughout the application

font22 = loadFont("MicrosoftYaHei-22.vlw");

font12 = loadFont("MicrosoftYaHei-12.vlw");

font44 = loadFont("FranklinGothic-Demi-32.vlw");

font14 = loadFont("TimesNewRomanPS-BoldMT-16.vlw");

//init serial communication port

USB_UART = new Serial(this, "COM6", 9600);

}

void draw() {

while (USB_UART.available() > 0)

{

Byte1 = USB_UART.read();

delay(20);

Byte2 = USB_UART.read();


delay(20);

Byte3 = USB_UART.read();

delay(20);

Byte4 = USB_UART.read();

delay(20);

Byte5 = USB_UART.read();

delay(20);

Byte6 = USB_UART.read();

background(250, 250, 250); // Light blue color

fill(200, 6, 0);

smooth();

stroke(0);

strokeWeight(2);

ellipse(100, 280, 58, 50);

noStroke();

fill(0, 46, 200);

arc(100, 60, 30, 20, PI, PI+PI);

rect(85,60,30,200);

fill(250,250, 250);

rect(95,60,10,200);

// Marks on thermometer

stroke(0);

strokeWeight(1);

textAlign(RIGHT);

fill(0,46,250);

for (int i = 0; i < 5; i += 1) {

line(70, 230-40*i, 80, 230-40*i);

if(i < 4) line(75, 210-40*i, 80, 210-40*i);

textFont(font12);

text(str(40+20*i), 65, 235-40*i);

}

textAlign(LEFT);

for (int i = 0; i < 6; i += 1) {

line(118, 242-35*i, 128, 242-35*i);

if(i < 5) line(118, 225-35*i, 123, 225-35*i);

textFont(font12);

text(str(0+10*i), 135, 247-35*i);

}

noStroke();

fill(0,46,250);

textFont(font22);



textAlign(LEFT);

text("F", 57, 46);

text("C", 135, 46);

textFont(font12);

text("o", 45, 35);

text("o", 125, 35);

fill(250,90,0);

textFont(font22);

text("o", 300+xx, 45);

text("o", 300+xx, 85);

// DS18B20 conversion

tempC = Byte4*256+Byte3;

tempC = tempC/16;

BattV = (Byte5+200)/100;

Slave_ID = Byte2;

tempF = ((tempC*9)/5) + 32; textFont(font44);

RSSI = Byte6;

text(nfc(tempC, 2), 200+xx, 60);

text(nfc(tempF, 2), 200+xx, 100);

text("C", 320+xx, 60);

text("F", 320+xx, 100);

textFont(font14);

text("Battery Voltage =   V", 190+xx, 140);

text(nfc(BattV, 2), 313+xx, 140);

text("Signal Strength = ", 190+xx, 160);

text(nfc(RSSI,0), 313+xx, 160);

text("Slave ID = ", 190+xx, 180);

text(nfc(Slave_ID,0), 313+xx, 180);

// Raise mercury level

fill(200,0, 0);

y = -2.0*tempF + 310;

h = 270-y;

rect(95, y, 10, h);

}

}




Output

I tested the setup by putting the DRF5150S sensor transmitter module in the front door porch of my house and the receiver module is connected to the PC in my spare bedroom on the second floor. The distance between the two is around 70 feet no line-of-sight. The received signal strength is found to be 179 (out of 255), which is really good.



Wireless sensor transmitter on front door porch


Data received by RF4432S are display on screen


Summary

RF5151 and RF4432S are two complimentary GFSK RF transmitter and receiver modules working in 433 MHz ISM band and are manufactured by Appcon wireless. The presence of a pre-programmed microcontroller on board allows to connect selected analog and digital sensors directly to the RF5151 module, which collects data from the sensor and sends out to the RF4432S module at a configurable interval.  The transmitter and the receiver can be both configured to operate for a particular sensor type through a PC software. For illustrative purpose, we constructed a very simple wireless sensor application where the DRF5150S module read 12-bit temperature data from a DS18B20 sensor and transmitted it continuously at an interval of 2 seconds. The RF4432S receiver successfully received the temperature, ID, and Battery strength bytes sent by the RF5151 and transferred the data to a PC through an USB-UART interface. A Processing application was developed to display the received data on computer screen.


Click here to Email Us for samples or business issue.