https://github.com/dinuxbg/helium_meteo
Helium LoRaWan temperature sensor
https://github.com/dinuxbg/helium_meteo
helium-network lorawan stm32wl zephyr-rtos
Last synced: 5 months ago
JSON representation
Helium LoRaWan temperature sensor
- Host: GitHub
- URL: https://github.com/dinuxbg/helium_meteo
- Owner: dinuxbg
- License: apache-2.0
- Created: 2024-05-07T20:07:48.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-07-06T19:26:01.000Z (11 months ago)
- Last Synced: 2025-07-06T20:35:44.630Z (11 months ago)
- Topics: helium-network, lorawan, stm32wl, zephyr-rtos
- Language: C
- Homepage:
- Size: 7.54 MB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Introduction

Helium Meteo is a small battery-powered device for measuring temperature, humidity and atmospheric pressure. Data samples are transmitted via [Helium](https://www.helium.com/) LoRaWan.
Data is received from the Helium network by the provided simple  implementation. A cheap ARM single-board computer is usually sufficient to run it at home.
See below an overview of the software architecture. This project provides the components colored in red:

## BOM
- Olimex [BB-STM32WL-ANT](https://www.olimex.com/Products/IoT/LoRa/BB-STM32WL/).
- Olimex [MOD-BME280](https://www.olimex.com/Products/Modules/Sensors/MOD-BME280/open-source-hardware).
Wiring is simple - connect ground, VCC and I2C from MOD-BME280 to the respective pins of BB-STM32WL. There is no need for pull-ups - MOD-BME280 already has them.
## Getting Started
Before getting started, make sure you have a proper Zephyr development
environment. You can follow the official
[Zephyr Getting Started Guide](https://docs.zephyrproject.org/latest/getting_started/index.html).
### Initialization
The first step is to initialize the workspace folder where the
`helium_meteo` and needed Zephyr modules will be cloned. You can do
that by running:
```shell
# initialize workspace for the helium_meteo (main branch)
west init -m https://github.com/dinuxbg/helium_meteo --mr main helium_meteo_project
# update Zephyr modules
cd helium_meteo_project/helium_meteo
west update
```
### Build & Run
The application can be built by running:
```shell
west build -d build -b olimex_lora_stm32wl_devkit@D -s helium_meteo/app --pristine
```
Once you have built the application you can flash it by running:
```shell
west flash
```
Or, alternatively you may flash with `pyocd`:
```shell
pyocd flash -e sector -a 0x8000000 -t stm32wle5ccux -O cmsis_dap.limit_packets=1 build/zephyr/zephyr.hex
```
### Serial terminal
Hook a serial UART to LPUSART1. You would get access to a shell running on the device, where you can setup the Helium/LoRaWan keys and tweak other settings.
```shell
screen /dev/ttyACM0 9600
```
Type `help` to get a list of supported commands.
### Configuring Helium parameters
In order to connect to the Helium network, you must first set the [keys](https://docs.helium.com/console/adding-devices/). Reboot the board after that for the settings to take effect.
```
lorawan dev_eui AABBCCDDEEFF0011
lorawan app_eui 0000000000000000
lorawan app_key 123456789ABCDEFFEDCBA98765432101
lorawan auto_join true
kernel reboot cold
```
Note: With the new ChirpStack, `app_eui` should be set to 0. Only the now-deprecated Helium Console requires a valid `app_eui`.
## Acknowledgements
This project is heavily based on https://github.com/retfie/helium_mapper .
## TODO
- Design a custom PCB.
- Create a custom board definition for Zephyr instead of inheriting stm32wl_devkit.
- Add more documentation (e.g. how to setup Helium/LoRaWan keys).
- Add battery voltage measurement to the Lora packet.
- Add driver for AHT20 sensor, so that firmware can run directly on [LoRa-STM32WL-DevKit](https://www.olimex.com/Products/IoT/LoRa/LoRa-STM32WL-DevKit/open-source-hardware), no custom wiring required.
- Print an enclosure with a [Stevenson screen](https://en.wikipedia.org/wiki/Stevenson_screenhttps://en.wikipedia.org/wiki/Stevenson_screen).