基于安卓手機(jī)的多功能智能小車
引 言
智能車的應(yīng)用非常廣泛,在工業(yè)制造、農(nóng)業(yè)生產(chǎn)、安全實(shí)驗(yàn)、環(huán)境探索和檢測,甚至是軍事偵察、外星探測等各方面都有應(yīng)用。在外星的探索上,19 世紀(jì)美國在探索火星時(shí)發(fā)送了“機(jī)遇號”和“勇氣號”兩輛勘測小車,而我國在 2013 年探測月球時(shí)也發(fā)送了首顆勘測小車“玉兔”號 [1]。
隨著車聯(lián)網(wǎng)、智能汽車的興起,亟待解決的問題越來越多,各種新技術(shù)應(yīng)運(yùn)而生。智能汽車作為人工智能的重要領(lǐng)域之一,已經(jīng)成為時(shí)代的熱點(diǎn)。未來智能汽車將是跨學(xué)科、跨領(lǐng)域的高新技術(shù)載體,甚至是某種意義上有靈魂、有生命的高度智慧體 [2]。智能小車成本較低,而且應(yīng)用技術(shù)十分廣泛,包含微控制、無線通信、傳感器技術(shù)等,以智能小車作為智能汽車的模型,是探索智能汽車以及人工智能非常好的切入點(diǎn)。
1 小車整體設(shè)計(jì)
智能小車以單片機(jī)作為控制核心,下位機(jī)與 Android 手機(jī)終端通過藍(lán)牙無線傳輸技術(shù)實(shí)時(shí)通信。在小車手動模式下, 用戶通過手機(jī)發(fā)送指令信息,控制中心根據(jù)接收到的指令按照程序控制小車運(yùn)動,完成相應(yīng)的任務(wù)。手機(jī)終端能夠?qū)崟r(shí)接收控制器上傳的傳感器數(shù)據(jù)信息,分析處理后在屏幕上顯示相關(guān)信息,并根據(jù)程序設(shè)定做出相應(yīng)的安全提醒或危險(xiǎn)警報(bào)。
1.1 小車供電系統(tǒng)
電源是系統(tǒng)穩(wěn)定工作的前提。小車的主控系統(tǒng)、通信模塊、傳感器模塊以及其他模塊的工作電壓基本都為 5 V,而驅(qū)動直流電機(jī)需要 12V。因此電源采用三節(jié) 3.7V可充電的鋰電池,鋰電池相對于普通鋅 - 錳干電池的優(yōu)點(diǎn)是容量大、能提供更大的電流,電源更穩(wěn)定而且可快速充電。三節(jié)鋰電池電壓能夠達(dá)到 11V,足夠驅(qū)動直流電機(jī),經(jīng)過降壓 /穩(wěn)壓電路后得到穩(wěn)定的 5V 電壓,為各芯片提供穩(wěn)定的工作環(huán)境。降壓 / 穩(wěn)壓電路的核心是三端穩(wěn)壓器 LM7805,LM7805性能穩(wěn)定,輸出端能夠得到穩(wěn)定的 5V電壓,而且內(nèi)部電路還具有過壓、過流等保護(hù)功能。
1.2 小車主控系統(tǒng)
小車主控系統(tǒng)以 STC89C52 為核心。STC89C52 是一種增強(qiáng)型 51 單片機(jī),不但性能更加穩(wěn)定,而且增大了 ROM 和 RAM,提高了運(yùn)算速度。增強(qiáng)后的 STC89C52 具有 8 KB FLASH 存儲器、512 B RAM、32 位 I/O 口線、一個(gè)全雙工串行口,以及 3 個(gè) 16 位定時(shí)器 / 計(jì)數(shù)器和 4 個(gè)外部中斷。另外,STC89C52 可設(shè)置節(jié)電模式,具有較強(qiáng)的抗干擾能力和低功耗 [3]。因此不管是外設(shè)接口還是內(nèi)存或者運(yùn)算速度等, STC89C52 都能滿足目前設(shè)計(jì)要求,而且 STC89C52 輕巧, 控制端口簡單。
1.3 小車底層運(yùn)動模塊
智能小車驅(qū)動采用直流減速電機(jī),該電機(jī)轉(zhuǎn)速小、功耗低、調(diào)速性能較好、力矩大。為了減少對控制器和電源的干擾, 在電機(jī)內(nèi)部增加環(huán)形壓敏電阻。L298N 是專用的驅(qū)動集成電路,芯片工作電壓為 5 V,驅(qū)動電機(jī)電壓為 12 V。L298N 可同時(shí)驅(qū)動 2 個(gè)直流電機(jī),輸入端為 TTL 邏輯電平,可以直接連單片機(jī)的 I/O 口 [4]。OUTl ~ 4 為四個(gè)輸出端,輸出電流為 2 A 左右,分別接兩個(gè)直流電機(jī)。L298N 邏輯真值見表 1 所列。
1.4 溫度檢測
智能小車的溫度檢測采用 TO-92 封裝的 DS18B20 數(shù)字式溫度傳感器,這種傳感器體積小、控制方便、穩(wěn)定性好,而且 DS18B20 采用獨(dú)特的 1-Wire 通信,即僅采用一個(gè)數(shù)據(jù)線就可以與微控制器進(jìn)行通信。該技術(shù)將時(shí)鐘線、數(shù)據(jù)線、控制線甚至電源線合并成一根線,只要符合其通信協(xié)議標(biāo)準(zhǔn)就能進(jìn)行通信 [5],所以電路十分簡單。DS18B20 能夠檢測-55 ~125 ℃,并且可以由用戶自行配置 9 ~12 位分辨率,具有用戶可編程的非易失性,以及過溫與低溫觸發(fā)報(bào)警的報(bào)警功能,測量結(jié)果直接輸出數(shù)字溫度信號。同時(shí),一根總線上可以連接多個(gè) DS18B20,具有支持多點(diǎn)組網(wǎng)、實(shí)現(xiàn)多點(diǎn)測溫的功能。在本文設(shè)計(jì)中 DS18B20 主要用來檢測周圍的環(huán)境溫度。
1.5 超聲波測距
HC_SR04 是常用的非接觸式超聲波距離測量模塊,工作電壓為 3.3 ~5 V。HC_SR04 的工作原理是觸發(fā)端Trig 給 10 μs 以上的高電平信號,HC-SR04 內(nèi)部自動發(fā)送 8 個(gè) 40 kHz 的方波,模塊自動檢測是否有信號返回,如果有信號返回,模塊 Echo 端輸出一個(gè)時(shí)間為超聲波從發(fā)射到返回的高電平 [6]。單片機(jī)通過定時(shí)器計(jì)算 Echo 端高電平的時(shí)間,根據(jù)定時(shí)器計(jì)算所得到的時(shí)間和所處環(huán)境聲音傳播的速度計(jì)算出當(dāng)前距離。
當(dāng)小車上的距離傳感器測得的距離到達(dá)障礙第一個(gè)限定值時(shí),小車上的危險(xiǎn)指示燈閃爍做出危險(xiǎn)警告 ;當(dāng)測得的距離到達(dá)第二個(gè)限定值時(shí),系統(tǒng)自動采取緊急制動措施 [7]。終端也能夠自主分析接收到的數(shù)據(jù),根據(jù)不同的情況,手機(jī)屏幕顯示相關(guān)危險(xiǎn)信息內(nèi)容,并做相應(yīng)的語音提示。DS18B20 測距及報(bào)警流程如圖 1 所示。
圖 1 DS18B20 測距及報(bào)警流程
1.6 手機(jī) APP 設(shè)計(jì)
手機(jī)軟件的開發(fā)相對來說是智能小車設(shè)計(jì)過程中的難點(diǎn), 本文系統(tǒng)的 APP 通過第三方在線開發(fā)平臺 MIT APP Inventor 進(jìn)行設(shè)計(jì)。APP Inventor 是 Google 公司開發(fā)的一款手機(jī)編程工具軟件,在智能家居與機(jī)器人控制領(lǐng)域都有非常廣泛的應(yīng)用。其最大優(yōu)勢是環(huán)境搭建方便,開發(fā)過程簡單 [8], 且上手容易,大大縮短了開發(fā)周期。
APP 開發(fā)主要分為兩部分內(nèi)容。一是 APP 用戶界面的設(shè)計(jì)。用戶界面是用戶與系統(tǒng)信息交互的媒介,所以清晰、美觀的 UI 設(shè)計(jì)會讓人操作起來更加舒適。用戶界面設(shè)計(jì)即根據(jù)需求添加所需組件,根據(jù)組件性能設(shè)計(jì)組件的形狀、大小、顏色及背景等,然后按照軟件的功能與風(fēng)格要求設(shè)計(jì)界面布局。
另一部分是 APP 邏輯組件的設(shè)計(jì)。APP 邏輯設(shè)計(jì)即編程,組件類似 C 語言中的封裝函數(shù),需要時(shí)直接調(diào)用。APP Inventor 提供了較多邏輯控制事件、字符操作、條件事件等, 邏輯設(shè)計(jì)即定義各個(gè)組件的行為及具體實(shí)現(xiàn)功能。首先按要求修改組件相應(yīng)參數(shù),然后按照組件要實(shí)現(xiàn)的功能添加相應(yīng)的邏輯控制、條件選擇、數(shù)據(jù)操作等事件定義組件的動作流程 [9]。APP 主要模塊有通信連接、運(yùn)動指令下達(dá)、傳感器信息顯示,到達(dá)限定值時(shí)危險(xiǎn)信息警報(bào)。最終完成的 APP 界面如圖 2 所示。
圖 2 APP 界面
2 智能小車研究過程中的技術(shù)難點(diǎn)
智能小車 APP 需要接收傳感器的動態(tài)數(shù)據(jù)并實(shí)時(shí)顯示。傳感器的數(shù)據(jù)一直更新,不能像單片機(jī)的 While 循環(huán)一樣一直接收數(shù)據(jù),若 APP 發(fā)一個(gè)控制碼過去接收一次數(shù)據(jù),則只能單次接收,而傳感器的數(shù)據(jù)是動態(tài)的,要求實(shí)時(shí)更新,此種方式顯然達(dá)不到要求。筆者受到單片機(jī)串口中斷思想的啟發(fā),添加一個(gè)定時(shí)器,當(dāng)定時(shí)器啟動時(shí)開始接收數(shù)據(jù),然而這樣雖然能夠?qū)崟r(shí)接收、顯示數(shù)據(jù),卻不能按字節(jié)提取某一個(gè)傳感器的數(shù)據(jù)分別顯示。最后在教師的指導(dǎo)下把接收到的文本轉(zhuǎn)換成 Hex 格式,實(shí)現(xiàn)了隨意按照設(shè)定字節(jié)數(shù)提取某一部分的數(shù)據(jù)。
3 結(jié) 語
本文設(shè)計(jì)的智能小車可以實(shí)現(xiàn)利用智能手機(jī)通過無線傳輸對小車進(jìn)行實(shí)時(shí)控制,智能車上搭載的傳感器能夠把數(shù)據(jù)上傳到手機(jī),通過手機(jī)可實(shí)時(shí)查看傳感器的檢測值,超過設(shè)定值時(shí)呈現(xiàn)對應(yīng)的報(bào)警信息。但由于目前通信采用的是短距離無線通信技術(shù),傳輸距離有限,未來擬改變通信方式,采用如 GPRS 等遠(yuǎn)距離無線通信,并增加攝像頭,實(shí)現(xiàn)手機(jī)實(shí)時(shí)監(jiān)控小車周圍情況 [10]。另外,未來還可嘗試增加 GPS 定位功能,得到較精確的定位。