微型智能無(wú)線(xiàn)數(shù)傳模塊
我們的模塊使用Nordic公司的nRF24L01芯片開(kāi)發(fā)而成,nRF24L01的每一個(gè)功能都經(jīng)過(guò)仔細(xì)的評(píng)估和選擇,來(lái)獲得最小的成本和優(yōu)化的性能。NORDIC的解決方案將為便攜式采用電池供電的2.4GHz產(chǎn)品提供絕對(duì)低成本高性能的解決方案。nRF24L01特別適合采用鈕扣電池供電的2.4G應(yīng)用,整個(gè)解決方案包括鏈路層和MultiCeiver功能提供了比現(xiàn)有的 nRF24XX 更多的功能 和更低的電源消耗,這一點(diǎn)已經(jīng)把競(jìng)爭(zhēng)對(duì)手遠(yuǎn)遠(yuǎn)的拋在后面,與目前的藍(lán)牙技術(shù)相比在提供更高速率的同時(shí),而只需花更小的功耗。
nRF24L01為滿(mǎn)足全球范圍內(nèi)的無(wú)線(xiàn)電管理規(guī)定設(shè)計(jì)。這個(gè)芯片包括載波監(jiān)測(cè)功能,可以用于在WLAN環(huán)境下的可靠通信。高速率和獨(dú)特的切換時(shí)間減少了與跳頻系統(tǒng)如藍(lán)牙出現(xiàn)碰撞的可能。
應(yīng)用領(lǐng)域:
水電氣三表、停車(chē)場(chǎng)咪表、智能卡、門(mén)禁考勤、無(wú)線(xiàn)排隊(duì)、貨場(chǎng)物流、防盜報(bào)警、智能儀器儀表、無(wú)功補(bǔ)償、智能教學(xué)設(shè)備、體質(zhì)檢測(cè)智能設(shè)備、測(cè)量設(shè)備、自動(dòng)控制、家居智能化、遙控、遙測(cè)、無(wú)線(xiàn)抄表、門(mén)禁系統(tǒng)、小區(qū)傳呼、工業(yè)數(shù)據(jù)采集系統(tǒng)、無(wú)線(xiàn)標(biāo)簽、身份識(shí)別、非接觸RF 智能卡、小型無(wú)線(xiàn)數(shù)據(jù)終端、安全防火系統(tǒng)、無(wú)線(xiàn)遙控系統(tǒng)、生物信號(hào)采集、無(wú)線(xiàn)232、無(wú)線(xiàn)422/485 數(shù)據(jù)通信等領(lǐng)域的數(shù)據(jù)控制和數(shù)據(jù)抄錄,購(gòu)買(mǎi)我們產(chǎn)品的客戶(hù)我們提供10多M的24L01應(yīng)用資料。
微型智能無(wú)線(xiàn)數(shù)傳模塊 缺貨!停止郵購(gòu)(一對(duì)可以組成通訊)
一、模塊介紹
(1) 2.4Ghz 全球開(kāi)放ISM 頻段免許可證使用
(2) 最高工作速率2Mbps,高效GFSK調(diào)制,抗干擾能力強(qiáng),特別適合工業(yè)控制場(chǎng)合
(3) 126 頻道,滿(mǎn)足多點(diǎn)通信和跳頻通信需要
(4) 內(nèi)置硬件CRC 檢錯(cuò)和點(diǎn)對(duì)多點(diǎn)通信地址控制
(5) 低功耗1.9~3.6V 工作,待機(jī)模式下?tīng)顟B(tài)為22uA;掉電模式下為900nA
(6) 內(nèi)置2.4Ghz 天線(xiàn),體積小巧15*29mm
(7) 模塊可軟件設(shè)地址,只有收到本機(jī)地址時(shí)才會(huì)輸出數(shù)據(jù)(提供中斷指示),可接各種單片機(jī)編程非常方便
(8) 內(nèi)置專(zhuān)門(mén)穩(wěn)壓電路,使用各種電源包括DC/DC 開(kāi)關(guān)電源均有很好的通信效果
(9) 2.54mm間距接口,DIP封裝
(10)與51系列單片機(jī)P0口連接時(shí)候,需要加10K的上拉電阻,與其余口連接不需要。
(11)工作于Enhanced ShockBurst 具有Automatic packethandling, Auto packet transaction
handling,具有可選的內(nèi)置包應(yīng)答機(jī)制,極大的降低丟包率。
(12)其他系列的單片機(jī),如果是5V的,請(qǐng)參考該系列單片機(jī)IO口輸出電流大小,如果超過(guò)10mA,需要串聯(lián)電阻分壓,否則容易燒毀模塊! 如果是3.3V的,可以直接和RF24l01模塊的IO口線(xiàn)連接。比如AVR系列單片機(jī)如果是5V的,一般串接2K的電阻
模塊的傳輸距離在理想條件下可以達(dá)到100米,經(jīng)過(guò)我們測(cè)試測(cè)試在1M速率下開(kāi)闊地可以達(dá)到40米,如果降低速率可以到80米左右。隔墻大約能傳20米左右,無(wú)線(xiàn)傳輸受太多因素影響沒(méi)法理想化。
這是微型智能無(wú)線(xiàn)數(shù)傳模塊的內(nèi)部電路圖,點(diǎn)擊這里可以下載NRF24L01的詳細(xì)資料
二、接口電路:
(1) VCC腳接電壓范圍為1.9~3.6V之間,超過(guò)3.6V將會(huì)燒毀模塊。推薦電壓3.3V左右。
(2) 除電源VCC和接地端,其余腳都可以直接和普通的5V單片機(jī)IO口直接相連,無(wú)需電平轉(zhuǎn)換。當(dāng)然對(duì)3V左右的單片機(jī)更加適用了。
(3) 硬件上面沒(méi)有SPI的單片機(jī)也可以控制本模塊,用普通單片機(jī)IO口模擬SPI不需要單片機(jī)真正的串口介入,只需要普通的單片機(jī)IO口就可以了,當(dāng)然用串口也可以了。
三、模塊結(jié)構(gòu)和引腳說(shuō)明
四、模塊的工作模式有四種:收發(fā)模式、配置模式、空閑模式、關(guān)機(jī)模式由PWR_UP register 、PRIM_RX register和CE決定,詳見(jiàn)下表:
4.1 收發(fā)模式有Enhanced ShockBurstTM收發(fā)模式、ShockBurstTM收發(fā)模式和直接收發(fā)模式三種,收發(fā)模式由器件配置字決定,具體配置將在器件配置部分詳細(xì)介紹。
4.1.1 Enhanced ShockBurstTM收發(fā)模式。Enhanced ShockBurstTM收發(fā)模式下,使用片內(nèi)的先入先出堆棧區(qū),數(shù)據(jù)低速?gòu)奈⒖刂破魉腿,但高?1Mbps)發(fā)射,這樣可以盡量節(jié)能,因此,使用低速的微控制器也能得到很高的射頻數(shù)據(jù)發(fā)射速率。與射
頻協(xié)議相關(guān)的所有高速信號(hào)處理都在片內(nèi)進(jìn)行,這種做法有三大好處:盡量節(jié)能;低的系統(tǒng)費(fèi)用(低速微處理器也能進(jìn)行高速射頻發(fā)射);數(shù)據(jù)在空中停留時(shí)間短,抗干擾性高。Enhanced
ShockBurstTM技術(shù)同時(shí)也減小了整個(gè)系統(tǒng)的平均工作電流。
在Enhanced ShockBurstTM收發(fā)模式下, NRF24L01自動(dòng)處理字頭和CRC校驗(yàn)碼。在接收數(shù)據(jù)時(shí),自動(dòng)把字頭和CRC校驗(yàn)碼移去。在發(fā)送數(shù)據(jù)時(shí),自動(dòng)加上字頭和CRC校驗(yàn)碼,在發(fā)送模式下,置CE為高,至少10us,將時(shí)發(fā)送過(guò)程完成后。
4.1.1.1 Enhanced ShockBurstTM發(fā)射流程
A. 把接收機(jī)的地址和要發(fā)送的數(shù)據(jù)按時(shí)序送入NRF24L01;
B. 配置CONFIG寄存器,使之進(jìn)入發(fā)送模式。
C. 微控制器把CE置高(至少10us),激發(fā)NRF24L01進(jìn)行Enhanced ShockBurstTM發(fā)射;
D. N24L01的Enhanced ShockBurstTM發(fā)射
(1) 給射頻前端供電;
(2) 射頻數(shù)據(jù)打包(加字頭、CRC校驗(yàn)碼);
(3) 高速發(fā)射數(shù)據(jù)包;
(4) 發(fā)射完成,NRF24L01進(jìn)入空閑狀態(tài)。
4.1.1.2 Enhanced ShockBurstTM接收流程
A. 配置本機(jī)地址和要接收的數(shù)據(jù)包大小;
B. 配置CONFIG 寄存器,使之進(jìn)入接收模式,把CE置高。
C. 130us后,NRF24L01進(jìn)入監(jiān)視狀態(tài),等待數(shù)據(jù)包的到來(lái);
D.當(dāng)接收到正確的數(shù)據(jù)包(正確的地址和CRC校驗(yàn)碼),NRF2401自動(dòng)把字頭、地址和CRC校驗(yàn)位移去;
E. NRF24L01通過(guò)把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中斷)通知微控制器;F. 微控制器把數(shù)據(jù)從NewMsg_RF2401
讀出;
G. 所有數(shù)據(jù)讀取完畢后,可以清除STATUS寄存器。NRF2401可以進(jìn)入四種主要的模式之一。
4.1.2 ShockBurstTM收發(fā)模式 ShockBurstTM收發(fā)模式可以與Nrf2401a,02,E1及E2兼容,具體看N-RF2401文檔。
4.2 空閑模式 NRF24L01的空閑模式是為了減小平均工作電流而設(shè)計(jì),其最大的優(yōu)點(diǎn)是,實(shí)現(xiàn)節(jié)能的同時(shí),縮短芯片的起動(dòng)時(shí)間。在空閑模式下,部分片內(nèi)晶振仍在工作,此時(shí)的工作電流跟外部晶振的頻率有關(guān)。
4.4 關(guān)機(jī)模式 在關(guān)機(jī)模式下,為了得到最小的工作電流,一般此時(shí)的工作電流為900nA左右。關(guān)機(jī)模式下,配置字的內(nèi)容也會(huì)被保持在NRF2401片內(nèi),這是該模式與斷電狀態(tài)最大的區(qū)別。
五、配置NRF24L01模塊 NRF2401的所有配置工作都是通過(guò)SPI完成,共有30字節(jié)的配置字。
我們推薦NRF24L01工作于Enhanced ShockBurstTM 收發(fā)模式,這種工作模式下,系統(tǒng)的程序編制會(huì)更加簡(jiǎn)單,并且穩(wěn)定性也會(huì)更高,因此,下文著重介紹把NRF24L01配置為Enhanced
ShockBurstTM收發(fā)模式的器件配置方法。
ShockBurstTM的配置字使NRF24L01能夠處理射頻協(xié)議,在配置完成后,在NRF24L01工作的過(guò)程中,只需改變其最低一個(gè)字節(jié)中的內(nèi)容,以實(shí)現(xiàn)接收模式和發(fā)送模式之間切換。
ShockBurstTM的配置字可以分為以下四個(gè)部分:
數(shù)據(jù)寬度:聲明射頻數(shù)據(jù)包中數(shù)據(jù)占用的位數(shù)。這使得NRF24L01能夠區(qū)分接收數(shù)據(jù)包中的數(shù)據(jù)和CRC校驗(yàn)碼;
地址寬度:聲明射頻數(shù)據(jù)包中地址占用的位數(shù)。這使得NRF24L01能夠區(qū)分地址和數(shù)據(jù);
地址:接收數(shù)據(jù)的地址,有通道0到通道5的地址;
CRC:使NRF24L01能夠生成CRC校驗(yàn)碼和解碼。
當(dāng)使用NRF24L01片內(nèi)的CRC技術(shù)時(shí),要確保在配置字(CONFIG的EN_CRC) 中CRC校驗(yàn)被使能,并且發(fā)送和接收使用相同的協(xié)議。NRF24L01配置字的CONFIG寄存器的位描述如下表所示。NRF24L01
CONFIG 配置字描述
這是和89C2051單片機(jī)的應(yīng)用線(xiàn)路圖,點(diǎn)擊這里可以下載51系列的C語(yǔ)言程序和匯編語(yǔ)言程序資料
配件:調(diào)試電路用杜邦免焊接連接線(xiàn)(一捆20根 優(yōu)惠價(jià):6元,每根:0.3元一根)
這是雙頭20厘米長(zhǎng)的杜邦線(xiàn),采用優(yōu)質(zhì)彩虹12股排線(xiàn)通過(guò)機(jī)器自動(dòng)加工,品質(zhì)有保證,現(xiàn)在的電子模塊一般都采用標(biāo)準(zhǔn)的插針作為電路接口,杜邦線(xiàn)可以非常牢靠地和插針連接,無(wú)需焊接,可以快速進(jìn)行電路試驗(yàn),40位直排針 1元一根 。
六、參考源代碼
#include <reg51.h>
//<nRF2401_Pins 對(duì)應(yīng)引腳>
sbit MISO =P1^3;
sbit MOSI =P1^4;
sbit SCK =P1^5;
sbit CE =P1^6;
sbit CSN =P3^7;
sbit IRQ =P1^2;
sbit LED2 =P3^5;
sbit LED1 =P3^4;
sbit KEY1 =P3^0;
sbit KEY2 =P3^1;
// SPI(nRF24L01) commands
#define READ_REG 0x00 // Define read command to register
#define WRITE_REG 0x20 // Define write command to register
#define RD_RX_PLOAD 0x61 // Define RX payload register address
#define WR_TX_PLOAD 0xA0 // Define TX payload register address
#define FLUSH_TX 0xE1 // Define flush TX register command
#define FLUSH_RX 0xE2 // Define flush RX register command
#define REUSE_TX_PL 0xE3 // Define reuse TX payload register command
#define NOP 0xFF // Define No Operation, might be used to read status register
//***************************************************//
// SPI(nRF24L01) registers(addresses)
#define CONFIG 0x00 // 'Config' register address
#define EN_AA 0x01 // 'Enable Auto Acknowledgment' register address
#define EN_RXADDR 0x02 // 'Enabled RX addresses' register address
#define SETUP_AW0x03 // 'Setup address width' register address
#define SETUP_RETR 0x04 // 'Setup Auto. Retrans' register address
#define RF_CH 0x05 // 'RF channel' register address
#define RF_SETUP 0x06 // 'RF setup' register address
#define STATUS 0x07 // 'Status' register address
#define OBSERVE_TX 0x08 // 'Observe TX' register address
#define CD 0x09 // 'Carrier Detect' register address
#define RX_ADDR_P0 0x0A // 'RX address pipe0' register address
#define RX_ADDR_P1 0x0B // 'RX address pipe1' register address
#define RX_ADDR_P2 0x0C // 'RX address pipe2' register address
#define RX_ADDR_P3 0x0D // 'RX address pipe3' register address
#define RX_ADDR_P4 0x0E // 'RX address pipe4' register address
#define RX_ADDR_P5 0x0F // 'RX address pipe5' register address
#define TX_ADDR 0x10 // 'TX address' register address
#define RX_PW_P0 0x11 // 'RX payload width, pipe0' register address
#define RX_PW_P1 0x12 // 'RX payload width, pipe1' register address
#define RX_PW_P2 0x13 // 'RX payload width, pipe2' register address
#define RX_PW_P3 0x14 // 'RX payload width, pipe3' register address
#define RX_PW_P4 0x15 // 'RX payload width, pipe4' register address
#define RX_PW_P5 0x16 // 'RX payload width, pipe5' register address
#define FIFO_STATUS 0x17 // 'FIFO Status Register' register address
//------------------------------------------------------------
// 寫(xiě)一個(gè)字節(jié)到24L01,同時(shí)讀出一個(gè)字節(jié)
uchar SPI_RW(uchar byte)
{
uchar bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
{
MOSI = (byte & 0x80); // output 'byte', MSB to MOSI
byte = (byte << 1); // shift next bit into MSB..
SCK = 1; // Set SCK high..
byte |= MISO; // capture current MISO bit
SCK = 0; // ..then set SCK low again
}
return(byte); // return read byte
}
// 向寄存器reg寫(xiě)一個(gè)字節(jié),同時(shí)返回狀態(tài)字節(jié)
uchar SPI_RW_Reg(BYTE reg, BYTE value)
{
uchar status;
CSN = 0; // CSN low, init SPI transaction
status = SPI_RW(reg); // select register
SPI_RW(value); // ..and write value to it..
CSN = 1; // CSN high again
return(status); // return nRF24L01 status byte
}
// 讀出bytes字節(jié)的數(shù)據(jù)
uchar SPI_Read_Buf(BYTE reg, BYTE *pBuf, BYTE bytes)
{
uchar status,byte_ctr;
CSN = 0; // Set CSN low, init SPI tranaction
status = SPI_RW(reg); // Select register to write to and read status byte
for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)
pBuf[byte_ctr] = SPI_RW(0); //
CSN = 1;
return(status); // return nRF24L01 status byte
}
// 寫(xiě)入bytes字節(jié)的數(shù)據(jù)
uchar SPI_Write_Buf(BYTE reg, BYTE *pBuf, BYTE bytes)
{
uchar status,byte_ctr;
CSN = 0;
status = SPI_RW(reg);
for(byte_ctr=0; byte_ctr<bytes; byte_ctr++) //
SPI_RW(*pBuf++);
CSN = 1; // Set CSN high again
return(status); //
}
// 接收函數(shù),返回1表示有數(shù)據(jù)收到,否則沒(méi)有數(shù)據(jù)接受到
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
{
unsigned char revale=0;
// set in RX mode
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // Set PWR_UP bit, enable CRC(2 bytes)
&
Prim:RX. RX_DR enabled..
CE = 1; // Set CE pin high to enable RX device
dalay130us();
sta=SPI_Read(STATUS); // read register STATUS's value
if(RX_DR) // if receive data ready (RX_DR) interrupt
{
CE = 0; // stand by mode
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from
RX_FIFO buffer
revale =1;
}
SPI_RW_Reg(WRITE_REG+STATUS,sta);// clear RX_DR or TX_DS or MAX_RT interrupt
flag
return revale;
}
// 發(fā)送函數(shù)
void nRF24L01_TxPacket(unsigned char * tx_buf)
{
CE=0;
//SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // Writes
TX_Address to nRF24L01
//SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); //
RX_Addr0 same as TX_Adr for Auto.Ack
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // Writes data to TX payload
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // Set PWR_UP bit, enable CRC(2 bytes)
&
Prim:TX. MAX_RT & TX_DS enabled..
CE=1;
dalay10us();
CE=0;
}
// 配置函數(shù)
void nRF24L01_Config(void)
{
//initial io
CE=0; // chip enable
CSN=1; // Spi disable
SCK=0; // Spi clock line init high
CE=0;
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // Set PWR_UP bit, enable CRC(2 bytes)
&
Prim:RX. RX_DR enabled..
SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // Enable Pipe0
SPI_RW_Reg(WRITE_REG + SETUP_AW, 0x02); // Setup address width=5 bytes
SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...
SPI_RW_Reg(WRITE_REG + RF_CH, 0);
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // TX_PWR:0dBm, Datarate:1Mbps,
LNA:HCURR
SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH);
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); CE=1; //
}
全部產(chǎn)品價(jià)格 銀行帳號(hào)及郵購(gòu)需知 訂貨流程 立即訂貨!
手機(jī):15358760528 電話(huà)/傳真:0513-83342087 聯(lián)系人:謝剛
辦公地址:郵編226200 江蘇省啟東市江海中路511號(hào)水晶苑 A1
電子制作實(shí)驗(yàn)室網(wǎng)站 www.xinjiapolvyou.cn 啟東剛成電子有限公司簡(jiǎn)介