Skip to content

Conversation

@fschrempf
Copy link
Contributor

This is a collection of small changes that improve the power consumption for some NRF52-based companion devices and adds UI (LED & user button) support for the XIAO NRF52 + Wio-SX1262.

Changes

Seeed SenseCAP T1000-E

  • Put radio into sleep mode if companion is powered off. This significantly reduces the power-off consumption and increases battery life.

RAK WisMesh Tag

  • Put radio into sleep mode if companion is powered off. This significantly reduces the power-off consumption and increases battery life.
  • Enable DC/DC regulator. This reduces power-on consumption and therefore increases battery life.
  • Enable blue status LED. This prevents an always-on LED and aligns the LED behavior with other devices like T1000.

Seeed XIAO NRF52 + Wio-SX1262

  • Enable UI for companions based on this hardware, so user button and status LED can be used.
  • Enable DC/DC regulator. This reduces power-on consumption by about 25% and therefore increases battery life.
  • Enable user button including low-power off state with about 15 µA of power consumption from the battery.
  • Fix status LED behavior for LED_STATE_ON=0 and enable status LED

Remarks

  1. The power optimizations were only done for devices that I was able to do tests on. There are other devices that could probably benefit from the same changes. Unfortunately the current code structure doesn't make it easy to implement this for the whole NRF52 platform.

  2. The way radio.sleep() is called is not great (global functions, external declaration, etc.). Unfortunately a better way is not possible without major refactoring. Actually in the future it would be better to implement this not on the board level, but on the companion app level, so radio.sleep() would be called for any device in case of power-off.

According to the documentation and experiments on other boards using
NRF52 + SX1262 this reduces the power consumption significantly. This
assumes that the hardware actually has the inductor for the internal
DC/DC regulator populated which is very likely. Even if not, it won't
hurt.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
This ensures that the SX1262 and the antenna switch is properly
put into low-power sleep. This reduces the power consumption in the
off-state significantly and increases "shelf-life" of companion nodes.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
Use the blue LED as status LED. This prevents the blue LED from
being always-on and draining the battery. Instead use it as status
LED with blink patterns as other companion devices do.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
This ensures that the SX1262 and the antenna switch is properly
put into low-power sleep. This reduces the power consumption in the
off-state significantly and increases "shelf-life" of companion nodes.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
This reduces the power consumption by approximately 25%.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
The Xiao nRF52840 combined with the Wio-SX1262 is often used for
cheap and compact DIY companion nodes. The Wio actually has an onboard
pushbutton that can be used as user button. Enable support for the
button.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
Add the necessary code to properly power-off the Xiao + Wio
companions. This way we can achieve around 15 microamps of power
consumption in the off state.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
The current logic only works for active high LEDs. Some boards need
an active low level control and therefore they set LED_STATE_ON to 0.
Take this into account and use the correct LED pattern for both cases.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
Fix the active state of the LEDs (active low) and enable the status
LED.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
@fschrempf fschrempf changed the base branch from main to dev November 20, 2025 10:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant