當前坊間市售的遙控玩具車因成本考量幾乎都是世界工廠中國所製造生產,也因此在價格競爭之下,造成各類玩具遙控車良莠不齊的情況。本篇文章則是使用遙控器已損壞的低價玩具遙控車來進行改造,搭配聯發科的Linkit7697及Robot Shield擴充板,將其改造為透過手機以及行動裝置可以進行控制的BLE遙控車。

 

Robot Shield的馬達控制

首先來介紹今日的主角Linkit7697與Robot Shield。對於Linkit7697這顆聯發科物聯網殺手級微控制器的介紹在MAKERPRO上已經有不少了,這裡就不再做贅述,如果不清楚可以參考【LinkIt 7697比拼ESP 32,誰能勝出?】與【LinkIt 7697三種開發環境,輕鬆上手!】這兩篇很詳實的說明文章。

Linkit 7697與Robot Shield結合

Linkit 7697與Robot Shield結合

 

而Robot Shield則是不久前MiniPlan針對7697所做的擴充板,其包含了以下特點:

  • 引出10組PWM控制伺服馬達或一般GPIO用途
  • 提供兩組直流馬達驅動IC
  • 內建兩顆超級電容,容量相當於250mA
  • 專為Linkit7697所設計

如此一來方便使用Linkit7697控制直流馬達,不需要再額外使用馬達驅動擴充板與電池。

 

Robot Shield接腳圖(取自MediaTek Labs網站)

 

這次我們的遙控車改造,就會使用到Robot Shield來驅動直流馬達,上面的馬達驅動IC是使用普誠科技所出產的PT5126A。根據其datasheet所顯示的方塊圖可以得知,內部使用了一組H橋來控制直流馬達的正逆轉,而控制邏輯有兩個輸入腳INA與INB,控制的方式整理如下表:

 

普誠科技PT5126A方塊圖

 

玩具遙控車的拆解與改造

為了要進行遙控車的改造,勢必得先將遙控車拆解一下,並且了解其內部結構與電路構造才能加以改裝,所以接著就是要將遙控車進行『真﹡開箱』。

 

本日將接受改造的苦主主角

 

首先我們先看一下遙控車底部的組件,中央的部分一個方形蓋子其上方邊緣處有兩個卡榫與螺絲,明顯是安裝遙控車電池的部分。這裡我們先將電池取出,除了因為改造後用不著外,還可以做到輕量化配置。在電池盒右側有個圓形小孔,如果是使用充電電池還考可以給予電池充電的外接電源,而另一側則是電池盒的開關了。在上方前輪中間處則是前輪偏移的定位校準。再來將底盤周圍八顆螺絲鬆開後即可打開看到內部構造了。

 

遙控車底部構造

 

打開後看到有前後兩個直流馬達,並且只有一個小電路板做控制。電路板除了連接到兩個直流馬達外,還有連接到兩顆車燈,以及一個鐵絲型天線用來接收27MHz頻率遙控器的訊號。靠近後輪的直流馬達底部有個齒輪箱,並且連接到後輪作動力輸出。而前輪則是控制前輪往左或往右的轉向,因為底部有個機構做限位,所以最大的轉向角度大約只有左右各45度而已,不至於導致轉向過度。

 

遙控車底部構造

 

接著,我們將控制板取下,同時將其上方的線路解焊完全移除,保留兩個直流馬達的引線,並且將馬達引線焊接上Robot Shield附贈的2.5mm JST連接線。焊接完成後將遙控車後輪馬達接到擴充板的Motor A,前輪馬達接到擴充板的Motor B。

 

完成馬達引線之底盤

 

於此同時我們將車殼上半部駕駛艙的模型也拆除,方便我們將Linkit7697與擴充板塞入車內。再把其餘線路整理一下,將車蓋蓋回後鎖上螺絲,遙控車的硬體改造即完成啦!

 

Linkit7697與Robot Shield已置入遙控車中

 

Linkit7697程式碼

本篇改造遙控車的專案程式為開放原始碼,有興趣的Maker皆可以在 Github上取得。裡面用了Linkit Remote的函式庫,可以在Arduino的程式碼中繪製好行動裝置APP的介面,省去很多開發應用程式的功夫。本段落將針對程式碼內容做逐一說明。

行號#4~#8:宣告BLE Remote物件,分別建立了前後左右的按鈕與車燈的開關。

行號#11~#17:Linkit7697的PIN腳定義,根據前面硬體的接線,定義了兩顆馬達的控制接腳。

行號#20:藍芽BLE的名稱,若有多組Linkit7697同時開啟,務必修改此處。

行號#22~#84:setup()初始化函式。初始化後續會使用到的幾個腳位,同時設定各個BLE Remote物件的屬性,包括顯示的文字、顏色、大小與位置等。

行號#86~#124:這裡實作了forward()、backward()、turn_right()、light_on()等馬達控制與車燈控制函式,方便後面主迴圈去做呼叫。

行號#126~#129:程式的主迴圈,前面幾行在做等待連線的判斷,以及#142是在處理與手機端的資料交換。其餘的部分則是在判斷手機遙控端有觸發了那些按鈕事件,並依據不同的按鈕去執行各種遙控車的動作。

 

行動裝置BLE遙控器

開啟行動裝置到Play商店(Android)或是APP store(iOS),搜尋Linkit Remote應用程式,下載並且執行。在連結到Linkit7697後即可使用剛剛所撰寫好的介面進行操作了!

 

Linkit Remote連結後介面

 

實際操作遙控車影片:https://youtu.be/A7iSk6_Ve7w

 

 

 

小結

本身物聯網功能就很強大的Linkit7697開發板,在遇到馬達控制擴充板Robot Shield後,等同是如虎添翼了!除了把眾多IO延伸出來方便接線以外,還有附帶兩個直流馬達驅動IC以及二次電池的供電,省下很多連接不同種類擴充板的接線工作。日後我們會繼續發掘Linkit7697相關的應用與專案,也請有興趣的Maker朋友們持續關注並且給予指教!