Firmware
The firmware can be used on three different levels:
- basis - basic functionality, which will support the most common use-cases
- intermediate - customisation via templates: to support common special sensors, without the need to manually write firmware
- expert - API to firmware library to make your own custom code for the nodes
Core functionality
- support reading of 9 dof sensor via i2c
- read 4 channels of ADC
- read battery status
- send sensed data to base station
- (configurable) debounce for digital input pins
- advanced PWM control to ramp up to a new value within a certain amount of time
- switch between wireless mode and USB mode
- serial API to send data to another node (via RX/TX or USB)
- option to send own sensor data via RX/TX
- option to transceive and forward data received via wireless connection from other nodes
Extensions / customisation options
- read out other i2c sensors
- read out specialised sensors (e.g. capacitive, ultrasound distance)
- control certain types of actuators (Stepper motor, H-Bridge, …)
- receiving custom messages and act on them
- control NeoPixel RGB leds on any of the digital pins
- more finegrained PWM control for different kind of patterns of PWM output
Customisation options for firmware
There is a template library for common other sensors (i.e. the ones that we have used and tested); for each option this template library includes:
- external library needed for functionality (adjusted from online sources to fit in the framework)
- header section: include the library, initialize the class instance, special functions needed
- setup section: which will be inserted in the setup section of the firmware
- loop section: which will be inserted in the loop section of the firmware
- message section: which will be inserted in the message parsing section of the firmware
- documentation for hooking up the sensor
There will be a guide on how to make your own templates.
And it is possible to extend the firmware with your own code, by writing the firmware. The advanced level.