太陽能供電 - 上傳溫濕度到 LASS
材料準備
- Ameba x 1
- DHT11 x 1
- Solar Panel (1W) x 1
- Lipo rider pro x 1
- Li-Po battery (1100 mAh) x 1
- DS3231 RTC x 1
- AMS1117-3.3V x 1 (Optional)
- 太陽能板 官網使用的太陽能板是這一塊: http://www.seeedstudio.com/depot/1W-Solar-Panel-80X100-p-633.html 功率大小的差別在於要花多久的時間將鋰電池充飽,一般來說1W的太陽能板在台灣晴朗微雲的天氣是夠用的。
- 鋰電池 晚上時需要倚靠鋰電池度過晚上,加上考慮到可能會有連續2~3天陰天的情況,這邊鋰電池的大小選擇1100 mAh。一般來說不建議小於500 mAh。
- 鋰電池充放電模組 在白天時,我們希望太陽能板供應電源給Ameba之外,如果有多餘的能量可以用來對鋰電池充電;但如果太楊能板供電不足,也可以從鋰電池供電給Ameba。所以我們須要一個鋰電池充放電模組。這裡我們使用Lipo Rider pro,它使用JST 2.0的接頭,在處理接頭上需要找對應的線材。 充放電模組也有其它類似的產品: Lipo Rider: http://www.seeedstudio.com/depot/Lipo-Rider-v13-p-2403.html PowerBoost 500C: https://www.adafruit.com/product/1944 PowerBoost 1000C: https://www.adafruit.com/product/2465
- DS3231 RTC 我們使用的DS1307RTC library支援DS1307/ DS1337/DS3231,這邊我們使用DS3231。
- AMS1117-3.3V Lipo Rider Pro的輸出預設是5V,直接接Ameba的開發版就可以。但如果想要更省電,可以考慮使用AMS1117降壓至3.3V並直接供電給Ameba module。
範例說明
這個範例裡會使用太陽能板,當太陽能板供電超過Ameba,可以將多餘的電將鋰電池充電。到晚上時則使用鋰電池供電。
我們打開範例 “File” -> “Examples” -> “AmebaMQTTClient” -> “lass_for_dht_plus_ps_nfc”
這邊要注意,當直接供電至Ameba Module時,開發板上的3.3V會因為預設並不是從Module供電,所以無法使用。此時其它需要3.3V供電的模組就需要直接從降壓模組供電。
另一個值得注意的是,圖中NFC的天線板是裁開的,中間與Amabe只用線材連結,只要線不要太長基本上感應的效率不會變太差。將連結的兩條線互相纏繞可以稍減線材變長的問題。如果不喜歡這個天線板,也可以接其它的天線,NFC的天線使用電磁感應的方式,官方網站曾試過直接用杜邦線繞幾圈,也試過悠遊卡的代幣,或其它NFC tag的天線,基本上感應的效果都不太一樣。另外,如果不想使用AMS1117,也可以直接供電至5V的地方
但是要注意,供應至5V的地方也會啟動DAP,造成額外的耗電。
要執行範例,需要修改幾個參數:
- Wifi連線需要使用的ssid/password
- LASS的clientId,預設是FT_LIVE_12345678,請改成不同的值。
耗電分析
以下是一些細節的說明
- 太陽能板的供電效率 這裡我們測量亮度的單位為照度(LUX),照度是以人眼感受測量出來的亮度,不同波長的光線照度也不一樣。同時我們使用鹵素燈泡模擬太陽光,一般來說鹵素燈是常見用來模擬太陽光的光源。 在臺灣晴天無雲的情況下 ,早上10點至下午兩點大約可以量到照度100K LUX左右,傍晚四點左右則可以量到照度10k LUX。 改成使用100W的鹵素燈,距離20cm的地方照度為10k LUX,距離5cm的地方照度為100k LUX。但是距離燈泡太近會讓太陽能板太熱而造成效率降低,所以實驗中保持一定距離比較好。這裡我們使用20cm的距離做實驗。 我們測量太陽能板實際供電的情況,當照度為100k LUX的時候,可以輸出210mA的電流,電壓為4.8V,4.8V x 0.21 A = 1.008 W。如果使用其它不同的太陽能板也可粗略估算可以輸出的電流。 但是當照度為10K LUX的時候,太陽能板只能輸出40~60mA的電流。
- NFC的耗電 這個範例裡我們使用了NFC,並且當Ameba進入deepsleep省電模式時,也保留了NFC。NFC的耗電約7mA,這對deepsleep來說是相對高的耗電,這部份要留意。
- RTC的耗電 RTC平常使用電池維持時間的精準度,但是當Ameba接上RTC時,預設會啟用I2C做為溝通介面。這方面會量到2mA的耗電。
- 總耗電 如果是從AMS1117降壓至3.3V再對Ameba module供電,量到的電流在deepsleep的時候是12mA,長時間的平均值是13mA 如果是從Ameba的5V供電,量到的電流在deepsleep的時候是17mA,長時間的平均值是18mA 扣除NFC與RTC的耗電,有一部份的耗電來自於降壓損耗與點亮LED燈。 在不考慮鋰電池充放電模組的耗電下,假設太陽能板供給40mA的電流,而1100mAh的鋰電池已用了一半。那麼在中午的陽光照射下,需要 550 mAh / (210mA – 13mA) = 2.8h可以將鋰電池充飽。 那麼如果太陽能板一直未能對鋰電池充電,並且Ameba只由鋰電池供電,那麼1100mAh的鋰電池用了一半可以讓Ameba使用 550 mAh / 13mA = 42h,接近2天。
程式碼說明
整個程式都由之前的範例組成,程式碼流程如下:
一開始的地方,我們啟動watchdog,並且啟動一個GTimer讓它每秒feed/kick watchdog,如果檢查發現整個流程經過30s秒還沒完成就直接進入deepsleep。
比較需要注意的是我們將WiFi連線的部份放在較後面的地方,因為啟動WiFi會消耗較多的電量,在設計省電的專案時,最好先將不需要WiFi的部份先做完。
Realtek IoT/Wi-Fi MCU Solutions . All Rights Reserved. 使用條款