Ameba Arduino: [RTL8195] Power Management – 讓Ameba處於wifi連接的省電模式

材料準備

  • Ameba x 1
  • DHT11/DHT22/DHT21 x 1
範例說明
Ameba的deepsleep無法讓wifi處於連線狀態,如果想讓Ameba省電,並且保持wifi連線,可以使用sleep API。
打開範例 “File” -> “Examples” -> “AmebaPowerSave” -> “SleepWithDHTUdpServ”
範例裡一樣需要設定連線AP的ssid & password
這個範例裡,Ameba會先建立wifi連線,進入sleep省電模式,Ameba會當作UDP server,每當接收到UDP封包內容為 ‘H’,就回傳濕度,接收到UDP封包為 ‘T’,就回傳溫度。
與deepsleep不同的地方是,當Ameba打開sleep模式,會自己找尋可以睡眠的時間,當裝置閒置時就會進入睡眠。整個睡眠與醒來的動作是自動的,不需要使用者干預。
當Ameba連線之後,我們參考之前測試TCP/UDP的工具Sokit設定Ameba的IP & port。
我們每分鐘輪流問一次溫濕度,可以看到Ameba都有回應。
1這個範例裡會偵測D18這根防止進入睡眠的pin腳,如果D18被接地,就不會讓Ameba進入sleep睡眠模式,於是我們可以測量兩種耗電: (實驗所使用的電錶為Keysight 34465A)
2

NOTE: 實際情況裡,不會用到那麼久,它會因為升壓轉換造成能量損失,也會因為電池電壓隨時間而降低造成無法使用到全部的容量。
這裡的數據會因為網路狀況而有不同,但讓Ameba保持連線的情況下會比讓Ameba進入deepsleep要耗電。但讓Ameba保持連線也提供使用者做遠端操控,這是deepsleep無法做到的。這端看使用者的應用而定。