How adamzembrzuski/sensorsuite works
AZSensorSuite is an ultra-low-power sensing and data-acquisition platform. Its example workflow samples the ToF and environmental sensors, turns detections into timestamped counts, buffers and persists readings, and exposes live data and historical downloads over BLE to a Python client that writes CSV files. The graph also shows the timekeeping and sensor-driver layers supporting that workflow. The README documents the platform capabilities; the sampled source excerpts are partial, so links for unsampled behavior are limited to explicit documentation and visible interfaces.
Main entry points: main.c Firmware lifecycle · log_service.c Log service · sense_service.c BLE GATT service · azss_client.py Python CLI
Components 16
Sensor board
- SensorSuite PCB
hardware/azss.kicad_sch - VL53L4CD ToF
- SHT30 sensor
Firmware sensing
- Firmware lifecycle
firmware/src/main.c - ToF driver
firmware/src/vl53l4cd_ulp_api/VL53L4CD_ULP_api.c - ToF platform I/O
firmware/src/vl53l4cd_ulp_api/VL53L4CD_ULP_platform.c - Wall-clock service
firmware/src/services/time_service.h - Fatal diagnostics
firmware/src/services/error_service.c
Logging and BLE
- Log service
firmware/src/services/log_service.c - Persistent log
firmware/src/services/log_service.c - BLE GATT service
firmware/src/services/sense_service.c
Python client
- Python CLI
software/azss_client.py - BLE session
software/azss_client.py - Bulk downloader
software/azss_client.py - CSV writer
software/azss_client.py
Other components
- Operator
Connections 19
- Operator → Python CLI: runs commands
- SensorSuite PCB → VL53L4CD ToF: hosts sensor
- SensorSuite PCB → SHT30 sensor: hosts sensor
- Firmware lifecycle → ToF driver: configures and reads
- ToF driver → ToF platform I/O: uses I/O
- VL53L4CD ToF → Firmware lifecycle: ranging data
- SHT30 sensor → Firmware lifecycle: ambient readings
- Firmware lifecycle → Wall-clock service: gets timestamps
- Firmware lifecycle → Log service: records readings
- Log service → Persistent log: persists log
- Firmware lifecycle → BLE GATT service: initializes and notifies
- BLE GATT service → Log service: starts bulk stream
- Log service → BLE GATT service: sends packets
- Firmware lifecycle → Fatal diagnostics: reports fatal faults
- Python CLI → BLE session: scans and connects
- Python CLI → Bulk downloader: requests download
- Bulk downloader → BLE session: reads BLE data
- BLE session → BLE GATT service: exchanges GATT data
- Bulk downloader → CSV writer: writes records