第一章
建置雲端氣象站
001
本章重點
所需硬體與軟體元件
將感測器接上 Arduino Yún 開發板
建立一個 Temboo 帳號
將資料送給 Google Docs 並顯示出來
建立自動電子郵件警告
讓 Arduino Yún 開發板將感測器資料推特出去
總結
003
建置雲端氣象站
1
製作專屬的雲端照相機
3
製作遠距耗能監控裝置
2
無線網路控制之移動式機器人
4
Arduino Yún 開發板的外觀如下圖所示:
� 所需硬體與軟體元件
當然啦,您的桌上得有一片 Arduino Yún 開發板以及一條 micro USB
傳輸線來處理一開始的程式編寫與測試。另外,我們也建議您準備具有
micro USB接口的電源插頭,這樣一來您就能直接從牆壁插頭來對 Arduino
Yún 供電,您的電腦就不用非要放在附近不可了。這在專案後期會大有幫
助,因為您會希望 Arduino Yún 開發板能自動執行量測作業。
您也要用到不同的感測器,用來感知關於環境變化的資料。對本專案
來說,我們會使用 DHT11 感測器來量測溫度與濕度,還有一個用來量測
光度的簡易光電管。DHT11 是一個相當便宜的數位溫度與濕度感測器,普
遍應用於 Arduino 平臺。您也可以使用 DHT22 感測器,它的精確度比較
005
建置雲端氣象站
1
製作專屬的雲端照相機
3
製作遠距耗能監控裝置
2
無線網路控制之移動式機器人
4
1. 首先,將 Arduino Yún 開發板的 +5V 腳位接上麵包板的紅色電源
軌,ground 腳位則是接到藍色接地軌。
2. 接著,將 DHT11 感測器的 1號腳位接上麵包板的紅色電源軌,
4 號腳位接到藍色接地軌。另外,將感測器的 2 號腳位接到
Arduino Yún 開發板的 8號腳位上。
3. 要完成 DHT11 感測器的接線,請在感測器的 1號與 2號腳位之間
加入一個 4.7k 歐姆電阻。
至於光電管,請先將它與 10k 歐姆電阻串聯之後插入麵包板。這個下
拉電阻可確保在操作過程當中,如果完全沒有光線的話,Arduino板所看
到的電壓會是 0V。接著,將光電管的另一端接上麵包板的紅色電源軌,並
將電阻的另一端接地。最後,將這個共用腳位接到 Arduino Yún 開發板的
類比腳位 A0。
下圖是用 Fritzing 軟體所繪製的硬體接線圖:
016
現在要來實際繪製一些資料了,只要使用 Google Docs 的插入圖表
(Insert charts)函式即可。在此我們選擇簡易的折線圖(Line graph)。
下圖為溫度與濕度的顯示結果:
光度量測也是一樣的作法,如下圖所示:
035
建置雲端氣象站
1
製作專屬的雲端照相機
3
製作遠距耗能監控裝置
2
無線網路控制之移動式機器人
4
過程中保留空間)或是透過牆上的電源插座接到 USB轉接器(如果您想要
用 Wi-Fi上傳草稿碼,且讓專案自動運行)。
接著,接上檯燈或是任何您在這個專案中希望用母電源插頭控制的設
備。最後一步是將公電源插頭接到牆上插座。在執行此一步驟時請務必小
心:確認沒有任何導電物質暴露在外,所有螺絲端子皆正確拴緊並固定好
電線,且沒有裸露的導電物質互相接觸。
� 測試您的硬體連接
現在您的接線都完成了,我們準備在送出電力消耗資料至雲端與製作
控制繼電器的介面之前,先進行一次全面測試。我們要比照專案已經正式
上路一樣來測試不同的模組。在整個測試過程中,我們的專案都會與牆上
插座和檯燈保持連接。如此一來,我們便可以確認所有的硬體連接都是正
確的,以便進入下一階段。
以繼電器為例,我們會利用 Arduino Yún REST API透過 Wi-Fi進行操
控,這會用於本專案的最終版本之中。基本上來說,我們只會從網路瀏
覽器發送一個指令來直接設定繼電器所連接腳位的數值。稍後在本專案
中,我們會改用圖形化使用介面來完成呼叫,就不用直接在瀏覽器中輸入
指令了。
至於電流感測器,我們只會讀取 Yún 開發板上類比-數位轉換器 A0
類比腳位的資料,接著利用已知的有效電壓(110V或 230V,依居住地而
有所不同)計算有效電流量和有效電力。
讓我們先來看看 Arduino程式碼。它從匯入正確的函式庫開始,如以
下程式碼所示。我們需要 Bridge函式庫,以便使用 Yún上的板載 Linux機
049
建置雲端氣象站
1
製作專屬的雲端照相機
3
製作遠距耗能監控裝置
2
無線網路控制之移動式機器人
4
我在我的 Google Docs試算表中加入了這些函數,而下圖則是使用我
記錄的範例資料所得出的結果:
如果要把資料轉換成圖表也很方便。我在這裡使用圓餅圖,它是我認
為最適用於這類資料的圖表。以下是用我的量測資料所得的圖表:
有了這類的圖表,您便能比較某個檯燈的每日使用狀況。例如,這樣
就能知道自己離開時是否忘了關燈。
� 製作能遙控開關燈的介面
現在本專案已經會自動將能量消耗的相關資料記錄到 Google Docs中
了,我們該回來談談如何控制繼電器。現在,我們會打開瀏覽器並輸入正
確的 REST函式加上想修改的腳位名稱來測試繼電器。
060
接下來是 PIR動作感測器。這種感測器價格相當平價,使用紅外線圖
像來偵測房間內任何發熱物體的動作,像是人體等等。我們可以直接使用
照相機來偵測動態,但效果不會這麼好。照相機啟動時非常耗電,而 PIR
動作感測器則幾乎完全不耗電;而要編寫一個能有效地從照相機圖像中偵
測動作的軟體更是困難。我們使用了 Parallax的 PIR動作感測器,如下圖
所示:
080
首先請到您的 YouTube帳號下的影片管理員(VIDEO MANAGER),
接著找到左側選單的現場直播(Live Events),如下圖所示:
在這個選單當中,您可以建立自己的串流,就如同建立新影片一樣。
請確定這個影片沒有被編入任何清單中,除非您希望所有人都可以看到您
家裡發生了什麼事。相較於私人影片,您仍然可以將串流的 URL給認識的
人來分享影片。接著在下一頁,YouTube會詢問您要選擇哪一種編碼器。
我選擇清單裡的 Wirecast並從它的網站來下載。在 Wirecast的介面
裡,您需要設定正確的影片來源(預設情況是會從您電腦的網路照相機來
串流)。您可以在選單中選擇影片來源,請選 Web Stream Source並設定
完成,如下圖所示:
081
建置雲端氣象站
1
製作專屬的雲端照相機
3
製作遠距耗能監控裝置
2
無線網路控制之移動式機器人
4
基本上,您需要將通訊協定設定為 HTTP,格式選 Motion JPEG,並
輸入來自串流介面的 VideoLAN的 URL。例如,以我的專案來說就會是:
myarduinoyun.local:8080/?action=stream。
一會兒過後,如果所有環節都沒有問題,您應該會看到 USB照相機
的即時串流直接出現在 Wirecast的視窗中。如果這時影像有點停格也無須
擔心,這通常只是一般性的延遲;以我的狀況來說,我的 Wirecast軟體會
有 1到 2秒的延遲現象。下圖是加入正確影片串流之後,在 Wirecast主介
面中的樣子:
另外,也請確認只有這個串流會被傳送到 YouTube。因此,請刪掉其
他 Wirecast介面上的串流影片。以預設狀況來說,Wirecast的確可以把來
自網路照相機的串流影片放上介面。
089
建置雲端氣象站
1
製作專屬的雲端照相機
3
製作遠距耗能監控裝置
2
無線網路控制之移動式機器人
4
您會在機器人底部看見大部分的機械零件,例如機殼、輪胎、直流馬
達和超音波感測器。您也會在機器人底盤的中央看到電池。接著,您可以
在頂端看見不同的 Arduino開發板。從最底下開始依序是 Arduino Yún開發
板、Arduino Uno 開發板、馬達擴充板和原型開發板。
本專案中的元件組裝過程會和之前稍有不同,因為我們實際上用到了
兩塊 Arduino開發板:Yún,直接從外界接收指令,以及 Arduino Uno開發
板,則是連接到馬達擴充板。
接下來,我們會對機器人的各個零件進行常態測試,例如測試機器人
的兩顆直流馬達以及和安裝在前端的超音波測距感測器。要測試馬達,只
要使馬達緩慢加速,藉此看看控制電路是否正常運作。而超音波距離感測
器所收到的量測資料則會顯示在序列監視器上。
102
下圖則是 I2C介面與 Yún開發板的連接狀況:
� 測試機器人硬體連接狀況
在組裝專案的遙控部分之前,我們要確定各硬體設備都連接無誤,特
別是 Arduino開發板與不同馬達和感測器之間的連接狀況。這就是為什麼
我們要先為 Arduino Uno開發板寫一個簡單的草稿碼來測試不同元件。
此時,我們要啟動機器人的馬達;因此,請確認機器人是放在一個像
小臺子這樣的東西上,避免機器人在您用 USB連接線測試不同草稿碼時
亂跑。
草稿碼首先宣告了馬達所連接的腳位編號,如以下程式碼所示。請注
意這些腳位號碼是針對我們所使用的馬達開發板;如果您採用的是不同類
型開發板的話,請參照它所附的資料表。
114
現在是時候來啟動專案了。請確認所有的檔案都放在網路伺服器的根
目錄中,並且確定伺服器已經啟動了。接下來,請在瀏覽器下切換到網路
伺服器的資料夾(通常輸入 localhost即可),然後開啟 HTML檔案。本專
案也包含一個 CSS 工作表來讓介面變得好看一點。您應該可以在瀏覽器中
看見下圖:
顯示超音波感測器距離讀數的欄位應該會每秒自動更新,所以您馬上
就能看出它是否正常運作。試著在機器人前面揮手或拿東西晃晃,讀數應
該也會隨之變化。
在開始讓機器人移動之前,我們建議您在測試不同按鈕時,先把它固
定在小臺子上不要移動。確實,如果在伺服器或 Arduino草稿碼中有程式
碼出錯的話,機器人會毫無回應並且開始在您家中橫衝直撞。
現在也可以測試不同按鈕了。您可以特別玩玩看讓機器人左轉或右轉
的按鈕,並且修改 PHP程式碼中的 sleep()函數來讓它們完全遵照您的要
求。請注意,當機器人四處移動時,超音波感測器所偵測到的距離讀數也
會跟著改變。