Skip to content

This is a ST STM32WLE5CC and TI BQ25570 based multifunctional LoRa/LoRaWAN device with Energy Harvesting Capability. For data storage an attached 1MBit FRAM (Infineon FM24V10) can be used.

License

Notifications You must be signed in to change notification settings

h0lad/LoRaHarvesterBox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 

Repository files navigation

MeshtasticRouterNode MeshtasticRouterNode

What is this thing?

This generic LoRa base board is built around the ST STM32WLE5CC (RAK3172) and the TI BQ25570 energy harvester.

It is suitable for a wide range of applications, including:

  • Meshtastic (router, sensor) or Meshcore
  • LoRaWAN sensors
  • Generic raw LoRa devices
  • Or virtually any other custom project (ham balloon? Transmitter for tracking penguins?) that utilizes the modulation schemes (FSK, GFSK, MSK, GMSK) of the SX1262

For persistent data storage, an optional FRAM IC (Infineon FM24V10) can be added using I²C. A variety of sensors can additonaly integrated through I²C, SPI (on the back), or USART interfaces.

The power supply design is highly flexible: alongside standard JST-PH connectors, the board also supports very small LiPo batteries (commonly used in in-ear headphones or Bluetooth headsets), which can be soldered directly. Such batteries are readily available on AliExpress (e.g. 501010). The TI BQ25570 also supports exotic storages like Supercaps, LTO, etc.

Features

Energy

  • Capable of handling a huge variety of energy storages: LiPo, LiFePo4, LTO, SIB, Supercap
  • Starts boosting at 600mV. Maximum input voltage is 5.5V.
  • Up to 110mA can be used from the application
  • MPPT
  • Optional load-switch to switch on/off the entire STM32/LoRa-modem based on the VBAT_OK signal

Microcontroller

Uses the standardized RAK housing which can house a variety of platforms (ESP32, STM32, etc.) with compatible pins. This variant uses the RAK3172 (ST STM32WLE5CC: 256Kb Flash, 64Kb RAM, 48MHz).

Exposed interfaces:

  • 2x USART
  • 1x I2C
  • 1x SPI (back)
  • 2x ADC connected to energy source (like solar) and and energy storage (like LiPos) using voltage dividers
  • Multiple break-out pins for GPIOs on the back

LoRa

Uses the Semtech SX1262 integrated within the STM32 housing. Multiple RAK variants available for 433/470/868/915MHz.

Data Storage

Infineon FM24V10: 1-MBit non-volatile F-RAM for storing firmware updates, messages or mesurement data

Design Decisions

Why did you use the TI BQ25570?

It's the only energy harvester that supports up to 110mA peak current.

I'm not overly happy with this IC as it lacks a few helpful features:

  • No I²C interface and ADC for reading voltages/currents

  • No Thermistor for switching off charging above and below specific temperatures

  • Doesn't switch off VOUT if the battery hits the lower threshold. It only signals it using a pin.

  • Rather annoying pin configuration. Layouting it doesn't make much fun.

Honestly - It's an old thing compared to the latest generation from ST or e-peas.

Why not buying a "naked" ST STM32WLE5?

Using a SoC module from RAK brings all the HF and impedancy matching.

Everything else leaving the housing is not really critical signal wise.

Also it's not too expensive with 6€.

Hardware

Pin Configuration

MeshtasticRouterNode

ADC

Signal Pin ADC Channel Info
Energy Storage Voltage PB3 A0 Voltage goes through a Voltage Divider
Energy Source Voltage PB4 A1 Voltage goes through a Voltage Divider

USART

Peripheral TX Pin RX Pin
UART1 PB6 PB7
UART2 PA2 PA3

SWD

Signal Pin
SWDIO PA13
SWCLK PA14
SPI
Signal Pin
SPI1, MOSI PA7
SPI1, MISO PA6
SPI1, CLK PA5
SPI1, NSS PA4

LED

Signal Pin
LED PA8

MISC

Signal Pin
VBAT_OK from TI BQ25570 PA15

Resistors Values

Warning: You have to be super careful here. Don't trust your 1%-SMD-Resistor book from Aliexpress or Amazon. Measure each resistor with a high-resolution multimeter and then calculate the voltages according to the readings! A shabby Libreoffice Calc sheet can be found within the docs folder to do this.

VOUT

Target VOUT R_OUT1 R_OUT2 R_SUM Calculated VOUT
1.8 V 8.66 MΩ 4.22 MΩ 12.88 MΩ ≈ 1.80V
3.0 V  5.10 MΩ 7.50 MΩ 12.60 MΩ ≈ 2.99V
3.3 V 4.70 MΩ 8.20 MΩ 12.90 MΩ ≈ 3.32V

LiPo (1-cell)

R_OV1 R_OV2 R_SUM V_OV
3.90 MΩ 5.10 MΩ 9.00 ≈ 4.18V
3.60 MΩ 4.70 MΩ 8.30 ≈ 4.18V
3.30 MΩ 4.30 MΩ 7.60 ≈ 4.18V
4.30 MΩ 5.60 MΩ 9.90 ≈ 4.17V
5.10 MΩ 6.20 MΩ 11.90 ≈ 4.02V
R_OK1 R_OK2 R_OK3 R_SUM VBAT_OK_PROG VBAT_OK_HYST
4.32 MΩ 6.04 MΩ 2.70 MΩ 13.06 MΩ ≈ 2.90 V ≈ 3.66 V
4.32 MΩ 6.19 MΩ 2.40 MΩ 12.91 MΩ ≈ 2.94 V ≈ 3.62 V
4.32 MΩ 6.34 MΩ 2.40 MΩ 13.06 MΩ ≈ 2.98 V ≈ 3.66 V
4.32 MΩ 6.80 MΩ 2.20 MΩ 13.32 MΩ ≈ 3.12 V ≈ 3.73 V
4.30 MΩ 7.50 MΩ 1.60 MΩ 13.40 MΩ ≈ 3.13 V ≈ 3.57 V

LTO (1-cell), Untested

R_OV1 R_OV2 R_SUM V_OV (V)
5.60 MΩ 2.74 MΩ 8.34 MΩ ≈ 2.70V
6.20 MΩ 3.00 MΩ 9.20 MΩ ≈ 2.69V
5.10 MΩ 2.74 MΩ 7.84 MΩ ≈ 2.79V
6.20 MΩ 3.30 MΩ 9.50 MΩ ≈ 2.78V
5.10 MΩ 2.87 MΩ 7.97 MΩ ≈ 2.84V
R_OK1 R_OK2 R_OK3 R_SUM VBAT_OK_PROG VBAT_OK_HYST
5.62 MΩ 3.60 MΩ 3.32 MΩ 12.54 MΩ ≈ 1.98 V ≈ 2.56 V
5.90 MΩ 3.90 MΩ 2.87 MΩ 12.67 MΩ ≈ 2.01 V ≈ 2.59 V
5.90 MΩ 3.74 MΩ 3.01 MΩ 12.65 MΩ ≈ 1.98 V ≈ 2.59 V
6.04 MΩ 4.02 MΩ 2.61 MΩ 12.67 MΩ ≈ 2.02 V ≈ 2.53 V
5.62 MΩ 3.48 MΩ 3.01 MΩ 12.11 MΩ ≈ 1.96 V ≈ 2.80 V
5.49 MΩ 3.32 MΩ 2.74 MΩ 11.55 MΩ ≈ 1.94 V ≈ 2.58 V

Na-Ion (1-cell), Untested

R_OV1 R_OV2 R_SUM V_OV (V)
12.0 MΩ 0.24 MΩ 12.24 MΩ ≈ 3.70 V
12.0 MΩ 0.56 MΩ 12.56 MΩ ≈ 3.80 V
10.0 MΩ 0.75 MΩ 10.75 MΩ ≈ 3.90 V
11.0 MΩ 1.00 MΩ 12.00 MΩ ≈ 3.97 V
12.0 MΩ 0.82 MΩ 12.82 MΩ ≈ 3.93 V
R_OK1 R_OK2 R_OK3 R_SUM VBAT_OK_PROG VBAT_OK_HYST
4.02 MΩ 2.61 MΩ 4.32 MΩ 10.95 MΩ ≈ 2.00 V ≈ 3.30 V
3.92 MΩ 2.61 MΩ 4.32 MΩ 10.85 MΩ ≈ 2.02 V ≈ 3.35 V
3.74 MΩ 2.74 MΩ 4.02 MΩ 10.50 MΩ ≈ 2.10 V ≈ 3.40 V
4.12 MΩ 2.87 MΩ 4.02 MΩ 11.01 MΩ ≈ 2.06 V ≈ 3.25 V
3.65 MΩ 2.99 MΩ 3.60 MΩ 10.24 MΩ ≈ 2.21 V ≈ 3.40 V

LiFePo4 (1-cell), Untested

R_OV1 R_OV2 R_SUM V_OV (V)
12.0 MΩ 68 kΩ 12.068 MΩ ≈ 3.651
11.0 MΩ 62 kΩ 11.062 MΩ ≈ 3.650
10.0 MΩ 56 kΩ 10.056 MΩ ≈ 3.650
8.20 MΩ 158 kΩ 8.358 MΩ ≈ 3.700
R_OK1 R_OK2 R_OK3 R_SUM VBAT_OK_PROG VBAT_OK_HYST
4.7 MΩ 3.3 MΩ 5.6 MΩ 13.6 MΩ ≈ 2.06 V ≈ 3.50 V
4.3 MΩ 3.3 MΩ 5.1 MΩ 12.7 MΩ ≈ 2.14 V ≈ 3.57 V
3.9 MΩ 3.0 MΩ 4.7 MΩ 11.6 MΩ ≈ 2.14 V ≈ 3.60 V
3.6 MΩ 2.7 MΩ 4.3 MΩ 10.6 MΩ ≈ 2.12 V ≈ 3.56 V
5.1 MΩ 3.9 MΩ 5.6 MΩ 14.6 MΩ ≈ 2.14 V ≈ 3.46 V
3.3 MΩ 2.7 MΩ 3.9 MΩ 9.9 MΩ ≈ 2.20 V ≈ 3.63 V
3.3 MΩ 2.2 MΩ 4.7 MΩ 10.2 MΩ ≈ 2.02 V ≈ 3.74 V

Hardware Verification

PCB Version v0.0.5

LoRaHarvesterBox PCB v0.0.5

Power Chain

✅ 3.3V from TI BQ25570

✅ Charges power storage as defined with R_OV1 and R_OV2

✅ VBAT_OK signal with 3.3V LiPo attached as a storage

✅ Boosts 0.6V to 3.3V without energy storage attached

☐ Lower and upper VBAT_OK threshold: not testable at the moment. My power supply is too noisy to emulate a power source.

☐ Power switch (TI TPS22917DBV) - seems to work. But blocked to to point above.

Findings:

  • The BQ25570 doesn't like my extremely noisy power supply as a storage emulation. It doesn't come up.
  • You have to be very careful as even the tolerance of 1% resistors (R_OV1 and R_OV2) might cause overcharging. So stay away from the hard limits of your battery.

ST STM32WL55

✅ Connect to the SWD interface using a ST-Link

License

CERN Open Hardware Licence Version 2 - Strongly Reciprocal

About

This is a ST STM32WLE5CC and TI BQ25570 based multifunctional LoRa/LoRaWAN device with Energy Harvesting Capability. For data storage an attached 1MBit FRAM (Infineon FM24V10) can be used.

Topics

Resources

License

Stars

Watchers

Forks