Code Boundaries¶
Luxnode has hardware code and user-facing code. They should remain related but not tangled.
firmware/¶
Runs on ESP32-S3 or later microcontrollers. It owns:
- ADC timing and spectrometer clocking.
- LED/interlock control.
- Raw counts and telemetry emission.
- Future USB/BLE/Wi-Fi transport endpoints.
src/lux/¶
The lower-level algorithm library. It owns:
- Calibration transforms.
- Corrections and preprocessing.
- Peak detection.
- Matching and feature extraction.
- Module metrics for plants, minerals, beer, and kombucha.
src/luxspec/¶
The public Python SDK. It owns:
LuxFrameand telemetry schema.- Serial/HTTP clients.
- Version compatibility helpers.
- User tutorials and stable convenience APIs.
Lux Cloud¶
Cloud jobs should accept the same LuxFrame JSON payloads. Heavy processing can
then run on a server while local devices and notebooks keep a compatible
minimal API.