'nRF905'에 해당되는 글 1건

  1. 2018.01.10 nRF905 Wireless Module 433,868,915Mhz (NRF905) [S117]

nRF905 Wireless Module 433,868,915Mhz (NRF905) [S117]



 


 

https://www.youtube.com/watch?v=IgzJsUzVhBk


GitHubhttps://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);
}


 

Posted by RDIoT
|