Fab Lab Rwanda · Group work
Interface and Application Programming
We compare interface tools by the job they solve, the workflow they require and how other people can use the result. Our plotter work provides two browser-based examples: a build interface and an image-to-G-code preparation tool.
Tools and use cases
| Option | Good fit | Workflow and tradeoff |
|---|---|---|
| Arduino Serial Monitor | Quick text commands and debugging during development | Select a port and baud rate, then inspect/send text. Minimal setup, limited custom interaction. |
| Python + pySerial + Tkinter | A local desktop interface with serial access | Manage Python and dependencies, select the port, parse bytes and update widgets. Keep blocking reads out of the UI thread. |
| Processing + Serial | Visual experiments and live graphical feedback | Build a sketch and use the Serial library. Distributing the sketch/application is a separate step from developing it. |
| Browser files and Canvas | Image preparation, previews and downloadable output | Runs as a static site with local files. Broad access without installing a CAD or Python environment. |
| Web Serial | A compatible browser talking directly to a serial device | Requires a supported browser, secure context and an explicit port permission. Connection state, framing and errors need their own implementation. |
This table reviews the options; it does not claim that we built and tested an application with every one of them. The group comparison concerns tools and workflows and does not itself require hardware interfacing.
Our image-to-G-code interface
The drawing preparation tool accepts an image locally, shows a thresholded/hatching preview and generates a G-code download within the plotter's drawing area. Users can adjust the page margin, hatch spacing and threshold before exporting.
Its browser workflow avoids uploading the image to a server. It prepares a file; it does not connect to a serial port or confirm that a physical plot has been made. The pen commands must match the actual controller configuration and calibrated lift.
The conversion logic and interface source are included in the editable project package. They can be inspected without relying on a screenshot of code.
Our plotter build interface
The build interface lets a user inspect the plywood-base machine, explore the existing CAD assembly, check parts against printer dimensions and download the matching print pack. It displays required quantities and separates the optional bearing-fit coupon.
Printer dimensions affect the fit check, not the geometry. The static site serves the existing checked plywood design; it does not execute the Python CAD generator or create arbitrary machine sizes. That boundary keeps the available downloads understandable.
The interfaces running in the browser


Why this workflow suits our machine
We chose browser file processing for drawing preparation and static downloads for fabrication files because both can be shared through the group website. A desktop serial program or Web Serial application would add direct device access, but would also require connection handling, acknowledgement and recovery logic.
Browser checks covered the plywood print-pack download, smaller-printer warnings, part search, saved settings and 3D assembly motion. The fit-check logic also passed tests for bed rotation, brim space, height limits and the actual part lists. These software checks do not establish physical plotting accuracy.