nRF905 Wireless Module 433,868,915Mhz (NRF905) [S117]
https://www.youtube.com/watch?v=IgzJsUzVhBk
GitHub : https://github.com/rdiot/rdiot-s117.git
* Specs
Tri-band transceiver operating frequency for the international ISM band 433/868/915MHz GMSK modulation, anti-interference ability, especially for industrial control applications using the DSS + PLL frequency synthesizer technology, excellent frequency stability, high sensitivity, to achieve - 100dBm low operating voltage (2.7V), low power consumption, standby only 1uA maximum transmit power of +10 dBm with multiple channels (up to more than 170) meet the requirements for low-power devices, in particular, to meet the needs of multi-channel work of special occasions, the work rate up to 76.8 Kbps
External components of at least (10), the basic need to debug. Low transmit power and high receive sensitivity of the design, the use of the license required to apply for open use at distances up to 1000m and the specific use of the environment and component parameters.
Electrical Characteristics:
NRF905 work band: 433/868/915MHz
Channel number: 170
Function: transmitter / receiver
Frequency stabilization method: PLL
Modulation mode: the FSK / GMSK
Maximum output power: +10 dBm
Sensitivity:-100dBm
Maximum operating rate: 76.8Kbit / s
Working voltage :2.7 - 3 .3 V
Application areas:
Vehicle monitoring, remote control, telemetry, small wireless network, wireless meter reading, access control systems, residential paging, industrial data acquisition systems, wireless tags, identification, non-contact RF smart cards, small wireless data terminals, security, fire systems, wireless remote control system, bio-signal acquisition, hydrological and meteorological monitoring, robot control, wireless 232 data communications, wireless 485/422 data communications, digital audio, digital image transmission.
* Contents
- Connect
VCC ---- Power supply.
TXE ---- RF module mode selecting.
CE ---- Enable RF module for transmit and receive.
PWR ---- Power up chip.
CLK ---- Output clock, divided crystal oscillator full swing clock.
CD ---- Carrier detect.
AM ---- Address matched.
DR ---- Receive and transmit ready.
MISO ---- SPI master input slave output.
MOSI ---- SPI mater output slave input.
SCK ---- SPI clock.
CSN ---- SPI enable.
GND ---- Ground
GND ---- Ground
- KOR : 919.7Mhz, 921.7Mhz, 923.1Mhz
- Reference Source : http://www.electrodragon.com/wp-content/uploads/2011/11/NRF905-for-arduino.zip
- Changed Code Library
PROGMEM unsigned const int freq_tab[10] = {
- TX Source : https://github.com/rdiot/rdiot-s117/blob/master/nRF905_TX.ino
#include <NRF905.h>
#include <SPI.h>
#define BUF_LEN 32
#define CONF_LEN 10
#define NRF905_CSN 10
unsigned char tx_buf[BUF_LEN]= "RDIoT TX CNT: \r\n";
unsigned char read_config_buf[CONF_LEN];
byte tx_address[4]= {0xcc,0xcc,0xcc,0xcc};
void setup()
{
unsigned char i;
pinMode(NRF905_CSN,OUTPUT); //to make sure SPI works
nrf905=NRF905(NRF905_CSN);
nrf905.init();
/**
default configuration, need to specify frequency
choose Z-Wave frequency band, support :
US 908.42Mhz
EUROPE 868.42MHz
AFRICA 868.42MHz
CHINA 868.42MHz
HK 919.82MHz
JAPAN 853.42MHz
AUSTRALIA 921.42MHz
NEW_ZEALAND 921.42MHz
BRASIL 921.42MHz
RUSSIA 896MHz
*/
nrf905.write_config(US);
nrf905.read_config(read_config_buf);
Serial.begin(9600);
for(i=0; i<10; i++)
{
Serial.print(read_config_buf[i],HEX);
Serial.print(' ');
}
tx_buf[12] = '0';
}
void loop()
{
/** transmit data packet with default TX Address */
nrf905.TX(tx_buf);
/** transmit data packet with specified TX Address */
// nrf905.TX(tx_buf, tx_address);
// NOTE: TX_Address and RX_Address must be the same
/** Count Sending times */
tx_buf[12]++;
if(tx_buf[12] == 0x3A){
tx_buf[12] = '0';
}
delay(50);
}
- RX Source : https://github.com/rdiot/rdiot-s117/blob/master/nRF905_RX.ino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <NRF905.h>
#include <SPI.h>
#define BUF_LEN 32
#define CONF_LEN 10
//NRF905 nrf905;
unsigned char rx_buf[BUF_LEN]= {0};
unsigned char read_config_buf[CONF_LEN];
unsigned char rx_address[4]= {0xcc,0xcc,0xcc,0xcc};
String str1="";
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display
void putstring(unsigned char *str)
{
while(*str){
str1 += char(*str++);
//Serial.write(*str++);
}
}
void setup()
{
char i;
pinMode(10,OUTPUT);
nrf905=NRF905(10);
/** pin/port configuration */
nrf905.init();
/***************************************************
default configuration, need to specify frequency
choose Z-Wave frequency band, support :
US 908.42Mhz
EUROPE 868.42MHz
AFRICA 868.42MHz
CHINA 868.42MHz
HK 919.82MHz
JAPAN 853.42MHz
AUSTRALIA 921.42MHz
NEW_ZEALAND 921.42MHz
BRASIL 921.42MHz
RUSSIA 896MHz
*/
nrf905.write_config(US);
/***********************************************************
read register configuration, check register value written */
nrf905.read_config(read_config_buf);
/** serial communication configurate */
Serial.begin(9600);
/** test configuration */
for(i=0; i<CONF_LEN; i++){
Serial.print(read_config_buf[i],HEX);
Serial.print(' ');
}
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.print("start LCD2004");
delay(1000);
lcd.clear();
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("S117:nRF905 RCV");
/** recieve data packet with default RX address */
nrf905.RX(rx_buf);
/** recieve data packet with specified RX address */
// nrf905.RX(rx_buf, rx_address );
// NOTE: TX_Address and RX_Address must be the same
/** send recieved data to PC through serial port */
putstring(rx_buf);
lcd.setCursor(0,1);
lcd.print(str1);
str1 = "";
delay(1);
}