From 5a34bd54604a62384f7a51418b25785b60821f81 Mon Sep 17 00:00:00 2001 From: liamcottle Date: Sat, 30 Aug 2025 21:54:46 +1200 Subject: [PATCH 1/3] turn off tx led when powering off --- src/helpers/nrf52/ThinkNodeM1Board.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/helpers/nrf52/ThinkNodeM1Board.h b/src/helpers/nrf52/ThinkNodeM1Board.h index c1ffcbbf..fc752223 100644 --- a/src/helpers/nrf52/ThinkNodeM1Board.h +++ b/src/helpers/nrf52/ThinkNodeM1Board.h @@ -57,6 +57,14 @@ public: } void powerOff() override { + + // turn off all leds, sd_power_system_off will not do this for us + #ifdef P_LORA_TX_LED + digitalWrite(P_LORA_TX_LED, LOW); + #endif + + // power off board sd_power_system_off(); + } }; From 6172537459ce99dbc7a6988f559d58144298ebeb Mon Sep 17 00:00:00 2001 From: liamcottle Date: Sat, 30 Aug 2025 21:56:00 +1200 Subject: [PATCH 2/3] auto shutdown thinknode m1 at 3.3v --- variants/thinknode_m1/platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/thinknode_m1/platformio.ini b/variants/thinknode_m1/platformio.ini index fa8cd55b..590f2100 100644 --- a/variants/thinknode_m1/platformio.ini +++ b/variants/thinknode_m1/platformio.ini @@ -77,6 +77,7 @@ build_flags = -D DISPLAY_CLASS=GxEPDDisplay -D OFFLINE_QUEUE_SIZE=256 -D PIN_BUZZER=6 + -D AUTO_SHUTDOWN_MILLIVOLTS=3300 ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${ThinkNode_M1.build_src_filter} From 18ef1ba804862aec15c1ab4617dd7cc007ff0cf8 Mon Sep 17 00:00:00 2001 From: liamcottle Date: Sat, 30 Aug 2025 23:09:01 +1200 Subject: [PATCH 3/3] add low battery shutdown alert for thinknode m1 --- examples/companion_radio/ui-new/UITask.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/examples/companion_radio/ui-new/UITask.cpp b/examples/companion_radio/ui-new/UITask.cpp index 1920dd26..22f394e7 100644 --- a/examples/companion_radio/ui-new/UITask.cpp +++ b/examples/companion_radio/ui-new/UITask.cpp @@ -551,7 +551,22 @@ void UITask::loop() { if (millis() > next_batt_chck) { uint16_t milliVolts = getBattMilliVolts(); if (milliVolts > 0 && milliVolts < AUTO_SHUTDOWN_MILLIVOLTS) { + + // show low battery shutdown alert + // we should only do this for eink displays, which will persist after power loss + #ifdef THINKNODE_M1 + if (_display != NULL) { + _display->startFrame(); + _display->setTextSize(2); + _display->setColor(DisplayDriver::RED); + _display->drawTextCentered(_display->width() / 2, 20, "Low Battery."); + _display->drawTextCentered(_display->width() / 2, 40, "Shutting Down!"); + _display->endFrame(); + } + #endif + shutdown(); + } next_batt_chck = millis() + 8000; }