No description
Find a file
2023-03-01 04:38:09 +00: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 Undo version change hack 2023-03-01 04:38:09 +00:00
test Add endstops, light_sensor, test, many fixes 2021-05-25 01:43:11 +01:00
.clang-format style changes, add .clang-format config file 2021-07-14 02:15:50 +01:00
.gitignore Added a command to check if the stage is moving 2021-06-23 17:16:17 +01:00
.gitlab-ci.yml pico: remove GP prefix from pin numbers 2021-09-04 02:21:43 +01:00
platformio.ini Support HW serial in v5, clean up config 2022-10-11 01:00:31 +01:00
README.md Add support for ESP32 platform 2021-09-04 01:19:15 +01:00

Firmware for the Sangaboard and similar motor controllers

This firmware is a Work in Progress, do NOT use for production builds

Many features of this firmware are untested and it changes behaviour of the pysangaboard module, breaking fast autofocus in OFM software (see #1, !1). If you want a reliable device use the original firmware.

If you like living on the edge and decide to use this firmware, please report any issues you run into to this repo.

About

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), ESP32). 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