nRF24L01模塊提供了非常有效和廉價的通信方式,nRF24l01模塊實際上是一個無線電收發(fā)器模塊,它工作在2.4GHz頻率上。該模塊具有同時發(fā)送和接收數(shù)據(jù)的功能,可用于各種IOT項目以創(chuàng)建無線連接。通過顯示它是一個非常小的模塊,但它的功能是驚人的。
nRF24L01/nRF24L01+模塊
nRF24L01是由Nordic半導體生產(chǎn)的一種單片無線收發(fā)器芯片,它的射頻頻段在2.4GHz~2.5GHz之間,這個頻段也屬于我們之前所說的免許可的ISM(工業(yè)、科學和醫(yī)學)開放頻段。圍繞這個芯片設計的模塊就是我們常見的nRF24L01模塊,這類模塊種類名稱也很多,比如nRF24L01模塊,nRF24L01+模塊,nRF24L01+ PA/LNA模塊。
它們其實大同小異,nRF24L01+是nRF24L01芯片的升級版本,nRF24L01只支持1Mbps和2Mbps的傳輸速率,而nRF24L01+還支持250Kbps的傳輸速率,nRF24L01+ PA/LNA模塊是在nRF24L01+模塊的基礎上集成了收發(fā)放大的外置天線信號模塊,增大了模塊的傳輸距離,如果在空曠的環(huán)境里,使用板載PCB天線的nRF24L01/nRF24L01+模塊傳輸最大距離只有100米,而PA/LNA模塊可以到達1000米。
nRF24L01/nRF24L01+模塊的工作原理
nRF24L01/nRF24L01+模塊收發(fā)在特定的頻率上,這個頻率被成為信道 (Channel)。一對或者多個模塊相互通信就必須在同一個頻率上。所以這個頻率必須在2.4GHz~2.5GHz之間的任意一個頻率上,更準確點,應該是2400MHz到2525MHz。由于每個頻率占用的信道帶寬(bandwidth)要至多1MHz,那么在同一個范圍內,如果帶寬為1MHz,理論上就可以有125個獨立的頻率可以用。
nRF24L01/nRF24L01+模塊提供了一個原生的多發(fā)一收的功能,即多個發(fā)送端可以發(fā)給一個接收端,但發(fā)送端最多是6個。每個物理信道(Channel)被分成6個軟件邏輯上的數(shù)據(jù)管道(Data Pipes),每個數(shù)據(jù)管道都有自己的配置地址。
中心的nRF24L01/nRF24L01+模塊可以同時接收其他6塊nRF24L01/nRF24L01+模塊的消息,也可以隨時停止接收變成發(fā)送模塊,向其他模塊發(fā)送消息,但發(fā)送過程不能同時,只能一次一個數(shù)據(jù)管道。
增強ShockBurst協(xié)議
nRF24L01/nRF24L01+模塊通信時,通信的信息是遵循一定格式的,這個格式就是ShockBurst協(xié)議。最初ShockBurst協(xié)議格式是只有Preamble、Address、Payload以及CRC字段的。
nRF24L01+后ShockBurst協(xié)議就升級成了增強型ShockBurst協(xié)議。加入了Packet Control字段。加入Packet Control字段有以下幾個好處:
1、可以在Packet Control字段里描述Payload字段的長度,可以說明每個包數(shù)據(jù)的長度。
2、PacketControl字段里加入了包的ID標記,即Packet ID,這樣方便后期處理數(shù)據(jù)。
3、可以規(guī)定是否要求返回應答字符(ACK),來確認發(fā)出去的數(shù)據(jù)包是否被接收。
兩個nRF24L01/nRF24L01+模塊通信時,發(fā)送端會以增強型ShockBurst協(xié)議向接收端發(fā)送包數(shù)據(jù),接收到接到包以后就會向發(fā)送端回復一個應答字符(ACK),這樣一個正常發(fā)送過程就完成了。
當然這個過程中有時候會出現(xiàn)另外兩種情況:
第一種,數(shù)據(jù)包在發(fā)送過程中丟包了,那么接收端沒收到也不會返回ACK,發(fā)送端沒等到ACK過一段時間就會重新發(fā)送一次。
第二種,數(shù)據(jù)包送到了,接收端返回ACK給發(fā)送端,但ACK丟了。那同樣,發(fā)送端沒等到ACK過一段時間還是會重新發(fā)送一次。