From 4a7eae20837af719d485a34ed3fa0542427b15ec Mon Sep 17 00:00:00 2001
From: richonguzman <richon2001@hotmail.com>
Date: Thu, 2 May 2024 15:32:49 -0400
Subject: [PATCH] first test

---
 src/LoRa_APRS_Tracker.cpp |  2 +-
 src/pins_config.h         | 41 ++++++++++++++++++++++++++----------
 src/power_utils.cpp       | 44 ++++++++++++++++++++++++++++-----------
 3 files changed, 63 insertions(+), 24 deletions(-)

diff --git a/src/LoRa_APRS_Tracker.cpp b/src/LoRa_APRS_Tracker.cpp
index 060fa815..0896d934 100644
--- a/src/LoRa_APRS_Tracker.cpp
+++ b/src/LoRa_APRS_Tracker.cpp
@@ -49,7 +49,7 @@ BluetoothSerial                     SerialBT;
 OneButton userButton                = OneButton(BUTTON_PIN, true, true);
 #endif
 
-String      versionDate             = "2024.04.26";
+String      versionDate             = "2024.05.02";
 
 uint8_t     myBeaconsIndex          = 0;
 int         myBeaconsSize           = Config.beacons.size();
diff --git a/src/pins_config.h b/src/pins_config.h
index 65bf5151..1efbecf3 100644
--- a/src/pins_config.h
+++ b/src/pins_config.h
@@ -6,22 +6,22 @@
 #undef OLED_RST
 
 
-#if !defined(TTGO_T_Beam_S3_SUPREME_V3) && !defined(HELTEC_V3_GPS) && !defined(ESP32_C3_DIY_LoRa_GPS) || !defined(TTGO_T_DECK_GPS)
+#if defined(TTGO_T_Beam_V1_0) || defined(TTGO_T_Beam_V1_2) || defined(TTGO_T_Beam_V1_0_SX1268) || defined(TTGO_T_Beam_V1_2_SX1262)
 #define OLED_SDA            21
 #define OLED_SCL            22
 #define OLED_RST            16
-#endif
-
-#if defined(TTGO_T_Beam_V1_0) || defined(TTGO_T_Beam_V1_2) || defined(TTGO_T_Beam_V1_0_SX1268) || defined(TTGO_T_Beam_V1_2_SX1262)
 #define GPS_RX              12
 #define GPS_TX              34
 #define BUTTON_PIN          38 // The middle button GPIO on the T-Beam
 #endif
 
+
 #if defined(ESP32_DIY_LoRa_GPS) || defined(TTGO_T_LORA32_V2_1_GPS)
+#define OLED_SDA            21
+#define OLED_SCL            22
+#define OLED_RST            16
 #define GPS_RX              12
 #define GPS_TX              34
-//#define BUTTON_PIN          -1
 #define BATTERY_PIN         35  //LoRa32 Battery PIN 100k/100k
 #define LORA_SCK            5
 #define LORA_MISO           19
@@ -31,7 +31,11 @@
 #define LORA_IRQ            26  // IRQ --> DIO0
 #endif
 
+
 #ifdef ESP32_DIY_1W_LoRa_GPS
+#define OLED_SDA            21
+#define OLED_SCL            22
+#define OLED_RST            16
 #define GPS_RX              17
 #define GPS_TX              16
 #define BUTTON_PIN          15
@@ -47,6 +51,7 @@
 #define RADIO_TXEN          25
 #endif
 
+
 #if defined(TTGO_T_Beam_V1_0_SX1268) || defined(TTGO_T_Beam_V1_2_SX1262)
 #define RADIO_SCLK_PIN      5
 #define RADIO_MISO_PIN      19
@@ -58,20 +63,28 @@
 #define RADIO_BUSY_PIN      32
 #endif
 
+
 #ifdef TTGO_T_Beam_V0_7
+#define OLED_SDA            21
+#define OLED_SCL            22
+#define OLED_RST            16
 #define GPS_RX              15
 #define GPS_TX              12
 #define BUTTON_PIN          39
 #define BATTERY_PIN         35
 #endif
 
+
 #ifdef TTGO_T_LORA32_V2_1_TNC
+#define OLED_SDA            21
+#define OLED_SCL            22
+#define OLED_RST            16
 #define GPS_RX              -1
 #define GPS_TX              -1
 #define BATTERY_PIN         35
-//#define BUTTON_PIN          -1
 #endif
 
+
 #ifdef TTGO_T_Beam_S3_SUPREME_V3
 #define OLED_SDA            17
 #define OLED_SCL            18
@@ -89,7 +102,11 @@
 #define RADIO_BUSY_PIN      4
 #endif
 
+
 #ifdef OE5HWN_MeshCom
+#define OLED_SDA            21
+#define OLED_SCL            22
+#define OLED_RST            16
 #define GPS_RX              17
 #define GPS_TX              16
 #define BUTTON_PIN          12
@@ -105,6 +122,7 @@
 #define RADIO_TXEN          13
 #endif
 
+
 #ifdef ESP32_C3_DIY_LoRa_GPS
 #define OLED_SDA            8
 #define OLED_SCL            9
@@ -112,7 +130,6 @@
 #define GPS_RX              20
 #define GPS_TX              21
 #define BATTERY_PIN         1
-//#define BUTTON_PIN          -1
 #define LORA_SCK            4
 #define LORA_MISO           5
 #define LORA_MOSI           6
@@ -121,6 +138,7 @@
 #define LORA_IRQ            2  // IRQ --> DIO0
 #endif
 
+
 #ifdef HELTEC_V3_GPS
 #define OLED_SDA            17
 #define OLED_SCL            18
@@ -129,7 +147,7 @@
 #define GPS_TX              48
 #define BUTTON_PIN          0
 #define BATTERY_PIN         1
-#define VExt_CTRL           36
+#define VEXT_CTRL           36
 #define ADC_CTRL            37  // Heltec V3 needs ADC_CTRL = LOW powers the voltage divider to read BatteryPin
 #define RADIO_SCLK_PIN      9
 #define RADIO_MISO_PIN      11
@@ -140,6 +158,7 @@
 #define RADIO_BUSY_PIN      13
 #endif
 
+
 #ifdef HELTEC_WIRELESS_TRACKER
 #define GPS_RX              34
 #define GPS_TX              33
@@ -148,7 +167,7 @@
 #define BUTTON_PIN          0
 #define BATTERY_PIN         1
 #define ADC_CTRL            2   // HELTEC Wireless Tracker ADC_CTRL = HIGH powers the voltage divider to read BatteryPin. Only on V05 = V1.1
-#define VExt_CTRL           3   // To turn on GPS and TFT
+#define VEXT_CTRL           3   // To turn on GPS and TFT
 #define BOARD_I2C_SDA       7
 #define BOARD_I2C_SCL       6
 #define RADIO_SCLK_PIN      9
@@ -160,6 +179,7 @@
 #define RADIO_BUSY_PIN      13  // SX1262 BUSY
 #endif
 
+
 #ifdef TTGO_T_DECK_GPS
 #define GPS_RX              43
 #define GPS_TX              44
@@ -176,7 +196,7 @@
 #define RADIO_DIO1_PIN      45
 #define RADIO_BUSY_PIN      13
 
-/*#define BOARD_I2S_WS    5     // esto es apra el audio!
+/*#define BOARD_I2S_WS    5     // esto es para el audio!
 #define BOARD_I2S_BCK   7
 #define BOARD_I2S_DOUT  6*/
 
@@ -186,7 +206,6 @@
 #define TrackBallDown       15  // G S3
 #define TrackBallLeft       1   // G S4
 #define TrackBallRight      2   // G S2
-
 #endif
 
 
diff --git a/src/power_utils.cpp b/src/power_utils.cpp
index fb603540..cacaa285 100644
--- a/src/power_utils.cpp
+++ b/src/power_utils.cpp
@@ -46,14 +46,30 @@ namespace POWER_Utils {
         return (PMU.getBattVoltage() / 1000.0);
     #else
         #ifdef BATTERY_PIN
-            int adc_value = analogRead(BATTERY_PIN);
-            double voltage = (adc_value * 3.3 ) / 4095.0;
+            #ifdef ADC_CTRL
+                #ifdef HELTEC_WIRELESS_TRACKER
+                digitalWrite(ADC_CTRL, HIGH);
+                #endif
+                #ifdef HELTEC_V3_GPS
+                digitalWrite(ADC_CTRL, LOW);
+                #endif
+            #endif
+                int adc_value = analogRead(BATTERY_PIN);
+            #ifdef ADC_CTRL
+                #ifdef HELTEC_WIRELESS_TRACKER
+                digitalWrite(ADC_CTRL, LOW);
+                #endif
+                #ifdef HELTEC_V3_GPS
+                digitalWrite(ADC_CTRL, HIGH);
+                #endif
+            #endif
+                double voltage = (adc_value * 3.3 ) / 4095.0;
             #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(OE5HWN_MeshCom)
-            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
+                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)
-            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.
+                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
         #else
             return 0.0;
@@ -279,7 +295,6 @@ namespace POWER_Utils {
     }
 
     void setup() {
-        //Wire.end();
         #ifdef HAS_AXP192
         Wire.begin(SDA, SCL);
         if (begin(Wire)) {
@@ -334,13 +349,19 @@ namespace POWER_Utils {
         PMU.setSysPowerDownVoltage(2600);
         #endif
 
-        #if defined(HELTEC_V3_GPS) || defined(HELTEC_WIRELESS_TRACKER)
-        pinMode(VExt_CTRL,OUTPUT); // this is for GPS and TFT screen on Wireless_Tracker and only for Oled in Heltec V3
-        digitalWrite(VExt_CTRL, HIGH);
-        pinMode(ADC_CTRL, OUTPUT);
-        digitalWrite(ADC_CTRL, HIGH);
+        #ifdef BATTERY_PIN
         pinMode(BATTERY_PIN, INPUT);
         #endif
+
+        #ifdef VEXT_CTRL
+        pinMode(VEXT_CTRL,OUTPUT); // this is for GPS and TFT screen on Wireless_Tracker and only for Oled in Heltec V3
+        digitalWrite(VEXT_CTRL, HIGH);
+        #endif
+        
+        #ifdef ADC_CTRL
+        pinMode(ADC_CTRL, OUTPUT);
+        #endif
+
         #if defined(HELTEC_WIRELESS_TRACKER)
         Wire.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
         #endif
@@ -366,7 +387,6 @@ namespace POWER_Utils {
 
         delay(500);
         Wire.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
-
         #endif
     }