錢光明 易超
摘 ? 要:跳頻是當(dāng)今無線通信中的一個(gè)重要抗干擾手段。文章以WiFi模塊ESP8266,nRF24L01無線模塊和STM32F103單片機(jī)組成無線節(jié)點(diǎn),設(shè)計(jì)多頻率跳頻及干擾演示實(shí)驗(yàn)。該設(shè)計(jì)在教學(xué)過程中不但能夠直觀地對(duì)跳頻和干擾效果進(jìn)行演示,而且因?yàn)榭拷布哟尉幊?,有利于引?dǎo)學(xué)生學(xué)習(xí)單片機(jī)、WiFi網(wǎng)絡(luò)以及無協(xié)議無線通信中的許多基本原理,較好地激發(fā)學(xué)生的學(xué)習(xí)熱情。
關(guān)鍵詞:跳頻;節(jié)點(diǎn);ESP8266;nRF24L01
1 ? ?設(shè)計(jì)跳頻及相關(guān)干擾實(shí)驗(yàn)
物聯(lián)網(wǎng)課程的相關(guān)實(shí)驗(yàn)如果只是在高層進(jìn)行“傻瓜式”的演示,有可能使學(xué)生在學(xué)習(xí)后感到底氣不足。應(yīng)盡量下到單片機(jī)的裸機(jī)和嵌入式總線的層次,盡量用C語(yǔ)言來設(shè)計(jì)有關(guān)實(shí)驗(yàn)。本文用nRF24L01無線模塊和STM32F103RCT6單片機(jī)構(gòu)成第一類無線節(jié)點(diǎn)[1-2],用ESP8266和同種型號(hào)的單片機(jī)來構(gòu)成第二類無線節(jié)點(diǎn)[3],對(duì)跳頻以及相關(guān)的干擾實(shí)驗(yàn)進(jìn)行設(shè)計(jì)。首先,用兩個(gè)一類無線節(jié)點(diǎn)實(shí)現(xiàn)可靠的多頻率跳頻通信;其次,加入一個(gè)同類節(jié)點(diǎn)產(chǎn)生干擾載波,觀察跳頻時(shí)哪些信道的通信會(huì)受到干擾;再次,用一個(gè)二類無線節(jié)點(diǎn)與一個(gè)帶無線網(wǎng)卡的PC機(jī)作為WiFi的通信雙方,實(shí)現(xiàn)可靠的通信,再加入干擾節(jié)點(diǎn),觀察WiFi通信的受影響程度。該設(shè)計(jì)不但可以引導(dǎo)學(xué)生進(jìn)行多知識(shí)點(diǎn)的學(xué)習(xí),而且能夠展示無線通信領(lǐng)域兩個(gè)重要的基本原理:(1)跳頻是抗干擾的重要手段。(2)在同一波段,頻帶越寬,能夠?qū)ζ湓斐筛蓴_的頻率源也就越多。
2 ? ?基于nRF24L01的跳頻實(shí)驗(yàn)(實(shí)驗(yàn)一)
因?yàn)楸容^擁擠的無線空間,跳頻在當(dāng)今無線通信領(lǐng)域是一種重要的抗干擾手段[4],首先,本實(shí)驗(yàn)演示的是兩個(gè)節(jié)點(diǎn)(發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn))在不加干擾節(jié)點(diǎn)時(shí)的跳頻通信;其次,演示加入干擾節(jié)點(diǎn)后通信的受影響情況。
實(shí)驗(yàn)組網(wǎng)中,每一個(gè)節(jié)點(diǎn)的硬件基本組成相同:nRF24L01無線模塊通過SPI總線與32位單片機(jī)STM32F103RCT6相接,如圖1中發(fā)送節(jié)點(diǎn)所示。
每次通信時(shí),接收節(jié)點(diǎn)和發(fā)送節(jié)點(diǎn)需保持同步跳頻才有意義,即發(fā)送節(jié)點(diǎn)用中心頻率f1發(fā)送數(shù)據(jù)包時(shí),接收節(jié)點(diǎn)必須已準(zhǔn)備好用中心頻率f1來接收。為了實(shí)現(xiàn)多頻率跳頻,用到了STM32F103單片機(jī)中的時(shí)間片機(jī)制。如圖2所示,時(shí)間片的長(zhǎng)度取為2 ms。每一個(gè)時(shí)間片中,要選定一個(gè)不同的中心頻率,用該頻率完成一個(gè)數(shù)據(jù)包的發(fā)送和接收。
實(shí)驗(yàn)時(shí),首先,復(fù)位接收節(jié)點(diǎn),讓它一直以中心頻率fs(本實(shí)驗(yàn)取2 400 MHz)等待接收同步包。其次,啟動(dòng)發(fā)送節(jié)點(diǎn),以fs發(fā)送同步包。如圖2所示,發(fā)送方成功發(fā)送同步包,接收方成功接收同步包后,都啟動(dòng)各自的2 ms定時(shí)器,進(jìn)入第一個(gè)時(shí)間片。為了使收發(fā)雙方在A點(diǎn)取得同步,發(fā)送方在發(fā)送結(jié)束時(shí)需要等待約100 μs再啟動(dòng)定時(shí)器。再次,在圖2中A點(diǎn),接收方選定一個(gè)中心頻率f,并進(jìn)入接收狀態(tài)。本實(shí)驗(yàn)中,f的取值為原中心頻率加2 MHz,即2 402 MHz。后續(xù)時(shí)間片中,中心頻率的設(shè)置也采用原值加2的方式。共實(shí)驗(yàn)40個(gè)時(shí)間片,最后一個(gè)時(shí)間片的中心頻率為2 480 MHz。
到圖2中的B點(diǎn)時(shí),發(fā)送方選定中心頻率f為2 402 MHz,并進(jìn)入發(fā)送狀態(tài),發(fā)出數(shù)據(jù)包。接收方早就做好接收準(zhǔn)備了。到C點(diǎn),接收方判斷是否收到了數(shù)據(jù)包。然后,在C點(diǎn)和D點(diǎn)之間,收發(fā)雙方還可以做一些后續(xù)處理。實(shí)驗(yàn)中,采用淘寶網(wǎng)購(gòu)的普通無線模塊(nRF24L01模塊沒帶屏蔽罩),AB之間取500 μs,AC之間取1 000 μs,這些時(shí)間取值與節(jié)點(diǎn)的時(shí)間精度和一個(gè)時(shí)間片中運(yùn)行語(yǔ)句的執(zhí)行時(shí)間等因素有關(guān)。實(shí)驗(yàn)中nRF24L01采用“非自動(dòng)應(yīng)答”方式,通信速率取2 Mbps。
利用串口調(diào)試助手,將接收節(jié)點(diǎn)的實(shí)驗(yàn)結(jié)果部分截圖,如圖3—4所示,每一行顯示一個(gè)時(shí)間片內(nèi)的有關(guān)信息。其中,CH=x(x等于2或4或6或8等)表示中心頻率為(2 400+x)MHz。RX左邊的數(shù)字40代表接收成功,即nRF24L01狀態(tài)寄存器中RX_DR=1,e代表接收緩沖區(qū)為空(沒收到數(shù)據(jù))。圖3是不加干擾節(jié)點(diǎn)時(shí)的接收情況,所有實(shí)驗(yàn)頻率通道的通信都能成功實(shí)現(xiàn)。如果加入干擾節(jié)點(diǎn),讓該節(jié)點(diǎn)基本持續(xù)地發(fā)出2 412 MHz的載波來充當(dāng)干擾,接收情況則如圖4所示,中心頻率2 410 MHz,2 412 MHz和2 414 MHz所對(duì)應(yīng)的時(shí)間片中,都未能成功接收,其他信道接收成功。
3 ? ?nRF24L01對(duì)WiFi的干擾實(shí)驗(yàn)(實(shí)驗(yàn)二)
相比于帶寬較寬的WiFi網(wǎng)絡(luò),雖然nRF24L01每個(gè)信道最多只有2 MHz的帶寬,但是能夠?qū)ζ湓斐筛蓴_的頻率源也會(huì)相對(duì)較少,相反,干擾WiFi通信的頻率源就會(huì)較多。本實(shí)驗(yàn)中,使用WiFi模塊ESP8266通過TTL串口連接STM32F103RCT6來構(gòu)成WiFi節(jié)點(diǎn)1,帶有無線網(wǎng)卡的PC機(jī)(運(yùn)行網(wǎng)絡(luò)調(diào)試助手軟件)為WiFi節(jié)點(diǎn)2,nRF24L01無線模塊通過SPI總線連STM32F103RCT6作為干擾節(jié)點(diǎn),演示這兩個(gè)WiFi節(jié)點(diǎn)通信受干擾節(jié)點(diǎn)影響的情況。實(shí)驗(yàn)的基本組網(wǎng)如圖5所示。
其中,兩個(gè)WiFi節(jié)點(diǎn)的通信采用無線透?jìng)髂J?,即一旦設(shè)置好且完成傳輸控制協(xié)議(Transmission Control Protocol,TCP)連接后,這兩個(gè)節(jié)點(diǎn)可以相互往對(duì)方直接發(fā)送數(shù)據(jù)。首先,啟動(dòng)WiFi節(jié)點(diǎn)2,使其成為一個(gè)無線接入點(diǎn)(Access Point,AP),設(shè)網(wǎng)名為TEST。其次,使WiFi節(jié)點(diǎn)2的PC機(jī)連接上TEST網(wǎng),并運(yùn)行網(wǎng)絡(luò)調(diào)試助手軟件,建立一個(gè)TCP Server。再次,重新啟動(dòng)WiFi節(jié)點(diǎn)2,再次建立名為TEST的無線AP后,在節(jié)點(diǎn)2上運(yùn)行相關(guān)命令與上述TCP Server建立一個(gè)TCP連接,連接后將工作方式設(shè)為透?jìng)?,且作好?shù)據(jù)發(fā)送準(zhǔn)備。這樣做不需要另外的無線網(wǎng)絡(luò)路由器,只需要配備節(jié)點(diǎn)1和節(jié)點(diǎn)2。
正常情況下,設(shè)置后的兩個(gè)WiFi節(jié)點(diǎn)可以完全正確地相互發(fā)送數(shù)據(jù)。如果加入干擾節(jié)點(diǎn)發(fā)射干擾載波,那么,它們的通信可能受到影響,表1是一組實(shí)驗(yàn)結(jié)果,干擾節(jié)點(diǎn)中的nRF24L01的通信速率仍取2 Mbps。
2.4 G頻段WiFi常用的3個(gè)信道分布如圖6所示[5]。信道1、信道6和信道11帶寬都是22 MHz,中心頻率分別為2 412 MHz,2 437 MHz和2 462 MHz。實(shí)驗(yàn)中,WiFi節(jié)點(diǎn)2中的ESP8266工作于信道1,正交頻分復(fù)用技術(shù)(Orthogonal Frequency Division Multiplexing,OFDM)調(diào)制方式。實(shí)驗(yàn)結(jié)果與干擾載波頻譜是否較干凈、干擾節(jié)點(diǎn)與WiFi節(jié)點(diǎn)之間的距離等因素有關(guān)。對(duì)應(yīng)于表1,淘寶網(wǎng)購(gòu)的一塊普通nRF24L01模塊,帶2401C射頻芯片進(jìn)行增強(qiáng)功率,不帶屏蔽罩。產(chǎn)生干擾載波的nRF24L01和WiFi節(jié)點(diǎn)2相距不超過20 cm,由WiFi節(jié)點(diǎn)2連續(xù)發(fā)送8 000個(gè)字節(jié)(大寫字母A的ASCII碼)給WiFi節(jié)點(diǎn)1,節(jié)點(diǎn)2中單片機(jī)和ESP8266模塊的串口通信波特率取115 200。在表1的這組實(shí)驗(yàn)結(jié)果中,干擾載波為2 402 MHz,2 412 MHz和2 422 MHz時(shí),兩個(gè)WiFi節(jié)點(diǎn)設(shè)定的字節(jié)傳輸完全被阻斷,成功傳輸?shù)淖止?jié)數(shù)為零。干擾載波為2 426 MHz時(shí),成功傳輸了5 968個(gè)字節(jié)。而干擾載波為2 430 MHz時(shí),WiFi傳輸完全不受干擾,8 000個(gè)字節(jié)全部被成功傳輸。
4 ? ?結(jié)語(yǔ)
上述實(shí)驗(yàn)編程時(shí),需要參照nRF24L01和ESP8266的數(shù)據(jù)手冊(cè)。例如,nRF24L01手冊(cè)上,有關(guān)于產(chǎn)生較純凈載波的步驟描述,實(shí)驗(yàn)中干擾載波的產(chǎn)生完全按照步驟仔細(xì)編程而得。又比如,如何實(shí)現(xiàn)節(jié)點(diǎn)間的數(shù)據(jù)透?jìng)?,ESP8266手冊(cè)上也有詳細(xì)描述。這些芯片和模塊功能較多,可供選擇的項(xiàng)目較多,實(shí)驗(yàn)中可以嘗試別的選擇和設(shè)置。
[參考文獻(xiàn)]
[1]NONAME.nRF24L01+single chip 2.4 GHz transceiver product specification v1.0[EB/OL].(2019-12-05)[2020-03-20].https://infocenter.nordicsemi.com.
[2]NONAME.STM32F103xC datasheet production data[EB/OL].(2015-10-15)[2020-03-20].https://www.st.com.
[3]NONAME.ATK-ESP8266 WiFi用戶手冊(cè)_V1.0[EB/OL].(2012-05-02)[2020-03-20].https://wenku.baidu.com.
[4]KARALIS A,ZORBAS D,DOULIGERIS C.Collision-free advertisement scheduling for IEEE 802.15.4-TSCH networks[J].Sensors,2019(8):1789.
[5]ZORBAS D,PAPADOPOULOS G Z,DOULIGERIS C.Local or global radio channel blacklisting for IEEE 802.15. 4-TSCH networks[C].New York:In 2018 IEEE International Conference on Communications (ICC). IEEE,2018.
Frequency hopping and jamming demonstration experiments
based on nRF24L01 and ESP8266
Qian Guangming, Yi Chao
(College of Information Science and Engineering, Hunan Normal University, Changsha 410081, China)
Abstract:Frequency hopping is an important anti interference method in modern wireless communication. In this paper, frequency hopping and jamming demonstration experiments are designed with the wireless node composed of nRF24L01 wireless module, STM32F103 single chip computer and the WiFi module ESP8266. In the teaching process, this design can not only intuitively demonstrate channel hopping and jamming, but also is helpful to guide students to understand many basic principles of single chip computer, WiFi network and wireless communication without protocol because of the closure to the hardware level when programming, thus stimulating students enthusiasm for learning.
Key words:frequency hopping; node; ESP8266; nRF24L01