基于 CC3200 的超聲波測距
掃描二維碼
隨時隨地手機(jī)看文章
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)了對信息的有效傳遞。
客觀世界里,物體總處在不斷的運(yù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,TIRTOS 實時操作系統(tǒng)等,用戶可充分利用這些已有的 API 和庫更高效地編寫 CC3200 MCU 的各種應(yīng)用程序。本文系統(tǒng)總體流程如圖 5 所示。
3.1.1 GPIO 口配置
正確配置 CC3200 的 GPIO 口是連接超聲波模塊程序的基礎(chǔ)。PinMuxConfi g() 為 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 請求。客戶端定時發(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)用價值。