霍國義, 張愛滑
(1. 河南水利與環境職業學院 基礎部, 鄭州 450011; 2. 中北大學 物理系,太原 0300511)
智能領域是當今社會研究的熱點,人工智能、神經網絡學長期以來面臨的巨大挑戰,現在世界科技領域的巨頭都在重視人工智能的研究和發展,也必將在人工智能的領域投入巨大的研發成本,人工智能也會隨之而快速增長[1-3]。在人類感知方面,汽車自動駕駛,人機交流,機器學習等都已經取得了不錯的成就,人工智能也將迎來它飛速發展的時代[4-7],學習和了解人工智能是我們必要掌握的一門技能。本文從智能小車入手,設計實現智能小車的控制系統以及智能小車的無線遙控,與控制端的無線通信等。從而入手更高級的自動控制,智能學習等高級算法[8-11]。 人工智能引領了現在科技發展的潮流,各國各大科技公司都投入到了人工智能領域的研究中[12-13],自動駕駛汽車已經出現在馬路中測試。本文研究了單片機與安卓手機的藍牙通信通過安卓手機APP對小車的遙控,以及單片機對智能小車的運動狀態的控制[15-20]。
利用安卓手機的重力感應和藍牙實現遙控器功能,通過控制STM32單片機定時器的PWM調制控制直流電動機速度,從而控制小車的運動,單片機通過讀取溫濕度傳感器模塊數據采集得到小車溫信息。通過速度傳感器采集小車電動機轉動速度,單片機再利用藍牙串口模塊,實現與遙控器的雙向數據傳輸。整個實現過程原理框圖如圖1所示。

圖1 實現過程原理框圖
安卓智能手機都自帶有藍牙功能,可以實現與另一藍牙設備連接并且相互收發數據,滿足了本設計需要用藍牙遙控器的要求。而且在大多數Android設備中都內置了傳感器,這些傳感器都是基于硬件與軟件共同實現的,不僅可以實現監控手機設備的三維運動、位置等,還可以通過軟件實現獲取使用者對手機操作的動作,如平移、抖動、旋轉等操作,其重力感應分析圖解如圖2所示。

圖2 手機重力感應分析圖解
根據系統的具體設計要求和方案的對比選擇,最后決定系統的硬件組成部分包含以下幾個功能模塊:核心控制單片機最小系統模塊,小車(2個底盤、4個直流電動機、2顆電池、4個車輪、1個電池殼),用于測量車輪速度的光電測速傳感器模塊,用藍牙轉串口模塊作為無線傳輸數據、采集溫濕度的溫濕度傳感器模塊,驅動直流電動機的電動機驅動模塊。
電動機驅動模塊不易受外界環境影響性能,具有電源效率高,驅動電動機效果好等優勢,廣泛運用于不同電動機的驅動。當該驅動模塊的輸入電壓范圍在7~12 V時,可以給外部的單片機最小系統提供電源,也解決了單片機供電問題,此模塊電路如圖3所示。由于此電動機驅動模塊只能最多獨立驅動2臺直流電動機,而小車有4個車輪需要4個直流電動機,此時需要將小車同一側的2個電動機并聯起來,使它們能被同一個L298N電動機驅動模塊輸出端同步控制轉速和轉向。因此只要相當于控制2個電動機就能完成對小車運動狀態的控制了。

圖3 L298N電動機驅動模塊電路
L298N電動機驅動模塊是2路的H橋驅動,它的電動機驅動控制原理方法如表1所示。由該表可知,當需要控制小車4個直流電動機的轉動時,需要先使2個使能端設置為高電平,使能模塊受控制。此時只要給同一個電動機的2個輸入端中的一個輸入為固定低電平,另一個輸入端輸入用于調制電動機速度的脈寬調制方波,即可達到電動機控制。使小車能受控運動。

表1 L298N電動機驅動控制原理
本設計的軟件框圖如圖4所示。本設計軟件部分主要研究實現安卓手機重力感應遙控小車,藍牙無線傳輸數據,小車溫濕度、速度采集顯示。本設計的軟件部分主要由安卓手機藍牙遙控端軟件和單片機控制部分軟件組成。其中安卓手機藍牙遙控端軟件主要包含遙控界面布局程序、藍牙通信程序、事件處理程序三部分。而單片機控制的程序主要包含串口通信模塊程序、溫濕度采集模塊程序、外部中斷處理程序、定時器PWM方波輸出程序。

圖4 軟件框圖
本設計的遙控界面布局是用了Android中的相對布局來實現完成的。這種布局方法可以設置很多屬性,非常靈活方便。它的布局坐標取值范圍都是相對的,可以使整體布局自動適應不同尺寸的屏幕,因此得到很多Android開發者的喜愛。多個布局屬性中包含:① 設置控件的id值android:id="@+id/seekBar2";② 設置控件在界面中的旋轉角度android:rotation="90";③ 設置控件在id為speed_left"的右邊android:layout_toRightOf="@+id/speed_left" />等等。通過各個屬性之間的關系限制每個控件的大小和位置形成最終的布局。本設計的藍牙遙控界面最終如圖5所示。

圖5 藍牙遙控界面圖
重力感應部分可以根據用戶對手機傾斜角度的改變打印出相應的x與y的角度值,表示不同的手機重力感應數據,即手機在不同方向的傾斜程度。根據測試得到輸出x與y的值與手機傾斜的角度之間的關系制作成表格。
當手機左右方向保持平衡,改變手機前后方向的傾斜角度時,此時x與y的值與手機傾斜的角度之間的關系如表2所示。

表2 x與y方向的值與手機前后傾斜角度之間的關系
當手機前后方向保持平衡,改變手機左右方向的傾斜角度時,此時x與y的值與手機傾斜的角度之間的關系如表3所示。
由表2、3可知。當手機左右方向保持平衡,改變手機前后方向的傾斜角度時,此時x隨著前后傾斜的角度線性變化,y值保持為0不變。當手機前后方向保持平衡,改變手機左右方向的傾斜角度時,此時y隨著前后傾斜的角度線性變化,x值保持為0不變。由此可得重力感應的控制數據符合本設計的要求。

表3 x與y方向的值與手機左右傾斜角度之間的關系
給小車安裝上2個18650電池后,打開電源開關給單片機系統上電后,打開手機遙控APP,掃描搜索藍牙設備,然后連接到小車的HC-05藍牙串口模塊,開啟重力感應開關,隨著手機向前傾的角度越來越大小車向前的速度也隨著變快。當手機左右方向保持平衡,改變手機前后方向的傾斜角度時,此時手機APP顯示小車左右兩邊速度的值與手機傾斜角度之間的關系如表4所示(速度值的正負表示電動機轉動的方向,數值的大小表示電動機每秒轉動的圈數)。

表4 APP顯示小車速度與手機前后傾斜的角度之間的關系
由表4可知,當手機左右方向保持平衡(輸出值為0),改變手機前后方向的傾斜角度時,此時隨著前后傾斜的角度值大于-20°且小于20°。當小車前后傾斜的角度的絕對值越大時,此時小車前進或后退的速度絕對值也越大,且此時兩個電動機轉動方向一致,小車前進或者后退,而當左右傾斜的角度值大于-20°~20°時,小車靜止不動。
當手機前后方向保持平衡,改變手機左右方向的傾斜角度時,此時手機APP顯示小車左右兩邊速度的值與手機傾斜的角度之間的關系如表5所示(速度值的正負表示電動機轉動的方向,數值的大小表示電動機每秒轉動的圈數)。

表5 APP顯示小車速度與手機左右傾斜的角度之間的關系
由表5可知,當手機前后方向保持平衡(輸出值為0),改變手機左右方向的傾斜角度時,此時隨著左右傾斜的角度值大于-20°且小于20°時,小車靜止不動。當小車前后傾斜的角度的絕對值越大時,此時小車前進或后退的速度絕對值也越大,且此時兩個電動機轉動方向相反,小車在原地順時針或逆時針轉圈,而當左右傾斜的角度值大于-20°~20°時,小車靜止不動。
由此可見,小車在手機傾斜角度在-20°~20°之間時,此時單片機輸出的PWM占空比較低,導致不能驅動直流電動機的轉動,小車靜止不動。而當手機遙控器傾斜角度絕對值大20°時,小車受遙控器重力感應控制。當小車只在前后方向或者左右方向有傾斜的角度時,此時小車車輪電動機速度與傾斜角度的絕對值成正比關系,傾斜角度值越大小車電動機速度值也越大。而當手機慢慢向前傾斜的同時也讓手機向右端傾斜此時小車向前的速度慢慢增大的同時,小車也有向右的速度,此時小車運動軌跡是一某點為圓心順時針轉圈,此時APP端顯示的速度值左邊比右邊大。
當改變小車環境時,小車隨著環境變化采集得到不同的溫、濕度數據,發送至手機遙控器端實時顯示。其與標準溫度計濕度計測量值對比關系如表6所示。

表6 標準溫度計、濕度計與測量值對比關系
由表6可知,在不同環境下測得的溫濕度基本準確,與標準值相差不大,并且能在遙控器APP端正常顯示,符合本設計的要求。
通過對小車的幾輪測試結果,可以看出本設計的結果達到了設計的要求,溫濕度的測量值基本正確,個別誤差值存在的誤差也在誤差允許范圍之內。可以通過手機重力感應遙控智能小車,讓小車跟隨手機遙控器運動,而且手機對小車的控制不僅僅只有5種運動狀態,而是小車平滑調速。加入了PWM調速控制,使得重力感應的用戶體驗效果更加完美。傾斜角度絕對值在10°~20°時,由于單片機輸出的方波占空比較低,導致此傾斜角度下的直流電動機不能轉動,所以沒有控制效果,其他的傾斜角度完全達到了速度控制的要求。
本設計實現藍牙遙控器界面在不同的安卓手機中都能正常顯示。溫、濕度的采集方面在不同環境下測得的溫濕度基本準確,與標準值相差不大,濕度誤差在3%以內,溫度的誤差也在1 ℃以內,并且能發送到藍牙遙控器APP端正常顯示。在重力感應遙控功能中,小車的穩定受遙控距離在空曠的空間中能達40 m,超過40 m后傳輸穩定性變差。在通過手機重力感應遙控智能小車速度中,小車在手機傾斜角度在-20°~20°之間時,此時單片機輸出的PWM占空比較低,導致不能驅動直流電動機的轉動,小車靜止不動。而當手機遙控器傾斜角度絕對值大20°時,小車受遙控器重力感應控制。當小車只在前后方向或者左右方向有傾斜的角度時,此時小車車輪電動機速度與傾斜角度的絕對值成正比關系 ,傾斜角度值越小,小車電動機速度值也越大。而當手機慢慢向前傾斜的同時也讓手機向右端此時傾斜小車向前的速度慢慢增大,小車也有向右的速度,此時小車運動軌跡是以某點為圓心順時針轉圈,而APP端顯示的速度值左邊比右邊大。經過測試達到了系統設計的要求。
參考文獻(References):
[1] 江中玉,何振鵬,胡 錦. 基于STM32F103的智能導航避障小車的設計與實現[J]. 實驗科學與技術,2017,19(9):1-6.
[2] 黨嬋娟. 基于STM32的智能環境監測小車的設計[J]. 電子技術與軟件工程,2017(15):246.
[3] 王 海,何仕騫. 基于安卓手機藍牙控制的智能小車設計[J]. 電子制作,2017,42(6):6-7.
[4] 徐 鵬,梁 曼,魏 萍,等. 基于Arduino/Android的小車藍牙控制系統的設計與實現[J]. 微型機與應用,2017,36(4):96-98.
[5] 曾維鵬,張逢春. 基于藍牙手機的遙控小車的設計與制作[J]. 電子制作,2016,41(19):8,34.
[6] 劉少軍,王瑜瑜. 基于Android手機藍牙控制的智能小車設計與實現[J]. 電子測量技術,2016,39(9):114-117.
[7] 張偉辰,劉國猛,陳德為. 基于安卓手機藍牙控制的智能小車設計[J]. 機電技術,2016,15(4):28-30.
[8] 馬惠蘭. 基于單片機的藍牙搜救小車設計[J]. 工業儀表與自動化裝置,2016,15(3):111-114.
[9] 湯莉莉,黃 偉. 基于Android手機藍牙控制的智能小車設計[J]. 現代電子技術,2016,39(12):132-134.
[10] 鄭海城,楊冬濤,劉 燕,等. 基于藍牙控制的智能小車設計[J]. 電腦與電信,2016,20(5):62-64,70.
[11] 李曉娟,王雅慧,秦國慶. 基于藍牙的智能小車循跡避障設計與實現[J]. 河南科技學院學報(自然科學版),2016,44(2):63-67.
[12] 聶 茹. 基于藍牙遙控的多功能智能小車設計[J]. 自動化與儀器儀表,2016,16(4):81-82,85.
[13] 聶 茹. 基于Android手機藍牙控制的智能小車設計與實現[J]. 微型電腦應用,2015,31(9):68-69.
[14] 蔣 俊,劉天宇,簡雨沛. 藍牙智能小車系統設計[J]. 信息技術與信息化,2015,50(6):166-167.
[15] 王桂坤,吳承達,蔡謹民,等. 基于藍牙控制技術的智能小車系統設計[J]. 中山大學研究生學刊(自然科學.醫學版),2015,36(2):50-61.
[16] 盧勝昌. 基于STC12C5A60S2單片機無線藍牙智能追蹤小車[J]. 電子技術與軟件工程,2015,15(1):261.
[17] 孔繁云川,王 娜. 基于太陽能智能藍牙小車的設計[J]. 科技資訊,2014,12(27):8-10.
[18] 趙曉鳳,張 順,周璟瑜,等. 基于藍牙小車的控制系統[J]. 電子科技,2014,27(7):155-158.
[19] 周 瑛,楊盛國,黃凌云. 基于藍牙技術遙控小車的設計與實現[J]. 福建師大福清分校學報,2012,50(5):18-22.
[20] 符 強,任風華. 基于手機藍牙的遙控小車的設計[J]. 現代計算機(專業版),2011,31(12):77-80.