羊日飛 黃平
摘 要:針對物聯(lián)網(wǎng)領(lǐng)域距離數(shù)據(jù)采集與遠(yuǎn)程監(jiān)測的需求,設(shè)計實現(xiàn)基于TI CC3200的超聲波測距系統(tǒng)。該系統(tǒng)采用超聲波傳感器測距,通過TI CC3200處理器對超聲波傳感器模塊進(jìn)行控制,并利用內(nèi)置WiFi功能的網(wǎng)絡(luò)處理器聯(lián)網(wǎng),實現(xiàn)無線方式的數(shù)據(jù)傳輸,工作在AP模式下的Web服務(wù)器可使用戶通過網(wǎng)頁遠(yuǎn)程開啟并持續(xù)監(jiān)控距離測量的結(jié)果。
關(guān)鍵詞:物聯(lián)網(wǎng);數(shù)據(jù)采集;遠(yuǎn)程監(jiān)測;TI CC3200;超聲波測距;傳感器
中圖分類號:TP39文獻(xiàn)標(biāo)識碼:A文章編號:2095-1302(2019)04-00-03
0 引 言
物聯(lián)網(wǎng)是融合了傳感器、計算機(jī)、通信網(wǎng)絡(luò)、半導(dǎo)體技術(shù)實現(xiàn)的物與物之間的互聯(lián)通信,其核心是“物物互聯(lián)”[1]。傳感器技術(shù)是物聯(lián)網(wǎng)的關(guān)鍵技術(shù)之一,承擔(dān)了對信息的實時采集,而無線網(wǎng)絡(luò)通信技術(shù)則承擔(dān)了對信息的有效傳遞。
客觀世界里,物體總處在不斷的運動變化中,因此物體之間距離的變化經(jīng)常是需要實時監(jiān)測的物理量。在物聯(lián)網(wǎng)領(lǐng)域,距離數(shù)據(jù)采集與遠(yuǎn)程監(jiān)測是常需解決的問題。
利用超聲波遇到障礙物反射的原理制成的超聲波傳感器可用于近距離測量。超聲波傳感器模塊能夠?qū)⒊暡ǖ膫鬏敃r間轉(zhuǎn)換為電信號脈沖寬度,測量出脈沖寬度與已知聲音的傳輸速度,經(jīng)過計算轉(zhuǎn)換就能得到待測距離。
TI CC3200是德州儀器推出的一款用于物聯(lián)網(wǎng)解決方案的單片無線MCU,內(nèi)部集成了WiFi處理器,可通過CC3200實現(xiàn)測距數(shù)據(jù)的無線傳輸與遠(yuǎn)程監(jiān)控。本文主要利用CC3200連接超聲波測距模塊,并在此基礎(chǔ)上通過CC3200工作在WiFi無線AP模式,實現(xiàn)用戶通過瀏覽器在網(wǎng)頁中控制與實時獲取測距結(jié)果。
1 總體設(shè)計
本文系統(tǒng)由超聲波模塊、CC3200 Launchpad、客戶端瀏覽器等組成。超聲波模塊用于發(fā)射、接收超聲波,并將超聲波的傳播時間轉(zhuǎn)換為電信號的脈沖寬度。CC3200 Launchpad板是整個系統(tǒng)的核心,其與超聲波模塊相連接,負(fù)責(zé)發(fā)送觸發(fā)信號,啟動超聲波測距,接收脈寬信號,計算并轉(zhuǎn)換為距離數(shù)據(jù),同時作為WiFi無線AP服務(wù)器,將距離數(shù)據(jù)傳輸?shù)娇蛻舳藶g覽器。用戶使用時,在瀏覽器中打開CC3200服務(wù)器頁面,通過頁面中的按鈕啟動測距,網(wǎng)頁中即可實時顯示當(dāng)前距離數(shù)據(jù)(單位:mm)。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
2 系統(tǒng)硬件
2.1 超聲波模塊
本文系統(tǒng)采用的超聲波模塊具備如下功能特性:
(1)工作電壓為直流5 V;
(2)發(fā)射40 kHz超聲波進(jìn)行測距;
(3)最遠(yuǎn)探測距離為3.5 m,最近探測距離為3 cm;
(4)探測精度為3 mm。
模塊接口信號包括VCC電源正極、GND地、Trig觸發(fā)信號輸入、Echo回波信號輸出。其中,Trig觸發(fā)信號用于啟動單次測距,由CC3200的I/O口輸出到超聲波模塊;Echo回波輸出信號的高電平脈沖寬度表示超聲波的往返傳輸時間,輸出到CC3200 的I/O口進(jìn)行采集,具體時序如圖2所示。
2.2 SimpleLinkTM CC3200 Launchpad
本文系統(tǒng)的核心部件是CC3200 Launchpad開發(fā)板,CC3200是TI推出的一款以ARM Cortex-M4為核心,集成WiFi網(wǎng)絡(luò)處理器的MCU,主要應(yīng)用于物聯(lián)網(wǎng)解決方案。而CC3200 Launchpad是TI為研發(fā)CC3200處理器應(yīng)用提供的開發(fā)板,該開發(fā)板上集成有Micro USB接口(可連接電腦用于供電和調(diào)試)、FTDI JTAG仿真器(支持串口編程)及40 Pin接口(用于連接外部器件)等。CC3200 硬件概況如圖3所示。
CC3200 MCU有多達(dá)27個GPIO口,分為4組(GPIOA0~3),可編程為輸入或輸出引腳,所有GPIO引腳均有中斷能力,具有可配置的驅(qū)動能力。本文系統(tǒng)使用CC3200的2個GPIO口:其中一個作為輸出,用于與超聲波模塊的Trig腳相連;另一個作為輸入,與超聲波模塊的Echo腳相連。
2.3 3.3 V轉(zhuǎn)5 V接口電路
因為CC3200 Launchpad板的工作電壓為3.3 V,而超聲波模塊的工作電壓為5 V,所以當(dāng)CC3200 GPIO引腳與超聲波模塊引腳互聯(lián)時,需要解決3.3 V到5 V的電平轉(zhuǎn)換問題。本文系統(tǒng)采用的方法分為如下兩種情況:
(1)CC3200 引腳輸出,超聲波模塊Trig引腳輸入。根據(jù)CC3200的Datasheet,其GPIO引腳輸出邏輯“1”的電壓VOH≥2.4 V,因此可以與超聲波模塊Trig引腳直接相連。
(2)CC3200引腳輸入,超聲波模塊Echo引腳輸出。采用電阻分壓做電平轉(zhuǎn)換,具體電路如圖4所示。
電阻取值為R1=1.2 MΩ,R2=1.2 MΩ時,可保證CC3200輸入高電平的電壓大于VIH=0.65Vcc=2.132 V,且輸入低電平的電壓不高于VIL=0.35Vcc=1.148 V(Vcc=3.28 V)。
3 系統(tǒng)軟件
本文系統(tǒng)的網(wǎng)絡(luò)架構(gòu)采用典型的客戶端-服務(wù)器模式。CC3200的SimpleLink網(wǎng)絡(luò)處理器工作在無線AP模式,作為服務(wù)器監(jiān)聽客戶端發(fā)來的請求。用戶可使用PC、手機(jī)、平板連接該系統(tǒng)的無線AP,用瀏覽器打開對應(yīng)網(wǎng)頁,網(wǎng)頁中的按鈕用于發(fā)出開啟與關(guān)閉測距的指令,前端網(wǎng)頁設(shè)計中采用AJAX技術(shù)在不重新加載全部頁面的情況下實時更新顯示當(dāng)前測距結(jié)果。
3.1 CC3200程序設(shè)計
CC3200 MCU程序在CCS集成開發(fā)環(huán)境下開發(fā),TI同時提供了軟件開發(fā)包CC3200 SDK,SDK中包含外設(shè)驅(qū)動庫、SimpleLink網(wǎng)絡(luò)處理器驅(qū)動代碼、各種網(wǎng)絡(luò)協(xié)議API,TI-RTOS實時操作系統(tǒng)等,用戶可充分利用這些已有的API和庫更高效地編寫CC3200 MCU的各種應(yīng)用程序。本文系統(tǒng)總體流程如圖5所示。
3.1.1 GPIO口配置
正確配置CC3200的GPIO口是連接超聲波模塊程序的基礎(chǔ)。PinMuxConfig()為GPIO引腳復(fù)用配置函數(shù),其中調(diào)用MAP_PinTypeGPIO()設(shè)置引腳類型,MAP_GPIODirModeSet()設(shè)置引腳方向,參數(shù)GPIO_DIR_MODE_IN為輸入,GPIO_DIR_MODE_OUT為輸出。
3.1.2 Echo脈沖寬度測量
CC3200內(nèi)部有4個32位可編程通用定時器,本文程序使用其中的TIMERA0,操作模式由函數(shù)Timer_IF_Init()設(shè)置為TIMER_CFG_ONE_SHOT,即32位單次定時器。當(dāng)查詢檢測到Echo信號被拉高時,調(diào)用函數(shù)Timer_IF_Start()開始定時器計時,然后等待Echo信號被拉低,再停止定時器計時,調(diào)用MAP_TimerValueGet()獲取定時時間,該函數(shù)返回的時間數(shù)值單位為毫秒。本文程序同時設(shè)置定時器中斷作為Echo信號超時處理。
3.1.3 距離計算
距離計算公式為:被測距離=(Echo信號脈沖寬度×聲速)/2。其中,Echo信號脈沖寬度已通過定時器獲取,聲速一般是340 m/s,該值可根據(jù)實際測量時的環(huán)境情況校準(zhǔn)。
3.1.4 響應(yīng)GET請求
SimpleLinkHttpServerCallback()是處理HTTP服務(wù)器事件的回調(diào)函數(shù),其中由case語句分類處理客戶端的POST和GET請求??蛻舳硕〞r發(fā)出GET請求獲取測距數(shù)據(jù),并且該GET請求用“__SL_G_DST”進(jìn)行標(biāo)記?!癬_SL_G_DST”是程序根據(jù)預(yù)定義標(biāo)記(Token)規(guī)則定義的用戶標(biāo)記,用以標(biāo)識網(wǎng)頁對服務(wù)器測距數(shù)據(jù)的請求。SimpleLinkHttpServerCallback()接收到該標(biāo)記后,將測距數(shù)據(jù)的值轉(zhuǎn)換為字符串作為標(biāo)記值返回至客戶端。
3.2 前端網(wǎng)頁程序設(shè)計
本文應(yīng)用的網(wǎng)頁存儲在CC3200內(nèi)部FLASH中,需要事先使用TI的CCS UniFlash工具進(jìn)行編程燒錄。網(wǎng)頁程序使用Javascript語言編寫,在客戶端設(shè)備上執(zhí)行。為了能夠在不重載頁面的情況下與服務(wù)器交換數(shù)據(jù),實時顯示測距結(jié)果,本文采用AJAX技術(shù)。對于程序中編寫的標(biāo)記輪詢函數(shù)com.TI.tokenPoller(),第一個參數(shù)“paramPage”指定調(diào)用$.ajax()時的參數(shù)網(wǎng)頁,第二個參數(shù)“refreshRate”控制輪詢的周期即數(shù)據(jù)刷新時間,第三個參數(shù)“valueMap”指定調(diào)用$.ajax() 函數(shù)時包含的GET標(biāo)記“__SL_G_DST”,同時參數(shù)也指定了服務(wù)器成功返回時的處理函數(shù),該函數(shù)用于獲取返回的“__SL_G_DST”標(biāo)記的值,并更新網(wǎng)頁中的測距結(jié)果顯示。
4 結(jié) 語
本文介紹了基于CC3200芯片的超聲波測距系統(tǒng),該系統(tǒng)實現(xiàn)了距離的檢測及測量結(jié)果的無線傳輸。本文充分利用了CC3200芯片集成的網(wǎng)絡(luò)功能,以單芯片方式實現(xiàn)了連接傳感器模塊測距與HTTP服務(wù)器兩個功能,使用戶能方便地通過網(wǎng)頁獲取測距結(jié)果,在物聯(lián)網(wǎng)數(shù)據(jù)采集領(lǐng)域具有一定的應(yīng)用價值。
注:本文通訊作者為黃平。
參 考 文 獻(xiàn)
[1]趙靜,喻曉紅,黃波,等.物聯(lián)網(wǎng)的結(jié)構(gòu)體系與發(fā)展[J].通信技術(shù),2010,43(9):106-108.
[2] TI.CC3200 SimpleLinkTM WiFi and internet of things solution,a single-chip wireless mcu datasheet [EB/OL].[2015-08-12].http://www.ti.com/product/CC3200MOD/description.
[3] TI.Interfacing the 3 V MSP430TM MCUs to 5 V Circuits.[EB/OL].[2018-05-15].http://msl.gaw.ru/pdf/TI/app/msp430/slaa148.pdf.
[4]郭書軍.ARM Cortex-M4+WiFi MCU應(yīng)用指南[M].北京:電子工業(yè)出版社,2015.
[5]劉學(xué)飛,胡澤,范維志.一種高精度超聲波測距系統(tǒng)研究[J].物聯(lián)網(wǎng)技術(shù),2013,3(1):18-19.
[6]劉曉玲,丁保全.基于STM32的多旋翼無人機(jī)超聲波測距系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2016,6(2):13-16.
[7]李琦,徐陽,梁麗.基于CC3200的氣象數(shù)據(jù)采集與遠(yuǎn)程通信系統(tǒng)[J].計算機(jī)工程與應(yīng)用,2017,53(13):235-239.
[8]郭書軍,田志鵬.基于單片WiFi MCU CC3200的無線串口[J].儀器儀表用戶,2016(1):24-27.
[9]劉巧利,賀鵬飛,周洋.基于CC3200的遠(yuǎn)程環(huán)境監(jiān)測與控制系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2017,7(10):56-58.
[10]李劍.基于CC3200的WiFi遙控器設(shè)計[D].蘭州:蘭州大學(xué),2017.