打造Arduino-Neopixel即時路況地圖

七月 24, 2017
Facebook
Twitter
這個專題會利用Arduino裝置蒐集Google Map API上的資料、然後將NeoPixel LED燈設定成與線上地圖一樣的顏色,綠色代表交通順暢、黃色代表略為壅塞、紅色代表交通堵塞。完成之後,就可以在實體地圖上即時顯示路況。這個專題會隨著路況變化,每分鐘即時改變顯示的顏色。
這次的專題使用AdaFruit Feather HUZZAH ESP8266開發板,程式碼透過IDE連接埠來控制,不過這組程式碼應該可以套用在任何搭載ESP8266 Wi-Fi晶片的開發電路板。此外程式碼使用ESP8266晶片的內存快閃記憶體:SPIFF區域儲存設定,所以晶片的設定不會受到重開機的影響。

1.打造電路

在麵包板上:
  • 在3V和GND之間連接一個220uF電容
  • 將第一顆Neopixel LED的正極接上3V,然後並聯剩下所有Neopixel LED的正極。
  • 重複同樣的步驟,將LED電源線的負極接到GND。
  • 在板子的訊號輸出端和第一顆Neopixel LED訊號輸入源中間放置330 Ohm電阻。
  • 然後把第一顆LED訊號輸出端接上第二顆LED的輸入端,重複動作直到所有的LED都連接完成。最後應該會剩下一顆NeoPixel LED的輸出端沒有任何聯結。

2. 獲得Google Maps API金鑰

為了要從Google Maps API獲取交通資訊,你需要API金鑰。金鑰都是免費的,而且非常容易取得。

我建議可以到下列網址測試一下你獲得的金鑰是否能正常使用(記得在測試完後更改金鑰!)
https://maps.googleapis.com/maps/api/distancematrix/json?origins=Galway,+Ireland&destinations=Dublin,Ireland&departure_time=now&traffic_model=best_guess&key=PutYourNewlyGeneratedKeyHere
如果金鑰能正常使用,請將這組API金鑰複製貼上到程式碼的第89行。程式碼可以在這個專題的Github專頁上下載。

3. 設定程式碼來適用你的地圖

現在你已經具備所需工具,可以用以下的草稿碼來寫程式了。

  • 在Arduino IDE中開啟用來通知交通狀況的程式碼。
  • 在草稿碼頂端有個清單列出所有程式碼需要用的函式庫,若你還沒安裝請記得要全部安裝完成(所有的函式庫都可在Arduino函式庫管理員中找得到)。
  • 若畫面再往下滑一點,會看到一個已經加入附註的區塊,在這邊你可以依自己的喜好來調整程式碼。在這個區塊你可以設定你的輸出pin碼、NeoPixels LED數量、亮度、交通流量上限和資料更新頻率。

現在你應該可以用程式碼來控制你的電路板了。

4. 執行裝置

首先,將板子連上Wi-Fi:

  • 開啟板子電源,然後找出它的Wi-Fi訊號。再將電腦連上板子的Wi-Fi訊號,然後設定加入你的網路。現在它可以下載交通狀況的資料了。
  • 定位你的起點的經緯度
    • 找到你在Google Map上設定的路線起點,然後在網址的尾端複製經、緯度的資訊。
    • 在程式碼第96行輸入經、緯度。
  • 查看Google Maps目的地,重覆這個動作,然後在第97行輸入資料。
  • 上傳程式碼到板子上。
  • 中斷電腦和板子的連線,如果還沒充電完成,請再將板子接上電源線。
  • 在你的地圖下載交通流量資訊和設定燈色的時候,稍等幾秒鐘。

5. 裝上地圖

在這個步驟你可以依自己的喜好進行──我們下載並列印出復古的舊金山地圖,在海灣大橋的路線上放置了四顆LED來追蹤橋上的交通狀況。為了讓地圖更堅固,我們把地圖和電路黏在風扣板上。讓整張地圖可以錶框並掛在牆上。
 
註:如果你使用了超過五顆LED,你將需要增加額外的邏輯電平轉換器來供應適當的電源給所有裝置。
接線方式如下圖:

結論

圖片

稀有的「白天全綠燈」

你的交通地圖已經完成了。現在你只要用MicroUSD連接線接上標準規格的5V電源即可。電路板會自動連上網路然後執行程式碼;等一會兒,LED就會亮起,讓你知道你所選定路線的交通狀況。
 
我認為將Google Maps API和ESP8266結合,可以完成很多有趣的專題,以物理方式顯示數位資訊。這樣的專題可以用來比較各種不同通勤路線的交通時間(例如https://www.instructables.com/id/Arduino-Commute-Checker/),甚至可以用來比較不同交通方式的交通時間(開車/走路/大眾運輸等),如此一來,這些專題可以鼓勵人們在交通尖峰的時段,嘗試不同的交通方式。

(譯:葉家豪)
​[原文

​【延伸閱讀】
地圖控看過來!用雷切打造戴美克森氏全球地圖
讓新手輕鬆打造電子專題的Circuito.io
用Arduino打造會調酒的機器人
在手機上使用Blynk控制Arduino
可彩繪牆壁、地板、彩蛋的四合一Arduino繪圖機器人

Social media & sharing icons powered by UltimatelySocial