From 8cf6e9cb4087f4a3265b89f0ffd14f471038c76a Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Mon, 13 Jan 2025 18:05:35 +0100 Subject: [PATCH] Added battery support to Heltec T114 --- Boards.h | 2 +- Power.h | 25 ++++++++++++++++++++++++- Utilities.h | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/Boards.h b/Boards.h index 62b33b7..86230db 100644 --- a/Boards.h +++ b/Boards.h @@ -638,7 +638,7 @@ #define HAS_BLUETOOTH false #define HAS_BLE true #define HAS_CONSOLE false - #define HAS_PMU false + #define HAS_PMU true #define HAS_NP true #define HAS_SD false #define HAS_TCXO true diff --git a/Power.h b/Power.h index f8d22fb..b88a66f 100644 --- a/Power.h +++ b/Power.h @@ -111,6 +111,23 @@ bool bat_voltage_dropping = false; float bat_delay_v = 0; float bat_state_change_v = 0; +#elif BOARD_MODEL == BOARD_HELTEC_T114 + #define BAT_V_MIN 3.15 + #define BAT_V_MAX 4.165 + #define BAT_V_CHG 4.48 + #define BAT_V_FLOAT 4.33 + #define BAT_SAMPLES 7 + const uint8_t pin_vbat = 4; + const uint8_t pin_ctrl = 6; + float bat_p_samples[BAT_SAMPLES]; + float bat_v_samples[BAT_SAMPLES]; + uint8_t bat_samples_count = 0; + int bat_discharging_samples = 0; + int bat_charging_samples = 0; + int bat_charged_samples = 0; + bool bat_voltage_dropping = false; + float bat_delay_v = 0; + float bat_state_change_v = 0; #endif uint32_t last_pmu_update = 0; @@ -121,7 +138,7 @@ uint8_t pmu_rc = 0; void kiss_indicate_battery(); void measure_battery() { - #if BOARD_MODEL == BOARD_RNODE_NG_21 || BOARD_MODEL == BOARD_LORA32_V2_1 || BOARD_MODEL == BOARD_HELTEC32_V3 || BOARD_MODEL == BOARD_TDECK || BOARD_MODEL == BOARD_RNODE_NG_22 + #if BOARD_MODEL == BOARD_RNODE_NG_21 || BOARD_MODEL == BOARD_LORA32_V2_1 || BOARD_MODEL == BOARD_HELTEC32_V3 || BOARD_MODEL == BOARD_TDECK || BOARD_MODEL == BOARD_RNODE_NG_22 || BOARD_MODEL == BOARD_HELTEC_T114 battery_installed = true; battery_indeterminate = true; @@ -129,6 +146,8 @@ void measure_battery() { float battery_measurement = (float)(analogRead(pin_vbat)) * 0.0041; #elif BOARD_MODEL == BOARD_RNODE_NG_22 float battery_measurement = (float)(analogRead(pin_vbat)) / 4095.0*6.7828; + #elif BOARD_MODEL == BOARD_HELTEC_T114 + float battery_measurement = (float)(analogRead(pin_vbat)) * 0.017165; #else float battery_measurement = (float)(analogRead(pin_vbat)) / 4095.0*7.26; #endif @@ -313,6 +332,10 @@ bool init_pmu() { pinMode(pin_ctrl,OUTPUT); digitalWrite(pin_ctrl, LOW); return true; + #elif BOARD_MODEL == BOARD_HELTEC_T114 + pinMode(pin_ctrl,OUTPUT); + digitalWrite(pin_ctrl, HIGH); + return true; #elif BOARD_MODEL == BOARD_TBEAM Wire.begin(I2C_SDA, I2C_SCL); diff --git a/Utilities.h b/Utilities.h index 81c2c4b..9a5d51e 100644 --- a/Utilities.h +++ b/Utilities.h @@ -889,7 +889,7 @@ void kiss_indicate_channel_stats() { uint16_t cll = (uint16_t)(longterm_channel_util*100*100); uint8_t crs = (uint8_t)(current_rssi+rssi_offset); uint8_t nfl = (uint8_t)(noise_floor+rssi_offset); - uint8_t ntf = 0xFF; if (interference_detected) { (uint8_t)(current_rssi+rssi_offset); } + uint8_t ntf = 0xFF; if (interference_detected) { ntf = (uint8_t)(current_rssi+rssi_offset); } serial_write(FEND); serial_write(CMD_STAT_CHTM); escaped_serial_write(ats>>8);