謝國(guó)遠(yuǎn),藍(lán)國(guó)財(cái),梁琦,黃金福,王志富,李林泉,蒙素素
(廣西民族師范學(xué)院,廣西崇左,532200)
隨著國(guó)民經(jīng)濟(jì)的發(fā)展,人們生活質(zhì)量的提高,城鎮(zhèn)生活居民用水需求越來越高。當(dāng)水箱水量不足時(shí)會(huì)導(dǎo)致高樓層的居民出現(xiàn)水壓低或者水不夠用的現(xiàn)象,因?yàn)榫用駱堑乃湟话愣际欠旁跇琼敚嗣駸o法實(shí)時(shí)得知水箱的存水情況從而導(dǎo)致水箱沒水了沒有及時(shí)抽水導(dǎo)致水不夠用的現(xiàn)象。為此人們需要一款能直觀地觀測(cè)到水箱里還有多少水方便及時(shí)加水的裝置,由此本文提出一款基于2.4G射頻的多節(jié)點(diǎn)水位檢測(cè)系統(tǒng)的設(shè)計(jì),本設(shè)計(jì)使用一個(gè)上位機(jī)掛載多個(gè)下位機(jī),采用壓力傳感器,同時(shí)檢測(cè)多個(gè)水箱水位,實(shí)時(shí)監(jiān)控水箱中的水位。該設(shè)計(jì)體型小巧、價(jià)格低廉、安全可靠,可以通過無線監(jiān)控實(shí)時(shí)觀察水箱儲(chǔ)水情況。
基于2.4G射頻的多節(jié)點(diǎn)水位檢測(cè)系統(tǒng)包含硬件設(shè)計(jì)和軟件設(shè)計(jì)兩大部分,下位機(jī)硬件設(shè)計(jì)是以GD32E230F8V6單片機(jī)芯片為核心,由水位采集電路及A/D轉(zhuǎn)換電路、壓力傳感器、2.4G無線通信模塊、太陽能充電電路組成,上位機(jī)硬件設(shè)計(jì)也是采用GD32E230F8V6單片機(jī)芯片為核心,由2.4G無線通信模塊、OLED 顯示屏、報(bào)警電路、矩陣鍵組成。軟件設(shè)計(jì)就是結(jié)合上位機(jī)和下位機(jī)的程序編寫。該設(shè)計(jì)的系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)框圖
GD32E230F8V6單片機(jī)內(nèi)核以最高可達(dá)72MHz、15個(gè)I/O端口、64KB的FLASh、8KB的SRAM、PWM 高 級(jí) 定時(shí)器1個(gè)、通用16位定時(shí)器5個(gè)、基本定時(shí)器1個(gè)、1位ADC1個(gè)、USART 串口1個(gè)。它 由1.8V ~3.6V 供 電,能在-40℃~85℃溫度下運(yùn)行。該芯片各參數(shù)和性能都符本設(shè)計(jì)要求,所以本項(xiàng)目設(shè)計(jì)時(shí)采用了這款單片機(jī)來作為主控芯片。主控系統(tǒng)電路圖如圖2所示。
圖2 主控系統(tǒng)電路圖
擴(kuò)散硅壓力傳感器利用壓阻效應(yīng)原理,通過集成工藝技術(shù)摻雜、擴(kuò)散,沿單晶硅片上特征晶向制成應(yīng)變電阻構(gòu)成惠斯通電橋。傳感器電阻值發(fā)生變化并利用電子線路檢測(cè)這一變化并轉(zhuǎn)換輸出對(duì)應(yīng)于這一壓力的標(biāo)準(zhǔn)測(cè)量信號(hào)。其特點(diǎn)是將物理信號(hào)按照一定的規(guī)律轉(zhuǎn)換為電信號(hào),而本設(shè)計(jì)的需求就是使用該傳感器檢測(cè)水箱的水壓將檢測(cè)到的水壓轉(zhuǎn)換成模擬電信號(hào)輸送到ADC 轉(zhuǎn)換電路中。
太陽能板利用光電效應(yīng)將光能直接變?yōu)殡娔?,輸出?壓1V、 最 大 輸 出 電 流85mA, 而ME2110C50M5G 芯片的輸出BAT_VCC 為電壓6V,其中LX 引腳為開關(guān)腳、CE 引腳為使能端,VOUT 引腳是輸出電壓反饋兼芯片內(nèi)部供電,其工作流程為太陽能板先將光能轉(zhuǎn)換成電能,再由ME2110C50M5G 芯片將太陽能的電壓轉(zhuǎn)變成6V 電壓后給本設(shè)計(jì)的電池進(jìn)行充電,保證系統(tǒng)的續(xù)航能力。太陽能充電電路圖如圖3所示。
圖3 太陽能充電電路圖
ADC 模數(shù)轉(zhuǎn)換模塊的模數(shù)轉(zhuǎn)換功能就是由CS1237 芯片提供的,該負(fù)責(zé)采集壓力傳感器的模擬電壓,所有的AINP 引腳與AINN 引腳要連接壓力傳感器輸出的正負(fù)極。先由CS1237 芯片采集到壓力傳感器輸出的模擬電壓,再將模擬電壓轉(zhuǎn)換為數(shù)字電平信號(hào)在DOUT 引腳輸出到下位機(jī)主控芯片。ADC 模數(shù)轉(zhuǎn)換電路圖如圖4所示。
圖4 ADC 模數(shù)轉(zhuǎn)換電路圖
2.4G無線通信模塊是本設(shè)計(jì)的核心模塊,作為上位機(jī)和下位機(jī)的嫁接橋梁,
通過SPI 總線與主控芯片通信與另一端的2.4G無線通信模塊進(jìn)行的數(shù)據(jù)傳輸。最高速率可達(dá)2Mbps,可支持選用頻道126個(gè),內(nèi)建CRC 檢錯(cuò),點(diǎn)對(duì)多點(diǎn)地址通訊選擇,相比于其他類型無線通信模塊它抗干擾能力更強(qiáng),GFSK 調(diào)制效率更高。可以設(shè)定自動(dòng)應(yīng)答以保證本設(shè)計(jì)數(shù)據(jù)的可靠傳輸。2.4G無線通信模塊電路圖如圖5所示。
圖5 2.4G無線通信模塊電路圖
在本設(shè)計(jì)中,水位和水位的閾值的顯示主要由0.96 寸OLED 屏來完成,本設(shè)計(jì)采用四針款OLED 顯示屏,分別連接1 腳和4 腳分別連接VCC 和GND,因?yàn)橹骺匦酒腟PI總線端口都是模擬端口所以2,3 腳連接上位機(jī)主控芯片的任意兩個(gè)IO口即可。通過編制程序的方式,將相關(guān)數(shù)據(jù)在OLED 顯示屏進(jìn)行實(shí)時(shí)顯示。其中,OLED 顯示屏的第一行顯示1 號(hào)下位機(jī)水位和水位的閾值,而第二行顯示二號(hào)下位機(jī)的水位和水位的閾值,第三第四行按照順序逐個(gè)顯示3號(hào)和4 號(hào)下位機(jī)的各項(xiàng)參數(shù)。
壓力傳感器檢測(cè)水箱的水位情況后配合下位機(jī)主控通過2.4G無線通信模塊將采集到的數(shù)據(jù)發(fā)送到上位機(jī)主控中進(jìn)行數(shù)據(jù)分析當(dāng)水箱水位超出設(shè)定的水位閾值時(shí),上位機(jī)主控芯片IO口發(fā)出信號(hào)導(dǎo)通三極管驅(qū)動(dòng)蜂鳴器報(bào)警。
控制系統(tǒng)軟件設(shè)計(jì)主要包括下位機(jī)程序設(shè)計(jì)和上位機(jī)程序設(shè)計(jì)兩部分。上位機(jī)和下位機(jī)都是采用GD32E230F8V6單片機(jī)作為主控,其程序編寫主要包括ADC 數(shù)模轉(zhuǎn)換程序、OLED 顯示程序、2.4G無線通信模塊程序,都是采用C 語言的方式編寫,下面依次對(duì)軟件設(shè)計(jì)部分進(jìn)行介紹。
本設(shè)計(jì)使用的編譯平臺(tái)是Keil5 MDK 編譯器,這款編譯器功能非常強(qiáng)悍,并且支持在線調(diào)試、仿真等功能。完成硬件的連接后即可對(duì)每個(gè)下位機(jī)的程序進(jìn)行編寫,首先初始化定時(shí)器,然后通過壓力傳感器檢測(cè)水箱底部的水壓,壓力傳感器將檢測(cè)到的水壓轉(zhuǎn)換成電壓輸出,再經(jīng)過ADC 模數(shù)轉(zhuǎn)換電路將采集到模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)后ADC 芯片通過和下位機(jī)主控芯片配置相同的CLK 時(shí)鐘保證數(shù)據(jù)的完整傳輸,最終通過下位機(jī)主控編寫程序轉(zhuǎn)換成顯示屏需要的數(shù)據(jù),之后在下位機(jī)主控開啟定時(shí)器2 設(shè)定其頻率為1ms 中斷一次,5min 為一頻率,通過2.4G無線通信模塊將其數(shù)據(jù)發(fā)送給上位機(jī)。下位機(jī)程序流程圖如圖6所示。
圖6 下位機(jī)程序流程圖
3.1.1 無線發(fā)送程序
本設(shè)計(jì)采用2.4G無線通信模塊既可以作為主機(jī)使用也可以作為從機(jī)使用,主機(jī)可以同時(shí)配對(duì)多個(gè)從機(jī),所以把2.4G無線通信模塊程序分化為發(fā)送程序和接收程序兩部分。
發(fā)送程序:將需要發(fā)送的地址和顯示數(shù)據(jù)按時(shí)序從2.4G無線通信的MOSI 引腳寫入,同時(shí)配置CONFIG 寄存器,將2.4G無線通信設(shè)置成發(fā)送模式,將CE 引腳拉高(至少10μs),判斷CE 引腳,當(dāng)CE 被拉低時(shí)發(fā)送完成。無線通信發(fā)送程序流程圖如圖7所示。
圖7 無線通信發(fā)送程序流程圖
接收程序:初始化并設(shè)置接收地址、接收數(shù)據(jù)的大小,配置CONFIG 寄存器,將2.4G無線通信設(shè)置成接收模式,將CE 引腳拉高。時(shí)間夠130μs 后,2.4G無線通信進(jìn)入監(jiān)視狀態(tài),等待接收數(shù)據(jù),當(dāng)接收到屬于本機(jī)的數(shù)據(jù)時(shí),2.4G無線通信將數(shù)據(jù)從MISO 引腳按時(shí)序輸出,數(shù)據(jù)讀完后主控芯片將數(shù)據(jù)保存起來,繼續(xù)等待下一個(gè)數(shù)據(jù)。無線通信接收程序流程圖如圖8所示。
圖8 無線通信接收程序流程圖
3.1.2 ADC 驅(qū)動(dòng)程序
ADC 模數(shù)轉(zhuǎn)換模塊的功能主要是將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)傳輸?shù)较挛粰C(jī)主控模塊來處理,主控模塊再將接收到的數(shù)據(jù)進(jìn)行計(jì)算分析。該電路能采集-2.5~2.5 之間的模擬電壓信號(hào),進(jìn)行轉(zhuǎn)換之后會(huì)得到一個(gè)24位二進(jìn)制的數(shù)據(jù)。數(shù)據(jù)變化范圍是0x000000~0xffffff 之間。
CS1237 需要先通過主控芯片驅(qū)動(dòng)才能進(jìn)行A/D轉(zhuǎn)換,又因?yàn)楸驹O(shè)計(jì)CS1237 只需要將壓力傳感器輸出的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)即可,所以在主控程序中設(shè)定為讀操作即可,同時(shí)設(shè)定固定的SCLK 時(shí)鐘、對(duì)DOUT 寫入讀命0x56進(jìn)行驅(qū)動(dòng),然后讀取它DOUT 發(fā)出的數(shù)據(jù)。
上位機(jī)和下位機(jī)一個(gè)采用編譯平臺(tái)是Keil5 MDK 編譯器,首先初始化定時(shí)器和所有IO口,配置好上位機(jī)的無線通信模塊和下位機(jī)的無線通信模塊為統(tǒng)一的頻段后,設(shè)定定時(shí)器為1ms 一次的頻率通過2.4G無線通信模塊實(shí)時(shí)接收多個(gè)下位機(jī)檢測(cè)到的水位數(shù)據(jù),經(jīng)過主控芯片程序分析后顯示OLED 屏幕上,同時(shí)上位機(jī)可通過矩陣按鍵設(shè)置水箱上限值和下限值以及報(bào)警值,將設(shè)置好的數(shù)值利用2.4G無線通信模塊發(fā)送到下位機(jī)中,控制水箱水位穩(wěn)定于設(shè)定上下限閾值之內(nèi),如果下位機(jī)檢測(cè)水箱水位超過水箱上下限閾值,則通過2.4G無線通信模塊向上位機(jī)發(fā)送采集到的數(shù)據(jù),上位機(jī)主控芯片經(jīng)過程序分析后如超出設(shè)定的閾值則發(fā)出報(bào)警提醒用戶。上位機(jī)程序流程圖如圖9所示。
圖9 上位機(jī)程序流程圖
OLED 顯示驅(qū)動(dòng)程序:0.96 寸OLED 顯示屏本身并沒有漢字庫,所以第一步先通過取模工具來取模,要顯示的字符保存到主控芯片的字符庫里,將顯示屏的各個(gè)引腳初始化,再將接收到的數(shù)據(jù)通過調(diào)用第一步已經(jīng)做好的取模字符庫將對(duì)應(yīng)文字顯示到顯示屏即可。
按照設(shè)計(jì)要求編寫好程序后,先在上位機(jī)設(shè)定好每個(gè)水箱水位的上限值為90%,下限值為30%,完成后往每個(gè)水箱加注水。當(dāng)水箱水位超出設(shè)定的上限值或者下限值時(shí)上位機(jī)發(fā)出報(bào)警。上位機(jī)顯示數(shù)據(jù)如表1所示。
表1 上位機(jī)顯示數(shù)據(jù)
根據(jù)表1 實(shí)驗(yàn)數(shù)據(jù)表明,該設(shè)計(jì)能精準(zhǔn)地對(duì)水箱水位進(jìn)行測(cè)量,能完全實(shí)現(xiàn)當(dāng)水位低于或高于設(shè)定水位要求時(shí),上位機(jī)發(fā)出報(bào)警的功能,具有續(xù)航強(qiáng)、體積小,擴(kuò)展性強(qiáng)等優(yōu)點(diǎn)。
本文詳細(xì)介紹了基于2.4G射頻的多節(jié)點(diǎn)水位檢測(cè)系統(tǒng)的設(shè)計(jì),本設(shè)計(jì)采用壓力測(cè)量的方式;對(duì)水箱內(nèi)水位進(jìn)行測(cè)量采集并將采集到的數(shù)據(jù)發(fā)送到主控芯片進(jìn)行轉(zhuǎn)換為線性變換的電壓信號(hào), 經(jīng)過2.4G無線通信模塊將數(shù)據(jù)送至上位機(jī),并顯示于OLED 顯示屏,解決了目前居民樓無法實(shí)時(shí)查看水箱水位而導(dǎo)致水不夠用等問題,在上位機(jī)上添加高低水位調(diào)節(jié)功能,使該系統(tǒng)的操作更便捷、測(cè)量精度更高,本設(shè)計(jì)在城鎮(zhèn)居民樓生活儲(chǔ)備用水系統(tǒng)開發(fā)等領(lǐng)域具有很大的發(fā)展前景。