劉筠筠
(鄭州科技學院,河南 鄭州 450064)
環境與發展是當今國際最為關注的問題之一。空氣中各種各樣的污染物大多來自人們的日常生活。近些年,人們在關注身體健康的同時也開始關注周圍的空氣環境[1]。傳統的空氣質量監測采用人工在現場采樣的方式,這種方式的實時性較差且占用人力資源[2]。隨著現代化科學技術的發展,利用監測系統對空氣質量進行實時監測的智能化監測站快速發展。雖然我國已經建立了很多空氣監測站,但由于建站時存在區域監測意識上的薄弱,導致目前監測網絡存在著分布不合理,監測區域略小以及空氣監測項目指標偏少等問題。
NB-IoT(窄帶物聯網)是物聯網領域的一種新興技術,具有覆蓋廣、連接多、速率低、成本低、功耗低、架構優等特點[3]。基于NB-IoT的上述特點,本文設計了一個基本NB-IoT的空氣質量監測系統。該系統能夠實時采集數據并上傳,使得用戶能夠在監測端便捷地查看監測點的空氣質量情況。
該監測系統由監測終端和用戶端組成。監測終端的數量根據需求確定。監測終端主要由主控模塊、傳感器模塊、顯示模塊、NB-IoT無線通信模塊和電源模塊5部分構成。其中,傳感器模塊包括:SO2傳感器、NO2傳感器、CO傳感器、O3傳感器和PM2.5傳感器;電源模塊給整個監測終端提供電源。系統運行時,單片機接收并處理由各個傳感器采集到的空氣質量數據,不僅能將分析計算出的氣體濃度值實時顯示上在顯示屏,還能通過NB-IoT無線通信模塊將氣體濃度值傳送到云平臺。用戶端可以使用PC查看云平臺接收到的監測終端檢測空氣質量數據。系統總體設計如圖1所示。
圖1 系統硬件
主控模塊即單片機最小系統,包括單片機、時鐘電路和復位電路。在監測系統中,不僅要求主控芯片能夠高效實時地對數據進行處理并上傳至云平臺,還要考慮系統的擴展性以便后續增加功能模塊。因此,本系統中的主控芯片采用STM32F103RCT6單片機。STM32F103RCT6是一個基于ARM核心的32位微控制器。其基本特性有:3個12位模數轉換器,1μs轉換時間(21個輸入通道),2通道12位D/A轉換器,12通道DMA控制器,112個快速I/O端口,采用串行單線調試(SWD)和JTAG接口調試模式,11個定時器,13個通信接口,具有CRC計算單元,低功耗。
2.2.1 CO和O3檢測模塊
系統采用2個MQ135空氣質量傳感器來檢測CO和O3。MQ135是MQ氣體傳感器的一種,用于檢測、測量和監測空氣中存在的各種氣體。該傳感模塊有4個引腳,具有模擬和數字2種輸出形式,其引腳功能為,(1)1腳VCC:+5 V電源;(2)2腳GND:參考電位引腳,接地;(3)3腳Digital Out:數字輸出引腳,通過電位器調節值來提供數字輸出;(4)4腳Analog Out:0~5 V的模擬輸出信號。它取決于氣體強度,輸出信號與測量的氣體蒸汽濃度成正比。
CO檢測模塊和O3檢測模塊采用模擬輸出,二者與單片機連接的區別僅在于使用的單片機引腳不同。CO檢測模塊的4腳連接到單片機的PA4引腳,O3檢測模塊的4腳連接到單片機的PA5引腳。CO檢測模塊電路,如圖2所示。
圖2 CO檢測模塊電路
2.2.2 SO2和NO2檢測模塊
SO2檢測模塊和NO2檢測模塊均使用MQ-2煙霧傳感器。MQ-2煙霧傳感器采用在清潔空氣中電導率較低的二氧化錫(SnO2),屬于表面離子式N型半導體。當與煙霧接觸時,煙霧的濃度越大導電率越大,輸出電阻越低,則輸出的模擬信號就越大。MQ-2有2種輸出方式:模擬量輸出和TTL電平輸出,都具有信號輸出指示。TTL輸出為低電平有效,可以和單片機直接連接,當輸出低電平時信號燈亮;模擬量輸出為0~5 V電壓,濃度越高其對等的輸出電壓就越高。
MQ-2煙霧傳感器模塊共有4個引腳,分別為VCC(接+5V)、GND(接地)、DOUT(數字信號輸出)、AOUT(模擬量輸出)。本設計中使用MQ-2煙霧傳感器的模擬量輸出,SO2檢測模塊和NO2檢測模塊與單片機的連接方式和CO檢測模塊電路基本一致,區別僅在于使用的單片機引腳不同,這里不再重復給出檢測電路圖。
2.2.3 PM2.5檢測模塊
在本系統中采用ZPH02粉塵傳感器檢測空氣中的PM2.5濃度。ZPH02傳感器整合紅外PM2.5檢測技術,采用粒子計數原理對環境中PM2.5進行檢測,可靈敏檢測直徑1 μm以上灰塵顆粒物。其具有長期穩定性好、靈敏度高、接口輸出方式豐富、一致性好、易安裝、維護的特點。ZPH02有2種輸出方式,分別為UART模式和PWM模式。本設計中使用ZPH02的PWM模式。ZPH02的引腳功能,如表1所示。
表1 ZPH02引腳功能
本系統采用JLX12864 G—332液晶顯示模塊,它可以顯示:128列×64行點陣單色圖片,16×16點陣的漢字8個×4行,8×16點陣的英文、數字、符號16個×4行,5×8點陣的英文、數字、符號。JLX12864 G—332可以通過軟件調節對比度、進行正顯/反顯轉換以及改變行列掃描方向。它具有并行和串行兩種接口方式,在本設計中采用串行接口方式,這種方式下的接口引腳功能,如表2所示。
表2 串行時JLX12864G—332接口引腳功能
本系統監測終端的無線傳輸模塊選用NB-IoT無線通信模塊BC28,用來實現監測終端與云平臺的實時數據傳輸。BC28是一款超緊湊、高性能、低功耗的多頻段NB-IoT無線通信模塊,支持 B1、B3、B8、B5、B20、B28頻段,可與網絡運營商的基礎設備建立通信。采用更易于焊接的 LCC 封裝,尺寸僅為17.7 mm×15.8 mm×2.0 mm,VBAT供電電壓范圍為3.1~4.2 V。
BC28模塊設有2個串口:主串口和調試串口。主串口可用于AT 命令傳送和數據傳輸,此時其波特率為9600 bps。主串口在Active模式、dle 模式和PSM模式下均可工作。本設計中BC28模塊供電電壓為3.3 V,通過主串口與單片機進行數據傳輸,其與STM32F103的引腳連接關系,如表3所示。
表3 BC28模塊與STM32F103的引腳連接關系
本設計中使用2節18650鋰電池對整個系統進行供電,可提供7.4 V的直流電。系統中的單片機、顯示模塊以及無線通信模塊均需要3.3 V供電,各傳感器模塊則需要5 V供電。因此,在該系統中使用了XL1509-5.0E1和AMS1117-3.3來獲取穩定的5 V電壓和3.3 V電壓。
系統上電運行后,首先對整個系統進行初始化;隨后,監測終端中的各個傳感器將采集到的氣體信號傳送給單片機。單片機對數據進行處理,將接收到的模擬電壓信號轉化成與之對應的氣體濃度數據,再通過無線通信模塊完成與云平臺的數據傳送。監測終端的主程序設計流程如圖3所示。
圖3 監測終端主程序設計流程
監測終端的顯示模塊用以實時顯示各傳感器所采集到的氣體濃度值,其中CO、NO2的濃度單位為mg/m3,O3、SO2、PM2.5的濃度單位為μg/m3。單片機將從EEROM中取出的氣體濃度值通過控制引腳和串行接口傳送給JLX12846 G顯示模塊,顯示子程序流程,如圖4所示。
圖4 顯示子程序流程
BC28模塊與單片機是通過串口發送AT指令的,單片機通過串口依次將AT指令配置發送給通信模塊,從而建立網絡連接。使用BC28模塊時,首先,要對單片機的串口進行初始化;其次,通過AT指令打開BC28模塊;最后,進行網絡連接。BC28與網絡連接的過程,如表4所示。當能查詢到模塊的IP 地址時,說明網絡連接成功。
表4 BC28與網絡連接的過程
BC28接入云平臺的通信協議是MQTT(消息隊列遙測傳輸)通信協議。MQTT是ISO 標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的消息協議。它工作在 TCP/IP協議族上,是為硬件性能低下的遠程設備以及網絡狀況較差的情況下而設計的發布/訂閱型消息協議,需要消息中間件。
本設計中的云平臺選用了阿里云的物聯網平臺[4]。相對于其他平臺而言,阿里云平臺支持更多的物聯網設備接入以及眾多的設備信息查詢和多語言SDK,實踐案例較多,給個人和企業提供了虛擬設備開發、在線調試、完整日志服務、實時監控告警、數據分析和可視化展示等服務。其中,物聯網設備管理平臺是阿里云針對物聯網設備提供的工具。它提供了MQTT服務的接入以及設備SDK的開源程序。用戶可以根據所需設備的型號去匹配適用的最佳接入方式。
3.4.1 環境配置
MQTT服務器的使用安裝需要借助JDK開發環境。用戶需要先從官網上下載JDK8.0,安裝完畢后需要配置環境變量。打開“我的電腦”進入屬性,找到“高級系統設置”,點開可見環境變量。再次雙擊后,會出現有2個變量,找到系統變量。點擊新建變量,鍵入“變量名:JAVA_HOME”,變量值選擇剛才安裝JDK的文件夾。設置完畢后在系統變量里找到已經由計算機建立好的PATH變量,雙擊打開后選擇新建,創建一個名為“%JAVA_HOME%in”的環境變量。全部選擇確認后打開cmd命令行窗口,輸入java-version,顯示版本信息則安裝成功。
3.4.2 新建產品
登錄阿里云官網,找到物聯網應用開發的管理控制臺。雙擊項目管理,在產品選項中點擊“新建產品”,依次輸入產品名稱、選擇節點類型及接入方式后,點擊“確認”按鈕即可新建成功。
產品添加成功后,在設備列表中可以看到此時顯示設備為“離線”狀態,下一步要把“離線”的狀態變為“在線”狀態,需要將物聯網設備進行插電啟動、設置入網。
3.4.3 添加功能
阿里云平臺中沒有CO、SO2、O3、NO2等功能定義,需要手動添加。首先,登陸阿里云的物聯網應用開發平臺。其次,點擊右側的設備接入專欄,進入后可以看到左側的設備管理。再次點擊,會看到已創建好的產品名稱。通過后面的查看按鈕進入到產品的詳情頁,找到功能定義,點擊編輯草稿,選擇“添加自定義功能”,輸入CO、SO2、O3、NO2、PM2.5,添加完畢后,點擊“發布上線”按鈕即可完成添加。
3.4.4 MQTT服務器接入云
在云平臺物聯網管理應用中找到設備管理,點開列表,看到產品后雙擊,會有一個自定義的Topic,點擊創建。定義Topic后,打開eclipse.paho調試工具也就是MQTT客戶端。在MQTT客戶端中,找到位于左上角的文件,選擇新建連接,創建一個名為connection2的服務器連接。創建完成后,可以看到MQTT下的服務器地址和客戶機標識,這里默認本地環境地址為服務器地址。手動點擊連接按鈕,看到連接狀態顯示為:已連接。接著在下方訂閱-添加新的訂閱起一個名字test,勾選后點擊訂閱就可以發布消息。發布消息如圖5所示。
圖5 MQTT發布消息
系統上電運行后,監測終端的傳感器模塊便開始進行數據采集,當監測終端和阿里云連接成功(BC28模塊上的網絡連接指示燈亮)后,查看液晶顯示屏上的數值是否和云平臺接收的一致。通過多次實驗表明,該系統可以使用戶實時、準確地對監測終端附近的空氣中的CO、SO2、O3、NO2、PM2.5進行遠程監測。
本設計通過監測終端的傳感器模塊實現對空氣質量的數據采集,使用液晶顯示器顯示氣體濃度的同時,利用NB-IoT模塊將數據傳送到云平臺,用戶可以利用云平臺實現對環境數據的遠程監測。該系統不僅能夠對數據進行實時采集、穩定傳輸,而且可以設定閾值報警,可廣泛用于不同場所的空氣質量監測,具有一定的實際應用價值。