Project description and build instructions can be found on my website.
Hardware files can be previewed in these third-party web applications:
- KiCad files (board) -- https://kicanvas.org
- OpenSCAD files (enclosure) -- https://openscad.cloud/openscad/
License terms for software and hardware are present in the LICENSE.md file.
Jump to:
- building firmware from source
- updating font data
- 3D-printing the enclosure
- engraving button labels
- changelog
Install the TinyGo SDK. Copy EclairM0 board definition files as follows:
File from this repo | Target SDK directory |
---|---|
firmware/_board/board_eclair-m0.go | src/machine |
firmware/_board/eclair-m0.json | targets |
firmware/_board/eclair-m0.ld | targets |
Now you should be able to build and upload new firmware, like this:
cd firmware
tinygo flash -target eclair-m0 -size short
Font data is stored in the tools/newstroke.pbm
image file, with tools/newstroke.txt
containing font widths. The image file can be edited in GIMP.
These source files can be converted into a working Go code, using the tools/convert.py
script, which should work with any modern version of Python:
cd tools
python convert.py newstroke.pbm newstroke.txt > ../firmware/hal/display/font.go
Creality Ender-3 V3 KE is my 3D printer. I'm using OrcaSlicer 2.2.0, and at this point I'm too scared to update :)
These are the printing settings recommended by me:
- Global filament settings (PLA) → 215°C nozzle, 60°C bed
- "0.12mm Fine" base preset
- Quality → Seam position: BACK
- Quality → Scarf joint seam: CONTOUR
- Quality → Elephant foot compensation: 0.15mm (depends on the printer calibration, default is 0.05mm)
- Quality → Precise wall: ON
- Quality → Walls printing order: INNER/OUTER
- Quality → Detect overhang walls: OFF
- Strength → Bottom surface pattern: ARCHIMEDEAN or HILBERT for best appearance
- Speed → First layer: 20mm/s (default is 50mm/s and it's too fast)
- Speed → Top surface: 100mm/s (default is 250mm/s)
Supports should not be necessary for the bridge under the slide switch cutout.
Any bright filament (yellow, white) would hide most of the inaccuracies, and it will also make the engraved letters more visible.
Gerber files generated by KiCad can be converted to a G-code compatible with many desktop CNCs. If you happen to use pcb2gcode
, the example config is available in the repo.
It's difficult to get it right the first try, because:
- the router table is never perfectly flat
- the enclosure is thin and can bend a little
- auto-generated toolpaths may result in thicker cuts for some letters
- some PLA types melt too soon
The best idea is to set the spindle so it barely touches the enclosure at the highest point. Start cutting all letters at once, and lower the spindle at 0.1mm increments. If any letter pair looks okay (at about 0.3mm deep), remove it from the job file and repeat.
Version 1.2:
- Added two more slots for notes
Version 1.1:
- Added Shift key, and the menu for inserting symbols and some keyboard keys
- Changed font to NewStroke
- Changed USB VID/PID and manufacturer/device name
- Changed battery voltage measurement code
- Replace resistors before updating -- see Rev.D changelog below
Version 1.0:
- Initial version
Rev.D:
- Switched to LIR2025(H) battery
- Changed R51 and R52 resistors, to 22K and 5.1K respectively, to have 1V max output
Rev.C:
- Added ADC/DAC test point, and extra soldering pad for attaching the unmodified Li-Po battery
Rev.B:
- Added Schottky diode to prevent battery from back-powering the USB host
- Added 5V, 3.3V and extra GND test points
Rev.A:
- Initial revision