胡巍礫 孟浩
(安徽農(nóng)業(yè)大學(xué)信息與計算機(jī)學(xué)院 安徽省合肥市 230036)
無線電遙控器通常由發(fā)射部分和接收部分組成,無論是在工業(yè)上還是在家庭中都有無線電遙控的身影。文獻(xiàn)[2]是設(shè)計了一款紅外遙控器,可以精準(zhǔn)測量脈寬,并可記錄一些電氣設(shè)備遙控器發(fā)射的紅外線數(shù)據(jù),不夠安全穩(wěn)定,障礙物的遮擋對信號正常的傳輸有嚴(yán)重的影響。文獻(xiàn)[5]用DSP 和FPGA 芯片實現(xiàn)了跳頻的相關(guān)通信,但是所需要的成本比較大。本文利用STM32F103C8T6 微控制器和NRF24L01 無線通信模塊等作為跳頻通信的主要部分,設(shè)計了相應(yīng)的發(fā)射機(jī)和接收機(jī),接收機(jī)有相應(yīng)的脈沖輸出引腳,可以對接收機(jī)相應(yīng)的輸出引腳進(jìn)行2 次開發(fā),即讓此款遙控器適用于不同的場合。
基于跳頻技術(shù)的無線電遙控器的研究與實現(xiàn)主要設(shè)計思想是將嵌入式設(shè)計、射頻通信設(shè)計、LCD 屏幕顯示設(shè)計相互融合[2],實現(xiàn)安全穩(wěn)定的無線控制。無線電遙控器通過采集搖桿和按鍵的電壓值,并把電壓值轉(zhuǎn)換為相應(yīng)的數(shù)字量,通過無線通信模塊將這些數(shù)字量發(fā)送給無線電遙控器的接收部分[3]。如圖1所示。
1.1.1 控制器模塊
如圖2所示,本文無線電遙控器發(fā)射部分選用具有Corter-M3內(nèi)核的STM32F103C8T6 微控制器作為主控制器。STM32F103C8T6微控制器具有易開發(fā)、自身功能多、工作速度快等特點[4]。本系統(tǒng)通過STM32F103C8T6 微控制器的PB0、PA7、PA6、PA5、PA4、PB1 和±極的引腳來控制Nokia 5110 屏幕的顯示,通過PB8、PB7、PB6、PB13、PB14、PB15 和±極的引腳來控制NRF24L01無線通信模塊進(jìn)行發(fā)射部分和接收部分之間的通信。
圖1:系統(tǒng)總體結(jié)構(gòu)
圖2:STM32F103C8T6 電路圖
圖3:電源模塊原理圖
圖4:搖桿電位器模塊電路圖
1.1.2 電源模塊
電源電路設(shè)計在系統(tǒng)中具有舉足輕重的地位,電源電路設(shè)計的好壞直接決定了系統(tǒng)各個模塊正常的工作狀態(tài)、使用壽命,在很大程度上決定了整個遙控設(shè)備發(fā)射部分的穩(wěn)定性和魯棒性。本文只需給STM32F103C8T6 微控制器3.3V 的電壓即可使無線電遙控器發(fā)射部分正常工作。其余的搖桿電位器、液晶屏顯示模塊、無線通信模塊也都是需要3.3V 的電壓即可驅(qū)動。STM32F103C8T6 微控制器電源系統(tǒng)中的ME6211-3.3 是一款性價比很高的線性穩(wěn)壓器,被廣泛應(yīng)用于各種電源模塊中,以便提高電源模塊的穩(wěn)定性[5]。該微控制器的電源系統(tǒng)原理圖如圖3所示。
1.1.3 搖桿電位器模塊
搖桿電位器被廣泛應(yīng)用于各種手柄中,本文中的遙控器發(fā)射部分中存在兩個搖桿電位器模塊,搖桿電位器可以把其看成一個簡單的滑動變阻器的增強(qiáng)版。每個搖桿電位器可以看成是兩個滑動變阻器的組合,其中兩邊都各有正負(fù)極和一個電壓信號輸出引腳,給兩邊的正負(fù)極引腳提供3.3V 的電壓,后期通過操縱者推動搖桿來改變每個通道上的電阻,中間的電壓信號輸出引腳接在模數(shù)轉(zhuǎn)換的檢測引腳上,通過檢測到因為搖桿位移而造成變化的電壓值,并通過模數(shù)轉(zhuǎn)換器轉(zhuǎn)換成無符號的數(shù)字量[6]。如圖4所示。
1.1.4 模數(shù)轉(zhuǎn)換器模塊
ADC 即模擬數(shù)字轉(zhuǎn)換器是將自然界中的電壓、溫度、濕度等這樣的連續(xù)變化的信號轉(zhuǎn)換成不連續(xù)的,人為抽象出來的間斷的信號,以便于讓程序去更好地去讀取外界信息,并對外界信息進(jìn)行進(jìn)一步的分析處理。STM32F103C8T6 微控制器包含了2 個模擬數(shù)字轉(zhuǎn)換器。我們只用了其中一個模擬數(shù)字轉(zhuǎn)換器的0~3 通道,這4 個通道分別用來檢測搖桿電位器的4 個主要通道,即左右兩個搖桿的上下左右主方向的位移量的測量。此微控制器中的模擬數(shù)字轉(zhuǎn)換器的檢測電壓范圍是0~3.3V 即可,否則會燒壞其模擬數(shù)字轉(zhuǎn)換器,故搖桿電位器只需要給其提供3.3V 的電壓即可,這樣檢測搖桿電位器的電壓信號輸出就不會超過3.3V。因此微控制器內(nèi)部包含模擬數(shù)字轉(zhuǎn)換器,故不需要再外接相應(yīng)模塊,只是需要將相應(yīng)通道對應(yīng)的模擬數(shù)字轉(zhuǎn)換器的引腳連接在被測電壓上面。本無線電遙控系統(tǒng)采用ADC1 的通道0(PA0)、通道1(PA1)、通道2(PA2)、通道3(PA3)和搖桿電位器的被測電壓引腳連接在一起。具體電路連接如圖5所示。
1.1.5 無線通信模塊
NRF24L01 無線通信模塊因其體積小、只需要3.3V 的供電電壓便可以驅(qū)動、價格便宜等優(yōu)點從而被廣泛應(yīng)用于各種市面上的各種遙控設(shè)備上,其輸出頻率和工作通信頻道可通過程序去設(shè)定,例如此微控制器中的NRF24L01_Write_Reg(u8 reg,u8 value)函數(shù)中的第二個值就是用來設(shè)定無線通信模塊的工作通信頻道,無線通信模塊的通信協(xié)議是SPI 通信協(xié)議[1],此通信協(xié)議比較簡單,數(shù)據(jù)傳輸速率快,都使得此通信模塊具有優(yōu)良的性價比。如表1所示。
無線通信模塊和STM32F103C8T6 微控制器的具體接線圖如圖6所示。
1.1.6 液晶顯示屏模塊
Nokia5110 液晶屏是原來一款手機(jī)的拆機(jī)屏,具有體積小、3.3V供電電壓和易編程等優(yōu)點??梢燥@示圖片和漢字,而且市場上庫存量很大,不用擔(dān)心庫存的問題,需要在上面顯示漢字時候,利用取字模軟件,將相應(yīng)大小的漢字轉(zhuǎn)換成十六進(jìn)制輸出,再在程序中利用相應(yīng)的顯示函數(shù)把十六進(jìn)制的漢字輸出顯示在屏幕相應(yīng)位置上。顯示圖片同樣也是借助取自字模軟件得到圖像的像素數(shù)組,顯示的圖片像素大小有限制,注意像素不能太大,不然不能正常顯示相應(yīng)的圖片[7]。Nokia5110 與STM32F103C8T6 微控制器的具體接線圖如圖7所示。
圖5:stm32f103c8t6 微控制器和搖桿電位器引腳連接圖
圖6:無線通信模塊和STM32F103C8T6 微控制器的接線圖
圖7:stm32f103c8t6 微控制器和Nokia5110 液晶屏引腳連接圖
1.2.1 遙控器模塊無線電遙控器接收部分控制器模塊同樣采用STM32F103C8T6作為微控制器,其微控制器電路圖與圖2相同,這里不再贅述。
1.2.2 電源模塊
無線電遙控器接收部分控制器模塊,同樣借助外部的5V 輸出或者3.3V 輸出的電源供電即可,主控制器內(nèi)部的電源模塊電路圖與圖3相同,這里不再贅述。
1.2.3 無線通信模塊
無線電遙控器接收部分同樣采用低功耗、及時性強(qiáng)的NRF24L01 無線通信模塊。無線通信模塊的詳細(xì)信息說明如表1所示。無線通信模塊具體引腳和STM32F103C8T6 微控制器的引腳接線圖如圖6所示。這里不再贅述。
圖8:系統(tǒng)運行主流程框圖
圖9:發(fā)射部分開機(jī)正常運行調(diào)試圖
圖10:發(fā)射部分與接收部分對頻調(diào)試圖
表1:無線通信模塊引腳使用表
表2:無線電遙控器正常運行數(shù)據(jù)
圖11:接收部分串口調(diào)試助手
上面對無線電遙控系統(tǒng)的硬件電路各個模塊做了詳細(xì)的闡述,本節(jié)將著重介紹無線電遙控器控制系統(tǒng)的軟件設(shè)計??刂葡到y(tǒng)的軟件設(shè)計也決定著無線電遙控性能的好壞。是整體系統(tǒng)的核心所在,無線電遙控器的跳頻通信、搖桿電位器變化電壓的采集、接收部分把接收到的變化電壓的數(shù)字量轉(zhuǎn)換為脈沖輸出等都依托著軟件系統(tǒng)的實現(xiàn)。軟件系統(tǒng)主要實現(xiàn)了發(fā)射部分先主動與等待中的接收部分進(jìn)行對頻操作,對頻成功后,發(fā)射部分再按照設(shè)定好的跳頻序列進(jìn)行每秒100 次的跳頻操作,同時把搖桿電位器的運動變化通過無線通信模塊傳輸過去,接收部分再把接收到的搖桿電位器運動信號轉(zhuǎn)換為脈沖信號最終通過相應(yīng)的引腳輸出[8]。具體的程序流程框圖如圖8所示。
2.1.1 發(fā)射部分控制器程序流程
為了保證系統(tǒng)的穩(wěn)定性以及功能的多樣性,在無線電遙控器開機(jī)階段,遙控器發(fā)射部分會進(jìn)行Nokia 5110 液晶屏等各個模塊的上電初始化。同時開機(jī)時會對進(jìn)行NRF24L01 無線通信模塊進(jìn)行檢測,查看有無正常連接。在正常連接的情況下,程序才會進(jìn)入對頻階段,并且Nokia 5110 液晶屏?xí)骘@示“(無線)模塊錯誤”,從而提醒你檢查NRF24L01 無線通信模塊有沒有正常連接。當(dāng)連接是正確的時候,程序會首先開始檢測油門是否安全,即控制油門信號的搖桿電位器的搖桿有沒有回中,并且Nokia 5110 液晶屏?xí)骘@示“油門不安全”,當(dāng)油門搖桿電位器的搖桿正式回中時候,才會正常顯示遙控界面。這時,點擊“菜單”按鍵進(jìn)入主菜單設(shè)置界面,把兩個搖桿電位器的搖桿產(chǎn)生的相應(yīng)變化電壓轉(zhuǎn)換為0-4096 的變化的數(shù)字量,根據(jù)數(shù)字量的改變?nèi)ヅ袛鄵u桿電位器的搖桿具體的移動情況,用其中一個搖桿的移動去控制屏幕主菜單(主菜單內(nèi)容:工作模式、新鮮功能、通道設(shè)置、快捷功能、系統(tǒng)設(shè)置)功能選項的具體選擇,另一個搖桿電位器的橫向移動去進(jìn)行二級菜單(二級菜單內(nèi)容:新建接收、音效開關(guān)、顯示切換、發(fā)射功率)的進(jìn)入,進(jìn)入二級菜單過后再通過其中一個搖桿電位器的搖桿選擇二級菜單中“新建接收”功能選擇,系統(tǒng)此時會正式把發(fā)射部分的NRF24L01無線通信模塊設(shè)置成發(fā)射模式[9]。具體工作通信頻率公式如下所示。
在上述操作進(jìn)入“新建接收”功能選項后,接下來的對頻操作會按之前設(shè)定發(fā)射部分的對頻工作通信頻率為2440MHz 去對頻,即在NRF24L01_Write_Reg(u8 reg,u8 value)SPI 寫寄存器函數(shù)中設(shè)置第二個參數(shù)value 寫入的值為40[10],并且由發(fā)射部分在2440MHz工作通信頻率上先發(fā)射一個啟動標(biāo)志,等待無線電遙控器的接收部分成功接收到此啟動標(biāo)志后才開始正式的跳頻通信。這時搖桿電位器各個方向的運動變化被時刻轉(zhuǎn)換為0-4096 的變化的數(shù)字量,因為NRF24L01發(fā)送數(shù)據(jù)函數(shù)中發(fā)送的數(shù)組是8位長度的數(shù)據(jù)類型[11],所以將4096 數(shù)字量縮小一定倍數(shù),讓其變成255 以內(nèi)的數(shù)字量,使其能順利通過無線通信模塊在不斷變換工作通信頻道的方式下傳輸出去。同時Nokia 5110 液晶屏?xí)@示4 個遙控器主通道變化的幅度,以及以進(jìn)度條的方式直觀顯示油門搖桿的變化幅度。
2.1.2 接收部分控制器程序流程
無線電遙控器接收部分同樣也設(shè)置了開機(jī)階段對于NRF24L01無線通信模塊的檢測。當(dāng)無線通信模塊沒有正確連接時候,STM32F103C8T6 微控制器會有相應(yīng)的LED 指示燈會亮起,提醒操縱者去確認(rèn)無線通信模塊有沒有出現(xiàn)接觸不良或者意外脫落的情況。當(dāng)無線通信模塊被重新接好時,系統(tǒng)軟件就會讓無線電遙控系統(tǒng)的接收部分的無線通信模塊設(shè)置成接收模式。接收部分為了配合發(fā)射部分的主控制器的開機(jī)階段選擇的對頻操作,于是在接收部分主控制器也同樣設(shè)定工作通信頻道為40,即2440MHz 去對頻。接收部分工作通信頻道設(shè)置為40 是為了和發(fā)射部分工作通信頻道保持一致。無線電遙控器接收部分程序停在正式接受到發(fā)射部分發(fā)送過來的啟動標(biāo)志。當(dāng)接收到啟動標(biāo)志后,接收部分就會也進(jìn)行同樣的跳頻操作。接下來接收部分每20ms 查看一次發(fā)射部分發(fā)射過來的搖桿搖動產(chǎn)生的變化的數(shù)字量,一共需要查看的是數(shù)組中的4 個變量,4 個變量分別代表無線電遙控器發(fā)射部分傳送過來的左右搖桿主要的4 個方向的變化量,通過判斷判斷這個4 變量變化的程度來決定每個通道高電平的延長時間,周期就是設(shè)定20ms,并且通過定時器設(shè)定相同的跳頻頻率,設(shè)定每秒跳100 次,即每10ms 按照事先設(shè)定好的和無線電遙控器發(fā)射部分一致的跳頻序列去改變工作通信頻道。
各個模塊在噴錫板上焊接完成之后,為了查看具體功能有沒有潛在的問題,具體相關(guān)測試具體過程如下。
(1)先給焊接好的噴錫板上的各個模塊供電,當(dāng)Nokia 5110液晶屏模塊可以正常顯示開機(jī)畫面的時候,查看液晶屏背光按鍵是否正常,并推動搖桿電位器,查看液晶屏上對搖桿推動方向數(shù)值的變化以及油門進(jìn)度條的顯示是否正常。
(2)點擊發(fā)射機(jī)右側(cè)的按鍵,進(jìn)入主菜單設(shè)置界面,推動右搖桿上下運動選擇新鮮功能,再推動左搖桿向左運動進(jìn)行新鮮功能的確定并進(jìn)入二級菜單。查看二級菜單能否正常顯示。
(3)若二級菜單能夠正常顯示,同樣繼續(xù)推動右搖桿上下運動選擇新鮮功能,再推動左搖桿向左運動進(jìn)行新建接收功能的確定,如果發(fā)射機(jī)與接收機(jī)成功對頻成功并順利進(jìn)入跳頻通信,則發(fā)射機(jī)與接收機(jī)指示燈會共同亮起,并且在接收機(jī)通過USB 轉(zhuǎn)TTL 模塊在電腦串口調(diào)試助手上可以顯示發(fā)射機(jī)傳輸過來的搖桿的變化的數(shù)字量信息。還可以通過示波器觀看傳輸過來的脈沖。
如果運行狀況正常,無線電遙控器發(fā)射部分的液晶屏開機(jī)會提示油門是否安全,當(dāng)右邊的油門歸零后,液晶屏?xí)o@示出開機(jī)畫面。模擬調(diào)試狀態(tài)下,無線電遙控器發(fā)射部分開機(jī)正常顯示畫面如圖9所示。進(jìn)行和接收機(jī)的對頻連接操作如圖10 所示。通過電腦串口調(diào)試助手顯示接收部分接收到的變化的電壓信號具體如圖11所示。
數(shù)據(jù)分析是由操作人員推動無線電遙控器的發(fā)射部分的搖桿,分析接收部分獲取到的變化的電壓信息以及采集到的波形,判斷本系統(tǒng)是否正常工作。
首先給無線電遙控器發(fā)射部分和接收部分供電,當(dāng)油門搖桿沒有歸零,Nokia 5110 液晶屏?xí)杏烷T不安全的提示,操作人員只有把油門歸零后才能順利進(jìn)入下一步的操作。當(dāng)通過發(fā)射部分上的按鍵點擊,進(jìn)入主菜單界面,選擇新鮮功能選項,進(jìn)入二級菜單后,再次選擇新建接收功能,此時等待發(fā)射部分和接收部分的led 燈同時亮起。此時通過推動左右兩個搖桿可以把產(chǎn)生的變化的電壓信息通過不斷變化的工作通信頻道傳遞給接收部分。緊接著可以在電腦串口調(diào)助手上查看到由變化的電壓轉(zhuǎn)化過來的數(shù)字量信息。
無線電遙控器正常啟動時,在開啟對頻功能后,無線電遙控器接收部分接收到的搖桿信號數(shù)字量如表2所示。從表中的數(shù)據(jù)可以看出推動遙控器發(fā)射部分的搖桿,可以將發(fā)射部分的搖桿電位器產(chǎn)生的變化的數(shù)字量輸送給接收部分。當(dāng)發(fā)射部分的搖桿電位器產(chǎn)生移動時,接收部分會接收到變化的電壓信號,并且數(shù)字量在0~240之間變化。脈寬也會隨著搖桿位移狀態(tài)的改變而改變[12]。表2完全符合無線電遙控器正常運行的情況,所以可以判斷此時無線電遙控器工作狀況正常。
本文針對無線通信技術(shù)中的穩(wěn)定性、安全性問題進(jìn)行了探討,采取不斷改變其工作通信頻道的方式,并利用液晶屏模塊,NRF24L01 無線通信模塊、搖桿電位器模塊等進(jìn)行了無線電遙控器發(fā)射部分與接收部分的研制。最后進(jìn)行了相關(guān)跳頻和對頻功能的測試,測試結(jié)果和預(yù)期一致。設(shè)計和實現(xiàn)了基于跳頻技術(shù)的無線電遙控器的發(fā)射部分和接收部分。