b-parasite-esp32/code/b-parasite
2021-09-02 15:40:19 +02:00
..
config Adds the whole MAC address in the advertisement packet 2021-05-02 12:14:52 +02:00
src Updates docs for data encoding in the BLE advertisement packet 2021-05-02 20:20:39 +02:00
.gitignore Initial b_parasite code - a fork from playground 2021-03-13 14:56:37 +01:00
b_parasite_gcc_nrf52833.ld Add support for nrf52833 based module 2021-09-02 15:40:19 +02:00
b_parasite_gcc_nrf52840.ld Add support for nrf52833 based module 2021-09-02 15:40:19 +02:00
Makefile Add support for nrf52833 based module 2021-09-02 15:40:19 +02:00
README.md Updates docs for data encoding in the BLE advertisement packet 2021-05-02 20:20:39 +02:00

Overview

This is the b-parasite formware based on Nordic's nRF5 SDK.

It uses Nordic's SoftDevice, which should additionally be flashed to the chip before running our firmware.

I use a JLink probe for flashing and debugging.

Configuration

The b-parasite specific configuration, such as active/sleep time and transmitting power are defined in config/prst_config.h.

Flashing SoftDevice and Firmware

# Flash softdevice
$ SDK_ROOT=~/dev/nrf52/sdk/nRF5_SDK_17.0.2_d674dde make flash_softdevice
# Compile annd flash our firmware
$ SDK_ROOT=~/dev/nrf52/sdk/nRF5_SDK_17.0.2_d674dde make flash

Debugging

Calls to NRF_LOG will be readable on the console using JLinkRTTLogger. This is the handy one-liner I use for pulling log messages:

$ echo "\n\n\n\n0\n/dev/stdout" | JLinkRTTLogger | sed 's/^.*app: //'

Bluetooth Low Energy Advertisement Data Encoding

Sensor data is encoded in the BLE advertisement packet as Service Data for the Environmental Sensing Service profile (UUID 0x181a).

Sensor data is encoded in unsigned 16 bits (2 bytes), and whenever multiple bytes are used to represent a single value, the encoding is big-endian.

Byte index Description
0 4 bits for protocol version + 4 reserved bits
1 4 reserved bits + 4 bits wrap-around counter for deduplication
2-3 Battery voltage in millivolts
4-5 Temperature in millidegrees Celcius
6-7 Relative air humidity, scaled from 0 (0%) to 0xffff (100%)
8-9 Soil moisture, scaled from from 0 (0%) to 0xffff (100%)
10-15 b-parasite's own MAC address, big-endian format