2015年4月28日 星期二

氣象站 3.1 Router (nrf24l01 router)

由於最近Rpi一代借出去了,目前沒有Server可以用,所以就把我的Wifi Arduino拿來用
基本上這個就是Leonardo + Linkit connect module

總之就是將nRF24l01接收到的資料打包之後,送到Xively上面(P.S Xively看來是很難在註冊了..)

完整的程式在這邊(待補)
底下因為Sublime Text 3 的字體+上色太好看了,所以我用截圖來說明

 首先是Setup,要做的就是設定nRF24l01,這邊使用的Library是Mirf,很方便使用的一個library,設定完通訊方式,接收地址,以及接收大小之後就可以了.
再來就是利用AT cmd讓MT7681模組Reset,之後等待RecoveryMode結束的左箭頭之後就連線到AP.
但是如果MT7681並沒有對Reset回應的話,就會用GPIO將Wifi Arduino整台Reset,因為我當初Layout的時候並沒有把MT7681的RST接上GPIO而是和Leonardo的接在一起.













Loop也很簡單,收到nRF的資料之後,就將資料放到Structure裡面,然後把Wifi 的資料送出去
另外我用WatchDog來防止整台因網路不通的關西而Freeze的狀況.

最後就是Linkit connect module library當中需要的callback了










Wifi送資料的部分,剛開始先準備好資料,將Structure內的各個資料轉成String,同時查詢api.xively.com的IP位置,最後連到Server送Http header與資料.


============================
PUT /v2/feeds/(feedID).csv HTTP/1.1
Host: api.xively.com
X-ApiKey: (API_key)
Content-Length: (datalength)
Content-Type: text/csv
Connection: close

Humidity,(humidity)
Temperature,(temperature)
============================
大概是這種感覺

順帶一提,一樣是為了防止網路連線出錯導致的Freezing,加了WDT作保護


連線到AP的大概就是這種感覺...

以上就是針對接收站的紀錄了~

沒有留言:

張貼留言