<前言>
本篇結合了MTK雲端服務(Cloud Sandbox)下達控制命令給小車上的7688 Duo,讓小車利用兩側輪反向的方式自旋,當作一個簡易的實驗範例,注意本篇只適用於7688 Duo,另外一型號的7688將不可使用本範例,需修改原始碼
<準備>
1. 7688 Duo開發板
2. 四輪小車
3. 5V/12V雙輸出行動電源
4. L298P驅動模塊
5. 杜邦線
6. DC 公頭附電線
7. 銅柱和銅帽
8. MicroUSB傳輸線
9. USB轉TTL傳輸線
10. 小型麵包板
11. 雙面泡棉膠
1. L298P為一般常用的L298N貼片式封裝,因此散熱問題改由PCB直接來散熱,所以空間大幅度所小,若不是需要高電流的驅動,L298P可提供較小的體積,方便組裝,以下是L298N和L298P內部結構
和ULN2003相當類似,採用BJT放大電流的方式,將輸入訊號的電流放大後輸出,驅動直流馬達或者步進馬達,每組由兩個AND閘和兩個BJT構成,依照訊號的高低電位選擇上下的BJT開關,因此可達到放大電流的目的
2. 採用KAISE生產的L298P模塊,和一般常見的L298N模塊接腳相似,如下圖
利用ENA和ENB腳位輸入PWM訊號,也可以類似L298N一樣改變直流馬達轉速
3. Cloud Sandbox為MTK發展出來的雲端服務,就如同眾多的微信跟QQ雲端服務一樣,這裡簡單介紹使用方法,可參考官方的教學網頁
圖為整個開發流程圖,先建立原型,後創建裝置
4. 創建好帳號以後,登入Cloud Sandbox,在左上角選擇開發 > 原型,您必須先創建好原型才能在創建可用的裝置
按一下左邊的創建按鈕
填寫原型的資訊,有附星號的為必填欄位,以上資訊供參考
5. 按下儲存按鈕就會儲存新的原型,回到原型網頁按一下該原型的詳情按鈕
按一下該原型的詳情按鈕
顯示該原型的介面,接下來要開始創建資料通道,資料通道代表由雲端跟裝置之間傳輸資料的方式
6. 按一下新增按鈕,創建新的資料通道
目前官方提供控制器和顯示器兩大類,控制器可以下達命令給裝置,而顯示器只有顯示裝置傳來的資料,我們要控制小車,所以這裡選擇控制器大類,按一下新增按鈕
填寫必要資訊,星號為必填,因為只是實驗性質的功能,選擇最簡單的開關資料型態即可,要注意的是資料通道ID將會被裝置上的程式碼所使用,用來建立TCP連線
7. 按一下儲存按鈕,就會創建新的資料通道,回到原型詳情頁面
以上就創建好了資料通道,按一下右上方的創建測試裝置按鈕
星號為必填資訊,完成後按一下創建按鈕
創建好的測試裝置,在右上角的DeviceId和DeviceKey將會在裝置上的程式碼使用到,請留意
8. 以上就完成了建立雲端控制的模型,以下列出等等會在程式碼用上的必要資訊
資料通道Id
DeviceId
DeviceKey
可以開始編寫程式碼
9. 將7688 Duo利用MicroUSB連接電腦,並設置為Station模式,我利用USB轉TTL傳輸線連上7688的Serial,直接登入OpenWRT來設置Root密碼和將7688 Duo模式改變,輸入以下指令
vi /etc/config/wireless
這裡我使用Putty
將Config wifi-iface \'sta\'以下設定值設定好即可
option ssid
option key
option disable \'0\'
就不需要再安裝其他軟體,快速設置成Station模式的方法,按下ESC按鍵,再輸入wq儲存,再輸入以下指令
wifi
重新啟動Wifi服務,以上就會自動連線到您的路由器
10. 利用SSH登入7688 Duo,這裡我們使用Firmata協定來實作較為簡單,在7688端和MCU端分別安裝好Firmata的函式庫即可
Firmata協定,用來簡化CPU和MCU之間的溝通
11. 在Serial console輸入以下指令來安裝7688端的Firmata函式庫
pip install pyfirmata
等待安裝完畢即可
12. 再來安裝MCU端的Firmata函式庫,這裡假設您已經安裝好Arduino IDE 7688相關套件,若還沒請參考官方文檔,選擇要上傳的檔案
選擇範例 > Firmata > StandardFirmata,之後我們要修改程式碼部分符合7688和MCU的溝通方式
//Firmata.begin(57600);
Serial1.begin(57600);
Firmata.begin(Serial1);
修改完成以後上傳至板子即可
13. 回到Serial console,創建app.py,這裡我們以官方範例來做修改,加入控制馬達的部分,因為含有特殊字元,將放置文末供小夥伴們參考
程式碼部分截圖,程式碼中特別注意要和Cloud Sandbox設定一致,即如下
DEVICE_INFO = {
\'device_id\' : \'\',
\'device_key\' : \'\'
}
if dataChannelId == \'\':
確保一致後就完成程式碼設計
<實測>
14. 輸入好程式碼以後儲存,並且開始接線,主要接線如下
7688 D2 <=> 杜邦線 <=> IN1
7688 D3 <=> 杜邦線 <=> IN2
7688 D4 <=> 杜邦線 <=> IN3
7688 D5 <=> 杜邦線 <=> IN4
GND <=> GND
行動電源+12V <=> DC接頭紅線 <=> 12V
行動電源 GND <=> DC接頭白線 <=> GND
行動電源+5V <=> MicroUSB <=> 7688電源
小車左側兩顆馬達 <=> 杜邦線 <=> OUT1和OUT2
小車右側兩顆馬達 <=> 杜邦線 <=> OUT3和OUT4
7688 Duo部分接線,將7688 Duo插上麵包板利用雙面泡棉膠黏在行動電源上,行動電源黏在車座上
L298P模塊部分接線,以上就完成接線的工作
15. 輸入以下指令來執行
python app.py
開啟7688 Duo和Cloud Sandbox之間的連線
16. 在Cloud Sandbox上開啟開關,如下圖的響應
開啟小車的馬達開關
同時Serial console會收到雲端上的開關訊息,並且觀看小車的自旋
<程式碼下載>
點擊我觀看
<小結>
本篇利用了Cloud Sandbox結合小車來做雲端控制,如同微信來控制各種IOT周邊裝置,將各個裝置連上網路達成IOT的精神,是非常實用的技巧,供小伙伴們學習參考
|