文章類型
開發平台
解決方案
關注主題
文章類型
開發平台
解決方案
關注主題

【Tutorial】 LinkIt 7697讓藍牙遙控車動起來!

作者:Michael Huang

在這個開發板滿天飛的世代,我們的國產大廠聯發科又推出新板子「LinkIt 7697」啦!

不同於之前的 LinkIt Smart 7688系列, 7688偏向 IoT中的 hub,而 7697的偏向是 node,所以是終端等級的產品。這次剛好有機會拿到評測,雖然拖了一小段時間(我討厭Wix的客服讓我現在很不想寫文章wwww),不過下文會手把手地教大家一步步操作,一起完成這個遙控車的專案!

比較LinkIt 7697 、 ESP32 、 Micro:bit

LinkIt 7697 、 ESP32 、 Micro:bit的外觀比較

我們首先可以看到 7697跟近期兩個火紅的開發板的外觀比較。

以整體大小而言,其實 7697跟 ESP32差不多。不過 7697板子上擁有了可以對接 USB的 CP2102晶片,不同於 ESP32必須要外接,或者是買另外一種大一點的版本;至於英國BBC推的 Micro:bit,它就比較獨樹一格,背面有 LED矩陣,再加上旁邊插卡式的設計,所以版型比較大。

三者都支援藍牙低功耗 BLE,但只有 7697跟 ESP32可以支援 WiFi。

聯發科官網所提供的 LinkIt 7697腳位圖

再來,我們可以看到聯發科官網上提供的腳位圖,看到那一排粉紅色的就很嗨森啊!這麼多能夠支援 PWM的腳位,就代表應用上可玩的擴充性很高;但是右下角只有四個 pin可以當作 ADC用,也就是只有這四個可以讀取類比訊號。雖然說通常要準確讀取類比訊號都會外接 IC來做,所以原生四個算是夠用…

BUT!!(燈惹~)

仔細去看 7697的線上說明,會發現這邊有兩個有提醒卻沒有寫在最明顯的地方:

最重要的就是,如果要讀取類比訊號,ADC能夠承受的電壓只有 2.5V

輸入阻抗 10k歐姆暫且不管,但是板子上面供電不是 5V就是 3.3V,所以直接拿這個去接感測器,輸回的高電壓就是 5V或 3.3V。

  • 結果直接接回 ADC腳位的話,它就會壞掉,這是一個什麼樣的概念呢?(完美歪頭8度)
  • 要我們自己外接電阻分壓,為什麼不在板子上就先做好電阻分壓呢?(歪向另外一邊8度)
  • 如果用市售普遍的 5V感測器,就活該要把麵包板插好插滿的意思嗎?(別再歪頭了(巴頭)
  • 另外,在 Arduino IDE裡面使用的時候,並不支援硬體的 SPI協定。聽不懂沒關係,不要用就好了嘛~(你這個爛鴕鳥給我起來)

開始在 Arduino IDE上設定 LinkIt 7697 

好啦,現在就開始一步一步在 Arduino IDE上,來設定我們要使用的 7697了。

由於 7697上的 USB-TTL晶片是使用 CP2102,所以電腦中必須要有相對的驅動程式,聯發科的網站中有介紹這一部份的安裝(這裡)。不過因為我的電腦已經安裝好了,所以就跳過驅動程式的安裝示範(偷懶還這麼冠冕堂皇)

第一步先打開 Arduino IDE,進入檔案(File)→偏好設定(Preference):

然後呢,在 Additional Boards Manager URLs:的地方輸入聯發科針對7697設定的json檔案連結 http://download.labs.mediatek.com/package_mtk_linkit_7697_index.json

按下好(OK)之後呢,就去工具(Tools)→板子(Boards)→Boards Manager:

然後,在最底端應該可以看到「LinkIt 7697 by MediaTek Labs」,於右下角選擇最新版本後,按下 Install:

完成之後,應該會看到顯示「INSTALLED」。

這時候就可以按下 Close回去 Arduino IDE,到工具(Tools)→板子(Boards)的地方,往下拉應該就可以選擇「LinkIt 7697」,然後在連接埠(Port)的地方,就可以看到可以選擇括弧中有寫 LinkIt 7697的 COM port。

接著就可以來開發啦!

依照 Arduino系列的起手式,就是先去翻範例(踩在巨人的肩膀上,先玩玩才能往上爬)

網路上的很多評測都是燒了個 Blink進去,看到 Done uploading之後,接著看到板子上的 LED會閃,就很開心了。但是這樣拿來作弊也太簡單了吧?只要把 Blink搞好就可以讓人家評測的意思?

我偏不要!(天生反骨鴕鳥硬起來)所以就直接去測試 7697號稱支援的藍牙囉!

在工具(Tools)→板子(Boards)那邊選了 7697之後,範例的地方會多出幾個針對 7697的範例:

所以我們就直接選 LBLE→SimplePeripheral。

這個就是把 7697當作 BLE溝通情況下的節點,而連結它的智慧型裝置會是 Central來主控,所以我們將程式燒錄進去之後,就可以直接拿平板,並使用 BLEScanner這種 APP來測試:

我們看到 APP中,可以找到 Custom Service有一串跟範例中設定 ledService那串一樣的編碼,裡面的 Custom characteristic UUID也跟範例設定的 Characteristic一樣,由於這個範例是透過 BLE接收到指令的時候來做板上 LED的開關,所以直接在 APP的 Characteristic中按下「W」,傳出 (byte)01的話,LED就會亮;傳出 (byte)00的話,LED就熄滅了!

但你以為這樣子把人家用 MCS(聯發科雲端服務)控制 LED換成用平板控制,我就會收山了嗎?

本山人就是要繼續測!

在我們協辦全國數一數二大、像老不休一樣償命的「PowerTech青少年創作競賽」中,已經讓學生用 APP來控制他們比賽當天自己做出來的機器人了。他們所使用的 BLE藍牙模組上面,有一個 Service是FFE0,其中一個 Characteristic是 FFE1,只要 APP跟這個 Characteristic溝通,基本上就像 Bluetooth SPP一樣,傳什麼收什麼。

因此,我只要把這邊範例的 Service跟 Characteristic改成上文所說,並且在收到指令之後,對應成馬達的控制訊號,再將控制訊號透過 L9110,就可以驅動馬達。

這樣子應該就可以變成一台藍牙遙控車了吧!

藍牙遙控車,組裝完成!

就跟上圖一樣,我直接找手邊有的一台小車接上 L9110。控制訊號部分,則是在 Arduino IDE中設定,將 APP的訊號對應到 P6~P13(可以控制四顆馬達),再把對應的腳位接到 L9110模組,並且另外給電,這樣就完成囉!(這邊可以下載程式碼

成果展示

後記

其實眼尖的人會發現其中幾張截圖怪怪的,因為我在測試的時候遇到一些問題,在 Win 10上面跑了 1.6.5zip、1.8.2zip,裝完 Board Manager之後,上傳 LBLE跟 LWIFI都失敗,回到 Win 7上面跑 1.8.2安裝版的,才能夠上傳 LBLE的範例,但是 LWIFI還是不行(喂!這是風水問題吧)

不過兩天之後,在 Win 10上面的 1.8.2zip又可以跑了,所以截圖才會看起來有點亂。雖然還沒有深入研究 7697的架構,但感覺跑 RC Car的時候,與其他 BLE模組相較起來會有點頓。有機會再研究囉~

(本文同步刊載於「動動手 輕鬆Make!」部落格,原文連結,責任編輯:林佳盈)

 

Michael Huang

Michael Huang

即使國中便進了數理資優班,但仍然星期一到六天天至補習班報到。到了師大附中數理資優班,累積了這麼幾年過程困難的訓練,卻也因此而對事物有自己的一套理解方式。

有幸在台大電機努力四年後,在美國密西根大學挑戰機器人的衝擊,也因此更深刻體會台灣教育與學生的不足。我還不知道哪一條路會成功,但是至少我看過比較多失敗的方法。

現在致力推廣機器人及其教學,為全國機器人競賽「PowerTech全國青少年科技創意創作競賽」首席研發及講師。另一方面將以深入淺出的方式來引導實作方面的技術軟實力。

部落格:輕鬆動手
Michael Huang

上一篇: | 下一篇:

468 ad

我想回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *

成城共創股份有限公司版權所有、轉載必究.Copyright(c) 2017 MakerPRO