No description
Find a file
Richard Bowman 165f619869 notify_on_stop errors if not moving
notify_on_stop now gives an error if it's
called while the stage is not moving.
This means you can safely issue the command and await a response.
If the stage is moving, it will block until
the stage stops.  If it's not moving, it will return immediately.
2021-06-23 19:55:14 +01:00
.vscode Initial commit 2021-05-21 04:32:21 +01:00
include Initial commit 2021-05-21 04:32:21 +01:00
lib Initial commit 2021-05-21 04:32:21 +01:00
src notify_on_stop errors if not moving 2021-06-23 19:55:14 +01:00
test Add endstops, light_sensor, test, many fixes 2021-05-25 01:43:11 +01:00
.gitignore Added a command to check if the stage is moving 2021-06-23 17:16:17 +01:00
platformio.ini Add endstops, light_sensor, test, many fixes 2021-05-25 01:43:11 +01:00
README.md some compatibility fixes and upload instructions 2021-06-02 00:56:23 +01:00

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