2.2 KiB
Firmware code for the sangaboard
This firmware is Work in Progress and while it should now support all features of the original, many features are untested.
Firmware for the control board of OpenFlexure Microscope. This is a refactor of the original arduino code with some improvements to the infrastructure and features.
Notable changes
This version of the firmware uses PlatformIO rather than Arduino IDE.
The code is split into the main part which mostly handles command parsing and modules which execute actual commands, allowing the firmware to be easily extensible with new features (add a module based on one of the existing ones and add a line to setup to register its commands and loop function).
Motor moves now do not block command processing and a new command stop was added which aborts any move in progress.
Hardware
This is mainly intended for Sangaboard control boards and all configuration for these is already in boards.h, but it can also be used on different platforms (pi pico, stm32 (bluepill)). To use a custom board based on any of these platforms adjust boards.h to match your wiring.
If you have additional hardware connected to the board (Endstops, Light sensor) support for these can be enabled in config.h.
Building and uploading
The easiest way to build and upload this firmware is to install pio core via pip. For arduino nano with sangaboard v0.2 run
pip3 install platformio
pio lib install
pio run -e nano
pio run -e nano -t upload
for sangaboard v0.3 replace nano with leonardo in the above commands (untested).
TODO list
Original firmware feature parity
- Implement Endstops module
- Implement Light sensor modules
- Handle Sangaboardv3
Testing
- Ensure responses to commands match the original version
- Test endstop modules
- Test Light sensor module
- Test on different platforms
Improvements and fixes
- Add a CI script
- Add test for argument parsing
- Add more unit tests
- Test automatic building and upload
- Support other platforms
- Clean up
- Improve handling of unused modules/libraries
- Lower RAM use