From adabb0bd4e659ea560a635764ae98258bf56eec5 Mon Sep 17 00:00:00 2001 From: richonguzman Date: Tue, 21 May 2024 14:23:12 -0400 Subject: [PATCH] Wemos Battery Holder plus LoRa plus GPS added --- README.md | 1 + platformio.ini | 15 +++++++++++++++ src/boards_pinout.h | 18 ++++++++++++++++++ src/power_utils.cpp | 12 ++++++------ 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6b1ad16..a6a37f6 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ ____________________________________________________ ____________________________________________________ ## Timeline (Versions): +- 2024.05.21 WEMOS ESP32 Battery Holder + LoRa SX1278 + GPS Module support added. - 2024.05.16 all boards now work with Radiolib (LoRa) library from @jgromes. - 2024.05.13 BME modules will be autodetected (I2C Address and if it is BME280/BMP280/BME680). - 2024.05.10 PacketBuffer for Rx (25 Seg) and Tx outputPacketBuffer for sending with ACK Request. diff --git a/platformio.ini b/platformio.ini index bd48f7f..94a7f49 100644 --- a/platformio.ini +++ b/platformio.ini @@ -318,6 +318,21 @@ lib_deps = adafruit/Adafruit SH110X@^2.1.8 +[env:Wemos_ESP32_Bat_LoRa_GPS] +extends = env:esp32 +board = esp32dev +build_flags = + -Werror -Wall + -DWEMOS_ESP32_Bat_LoRa_GPS + -DHAS_SX1278 + -DHAS_BT_CLASSIC +lib_deps = + ${common.lib_deps} + adafruit/Adafruit GFX Library @ 1.11.7 + adafruit/Adafruit SSD1306 @ 2.5.7 + adafruit/Adafruit SH110X@^2.1.8 + + [env:esp32_c3_DIY_LoRa_GPS] extends = env:esp32 board = esp32-c3-devkitm-1 diff --git a/src/boards_pinout.h b/src/boards_pinout.h index 00d4973..6dfd393 100644 --- a/src/boards_pinout.h +++ b/src/boards_pinout.h @@ -205,6 +205,24 @@ #endif +#ifdef WEMOS_ESP32_Bat_LoRa_GPS + #define OLED_SDA 21 + #define OLED_SCL 22 + #define OLED_RST -1 + #define GPS_RX 4 + #define GPS_TX 17 + #define BUTTON_PIN 15 + #define BATTERY_PIN 35 + #define RADIO_SCLK_PIN 18 + #define RADIO_MISO_PIN 19 + #define RADIO_MOSI_PIN 23 + #define RADIO_CS_PIN 5 + #define RADIO_RST_PIN 27 + #define RADIO_DIO1_PIN 12 + #define RADIO_BUSY_PIN 14 + #endif + + #ifdef ESP32_C3_DIY_LoRa_GPS #define OLED_SDA 8 #define OLED_SCL 9 diff --git a/src/power_utils.cpp b/src/power_utils.cpp index a8b88db..84bbcd1 100644 --- a/src/power_utils.cpp +++ b/src/power_utils.cpp @@ -72,7 +72,7 @@ namespace POWER_Utils { #if defined(TTGO_T_Beam_V0_7) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(ESP32_DIY_LoRa_GPS) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(OE5HWN_MeshCom) || defined(TTGO_T_DECK_GPS) return (2 * (voltage + 0.1)) * (1 + (lora32BatReadingCorr/100)); // (2 x 100k voltage divider) 2 x voltage divider/+0.1 because ESP32 nonlinearity ~100mV ADC offset/extra correction #endif - #if defined(HELTEC_V3_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(ESP32_C3_DIY_LoRa_GPS) + #if defined(HELTEC_V3_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(ESP32_C3_DIY_LoRa_GPS) || defined(WEMOS_ESP32_Bat_LoRa_GPS) double inputDivider = (1.0 / (390.0 + 100.0)) * 100.0; // The voltage divider is a 390k + 100k resistor in series, 100k on the low side. return (voltage / inputDivider) + 0.285; // Yes, this offset is excessive, but the ADC on the ESP32s3 is quite inaccurate and noisy. Adjust to own measurements. #endif @@ -107,7 +107,7 @@ namespace POWER_Utils { } bool isCharging() { - #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(OE5HWN_MeshCom) || defined(ESP32_C3_DIY_LoRa_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(TTGO_T_DECK_GPS) + #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(OE5HWN_MeshCom) || defined(ESP32_C3_DIY_LoRa_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(TTGO_T_DECK_GPS) || defined(WEMOS_ESP32_Bat_LoRa_GPS) return 0; #endif #if defined(HAS_AXP192) || defined(HAS_AXP2101) @@ -124,7 +124,7 @@ namespace POWER_Utils { } double getBatteryChargeDischargeCurrent() { - #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(OE5HWN_MeshCom) || defined(ESP32_C3_DIY_LoRa_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(TTGO_T_DECK_GPS) + #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(OE5HWN_MeshCom) || defined(ESP32_C3_DIY_LoRa_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(TTGO_T_DECK_GPS) || defined(WEMOS_ESP32_Bat_LoRa_GPS) return 0; #endif #ifdef HAS_AXP192 @@ -139,7 +139,7 @@ namespace POWER_Utils { } bool isBatteryConnected() { - #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(OE5HWN_MeshCom) || defined(ESP32_C3_DIY_LoRa_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(TTGO_T_DECK_GPS) + #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(OE5HWN_MeshCom) || defined(ESP32_C3_DIY_LoRa_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(TTGO_T_DECK_GPS) || defined(WEMOS_ESP32_Bat_LoRa_GPS) if(getBatteryVoltage() > 1.0) { return true; } else { @@ -156,7 +156,7 @@ namespace POWER_Utils { if (!(rate_limit_check_battery++ % 60)) BatteryIsConnected = isBatteryConnected(); if (BatteryIsConnected) { - #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(TTGO_T_Beam_V1_0) || defined(TTGO_T_Beam_V1_0_SX1268) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(OE5HWN_MeshCom) || defined(TTGO_T_DECK_GPS) + #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(TTGO_T_Beam_V1_0) || defined(TTGO_T_Beam_V1_0_SX1268) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(OE5HWN_MeshCom) || defined(TTGO_T_DECK_GPS) || defined(WEMOS_ESP32_Bat_LoRa_GPS) batteryVoltage = String(getBatteryVoltage(), 2); #endif #ifdef HAS_AXP2101 @@ -282,7 +282,7 @@ namespace POWER_Utils { } bool begin(TwoWire &port) { - #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(OE5HWN_MeshCom) || defined(ESP32_C3_DIY_LoRa_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(TTGO_T_DECK_GPS) + #if defined(TTGO_T_Beam_V0_7) || defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS) || defined(TTGO_T_LORA32_V2_1_TNC) || defined(ESP32_DIY_1W_LoRa_GPS) || defined(HELTEC_V3_GPS) || defined(OE5HWN_MeshCom) || defined(ESP32_C3_DIY_LoRa_GPS) || defined(HELTEC_WIRELESS_TRACKER) || defined(TTGO_T_DECK_GPS) || defined(WEMOS_ESP32_Bat_LoRa_GPS) return true; // no powerManagment chip for this boards (only a few measure battery voltage). #endif #ifdef HAS_AXP192