霍國義, 張愛滑
(1. 河南水利與環(huán)境職業(yè)學(xué)院 基礎(chǔ)部, 鄭州 450011; 2. 中北大學(xué) 物理系,太原 0300511)
智能領(lǐng)域是當(dāng)今社會研究的熱點,人工智能、神經(jīng)網(wǎng)絡(luò)學(xué)長期以來面臨的巨大挑戰(zhàn),現(xiàn)在世界科技領(lǐng)域的巨頭都在重視人工智能的研究和發(fā)展,也必將在人工智能的領(lǐng)域投入巨大的研發(fā)成本,人工智能也會隨之而快速增長[1-3]。在人類感知方面,汽車自動駕駛,人機(jī)交流,機(jī)器學(xué)習(xí)等都已經(jīng)取得了不錯的成就,人工智能也將迎來它飛速發(fā)展的時代[4-7],學(xué)習(xí)和了解人工智能是我們必要掌握的一門技能。本文從智能小車入手,設(shè)計實現(xiàn)智能小車的控制系統(tǒng)以及智能小車的無線遙控,與控制端的無線通信等。從而入手更高級的自動控制,智能學(xué)習(xí)等高級算法[8-11]。 人工智能引領(lǐng)了現(xiàn)在科技發(fā)展的潮流,各國各大科技公司都投入到了人工智能領(lǐng)域的研究中[12-13],自動駕駛汽車已經(jīng)出現(xiàn)在馬路中測試。本文研究了單片機(jī)與安卓手機(jī)的藍(lán)牙通信通過安卓手機(jī)APP對小車的遙控,以及單片機(jī)對智能小車的運動狀態(tài)的控制[15-20]。
利用安卓手機(jī)的重力感應(yīng)和藍(lán)牙實現(xiàn)遙控器功能,通過控制STM32單片機(jī)定時器的PWM調(diào)制控制直流電動機(jī)速度,從而控制小車的運動,單片機(jī)通過讀取溫濕度傳感器模塊數(shù)據(jù)采集得到小車溫信息。通過速度傳感器采集小車電動機(jī)轉(zhuǎn)動速度,單片機(jī)再利用藍(lán)牙串口模塊,實現(xiàn)與遙控器的雙向數(shù)據(jù)傳輸。整個實現(xiàn)過程原理框圖如圖1所示。
圖1 實現(xiàn)過程原理框圖
安卓智能手機(jī)都自帶有藍(lán)牙功能,可以實現(xiàn)與另一藍(lán)牙設(shè)備連接并且相互收發(fā)數(shù)據(jù),滿足了本設(shè)計需要用藍(lán)牙遙控器的要求。而且在大多數(shù)Android設(shè)備中都內(nèi)置了傳感器,這些傳感器都是基于硬件與軟件共同實現(xiàn)的,不僅可以實現(xiàn)監(jiān)控手機(jī)設(shè)備的三維運動、位置等,還可以通過軟件實現(xiàn)獲取使用者對手機(jī)操作的動作,如平移、抖動、旋轉(zhuǎn)等操作,其重力感應(yīng)分析圖解如圖2所示。
圖2 手機(jī)重力感應(yīng)分析圖解
根據(jù)系統(tǒng)的具體設(shè)計要求和方案的對比選擇,最后決定系統(tǒng)的硬件組成部分包含以下幾個功能模塊:核心控制單片機(jī)最小系統(tǒng)模塊,小車(2個底盤、4個直流電動機(jī)、2顆電池、4個車輪、1個電池殼),用于測量車輪速度的光電測速傳感器模塊,用藍(lán)牙轉(zhuǎn)串口模塊作為無線傳輸數(shù)據(jù)、采集溫濕度的溫濕度傳感器模塊,驅(qū)動直流電動機(jī)的電動機(jī)驅(qū)動模塊。
電動機(jī)驅(qū)動模塊不易受外界環(huán)境影響性能,具有電源效率高,驅(qū)動電動機(jī)效果好等優(yōu)勢,廣泛運用于不同電動機(jī)的驅(qū)動。當(dāng)該驅(qū)動模塊的輸入電壓范圍在7~12 V時,可以給外部的單片機(jī)最小系統(tǒng)提供電源,也解決了單片機(jī)供電問題,此模塊電路如圖3所示。由于此電動機(jī)驅(qū)動模塊只能最多獨立驅(qū)動2臺直流電動機(jī),而小車有4個車輪需要4個直流電動機(jī),此時需要將小車同一側(cè)的2個電動機(jī)并聯(lián)起來,使它們能被同一個L298N電動機(jī)驅(qū)動模塊輸出端同步控制轉(zhuǎn)速和轉(zhuǎn)向。因此只要相當(dāng)于控制2個電動機(jī)就能完成對小車運動狀態(tài)的控制了。
圖3 L298N電動機(jī)驅(qū)動模塊電路
L298N電動機(jī)驅(qū)動模塊是2路的H橋驅(qū)動,它的電動機(jī)驅(qū)動控制原理方法如表1所示。由該表可知,當(dāng)需要控制小車4個直流電動機(jī)的轉(zhuǎn)動時,需要先使2個使能端設(shè)置為高電平,使能模塊受控制。此時只要給同一個電動機(jī)的2個輸入端中的一個輸入為固定低電平,另一個輸入端輸入用于調(diào)制電動機(jī)速度的脈寬調(diào)制方波,即可達(dá)到電動機(jī)控制。使小車能受控運動。
表1 L298N電動機(jī)驅(qū)動控制原理
本設(shè)計的軟件框圖如圖4所示。本設(shè)計軟件部分主要研究實現(xiàn)安卓手機(jī)重力感應(yīng)遙控小車,藍(lán)牙無線傳輸數(shù)據(jù),小車溫濕度、速度采集顯示。本設(shè)計的軟件部分主要由安卓手機(jī)藍(lán)牙遙控端軟件和單片機(jī)控制部分軟件組成。其中安卓手機(jī)藍(lán)牙遙控端軟件主要包含遙控界面布局程序、藍(lán)牙通信程序、事件處理程序三部分。而單片機(jī)控制的程序主要包含串口通信模塊程序、溫濕度采集模塊程序、外部中斷處理程序、定時器PWM方波輸出程序。
圖4 軟件框圖
本設(shè)計的遙控界面布局是用了Android中的相對布局來實現(xiàn)完成的。這種布局方法可以設(shè)置很多屬性,非常靈活方便。它的布局坐標(biāo)取值范圍都是相對的,可以使整體布局自動適應(yīng)不同尺寸的屏幕,因此得到很多Android開發(fā)者的喜愛。多個布局屬性中包含:① 設(shè)置控件的id值android:id="@+id/seekBar2";② 設(shè)置控件在界面中的旋轉(zhuǎn)角度android:rotation="90";③ 設(shè)置控件在id為speed_left"的右邊android:layout_toRightOf="@+id/speed_left" />等等。通過各個屬性之間的關(guān)系限制每個控件的大小和位置形成最終的布局。本設(shè)計的藍(lán)牙遙控界面最終如圖5所示。
圖5 藍(lán)牙遙控界面圖
重力感應(yīng)部分可以根據(jù)用戶對手機(jī)傾斜角度的改變打印出相應(yīng)的x與y的角度值,表示不同的手機(jī)重力感應(yīng)數(shù)據(jù),即手機(jī)在不同方向的傾斜程度。根據(jù)測試得到輸出x與y的值與手機(jī)傾斜的角度之間的關(guān)系制作成表格。
當(dāng)手機(jī)左右方向保持平衡,改變手機(jī)前后方向的傾斜角度時,此時x與y的值與手機(jī)傾斜的角度之間的關(guān)系如表2所示。
表2 x與y方向的值與手機(jī)前后傾斜角度之間的關(guān)系
當(dāng)手機(jī)前后方向保持平衡,改變手機(jī)左右方向的傾斜角度時,此時x與y的值與手機(jī)傾斜的角度之間的關(guān)系如表3所示。
由表2、3可知。當(dāng)手機(jī)左右方向保持平衡,改變手機(jī)前后方向的傾斜角度時,此時x隨著前后傾斜的角度線性變化,y值保持為0不變。當(dāng)手機(jī)前后方向保持平衡,改變手機(jī)左右方向的傾斜角度時,此時y隨著前后傾斜的角度線性變化,x值保持為0不變。由此可得重力感應(yīng)的控制數(shù)據(jù)符合本設(shè)計的要求。
表3 x與y方向的值與手機(jī)左右傾斜角度之間的關(guān)系
給小車安裝上2個18650電池后,打開電源開關(guān)給單片機(jī)系統(tǒng)上電后,打開手機(jī)遙控APP,掃描搜索藍(lán)牙設(shè)備,然后連接到小車的HC-05藍(lán)牙串口模塊,開啟重力感應(yīng)開關(guān),隨著手機(jī)向前傾的角度越來越大小車向前的速度也隨著變快。當(dāng)手機(jī)左右方向保持平衡,改變手機(jī)前后方向的傾斜角度時,此時手機(jī)APP顯示小車左右兩邊速度的值與手機(jī)傾斜角度之間的關(guān)系如表4所示(速度值的正負(fù)表示電動機(jī)轉(zhuǎn)動的方向,數(shù)值的大小表示電動機(jī)每秒轉(zhuǎn)動的圈數(shù))。
表4 APP顯示小車速度與手機(jī)前后傾斜的角度之間的關(guān)系
由表4可知,當(dāng)手機(jī)左右方向保持平衡(輸出值為0),改變手機(jī)前后方向的傾斜角度時,此時隨著前后傾斜的角度值大于-20°且小于20°。當(dāng)小車前后傾斜的角度的絕對值越大時,此時小車前進(jìn)或后退的速度絕對值也越大,且此時兩個電動機(jī)轉(zhuǎn)動方向一致,小車前進(jìn)或者后退,而當(dāng)左右傾斜的角度值大于-20°~20°時,小車靜止不動。
當(dāng)手機(jī)前后方向保持平衡,改變手機(jī)左右方向的傾斜角度時,此時手機(jī)APP顯示小車左右兩邊速度的值與手機(jī)傾斜的角度之間的關(guān)系如表5所示(速度值的正負(fù)表示電動機(jī)轉(zhuǎn)動的方向,數(shù)值的大小表示電動機(jī)每秒轉(zhuǎn)動的圈數(shù))。
表5 APP顯示小車速度與手機(jī)左右傾斜的角度之間的關(guān)系
由表5可知,當(dāng)手機(jī)前后方向保持平衡(輸出值為0),改變手機(jī)左右方向的傾斜角度時,此時隨著左右傾斜的角度值大于-20°且小于20°時,小車靜止不動。當(dāng)小車前后傾斜的角度的絕對值越大時,此時小車前進(jìn)或后退的速度絕對值也越大,且此時兩個電動機(jī)轉(zhuǎn)動方向相反,小車在原地順時針或逆時針轉(zhuǎn)圈,而當(dāng)左右傾斜的角度值大于-20°~20°時,小車靜止不動。
由此可見,小車在手機(jī)傾斜角度在-20°~20°之間時,此時單片機(jī)輸出的PWM占空比較低,導(dǎo)致不能驅(qū)動直流電動機(jī)的轉(zhuǎn)動,小車靜止不動。而當(dāng)手機(jī)遙控器傾斜角度絕對值大20°時,小車受遙控器重力感應(yīng)控制。當(dāng)小車只在前后方向或者左右方向有傾斜的角度時,此時小車車輪電動機(jī)速度與傾斜角度的絕對值成正比關(guān)系,傾斜角度值越大小車電動機(jī)速度值也越大。而當(dāng)手機(jī)慢慢向前傾斜的同時也讓手機(jī)向右端傾斜此時小車向前的速度慢慢增大的同時,小車也有向右的速度,此時小車運動軌跡是一某點為圓心順時針轉(zhuǎn)圈,此時APP端顯示的速度值左邊比右邊大。
當(dāng)改變小車環(huán)境時,小車隨著環(huán)境變化采集得到不同的溫、濕度數(shù)據(jù),發(fā)送至手機(jī)遙控器端實時顯示。其與標(biāo)準(zhǔn)溫度計濕度計測量值對比關(guān)系如表6所示。
表6 標(biāo)準(zhǔn)溫度計、濕度計與測量值對比關(guān)系
由表6可知,在不同環(huán)境下測得的溫濕度基本準(zhǔn)確,與標(biāo)準(zhǔn)值相差不大,并且能在遙控器APP端正常顯示,符合本設(shè)計的要求。
通過對小車的幾輪測試結(jié)果,可以看出本設(shè)計的結(jié)果達(dá)到了設(shè)計的要求,溫濕度的測量值基本正確,個別誤差值存在的誤差也在誤差允許范圍之內(nèi)??梢酝ㄟ^手機(jī)重力感應(yīng)遙控智能小車,讓小車跟隨手機(jī)遙控器運動,而且手機(jī)對小車的控制不僅僅只有5種運動狀態(tài),而是小車平滑調(diào)速。加入了PWM調(diào)速控制,使得重力感應(yīng)的用戶體驗效果更加完美。傾斜角度絕對值在10°~20°時,由于單片機(jī)輸出的方波占空比較低,導(dǎo)致此傾斜角度下的直流電動機(jī)不能轉(zhuǎn)動,所以沒有控制效果,其他的傾斜角度完全達(dá)到了速度控制的要求。
本設(shè)計實現(xiàn)藍(lán)牙遙控器界面在不同的安卓手機(jī)中都能正常顯示。溫、濕度的采集方面在不同環(huán)境下測得的溫濕度基本準(zhǔn)確,與標(biāo)準(zhǔn)值相差不大,濕度誤差在3%以內(nèi),溫度的誤差也在1 ℃以內(nèi),并且能發(fā)送到藍(lán)牙遙控器APP端正常顯示。在重力感應(yīng)遙控功能中,小車的穩(wěn)定受遙控距離在空曠的空間中能達(dá)40 m,超過40 m后傳輸穩(wěn)定性變差。在通過手機(jī)重力感應(yīng)遙控智能小車速度中,小車在手機(jī)傾斜角度在-20°~20°之間時,此時單片機(jī)輸出的PWM占空比較低,導(dǎo)致不能驅(qū)動直流電動機(jī)的轉(zhuǎn)動,小車靜止不動。而當(dāng)手機(jī)遙控器傾斜角度絕對值大20°時,小車受遙控器重力感應(yīng)控制。當(dāng)小車只在前后方向或者左右方向有傾斜的角度時,此時小車車輪電動機(jī)速度與傾斜角度的絕對值成正比關(guān)系 ,傾斜角度值越小,小車電動機(jī)速度值也越大。而當(dāng)手機(jī)慢慢向前傾斜的同時也讓手機(jī)向右端此時傾斜小車向前的速度慢慢增大,小車也有向右的速度,此時小車運動軌跡是以某點為圓心順時針轉(zhuǎn)圈,而APP端顯示的速度值左邊比右邊大。經(jīng)過測試達(dá)到了系統(tǒng)設(shè)計的要求。
參考文獻(xiàn)(References):
[1] 江中玉,何振鵬,胡 錦. 基于STM32F103的智能導(dǎo)航避障小車的設(shè)計與實現(xiàn)[J]. 實驗科學(xué)與技術(shù),2017,19(9):1-6.
[2] 黨嬋娟. 基于STM32的智能環(huán)境監(jiān)測小車的設(shè)計[J]. 電子技術(shù)與軟件工程,2017(15):246.
[3] 王 海,何仕騫. 基于安卓手機(jī)藍(lán)牙控制的智能小車設(shè)計[J]. 電子制作,2017,42(6):6-7.
[4] 徐 鵬,梁 曼,魏 萍,等. 基于Arduino/Android的小車藍(lán)牙控制系統(tǒng)的設(shè)計與實現(xiàn)[J]. 微型機(jī)與應(yīng)用,2017,36(4):96-98.
[5] 曾維鵬,張逢春. 基于藍(lán)牙手機(jī)的遙控小車的設(shè)計與制作[J]. 電子制作,2016,41(19):8,34.
[6] 劉少軍,王瑜瑜. 基于Android手機(jī)藍(lán)牙控制的智能小車設(shè)計與實現(xiàn)[J]. 電子測量技術(shù),2016,39(9):114-117.
[7] 張偉辰,劉國猛,陳德為. 基于安卓手機(jī)藍(lán)牙控制的智能小車設(shè)計[J]. 機(jī)電技術(shù),2016,15(4):28-30.
[8] 馬惠蘭. 基于單片機(jī)的藍(lán)牙搜救小車設(shè)計[J]. 工業(yè)儀表與自動化裝置,2016,15(3):111-114.
[9] 湯莉莉,黃 偉. 基于Android手機(jī)藍(lán)牙控制的智能小車設(shè)計[J]. 現(xiàn)代電子技術(shù),2016,39(12):132-134.
[10] 鄭海城,楊冬濤,劉 燕,等. 基于藍(lán)牙控制的智能小車設(shè)計[J]. 電腦與電信,2016,20(5):62-64,70.
[11] 李曉娟,王雅慧,秦國慶. 基于藍(lán)牙的智能小車循跡避障設(shè)計與實現(xiàn)[J]. 河南科技學(xué)院學(xué)報(自然科學(xué)版),2016,44(2):63-67.
[12] 聶 茹. 基于藍(lán)牙遙控的多功能智能小車設(shè)計[J]. 自動化與儀器儀表,2016,16(4):81-82,85.
[13] 聶 茹. 基于Android手機(jī)藍(lán)牙控制的智能小車設(shè)計與實現(xiàn)[J]. 微型電腦應(yīng)用,2015,31(9):68-69.
[14] 蔣 俊,劉天宇,簡雨沛. 藍(lán)牙智能小車系統(tǒng)設(shè)計[J]. 信息技術(shù)與信息化,2015,50(6):166-167.
[15] 王桂坤,吳承達(dá),蔡謹(jǐn)民,等. 基于藍(lán)牙控制技術(shù)的智能小車系統(tǒng)設(shè)計[J]. 中山大學(xué)研究生學(xué)刊(自然科學(xué).醫(yī)學(xué)版),2015,36(2):50-61.
[16] 盧勝昌. 基于STC12C5A60S2單片機(jī)無線藍(lán)牙智能追蹤小車[J]. 電子技術(shù)與軟件工程,2015,15(1):261.
[17] 孔繁云川,王 娜. 基于太陽能智能藍(lán)牙小車的設(shè)計[J]. 科技資訊,2014,12(27):8-10.
[18] 趙曉鳳,張 順,周璟瑜,等. 基于藍(lán)牙小車的控制系統(tǒng)[J]. 電子科技,2014,27(7):155-158.
[19] 周 瑛,楊盛國,黃凌云. 基于藍(lán)牙技術(shù)遙控小車的設(shè)計與實現(xiàn)[J]. 福建師大福清分校學(xué)報,2012,50(5):18-22.
[20] 符 強(qiáng),任風(fēng)華. 基于手機(jī)藍(lán)牙的遙控小車的設(shè)計[J]. 現(xiàn)代計算機(jī)(專業(yè)版),2011,31(12):77-80.