謝國遠,藍國財,梁琦,黃金福,王志富,李林泉,蒙素素
(廣西民族師范學院,廣西崇左,532200)
隨著國民經濟的發展,人們生活質量的提高,城鎮生活居民用水需求越來越高。當水箱水量不足時會導致高樓層的居民出現水壓低或者水不夠用的現象,因為居民樓的水箱一般都是放在樓頂,人民無法實時得知水箱的存水情況從而導致水箱沒水了沒有及時抽水導致水不夠用的現象。為此人們需要一款能直觀地觀測到水箱里還有多少水方便及時加水的裝置,由此本文提出一款基于2.4G射頻的多節點水位檢測系統的設計,本設計使用一個上位機掛載多個下位機,采用壓力傳感器,同時檢測多個水箱水位,實時監控水箱中的水位。該設計體型小巧、價格低廉、安全可靠,可以通過無線監控實時觀察水箱儲水情況。
基于2.4G射頻的多節點水位檢測系統包含硬件設計和軟件設計兩大部分,下位機硬件設計是以GD32E230F8V6單片機芯片為核心,由水位采集電路及A/D轉換電路、壓力傳感器、2.4G無線通信模塊、太陽能充電電路組成,上位機硬件設計也是采用GD32E230F8V6單片機芯片為核心,由2.4G無線通信模塊、OLED 顯示屏、報警電路、矩陣鍵組成。軟件設計就是結合上位機和下位機的程序編寫。該設計的系統框圖如圖1所示。

圖1 系統框圖
GD32E230F8V6單片機內核以最高可達72MHz、15個I/O端口、64KB的FLASh、8KB的SRAM、PWM 高 級 定時器1個、通用16位定時器5個、基本定時器1個、1位ADC1個、USART 串口1個。它 由1.8V ~3.6V 供 電,能在-40℃~85℃溫度下運行。該芯片各參數和性能都符本設計要求,所以本項目設計時采用了這款單片機來作為主控芯片。主控系統電路圖如圖2所示。

圖2 主控系統電路圖
擴散硅壓力傳感器利用壓阻效應原理,通過集成工藝技術摻雜、擴散,沿單晶硅片上特征晶向制成應變電阻構成惠斯通電橋。傳感器電阻值發生變化并利用電子線路檢測這一變化并轉換輸出對應于這一壓力的標準測量信號。其特點是將物理信號按照一定的規律轉換為電信號,而本設計的需求就是使用該傳感器檢測水箱的水壓將檢測到的水壓轉換成模擬電信號輸送到ADC 轉換電路中。
太陽能板利用光電效應將光能直接變為電能,輸出電 壓1V、 最 大 輸 出 電 流85mA, 而ME2110C50M5G 芯片的輸出BAT_VCC 為電壓6V,其中LX 引腳為開關腳、CE 引腳為使能端,VOUT 引腳是輸出電壓反饋兼芯片內部供電,其工作流程為太陽能板先將光能轉換成電能,再由ME2110C50M5G 芯片將太陽能的電壓轉變成6V 電壓后給本設計的電池進行充電,保證系統的續航能力。太陽能充電電路圖如圖3所示。

圖3 太陽能充電電路圖
ADC 模數轉換模塊的模數轉換功能就是由CS1237 芯片提供的,該負責采集壓力傳感器的模擬電壓,所有的AINP 引腳與AINN 引腳要連接壓力傳感器輸出的正負極。先由CS1237 芯片采集到壓力傳感器輸出的模擬電壓,再將模擬電壓轉換為數字電平信號在DOUT 引腳輸出到下位機主控芯片。ADC 模數轉換電路圖如圖4所示。

圖4 ADC 模數轉換電路圖
2.4G無線通信模塊是本設計的核心模塊,作為上位機和下位機的嫁接橋梁,
通過SPI 總線與主控芯片通信與另一端的2.4G無線通信模塊進行的數據傳輸。最高速率可達2Mbps,可支持選用頻道126個,內建CRC 檢錯,點對多點地址通訊選擇,相比于其他類型無線通信模塊它抗干擾能力更強,GFSK 調制效率更高。可以設定自動應答以保證本設計數據的可靠傳輸。2.4G無線通信模塊電路圖如圖5所示。

圖5 2.4G無線通信模塊電路圖
在本設計中,水位和水位的閾值的顯示主要由0.96 寸OLED 屏來完成,本設計采用四針款OLED 顯示屏,分別連接1 腳和4 腳分別連接VCC 和GND,因為主控芯片的SPI總線端口都是模擬端口所以2,3 腳連接上位機主控芯片的任意兩個IO口即可。通過編制程序的方式,將相關數據在OLED 顯示屏進行實時顯示。其中,OLED 顯示屏的第一行顯示1 號下位機水位和水位的閾值,而第二行顯示二號下位機的水位和水位的閾值,第三第四行按照順序逐個顯示3號和4 號下位機的各項參數。
壓力傳感器檢測水箱的水位情況后配合下位機主控通過2.4G無線通信模塊將采集到的數據發送到上位機主控中進行數據分析當水箱水位超出設定的水位閾值時,上位機主控芯片IO口發出信號導通三極管驅動蜂鳴器報警。
控制系統軟件設計主要包括下位機程序設計和上位機程序設計兩部分。上位機和下位機都是采用GD32E230F8V6單片機作為主控,其程序編寫主要包括ADC 數模轉換程序、OLED 顯示程序、2.4G無線通信模塊程序,都是采用C 語言的方式編寫,下面依次對軟件設計部分進行介紹。
本設計使用的編譯平臺是Keil5 MDK 編譯器,這款編譯器功能非常強悍,并且支持在線調試、仿真等功能。完成硬件的連接后即可對每個下位機的程序進行編寫,首先初始化定時器,然后通過壓力傳感器檢測水箱底部的水壓,壓力傳感器將檢測到的水壓轉換成電壓輸出,再經過ADC 模數轉換電路將采集到模擬信號轉換為數字信號后ADC 芯片通過和下位機主控芯片配置相同的CLK 時鐘保證數據的完整傳輸,最終通過下位機主控編寫程序轉換成顯示屏需要的數據,之后在下位機主控開啟定時器2 設定其頻率為1ms 中斷一次,5min 為一頻率,通過2.4G無線通信模塊將其數據發送給上位機。下位機程序流程圖如圖6所示。

圖6 下位機程序流程圖
3.1.1 無線發送程序
本設計采用2.4G無線通信模塊既可以作為主機使用也可以作為從機使用,主機可以同時配對多個從機,所以把2.4G無線通信模塊程序分化為發送程序和接收程序兩部分。
發送程序:將需要發送的地址和顯示數據按時序從2.4G無線通信的MOSI 引腳寫入,同時配置CONFIG 寄存器,將2.4G無線通信設置成發送模式,將CE 引腳拉高(至少10μs),判斷CE 引腳,當CE 被拉低時發送完成。無線通信發送程序流程圖如圖7所示。

圖7 無線通信發送程序流程圖
接收程序:初始化并設置接收地址、接收數據的大小,配置CONFIG 寄存器,將2.4G無線通信設置成接收模式,將CE 引腳拉高。時間夠130μs 后,2.4G無線通信進入監視狀態,等待接收數據,當接收到屬于本機的數據時,2.4G無線通信將數據從MISO 引腳按時序輸出,數據讀完后主控芯片將數據保存起來,繼續等待下一個數據。無線通信接收程序流程圖如圖8所示。

圖8 無線通信接收程序流程圖
3.1.2 ADC 驅動程序
ADC 模數轉換模塊的功能主要是將模擬信號轉換成數字信號傳輸到下位機主控模塊來處理,主控模塊再將接收到的數據進行計算分析。該電路能采集-2.5~2.5 之間的模擬電壓信號,進行轉換之后會得到一個24位二進制的數據。數據變化范圍是0x000000~0xffffff 之間。
CS1237 需要先通過主控芯片驅動才能進行A/D轉換,又因為本設計CS1237 只需要將壓力傳感器輸出的模擬信號轉換成數字信號即可,所以在主控程序中設定為讀操作即可,同時設定固定的SCLK 時鐘、對DOUT 寫入讀命0x56進行驅動,然后讀取它DOUT 發出的數據。
上位機和下位機一個采用編譯平臺是Keil5 MDK 編譯器,首先初始化定時器和所有IO口,配置好上位機的無線通信模塊和下位機的無線通信模塊為統一的頻段后,設定定時器為1ms 一次的頻率通過2.4G無線通信模塊實時接收多個下位機檢測到的水位數據,經過主控芯片程序分析后顯示OLED 屏幕上,同時上位機可通過矩陣按鍵設置水箱上限值和下限值以及報警值,將設置好的數值利用2.4G無線通信模塊發送到下位機中,控制水箱水位穩定于設定上下限閾值之內,如果下位機檢測水箱水位超過水箱上下限閾值,則通過2.4G無線通信模塊向上位機發送采集到的數據,上位機主控芯片經過程序分析后如超出設定的閾值則發出報警提醒用戶。上位機程序流程圖如圖9所示。

圖9 上位機程序流程圖
OLED 顯示驅動程序:0.96 寸OLED 顯示屏本身并沒有漢字庫,所以第一步先通過取模工具來取模,要顯示的字符保存到主控芯片的字符庫里,將顯示屏的各個引腳初始化,再將接收到的數據通過調用第一步已經做好的取模字符庫將對應文字顯示到顯示屏即可。
按照設計要求編寫好程序后,先在上位機設定好每個水箱水位的上限值為90%,下限值為30%,完成后往每個水箱加注水。當水箱水位超出設定的上限值或者下限值時上位機發出報警。上位機顯示數據如表1所示。

表1 上位機顯示數據
根據表1 實驗數據表明,該設計能精準地對水箱水位進行測量,能完全實現當水位低于或高于設定水位要求時,上位機發出報警的功能,具有續航強、體積小,擴展性強等優點。
本文詳細介紹了基于2.4G射頻的多節點水位檢測系統的設計,本設計采用壓力測量的方式;對水箱內水位進行測量采集并將采集到的數據發送到主控芯片進行轉換為線性變換的電壓信號, 經過2.4G無線通信模塊將數據送至上位機,并顯示于OLED 顯示屏,解決了目前居民樓無法實時查看水箱水位而導致水不夠用等問題,在上位機上添加高低水位調節功能,使該系統的操作更便捷、測量精度更高,本設計在城鎮居民樓生活儲備用水系統開發等領域具有很大的發展前景。