From 08cb7dd7da5b4b810fb6f01c57048a3534083e9d Mon Sep 17 00:00:00 2001 From: Ev Lbibass Date: Mon, 16 Mar 2026 22:05:14 -0400 Subject: [PATCH] fix ADC stuff, and pin defs. get ready for SuperIO support. will I buy one? Maybe! --- variants/muzi_base_duo/platformio.ini | 12 +-- variants/muzi_base_duo/target.cpp | 3 +- variants/muzi_base_duo/variant.cpp | 112 ++++++++++++++------------ variants/muzi_base_duo/variant.h | 76 ++++++++--------- 4 files changed, 99 insertions(+), 104 deletions(-) diff --git a/variants/muzi_base_duo/platformio.ini b/variants/muzi_base_duo/platformio.ini index 52eda948..2c395748 100644 --- a/variants/muzi_base_duo/platformio.ini +++ b/variants/muzi_base_duo/platformio.ini @@ -10,7 +10,7 @@ build_flags = ${nrf52_base.build_flags} -I src/helpers/ui -D muzi_base_duo -D NRF52_POWER_MANAGEMENT - -D PIN_USER_BTN=10 + -D PIN_USER_BTN=PIN_BUTTON1 -D USER_BTN_PRESSED=LOW -D PIN_STATUS_LED=35 -D RADIO_CLASS=CustomLR1110 @@ -27,6 +27,7 @@ build_flags = ${nrf52_base.build_flags} -D P_LORA_RESET=LORA_RESET ; P1.10 -D LR11X0_DIO_AS_RF_SWITCH=true -D LR11X0_DIO3_TCXO_VOLTAGE=3.0 + -D QSPIFLASH=1 ; -D ENV_INCLUDE_GPS=1 build_src_filter = ${nrf52_base.build_src_filter} + @@ -81,10 +82,8 @@ build_flags = ${muzi_base_duo.build_flags} ; -D MESH_DEBUG=1 -D OFFLINE_QUEUE_SIZE=256 -D DISPLAY_CLASS=NullDisplayDriver - ; -D PIN_BUZZER=25 - ; -D PIN_BUZZER_EN=37 ; P1/5 - required for T1000-E + build_src_filter = ${muzi_base_duo.build_src_filter} - + +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-orig/*.cpp> lib_deps = ${muzi_base_duo.lib_deps} @@ -105,16 +104,13 @@ build_flags = ${muzi_base_duo.build_flags} -D QSPIFLASH=1 ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_DEBUG=1 -D OFFLINE_QUEUE_SIZE=256 -D DISPLAY_CLASS=NullDisplayDriver - ; -D PIN_BUZZER=25 - ; -D PIN_BUZZER_EN=37 ; P1/5 - required for T1000-E -D ADVERT_NAME='"@@MAC"' build_src_filter = ${muzi_base_duo.build_src_filter} + + - ; + +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-orig/*.cpp> lib_deps = ${muzi_base_duo.lib_deps} diff --git a/variants/muzi_base_duo/target.cpp b/variants/muzi_base_duo/target.cpp index ac7e2d69..0c51ebed 100644 --- a/variants/muzi_base_duo/target.cpp +++ b/variants/muzi_base_duo/target.cpp @@ -12,8 +12,7 @@ WRAPPER_CLASS radio_driver(radio, board); VolatileRTCClock rtc_clock; // MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); -EnvironmentSensorManager sensors; // Added: Instantiate sensors (no GPS, as it's disabled) - +EnvironmentSensorManager sensors; // only enable environment sensors. GPS is disabled. #ifdef DISPLAY_CLASS NullDisplayDriver display; #endif diff --git a/variants/muzi_base_duo/variant.cpp b/variants/muzi_base_duo/variant.cpp index 590ac469..0fe63df0 100644 --- a/variants/muzi_base_duo/variant.cpp +++ b/variants/muzi_base_duo/variant.cpp @@ -10,55 +10,55 @@ const uint32_t g_ADigitalPinMap[PINS_COUNT + 1] = { - 0, // P0.00 - 1, // P0.01 - 2, // P0.02, AIN0 BATTERY_PIN - 3, // P0.03 - 4, // P0.04, SENSOR_EN - 5, // P0.05, EXT_PWR_DETEC - 6, // P0.06, PIN_BUTTON1 - 7, // P0.07, LORA_BUSY - 8, // P0.08, GPS_VRTC_EN - 9, // P0.09 - 10, // P0.10 - 11, // P0.11, PIN_SPI_SCK - 12, // P0.12, PIN_SPI_NSS - 13, // P0.13, PIN_SERIAL1_TX - 14, // P0.14, PIN_SERIAL1_RX - 15, // P0.15, GPS_RTC_INT - 16, // P0.16, PIN_SERIAL2_TX - 17, // P0.17, PIN_SERIAL2_RX - 18, // P0.18 - 19, // P0.19 - 20, // P0.20 - 21, // P0.21 - 22, // P0.22 - 23, // P0.23 - 24, // P0.24, LED_GREEN - 25, // P0.25, BUZZER_PIN - 26, // P0.26, PIN_WIRE_SDA - 27, // P0.27, PIN_WIRE_SCL - 28, // P0.28 - 29, // P0.29, AIN5, LUX_SENSOR - 30, // P0.30 - 31, // P0.31, AIN7, TEMP_SENSOR - 32, // P1.00 - 33, // P1.01, LORA_DIO_1 - 34, // P1.02 - 35, // P1.03, EXT_CHRG_DETECT - 36, // P1.04 - 37, // P1.05, LR1110_EN - 38, // P1.06, 3V3_EN PWR TO SENSORS - 39, // P1.07, PIN_3V3_ACC_EN - 40, // P1.08, PIN_SPI_MISO - 41, // P1.09, PIN_SPI_MOSI - 42, // P1.10, LORA_RESET - 43, // P1.11, GPS_EN - 44, // P1.12, GPS_SLEEP_INT - 45, // P1.13 - 46, // P1.14, GPS_RESETB - 47, // P1.15, PIN_GPS_RESET - 255, // NRFX_SPIM_PIN_NOT_USED + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, +// P1 pins. + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, }; void initVariant() @@ -67,11 +67,21 @@ void initVariant() // https://github.com/Seeed-Studio/Adafruit_nRF52_Arduino/blob/fab7d30a997a1dfeef9d1d59bfb549adda73815a/cores/nRF5/wiring.c#L65-L69 pinMode(PIN_VBAT_READ, INPUT); - // pinMode(EXT_CHRG_DETECT, INPUT); - // pinMode(EXT_PWR_DETECT, INPUT); + pinMode(PIN_BATTERY_CHARGING, INPUT); + pinMode(PIN_CHARGER_FAULT, INPUT); pinMode(PIN_BUTTON1, INPUT); + pinMode(PIN_BUTTON2, INPUT); + pinMode(PIN_BUTTON3, INPUT); + pinMode(PIN_BUTTON4, INPUT); + pinMode(PIN_BUTTON5, INPUT); + pinMode(PIN_BUTTON6, INPUT); pinMode(LED_PIN, OUTPUT); pinMode(LED_BLUE, OUTPUT); digitalWrite(LED_PIN, LOW); digitalWrite(LED_BLUE, LOW); + pinMode(GPS_EN, OUTPUT); + digitalWrite(GPS_EN, LOW); // lets turn off the GPS at start. we can turn it on when we need it. + + pinMode(SCREEN_12V_ENABLE, OUTPUT); + digitalWrite(SCREEN_12V_ENABLE, LOW); // } diff --git a/variants/muzi_base_duo/variant.h b/variants/muzi_base_duo/variant.h index 7f6c2c00..02dfeb9b 100644 --- a/variants/muzi_base_duo/variant.h +++ b/variants/muzi_base_duo/variant.h @@ -25,19 +25,23 @@ #define VBAT_AR_INTERNAL AR_INTERNAL_3_0 #define ADC_MULTIPLIER 1.537 #define ADC_RESOLUTION 14 +#define PIN_BATTERY_CHARGING (32+2) // P1.02 STAT2 +#define PIN_CHARGER_FAULT (27) // P0.27 STAT1 this pin is disabled on meshtastic. +// BQ25185 has 2 status pins: STAT1 and STAT2. Both are high when not charging. STAT1 high, STAT2 low: charging. Recoverable fault: STAT1 low, STAT2 high. Unrecoverable fault: both low. +// We only need to detect charging vs not charging, but someone else can use the fault pin to log when the battery gets too hot or cold. // Power management boot protection threshold (millivolts) -#define PWRMGT_VOLTAGE_BOOTLOCK 3300 // Won't boot below this voltage (mV) +#define PWRMGT_VOLTAGE_BOOTLOCK 3100 // Won't boot below this voltage (mV). BB15 battery min voltage is 3v, 3100mV is minimum batt in meshtastic code. // LPCOMP wake configuration (voltage recovery from SYSTEMOFF) -#define PWRMGT_LPCOMP_AIN 3 -#define PWRMGT_LPCOMP_REFSEL 4 // 5/8 VDD (~3.13-3.44V) +#define PWRMGT_LPCOMP_AIN 7 // AIN7 = P0.31 = PIN_VBAT_READ +#define PWRMGT_LPCOMP_REFSEL 4 // 5/8 VDD (~3.13-3.44V) was the default on RAK4631. should still apply here. // Other pins -#define PIN_AREF (2) +#define PIN_AREF (-1) +#define SCREEN_12V_ENABLE (23) // SH1107 OLED controller has a pin that needs to be enabled to turn on the screen. - -static const uint8_t AREF = PIN_AREF; +static const uint8_t AREF = (PIN_AREF); // not used //////////////////////////////////////////////////////////////////////////////// // Number of pins @@ -53,20 +57,16 @@ static const uint8_t AREF = PIN_AREF; #define PIN_SERIAL1_RX (19) // P0.19 used for GPS RX #define PIN_SERIAL1_TX (20) // P0.20 used for GPS TX - -// #define PIN_SERIAL2_RX (17) // P0.17 -// #define PIN_SERIAL2_TX (16) // P0.16 - //////////////////////////////////////////////////////////////////////////////// // I2C pin definition #define HAS_WIRE (1) #define WIRE_INTERFACES_COUNT (2) -#define PIN_WIRE_SDA (4) // P0.4 -#define PIN_WIRE_SCL (6) // P0.6 -#define PIN_WIRE1_SDA (24) // P0.24 OLED I2C -#define PIN_WIRE1_SCL (25) // P0.25 OLED I2C +#define PIN_WIRE1_SDA (4) // P0.4 +#define PIN_WIRE1_SCL (6) // P0.6 +#define PIN_WIRE_SDA (24) // P0.24 OLED I2C +#define PIN_WIRE_SCL (25) // P0.25 OLED I2C // #define I2C_NO_RESCAN // #define HAS_QMA6100P // #define QMA_6100P_INT_PIN (34) // P1.2 @@ -93,9 +93,18 @@ static const uint8_t AREF = PIN_AREF; //////////////////////////////////////////////////////////////////////////////// // Builtin buttons - -#define PIN_BUTTON1 (10) // P0.10 -#define BUTTON_PIN PIN_BUTTON1 +#define PIN_BUTTON1 (10) // P0.10 Menu / User Button | on superIO, this is in the center of the "D-Pad", but it's also the button on the Uno/Duo. +#define PIN_BUTTON2 (21) // Joystick Up +#define PIN_BUTTON3 (17) // Joystick Down +#define PIN_BUTTON4 (37) // Joystick Left +#define PIN_BUTTON5 (16) // Joystick Right +#define PIN_BUTTON6 (15) // Back / Cancel Button. +#define JOYSTICK_PRESS PIN_BUTTON1 +#define JOYSTICK_UP PIN_BUTTON2 +#define JOYSTICK_DOWN PIN_BUTTON3 +#define JOYSTICK_LEFT PIN_BUTTON4 +#define JOYSTICK_RIGHT PIN_BUTTON5 +#define PIN_BACK_BTN PIN_BUTTON6 //////////////////////////////////////////////////////////////////////////////// // LR1110 @@ -112,7 +121,7 @@ static const uint8_t AREF = PIN_AREF; #define LR11X0_DIO3_TCXO_VOLTAGE 3.0 //////////////////////////////////////////////////////////////////////////////// - +// QSPI Flash #define PIN_QSPI_SCK (0 + 3) #define PIN_QSPI_CS (0 + 26) #define PIN_QSPI_IO0 (0 + 30) @@ -122,34 +131,15 @@ static const uint8_t AREF = PIN_AREF; #define EXTERNAL_FLASH_DEVICES W25Q128JVPQ #define EXTERNAL_FLASH_USE_QSPI -// // GPS +//////////////////////////////////////////////////////////////////////////////// +// GPS // #define HAS_GPS 1 -// #define GPS_RX_PIN PIN_SERIAL1_RX -// #define GPS_TX_PIN PIN_SERIAL1_TX - -// #define GPS_EN (43) // P1.11 -// #define GPS_RESET (47) // P1.15 - -// #define GPS_VRTC_EN (8) // P0.8 -// #define GPS_SLEEP_INT (44) // P1.12 -// #define GPS_RTC_INT (15) // P0.15 -// #define GPS_RESETB (46) // P1.14 - -//////////////////////////////////////////////////////////////////////////////// -// Temp+Lux Sensor - -// #define SENSOR_EN (4) // P0.4 -// #define TEMP_SENSOR (31) // P0.31/AIN7 -// #define LUX_SENSOR (29) // P0.29/AIN5 - -//////////////////////////////////////////////////////////////////////////////// -// Accelerometer (I2C addr : ??? ) - -// #define PIN_3V3_ACC_EN (39) // P1.7 +#define GPS_RX_PIN PIN_SERIAL1_RX +#define GPS_TX_PIN PIN_SERIAL1_TX +#define GPS_EN (32+1) // P1.01 PWR_IO2 on schematic. just cuts power to gps. //////////////////////////////////////////////////////////////////////////////// // Buzzer -// #define BUZZER_EN (37) // P1.5 -// #define BUZZER_PIN (25) // P0.25 \ No newline at end of file +#define BUZZER_PIN (22) // P0.22 same load switch design as GPS_EN. \ No newline at end of file