基于MCU和nRF905的低功耗遠(yuǎn)距離無(wú)線傳輸系統(tǒng)
接收數(shù)據(jù)時(shí),MCU 先在nRF905的待機(jī)狀態(tài)中寫好射頻配置寄存器中的接收地址,然后將nRF905置于接收模式(PWR_UP和TRX_CE置高、TX_EN置低),nRF905就會(huì)自動(dòng)接收空中的載波。當(dāng)收到有效數(shù)據(jù)(地址匹配且校驗(yàn)正確)時(shí),DR引腳會(huì)自動(dòng)置高,MCU 在檢測(cè)到這個(gè)信號(hào)后,可以將nRF905置為待機(jī)模式,然后通過(guò)SPI總線從接收數(shù)據(jù)寄存器中讀出有效數(shù)據(jù)。nRF905接收數(shù)據(jù)的流程如圖3所示。本文引用地址:http://www.ex-cimer.com/article/156893.htm
3.3 點(diǎn)對(duì)點(diǎn)傳輸距離
傳輸距離主要由傳播損耗、工作頻率、外部損耗等因素決定。而傳播損耗是非常復(fù)雜的問(wèn)題,涉及電波傳播機(jī)理、地形地物影響、載波工作頻段和天線指向等很多因素。這里給出自由空間傳播時(shí)的無(wú)線通信距離計(jì)算公式:
20lgd[km]=Los[dB]-32.44-20lgf[MHz] (1)
式中Los為傳播損耗,f為工作頻率,d為通信距離[4]。nRF905的最大發(fā)射功率為10dBm,接收靈敏度為-100dBm,假定由大氣、阻擋物、多徑等造成的損耗為25dB,可以計(jì)算得出通信距離d=0.98km,這是理想狀況下的計(jì)算。實(shí)測(cè)結(jié)果表明,在采用高增益天線時(shí),基本可以達(dá)到800 米以上的傳輸距離;使用PCB天線時(shí)距離有所下降,但也可達(dá)到300米左右。
4 通信協(xié)議設(shè)計(jì)
4.1 MAC協(xié)議
本系統(tǒng)采用了一個(gè)簡(jiǎn)化的點(diǎn)對(duì)多點(diǎn)通訊協(xié)議,主要分為三層。第一層為物理層,由nRF905模塊硬件實(shí)現(xiàn);第二層為數(shù)據(jù)鏈路層,提供可靠的無(wú)線數(shù)據(jù)傳輸,每一個(gè)數(shù)據(jù)包都包括具體數(shù)據(jù)和一些必要的控制信息;第三層為應(yīng)用層,調(diào)用數(shù)據(jù)鏈接層完成具體的應(yīng)用邏輯,包括數(shù)據(jù)收集、數(shù)據(jù)查詢等。
整個(gè)系統(tǒng)硬件可分為兩部分,分別定義為基站模塊和節(jié)點(diǎn)模塊。節(jié)點(diǎn)模塊應(yīng)用層的功能是使數(shù)據(jù)與無(wú)線通訊相結(jié)合。對(duì)于不同的應(yīng)用,可能有不同的數(shù)據(jù)采集方法。應(yīng)用層接收數(shù)據(jù)鏈路層發(fā)來(lái)的命令,完成對(duì)數(shù)據(jù)的采集,并將數(shù)據(jù)打包發(fā)給數(shù)據(jù)鏈路層?;灸K的應(yīng)用層負(fù)責(zé)與中心控制器的鏈接。將中心控制器發(fā)來(lái)的數(shù)據(jù)校驗(yàn)處理后轉(zhuǎn)發(fā)給數(shù)據(jù)鏈路層,將數(shù)據(jù)鏈路層發(fā)來(lái)的數(shù)據(jù)打包處理后發(fā)給中心控制器。因?yàn)閰f(xié)議是分層的,相鄰層之間的聯(lián)系只是調(diào)用發(fā)送接收函數(shù),因此實(shí)現(xiàn)了各層的獨(dú)立,更換被采集的儀表或更換無(wú)線傳輸模塊所做的改動(dòng)都不會(huì)影響其他層,從而提高了系統(tǒng)的靈活性。
每個(gè)數(shù)據(jù)幀包括2B的幀頭、1B的幀類型、6B的本地地址和目的地址、1B的幀長(zhǎng)度、NB的數(shù)據(jù)、16位CRC校驗(yàn)和2B的幀尾。本系統(tǒng)針對(duì)較小數(shù)據(jù)量 的應(yīng)用設(shè)計(jì),每個(gè)數(shù)據(jù)包的有效數(shù)據(jù)長(zhǎng)度N一般小于32B,每個(gè)節(jié)點(diǎn)每一次需要傳送的數(shù)據(jù)都可以通過(guò)一個(gè)數(shù)據(jù)包發(fā)送完成。數(shù)據(jù)幀的類型包括采集命令、正確接 收確認(rèn)、重發(fā)請(qǐng)求、異常信號(hào)等,用兩個(gè)字節(jié)來(lái)標(biāo)示以便接收方分類處理。在N個(gè)字節(jié)的數(shù)據(jù)之后是16位CRC校驗(yàn)。接收方同樣計(jì)算CRC后與校驗(yàn)和比較,如 果CRC正確,則發(fā)送正確接收確認(rèn)(ACK)。如果CRC不同,即為傳輸中出現(xiàn)錯(cuò)誤,則給出出錯(cuò)反饋要求發(fā)送方重新發(fā)送數(shù)據(jù)。數(shù)據(jù)的通信流程基本可概述為 DATA+ACK形式,即發(fā)送完DATA 等待ACK,接收到DATA 則發(fā)送ACK確認(rèn)。
由于射頻芯片的高靈敏度,即使在沒(méi)有進(jìn)行數(shù) 據(jù)傳輸時(shí),其數(shù)據(jù)輸出腳也會(huì)有雜波輸出,這些雜波會(huì)被MCU的串口接收并處理。同時(shí)處于低功耗的考慮,在每個(gè)數(shù)據(jù)幀之前要先發(fā)幾個(gè)字節(jié)的同步碼以實(shí)現(xiàn)數(shù)據(jù) 同步和射頻喚醒。實(shí)踐證明四個(gè)字節(jié)的0xCC 就可以確保在有效數(shù)據(jù)幀到達(dá)前雙方通訊實(shí)現(xiàn)同步。為了準(zhǔn)確區(qū)分噪聲與有效數(shù)據(jù),分別加入了2B的幀頭(0xD792)和幀尾(0xC2D5),以確保有效 數(shù)據(jù)的確認(rèn)。
評(píng)論