基于 CC3200 的超聲波測(cè)距
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引 言
物聯(lián)網(wǎng)是融合了傳感器、計(jì)算機(jī)、通信網(wǎng)絡(luò)、半導(dǎo)體技術(shù)實(shí)現(xiàn)的物與物之間的互聯(lián)通信,其核心是“物物互聯(lián)”[1]。傳感器技術(shù)是物聯(lián)網(wǎng)的關(guān)鍵技術(shù)之一,承擔(dān)了對(duì)信息的實(shí)時(shí)采集,而無(wú)線網(wǎng)絡(luò)通信技術(shù)則承擔(dān)了對(duì)信息的有效傳遞。
客觀世界里,物體總處在不斷的運(yùn)動(dòng)變化中,因此物體之間距離的變化經(jīng)常是需要實(shí)時(shí)監(jiān)測(cè)的物理量。在物聯(lián)網(wǎng)領(lǐng)域,距離數(shù)據(jù)采集與遠(yuǎn)程監(jiān)測(cè)是常需解決的問(wèn)題。
利用超聲波遇到障礙物反射的原理制成的超聲波傳感器可用于近距離測(cè)量。超聲波傳感器模塊能夠?qū)⒊暡ǖ膫鬏敃r(shí)間轉(zhuǎn)換為電信號(hào)脈沖寬度,測(cè)量出脈沖寬度與已知聲音的傳輸速度,經(jīng)過(guò)計(jì)算轉(zhuǎn)換就能得到待測(cè)距離。
TI CC3200 是德州儀器推出的一款用于物聯(lián)網(wǎng)解決方案的單片無(wú)線 MCU,內(nèi)部集成了 WiFi 處理器,可通過(guò)CC3200 實(shí)現(xiàn)測(cè)距數(shù)據(jù)的無(wú)線傳輸與遠(yuǎn)程監(jiān)控。本文主要利用 CC3200 連接超聲波測(cè)距模塊,并在此基礎(chǔ)上通過(guò) CC3200工作在 WiFi 無(wú)線 AP 模式,實(shí)現(xiàn)用戶通過(guò)瀏覽器在網(wǎng)頁(yè)中控制與實(shí)時(shí)獲取測(cè)距結(jié)果。
1 總體設(shè)計(jì)
本文系統(tǒng)由超聲波模塊、CC3200 Launchpad、客戶端瀏覽器等組成。超聲波模塊用于發(fā)射、接收超聲波,并將超聲波的傳播時(shí)間轉(zhuǎn)換為電信號(hào)的脈沖寬度。CC3200 Launchpad板是整個(gè)系統(tǒng)的核心,其與超聲波模塊相連接,負(fù)責(zé)發(fā)送觸發(fā)信號(hào),啟動(dòng)超聲波測(cè)距,接收脈寬信號(hào),計(jì)算并轉(zhuǎn)換為距離數(shù)據(jù),同時(shí)作為 WiFi 無(wú)線 AP 服務(wù)器,將距離數(shù)據(jù)傳輸?shù)娇蛻舳藶g覽器。用戶使用時(shí),在瀏覽器中打開(kāi) CC3200 服務(wù)器頁(yè)面,通過(guò)頁(yè)面中的按鈕啟動(dòng)測(cè)距,網(wǎng)頁(yè)中即可實(shí)時(shí)顯示當(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)行測(cè)距 ;
(3)最遠(yuǎn)探測(cè)距離為 3.5 m,最近探測(cè)距離為 3 cm ;
(4)探測(cè)精度為 3 mm。
模塊接口信號(hào)包括 VCC 電源正極、GND 地、Trig 觸發(fā)信號(hào)輸入、Echo 回波信號(hào)輸出。其中,Trig 觸發(fā)信號(hào)用于啟動(dòng)單次測(cè)距,由 CC3200 的 I/O 口輸出到超聲波模塊 ;Echo回波輸出信號(hào)的高電平脈沖寬度表示超聲波的往返傳輸時(shí)間,輸出到 CC3200 的 I/O 口進(jìn)行采集,具體時(shí)序如圖 2 所示。
2.2 SimpleLinkTM CC3200 Launchpad
本文系統(tǒng)的核心部件是 CC3200 Launchpad 開(kāi)發(fā)板,CC3200 是 TI 推出的一款以 ARM Cortex-M4 為核心,集成WiFi 網(wǎng)絡(luò)處理器的 MCU,主要應(yīng)用于物聯(lián)網(wǎng)解決方案。而CC3200 Launchpad 是 TI 為研發(fā) CC3200 處理器應(yīng)用提供的開(kāi)發(fā)板,該開(kāi)發(fā)板上集成有 Micro USB 接口(可連接電腦用于供電和調(diào)試)、FTDI JTAG 仿真器(支持串口編程)及40 Pin 接口(用于連接外部器件)等。CC3200 硬件概況如圖 3 所示。
CC3200 MCU有多達(dá)27個(gè)GPIO口,分為4組(GPIOA0~ 3),可編程為輸入或輸出引腳,所有 GPIO 引腳均有中斷能力,具有可配置的驅(qū)動(dòng)能力。本文系統(tǒng)使用 CC3200 的 2 個(gè)GPIO 口 :其中一個(gè)作為輸出,用于與超聲波模塊的 Trig 腳相連 ;另一個(gè)作為輸入,與超聲波模塊的 Echo 腳相連。
2.3 3.3 V 轉(zhuǎn) 5 V 接口電路
因?yàn)?CC3200 Launchpad 板的工作電壓為 3.3 V,而超聲波模塊的工作電壓為 5 V,所以當(dāng) CC3200 GPIO 引腳與超聲波模塊引腳互聯(lián)時(shí),需要解決 3.3 V 到 5 V 的電平轉(zhuǎn)換問(wè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Ω 時(shí),可保證 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ò)處理器工作在無(wú)線 AP 模式,作為服務(wù)器監(jiān)聽(tīng)客戶端發(fā)來(lái)的請(qǐng)求。用戶可使用 PC、手機(jī)、平板連接該系統(tǒng)的無(wú)線 AP,用瀏覽器打開(kāi)對(duì)應(yīng)網(wǎng)頁(yè),網(wǎng)頁(yè)中的按鈕用于發(fā)出開(kāi)啟與關(guān)閉測(cè)距的指令,前端網(wǎng)頁(yè)設(shè)計(jì)中采用 AJAX 技術(shù)在不重新加載全部頁(yè)面的情況下實(shí)時(shí)更新顯示當(dāng)前測(cè)距結(jié)果。
3.1 CC3200 程序設(shè)計(jì)
CC3200 MCU 程序在 CCS 集成開(kāi)發(fā)環(huán)境下開(kāi)發(fā),TI 同時(shí)提供了軟件開(kāi)發(fā)包 CC3200 SDK,SDK 中包含外設(shè)驅(qū)動(dòng)庫(kù)、SimpleLink 網(wǎng)絡(luò)處理器驅(qū)動(dòng)代碼、各種網(wǎng)絡(luò)協(xié)議 API,TIRTOS 實(shí)時(shí)操作系統(tǒng)等,用戶可充分利用這些已有的 API 和庫(kù)更高效地編寫(xiě) CC3200 MCU 的各種應(yīng)用程序。本文系統(tǒng)總體流程如圖 5 所示。
3.1.1 GPIO 口配置
正確配置 CC3200 的 GPIO 口是連接超聲波模塊程序的基礎(chǔ)。PinMuxConfi g() 為 GPIO 引腳復(fù)用配置函數(shù),其中調(diào)用 MAP_PinTypeGPIO() 設(shè)置引腳類(lèi)型,MAP_GPIODirModeSet() 設(shè)置引腳方向, 參 數(shù) GPIO_DIR_MODE_IN 為輸入,GPIO_DIR_MODE_OUT 為輸出。
3.1.2 Echo 脈沖寬度測(cè)量
CC3200 內(nèi)部有 4 個(gè) 32 位可編程通用定時(shí)器,本文程序使用其中的 TIMERA0,操作模式由函數(shù) Timer_IF_Init()設(shè)置為 TIMER_CFG_ONE_SHOT,即 32 位單次定時(shí)器。當(dāng)查詢(xún)檢測(cè)到 Echo 信號(hào)被拉高時(shí),調(diào)用函數(shù) Timer_IF_Start()開(kāi)始定時(shí)器計(jì)時(shí),然后等待 Echo 信號(hào)被拉低,再停止定時(shí)器計(jì)時(shí),調(diào)用 MAP_TimerValueGet()獲取定時(shí)時(shí)間,該函數(shù)返回的時(shí)間數(shù)值單位為毫秒。本文程序同時(shí)設(shè)置定時(shí)器中斷作為 Echo 信號(hào)超時(shí)處理。
3.1.3 距離計(jì)算
距離計(jì)算公式為 :被測(cè)距離 =(Echo 信號(hào)脈沖寬度 ×聲速)/2。其中,Echo 信號(hào)脈沖寬度已通過(guò)定時(shí)器獲取,聲速一般是 340 m/s,該值可根據(jù)實(shí)際測(cè)量時(shí)的環(huán)境情況校準(zhǔn)。
3.1.4 響應(yīng) GET 請(qǐng)求
SimpleLinkHttpServerCallback() 是處理 HTTP 服務(wù)器事件的回調(diào)函數(shù),其中由 case 語(yǔ)句分類(lèi)處理客戶端的 POST 和 GET 請(qǐng)求。客戶端定時(shí)發(fā)出 GET 請(qǐng)求獲取測(cè)距數(shù)據(jù),并且該 GET 請(qǐng)求用“__SL_G_DST”進(jìn)行標(biāo)記。 “__SL_G_DST”是程序根據(jù)預(yù)定義標(biāo)記(Token)規(guī)則定義的用戶標(biāo)記,用以標(biāo)識(shí)網(wǎng)頁(yè)對(duì)服務(wù)器測(cè)距數(shù)據(jù)的請(qǐng)求。SimpleLinkHttpServerCallback()接收到該標(biāo)記后,將測(cè)距數(shù)據(jù)的值轉(zhuǎn)換為字符串作為標(biāo)記值返回至客戶端。
3.2 前端網(wǎng)頁(yè)程序設(shè)計(jì)
本文應(yīng)用的網(wǎng)頁(yè)存儲(chǔ)在 CC3200 內(nèi)部 FLASH 中,需要事先使用 TI 的 CCS UniFlash 工具進(jìn)行編程燒錄。網(wǎng)頁(yè)程序使用 Javascript 語(yǔ)言編寫(xiě),在客戶端設(shè)備上執(zhí)行。為了能夠在不重載頁(yè)面的情況下與服務(wù)器交換數(shù)據(jù),實(shí)時(shí)顯示測(cè)距結(jié)果,本文采用 AJAX 技術(shù)。對(duì)于程序中編寫(xiě)的標(biāo)記輪詢(xún)函數(shù)com.TI.tokenPoller(),第一個(gè)參數(shù)“paramPage”指定調(diào)用$.ajax()時(shí)的參數(shù)網(wǎng)頁(yè),第二個(gè)參數(shù)“refreshRate”控制輪詢(xún)的周期即數(shù)據(jù)刷新時(shí)間,第三個(gè)參數(shù)“valueMap”指定調(diào)用 $.ajax()函數(shù)時(shí)包含的 GET 標(biāo)記“__SL_G_DST”,同時(shí)參數(shù)也指定了服務(wù)器成功返回時(shí)的處理函數(shù),該函數(shù)用于獲取返回的“__SL_G_DST”標(biāo)記的值,并更新網(wǎng)頁(yè)中的測(cè)距結(jié)果顯示。
4 結(jié) 語(yǔ)
本文介紹了基于 CC3200 芯片的超聲波測(cè)距系統(tǒng),該系統(tǒng)實(shí)現(xiàn)了距離的檢測(cè)及測(cè)量結(jié)果的無(wú)線傳輸。本文充分利用了 CC3200 芯片集成的網(wǎng)絡(luò)功能,以單芯片方式實(shí)現(xiàn)了連接傳感器模塊測(cè)距與 HTTP 服務(wù)器兩個(gè)功能,使用戶能方便地通過(guò)網(wǎng)頁(yè)獲取測(cè)距結(jié)果,在物聯(lián)網(wǎng)數(shù)據(jù)采集領(lǐng)域具有一定的應(yīng)用價(jià)值。