Power Management - 將DHT資料上傳到LASS之後進入睡眠
材料準備
- Ameba x 1
- DHT11/DHT22/DHT21 x 1
範例說明
使用Ameba通常都會使用到它的Wifi功能,實際的省電使用情況也會因為使用wifi功能而有不同。
這個範例裡,會先量測DHT的溫濕度數據,打開wifi並連上AP,取得NTP時間,連上LASS的MQTT server,將量測的溫濕度數據上傳,再進入deepsleep。每10分鐘重覆這樣的動作。
打開範例 “File” -> “Examples” -> “AmebaPowerSave” -> “DeepSleepWithDHTLass”
修改程式裡相關的設定,包括:
– DHT的型號:DHT11/DHT22/DHT21
– 連上AP的方式:ssid, password
– 目前的GPS位置:latitude & longitude
編譯並上傳之後,量測到的耗電會因為許多因素而影響,包括wifi網路環境是否乾淨、網路連線是否順暢、Server是否馬上回應。但一般應該會在十多秒內完成。
範例測試的結果裡,我在上傳所花的時間是13s,量得的Ameba module耗電平均為1.3mA。
這個數據比範例 “DeepSleepWithDHT” 要大上許多,因為Ameba在工作模式下的耗電通常大於29mA,甚至在wifi連線時至少會大於68mA,與deepsleep的0.018 mA相比,我們要讓Ameba儘量待在deepsleep才會取得最大的省電效益。
為了比較未省電的情況,我們將程式碼修改如下,讓它平常保持網路連線,每10分鐘量一次,量完再上傳至LASS的MQTT Server
這個範例裡,會先量測DHT的溫濕度數據,打開wifi並連上AP,取得NTP時間,連上LASS的MQTT server,將量測的溫濕度數據上傳,再進入deepsleep。每10分鐘重覆這樣的動作。
打開範例 “File” -> “Examples” -> “AmebaPowerSave” -> “DeepSleepWithDHTLass”
修改程式裡相關的設定,包括:
– DHT的型號:DHT11/DHT22/DHT21
– 連上AP的方式:ssid, password
– 目前的GPS位置:latitude & longitude
編譯並上傳之後,量測到的耗電會因為許多因素而影響,包括wifi網路環境是否乾淨、網路連線是否順暢、Server是否馬上回應。但一般應該會在十多秒內完成。
範例測試的結果裡,我在上傳所花的時間是13s,量得的Ameba module耗電平均為1.3mA。
這個數據比範例 “DeepSleepWithDHT” 要大上許多,因為Ameba在工作模式下的耗電通常大於29mA,甚至在wifi連線時至少會大於68mA,與deepsleep的0.018 mA相比,我們要讓Ameba儘量待在deepsleep才會取得最大的省電效益。
為了比較未省電的情況,我們將程式碼修改如下,讓它平常保持網路連線,每10分鐘量一次,量完再上傳至LASS的MQTT Server
void setup() { dht.begin(); reconnectWiFi(); retrieveNtpTime(); initializeMQTT(); } void loop() { if (gatherHumidityAndTemperature() == DATA_CNT_FOR_UPLOAD) { reconnectWiFi(); while(!sendMQTT()) { delay(1000); } mqttClient.loop(); pDhtData->dataCount = 0; } // store data back to flash memory FlashMemory.update(); delay(measureInterval * 1000); }
這種方式量測到的平均耗電為67mA
我們用2顆AA電池來比較耗電 (實驗所使用的電錶為Keysight 34465A)
可以看到沒省電的情況下只能用一天,但經過省電並且單獨供電給Ameba module可以使用2.8個月。
NOTE: 實際情況裡,不會用到那麼久,它會因為升壓轉換造成能量損失,也會因為電池電壓隨時間而降低造成無法使用到全部的容量。
Copyrights ©瑞晟微电子(苏州)有限公司 2021. All rights reserved. Terms of Use