Taillieu.Info

More Than a Hobby..

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /customers/3/2/5/taillieu.info/httpd.www/templates/taillieuinfo_joomla3_rev1/functions.php on line 194

nRF905 AVR/Arduino Library/Driver

The nRF905 is a radio transceiver IC similar to the well known nRF24L01, but operates at 433/898/915MHz instead of 2.4GHz, has a much longer range and a few extra IO pins. However the nRF905 data rate is only 50Kbps compared to nRF24L01′s 2Mbps.

This library offers quite a bit of flexibility: Optional use of interrupts, 2 of the connections to the module are optional since their states can also be accessed by the ICs status register, and supports basic collision avoidance.

Download from GitHub
Documentation

nRF905ATmega48/88/168/328Arduino UnoDescription
VCC 3.3V 3.3V Power (3.3V)
CE D7 (13) 7 Stand by – High = TX/RX mode, Low = standby
TXE B1 (15) 9 Transmit or receive mode – High = transmit, Low = receive
PWR B0 (14) 8 Power up – High = on, Low = off
CD D2 (4) 2 Carrier detect – High when a signal is detected, for collision avoidance
AM - - Address Match – High when receiving a packet that has the same address as the one set for this device, optional since state is stored in register, not used by this library
DR D3 (5) 3 Data Ready – High when finished transmitting/High when new data received, optional since state is stored in register, if interrupts are used this pin must be connected
SO B4 (18) 12 SPI MISO
SI B3 (17) 11 SPI MOSI
SCK B5 (19) 13 SPI SCK
CSN B2 (16) 10 SPI SS
GND GND GND Ground

Some of the module pin names differ from the IC pin names in the datasheet:

ModuleIC
CE TRX_EN
TXE TX_EN

The nRF905 is not 5V compatible, so some level conversions will need to be done with the Arduino outputs, a simple voltage divider or resistor and zener diode will do the trick, only TXE, CE, PWR, SI, SCK and CSN pins need level conversion (not CD, AM, DR and SO).

DividerZener
res_div zener

nrf905_bb

The nRF905 has 511 channels ranging 422.4MHz – 473.5MHz in 100KHz steps on the 433MHz band and 844.8MHz – 947MHz in 200KHz steps on the 868/915MHz band (remember to check which frequencies are legal in your country!), but each channel overlaps adjacent channels so there is only a total of 170 usable channels at once.

Searching for nRF905, PTR8000 and PTR8000+ should yield some results for modules on Ebay and DealExtreme, you should be able to get 2 for around £10.

Library coding tips

  • http://blog.zakkemble.co.uk/wp-content/themes/graphene/images/list-style-image.png);">You can call nRF905_receive() straight after calling nRF905_sendData(), this makes the radio go into receive mode once the payload has finished transmitting.
  • http://blog.zakkemble.co.uk/wp-content/themes/graphene/images/list-style-image.png);">Calling an nRF905_set***() function will put the radio into standby mode (radio must be in standby mode to change registers), if you want it to carry on receiving you must call nRF905_receive() again.

Nitty-gritty radio stuff
Actual air data rate of nRF905 is 100Kbps, but the data is Manchester encoded which halves it to 50Kbps. The modulation is GFSK with ±50KHz deviation. The radio also adds a few extra bits of data to the address and payload; a preamble and CRC.


Transmitted packet
Preamble
10 bits
Address
1 or 4 bytes
Payload
1 – 32 bytes
CRC
0 – 2 bytes

The CRC is used to detect errors in the received data. Having a CRC doesn’t eliminate all bad packets, there is always a small chance of a bad packet passing the CRC. Using larger CRCs helps to reduce the chance.

Transmission time
The sizes of the address, payload and CRC can be adjusted for a balance between throughput and latency.


Example configurations
Config #AddressPayloadCRC
Config 1 4 32 2
Config 2 1 4 1
Config 3 1 1 0

Throughput and latency for each configuration
Config #Throughput (bps)Latency (ms)
Config 1 36940 6.93
Config 2 17680 1.81
Config 3 6838 1.17


Throughput is how much useful data can be sent (the payload part), assuming no delays for setting the payload.
Latency is how long it takes for the transmission to complete.
Switching from standby mode to receive or transmit mode takes max 650us and switching between receive and transmit modes takes max 550us.

Transmission time can be worked out with:


t = tstartup + tpreamble + ((Naddress + Npayload + NCRC) / BR)

tstartup is the time to switch mode as stated above (650us / 550us).
tpreamble is 200us for the 10 bit preamble.
Naddress, Npayload and NCRC are the address, payload and CRC sizes in bits.
BR is the bit rate which is 50,000.

For config 1, switching from standby to transmit:


t = 0.00065 + 0.0002 + ((32 + 256 + 16) / 50000)
t = 0.00693 seconds (6.93ms)

NRF905 QPSK Transceiver (433MHz)

 NRF905 wireless module PTR8000 (+) wireless transmission module NF905SE band antenna (C3B5)

NRF905 Module Arduino
1 VCC 3V3 (from LDO)
2 TXE Pin 5
3 CE Pin 6
4 PWR A0
5 CLK  
6 CD Pin 2
7 AM Pin 7
8 DR Pin 3
9 MISO MISO
10 MOSI MOSI
11 SCK SCK
12 CSN Pin 4
13 GND GND
14 GND GND

You could visit our github page forArduino NRF905 library. 


 

 

Contents

 [hide

Size

Nrf906 size.png

Pin Definition

  • 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

Example_with_arduino

Example with arduino.png

Usage

There are two examples in this code, one is sending data and another is receiving data. File:Get the code here.
Set different bands for different countries, here is very easy to change: nrf905.write_config(US); Just enter your country or area as a parameter in this function. In fact, you have choices:

CountryBand
US 908.42Mhz
EU 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

upload the two examples into two arduino boards, one for sending and other one for receiving:
Nrf905 send and receive.png
On the receiving end, you should be able to see:
Hi, Arduino 0,
Hi, Arduino 1,
Hi, Arduino 2,

Documentation

 


 

http://blog.zakkemble.co.uk/nrf905-avrarduino-librarydriver/

The nRF905 is a radio transceiver IC similar to the well known nRF24L01, but operates at 433/898/915MHz instead of 2.4GHz, has a much longer range and a few extra IO pins. However the nRF905 data rate is only 50Kbps compared to nRF24L01′s 2Mbps.

This library offers quite a bit of flexibility: Optional use of interrupts, 2 of the connections to the module are optional since their states can also be accessed by the ICs status register, and supports basic collision avoidance.

Download from GitHub
Documentation

 

 

nRF905ATmega48/88/168/328Arduino UnoDescription
VCC 3.3V 3.3V Power (3.3V)
CE D7 (13) 7 Stand by – High = TX/RX mode, Low = standby
TXE B1 (15) 9 Transmit or receive mode – High = transmit, Low = receive
PWR B0 (14) 8 Power up – High = on, Low = off
CD D2 (4) 2 Carrier detect – High when a signal is detected, for collision avoidance
AM - - Address Match – High when receiving a packet that has the same address as the one set for this device, optional since state is stored in register, not used by this library
DR D3 (5) 3 Data Ready – High when finished transmitting/High when new data received, optional since state is stored in register, if interrupts are used this pin must be connected
SO B4 (18) 12 SPI MISO
SI B3 (17) 11 SPI MOSI
SCK B5 (19) 13 SPI SCK
CSN B2 (16) 10 SPI SS
GND GND GND Ground

 

 

Some of the module pin names differ from the IC pin names in the datasheet:

 

ModuleIC
CE TRX_EN
TXE TX_EN

 

 

The nRF905 is not 5V compatible, so some level conversions will need to be done with the Arduino outputs, a simple voltage divider or resistor and zener diode will do the trick, only TXE, CE, PWR, SI, SCK and CSN pins need level conversion.

 

 

DividerZener
res_div zener

 

 

The nRF905 has 511 channels ranging 422.4MHz – 473.5MHz in 100KHz steps on the 433MHz band and 844.8MHz – 947MHz in 200KHz steps on the 868/915MHz band (remember to check which frequencies are legal in your country!), but each channel overlaps adjacent channels so there is only a total of 170 usable channels at once.

Searching for nRF905, PTR8000 and PTR8000+ should yield some results for modules on Ebay and DealExtreme, you should be able to get 2 for around £10.

 

Tips and things to watch out for

  • You can call nRF905_receive() straight after calling nRF905_sendData(), this makes the radio go into receive mode once the payload has finished transmitting.

 

  • Calling an nRF905_set***() function will put the radio into standby mode (radio must be in standby mode to change registers), if you want it to carry on receiving you must call nRF905_receive() again.

 

Nitty-gritty radio info
Actual air data rate of nRF905 is 100Kbps, but the data is Manchester encoded which halves it to 50Kbps. The modulation is GFSK with ±50KHz deviation. The radio also adds a few extra bits of data to the address and payload; a preamble and CRC.

 


Transmitted packet

 

Preamble
10 bits
Address
1 or 4 bytes
Payload
1 – 32 bytes
CRC
0 – 2 bytes

 

 

The CRC is used to detect errors in the received data. Having a CRC doesn’t eliminate all bad packets, there is always a small chance of a bad packet passing the CRC. Using larger CRCs helps to reduce the chance.

Transmission time
The sizes of the address, payload and CRC can be adjusted for a balance between throughput and latency.

 


Example configurations

 

SizeConfig 1Config 2Config 3
Address 4 1 1
Payload 32 4 1
CRC 2 1 0

 

 

 


Throughput and latency for each configuration

 

 Config 1Config 2Config 3
Throughput (bps) 36940 17680 6838
Latency (ms) 6.93 1.81 1.17

 


Throughput is how much useful data can be sent (the payload part), assuming no delays for setting the payload.
Latency is how long it takes for the transmission to complete.
Switching from standby mode to receive or transmit mode takes max 650us and switching between receive and transmit modes takes max 550us.

 

Transmission time can be worked out with:

 


t = tstartup + tpreamble + ((Naddress + Npayload + NCRC) / BR)

 

tstartup is the time to switch mode as stated above (650us / 550us).
tpreamble is 200us for the 10 bit preamble.
Naddress, Npayload and NCRC are the address, payload and CRC sizes in bits.
BR is the bit rate which is 50,000.

For config 1, switching from standby to transmit:


t = 0.00065 + 0.0002 + ((32 + 256 + 16) / 50000)
t = 0.00693 seconds (6.93ms)

 

 


Product Description

 

Fully compatible with (PTR8000 +) module
Product name: NRF905  module
 product units: (including the antenna)
Product synopsis:   communication module
 
Areas of application:
Vehicle monitoring, remote control, telemetry, small wireless networks, wireless meter reading, entrance guard system, paging, industrial data collection system, wireless identification tags,, non-contact RF smart card, small wireless data terminals, fire safety systems, wireless remote control system, biological signal acquisition, hydrological and meteorological monitoring, robot control, wireless 485/422 232 data communication, wireless data communications, digital audio, digital image transmission, etc.
Features:
Three one frequency transceiver, and work for international ISM frequency band 433/868/915 MHZ GMSK modulation, anti-interference ability is strong, especially suitable for industrial control occasions as DSS + PLL frequency synthesis technology, the frequency stability is extremely good high sensitivity, low - 100 DBM working voltage (2.7 V), low consumption, standby was only 1 ua, can meet the requirements of low power consumption equipment maximum transmitted power of + 10 DBM with multiple channels (up to more than 170), particularly satisfying need multi channel work special occasions work rate up to 76.8 Kbps
Peripheral device (10), at least basic without debugging. With low transmission power and high receiving sensitivity of the design, use need not apply for license, the use of open furthest distance of up to 1000 meters * * with a specific use environment and the components? Ask  drain garlic street?
Electrical properties:
NRF905 working frequency: 915 MHZ / 433/868
Channel number: 170
Function: transmitting/receiving
Frequency stabilization method: PLL
Modulation methods: FSK/GMSK
The maximum output power: + 10 DBM
Sensitivity: - 100 DBM
Maximum work rate: 76.8 Kbit/s
Operating voltage: 2.7-3.3 V