M5.Power.getBatteryLevel() returns 0 when using Power.lightSleep etc.
-
I would appreciate any thoughts on this.
M5.Power.getBatteryLevel() works fine on Capsule. But when I use power saving, such as Power.lightSleep(6000000), M5.Power.getBatteryLevel() returns 0. Same results with .deepSleep(6000000).
The Sleep works as expected, but M5.Power.getBatteryLevel() always returns zero when any "Sleep" is used.Full code I use is below:
/*
Using M5Capsule to gather ENVIII sensor data. Then send via to Paper S3 via
WiFi.
*/
#include <M5Capsule.h>
#include <esp_now.h>
#include <WiFi.h>
#include <M5UnitENV.h>
SHT3X sht3x;
QMP6988 qmp;uint8_t broadcastAddress[] = {0xa0, 0x85, 0xe3, 0xef, 0xf4, 0x48};
// Structure example to send data
// Must match the receiver structure
typedef struct struct_message {
//char a[32];
float Mytemp;
int Myhum;
int Mypres;
float Myalt;
int Mysendbat;//bool d;
} struct_message;// Create a struct_message called myData
struct_message myData;esp_now_peer_info_t peerInfo;
// callback when data is sent
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("\r\nLast Packet Send Status:\t");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}void setup() {
auto cfg = M5.config();
M5Capsule.begin(cfg);
M5.Power.begin();
Serial.begin(115200);//Config the ENVIII Sensor
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 13, 15, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 13, 15, 400000U)) { Serial.println("Couldn't find SHT3X"); while (1) delay(1); }// Set device as a Wi-Fi Station
WiFi.mode(WIFI_STA);// Init ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}// Once ESPNow is successfully Init, we will register for Send CB to
// get the status of Trasnmitted packet
esp_now_register_send_cb(OnDataSent);// Register peer
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;// Add peer
if (esp_now_add_peer(&peerInfo) != ESP_OK){
Serial.println("Failed to add peer");
return;
}
}void loop() {
// Set values to send
//============================================
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}if (qmp.update()) { Serial.println("-----QMP6988-----"); Serial.print(F("Temperature: ")); Serial.print(((qmp.cTemp *(9/5)) + 32)); Serial.println(" *C"); Serial.print(F("Pressure: ")); Serial.print(qmp.pressure); Serial.println(" Pa"); Serial.print(F("Approx altitude: ")); Serial.print(qmp.altitude); Serial.println(" m"); Serial.println("-------------\r\n"); }myData.Mysendbat = M5.Power.getBatteryLevel();
myData.Mytemp = sht3x.fTemp;
myData.Myhum = sht3x.humidity;
myData.Mypres = qmp.pressure;
myData.Myalt = qmp.altitude;// Send message via ESP-NOW
esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));if (result == ESP_OK) {
Serial.println("Sent with success");
Serial.println(myData.Mytemp);
Serial.println(myData.Mysendbat);
}
else {
Serial.println("Error sending the data");
}M5.Power.lightSleep(10000000);
}
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login