diff --git a/zephcore/boards/nrf52840/thinknode_m3/board.conf b/zephcore/boards/nrf52840/thinknode_m3/board.conf index 28c0dd7..2e886eb 100644 --- a/zephcore/boards/nrf52840/thinknode_m3/board.conf +++ b/zephcore/boards/nrf52840/thinknode_m3/board.conf @@ -30,6 +30,3 @@ CONFIG_PWM=y # ThinkNode M3 has no display — enable LED heartbeat CONFIG_ZEPHCORE_UI_DISPLAY=n - -# RX duty cycle — note LR1110 guard is active, safe for battery-powered use -CONFIG_ZEPHCORE_LORA_RX_DUTY_CYCLE=y diff --git a/zephcore/boards/nrf52840/thinknode_m3/board.overlay b/zephcore/boards/nrf52840/thinknode_m3/board.overlay index f5b7ba7..ce3cc27 100644 --- a/zephcore/boards/nrf52840/thinknode_m3/board.overlay +++ b/zephcore/boards/nrf52840/thinknode_m3/board.overlay @@ -2,7 +2,7 @@ * ThinkNode M3 board overlay - additional ZephCore-specific configuration * SPDX-License-Identifier: Apache-2.0 * - * GPS control pins for the GPS module (chip TBD, generic NMEA at 9600 baud): + * GPS control pins for the GPS module (generic NMEA at 9600 baud): * - GPS_POWER (P0.14) - Main power enable (always HIGH, gpio-hog) * - GPS_EN (P0.21) - Standby control (HIGH = awake, LOW = standby) * - GPS_RESET (P0.25) - Reset (GPS_RESET_ACTIVE = LOW, REINIT pin) @@ -15,7 +15,7 @@ */ / { - /* GPS standby control - P0.21 (GPS_EN, HIGH = active/awake) */ + /* GPS standby control - P0.21 (GPS_EN, HIGH = active/awake, LOW = standby) */ gps_en: gps-enable { compatible = "gpio-leds"; gps_enable_pin: gps_enable { @@ -24,8 +24,20 @@ }; }; + /* GPS hardware reset - P0.25 (GPS_RESET, active-LOW) + * Asserted (pin LOW) on standby entry to halt the module cleanly. + * Released (pin HIGH) after GPS_EN on wake with a brief reset pulse. */ + gps_rst: gps-reset { + compatible = "gpio-leds"; + gps_reset_pin: gps_reset { + gpios = <&gpio0 25 GPIO_ACTIVE_LOW>; + label = "GPS Reset"; + }; + }; + aliases { gps-enable = &gps_enable_pin; + gps-reset = &gps_reset_pin; }; }; diff --git a/zephcore/boards/nrf52840/thinknode_m3/thinknode_m3.dts b/zephcore/boards/nrf52840/thinknode_m3/thinknode_m3.dts index c098924..25466d5 100644 --- a/zephcore/boards/nrf52840/thinknode_m3/thinknode_m3.dts +++ b/zephcore/boards/nrf52840/thinknode_m3/thinknode_m3.dts @@ -7,8 +7,8 @@ * Hardware (from Arduino variant.h / platformio.ini): * - nRF52840 SoC with BLE * - LR1110 LoRa radio on SPI1 (TCXO 3.3V, DIO5/DIO6 RF switch) - * - GPS module on UART0 (9600 baud, generic NMEA; chip TBD) - * Control: GPS_POWER=P0.14 (always on), GPS_EN=P0.21 (standby), GPS_RESET=P0.25 + * - GPS module on UART0 (9600 baud, generic NMEA) + * Control: GPS_POWER=P0.14 (always on), GPS_EN=P0.21 (standby), GPS_RESET=P0.25 (active-LOW) * - Battery ADC on AIN3 (P0.05), 2:1 voltage divider * - LEDs: GREEN=P1.03, RED=P1.01 (active-low), POWER=P0.29 (always on via overlay) * - Button on P0.12 (active-low, pull-up), single button with multi-tap @@ -174,13 +174,14 @@ /* GPS on UART0 (9600 baud) * - * Using gnss-nmea-generic (passive NMEA listener) — the GPS chip is unknown - * but the Arduino firmware uses MicroNMEA (generic NMEA parser only, no - * proprietary commands). The module is controlled via 3 GPIOs in the overlay: - * GPS_POWER=P0.14 (always on), GPS_EN=P0.21 (standby via gps-enable alias). + * Using gnss-nmea-generic (passive NMEA listener) — Arduino reference code + * uses MicroNMEA (generic NMEA parser only, no proprietary commands), so + * chip-specific drivers are neither needed nor safe. + * GPS_POWER=P0.14 (always on hog), GPS_EN=P0.21 (wake/standby), + * GPS_RESET=P0.25 (active-LOW, pulsed on wake, asserted during standby). * - * zephyr,deferred-init: GPS module needs GPIO power-up (GPS_EN HIGH) before - * NMEA output. ZephyrGPSManager handles power-up then calls device_init(). */ + * zephyr,deferred-init: GPS needs GPIO power-up (GPS_EN HIGH) before NMEA + * output. ZephyrGPSManager handles power-up then calls device_init(). */ &uart0 { compatible = "nordic,nrf-uarte"; status = "okay";