2014年12月8日

以arduino製作的雲端天氣站

這篇作的是利用arduino加上I2C的液晶顯示模組+大氣壓力模組(BMP085)+溫濕度模組(DHT11),測量環境的溫濕度和大氣壓力後,透過網路模組將資料推送到Google雲端硬碟的表單,再用表單回應內容的試算表來製作折線圖。
氣象站


單純機器的樣子如下(ino的檔案
氣象站


一開始還沒用網路模組時,是用一般的液晶螢幕(沒用i2c)加上大氣壓力、溫濕度模組還有RTC模組,純粹只有將環境資訊顯示在螢幕上以及serial port。(檔案在此
氣象站

RTC模組和大氣壓力模組(GY-65)走的都是I2C通道,所以就把SDA連到arduino的 A4,SCL 連到arduino的A5,溫濕度模組的signal則是連到A3。


氣象站


像這樣呈現方式,只適合擺在那邊直接看,如果要將資訊拿來作進一步利用,一定要儲存起來,所以後來我就改用網路模組來上傳資料。

硬體設定都算簡單,難是怎麼讓arduino在總總限制下將資料上傳到Google雲端硬碟。

限制1,google試算表的總儲存格限制在2百萬格以內
限制2,負責將資料推到google表單的服務是pushing box,不過每日只能推送1000個,所以不能每幾秒就推一次資料。


Googel表單設定
google表單製作完畢後,到「回覆/取得預先填入的網址」填入資料後送出,可以得到類似以下的網址
https://docs.google.com/forms/d/1DT2Ei1PDUCkx0yL0nI3qcLx36TtpV7DXzhZurztvysk/viewform?entry.1684227099=1&entry.1924833268=2&entry.612577503=3

然後到pushing box註冊後,新增一個service,名稱就隨便打arduino就好,Root URL我就填
https://docs.google.com/forms/d/1DT2Ei1PDUCkx0yL0nI3qcLx36TtpV7DXzhZurztvysk/formResponse

再到scenarios新增一個,data就打下面這串。$Temp$、$Temp$、$Temp$,這三個是變數,用$符號夾住的。真實的變數是要扣掉$的部份。
?&entry.1684227099=$Temp$&entry.1924833268=$Temp$&entry.612577503=$Temp$&submit=Submit

也同樣在scenarios這頁裡可以得到DeviceID,這號碼要記得在arduino的程式裡頭更改。剩下的就很簡單了,線接好,程式上傳,就可以等著Google雲端硬碟蒐集環境資料,然後自動出圖了。