中文 | English

抬頭看時鐘,路況報你知 —— Arduino 讓時鐘告訴你即時路況

收拾好桌上的東西、轉身拿起包包,步伐才踏到一半的你突然想到現在正是尖峰時刻。你放下手中的包包,拿起手機看了一下回家的路線,無奈地再度坐下⋯⋯

遠在埃及的 Integreight 嵌入式系統工程師 Eslam Ali 也面臨這同樣地困擾,每次下班前他都會透過手機檢查從公司到家裡的路況,這個動作雖然不難,但還是很瑣碎;因此 Ali 想出了一個辦法,它在所有辦公室都有的擺飾 —— 時鐘加了點額外的功能,讓他可以在抬頭看時間之餘,順便得知回家的路況如何。

介紹

Ali 的路況時鐘很簡單,當路況良好的時候,時鐘會發出綠色的光,路況擁塞的時候,時鐘則會發出紅光,提醒 Ali 現在不是一個回家的好時機。為此,Ali 在時鐘的背後裝上 Arduino,負責控制三色 LED 燈發出的顏色,並且讓 Arduino 連上 1Sheeld 擴充板,使 Arduino 可以透過手機連上網路,每 5 分鐘查詢即時路況並且顯示出來。

什麼是 1Sheeld ?可以吃嗎?

1Sheeld 是 Elsa Ali 工作的公司 Integreight 所推出的 Arduino 擴充板(Breakout Board)。有別於一般擴充板,1Sheeld 並非借著板子上的感測器提供 Arduino 額外的功能,而是致力於讓 Arduino 與手機連線,再由手機提供額外的功能,例如提供網路、虛擬終端機、震動提示、虛擬 LCD 螢幕、GPS、閃光燈、喇叭、麥克風等,甚至還有與社群媒體例如 Facebook 、Twitter 互動的功能(詳細可見 1Sheeld 網站上的清單)。

圖片來源:1Sheeld

1Sheeld 除了概念新穎之外,還同時解決 Arduino 想要多種功能時,可能連接孔會不夠用的困擾,而且還可以讓舊手機有第二春。要說缺點的話就是價格比較高,如果只是需要其中一、兩個功能的話,不如直接去買單一功能的擴充板來的實在。

材料

圖片來源:1Sheeld

這個作品需要一下這些東西:

  • 時鐘 – 只要邊框透明就好了,作者用的是一個不到新臺幣 100 元的 IKEA 時鐘。
  • Arduino – 作者是使用最常見的 Arduino Uno,但是其他微控制器開發板也可以。註1註2
  • 三色 LED 燈 – 作者用了 12 顆,正好分別對應 12 個時針刻度。
  • 9 伏特電池 – 提供電力給 Arduino 、1Sheeld 以及所有 LED 燈。
  • 跳線 – 連接 Arduino 跟 LED 燈。
  • 雙面膠帶 – 固定 LED 燈以及 Arduino。
  • Google Distance Matrix API 的金鑰 – 查詢路況。

Google Distance Matrix API 又是什麼

一般來說我們使用 Google Map 都是透過手機上的 App 或網頁版的 Google Map 來手動查詢,但其實要查詢 Google Map 上的東西還有另一種方法,那就是透過應用程式介面(API)。應用程式介面跟 App 還有網頁不太一樣,它是為了程式(而非人類)設計的,方便程式自動化的獲取 Google Map 上的資料。其中,Google Distance Matrix API 就是一個可以讓程式獲取即時路況資料的界面。

圖片來源:Google Map API

為了避免這個服務被濫用,以及控制使用次數(以 Distance Matrix 來說,每日查詢超過 2500 次就要收費),Google 要求使用者在存取界面的時候,要附上一組識別資料,也就是金鑰(API Key)。金鑰可以用你自己的 Google 帳號到這裡申請。

組裝

圖片來源:1Sheeld

首先將 Arduino 跟 1Sheeld 接合 首先將 12 顆三色 LED 燈並聯,並把紅、綠、藍的正極分別接到 1Sheeld 上的第 11、10、9 號接口(記得先確認 LED 燈是否能正常運作) 。

接著把 12 塊雙面膠,平均的貼在 12 個時針刻度後面,再將 12 顆三色 LED 燈分別黏在 12 塊雙面膠上 可以參考下面的影片。

圖片來源:1Sheeld

程式碼

程式碼的第 19 行有兩個要注意的地方。首先,作者提供的 Google Distance Matrix API 網址所查到的是作者自己辦公室到他家裡所需的時間,請以你個人需求修改 origins 和 destinations 這兩個參數,以你自己出發地與目的地的座標,取代作者提供的座標。再來最尾端的 key 參數這邊請打上你自己的 API 金鑰,如果不清楚金鑰是什麼,或者還沒申請可以看前面的 Google Distance Matrix API 又是什麼

圖片來源:1Sheeld

這個 Arduino 程式需要 1Sheeld 的兩個個功能註3,分別是網路和終端機(偵錯用)。請在手機上安裝並打開 1Sheeld 的 App,選則開啟網路功能(Internet),並且將 Arduino 接上電源或者重新啟動,你的作品就會開始運作了。如果有問題可以打開虛擬終端機(Terminal)查看是那裡出了問題。

 

你是否開始覺得手癢、躍躍欲試了?如果是怕 1Sheeld 不好取得的話你大可放心,雖然製作團隊位於埃及,但是生產還是位於電子零件的大本營 —— 深圳,因此台灣也買得到 1Sheeld 。所以你還在等什麼?趕快開始動手做吧!

參考資料

 

註1. 其他 Arduino 系列的開發板,只要可以跟 1Sheeld 連接的話,理論上也可以運作。

註2. Reddit 上網友提到可以用 NodeMCU,或是 Wemos D1 mimi 用更低的價格,以及更簡單的電路板做出同樣的功能,因為上述兩種開發板,是以看作是內建連網功能的 Arduino,因此就不需要額外買 1Sheeld 。

註3. 在編譯程式前,需先在 Arduino IDE 裡裝上 1Sheeld 提供的函數庫,可以參考 1Sheeld 官方網站上的說明

分享到社群

SHY

半途出家踏入資工與資安的領域,發現軟體硬體本一家,又玩起 Arduino 與 Raspberry Pi ,基本上什麼都碰一點,夢想是成為一隻駭客犬。