- Firmware
- Refactor all code to use a log interface rather than `Serial` directly
- Moved platformio.ini to root, so you can load the entire repo in VS Code and still use platformio
- Reduced graphic buffer bit depth to 8 bits (short on RAM :( )
- Implemented threadsafe log interface in interface_task (using a queue for posting log message)
- Created serial protocol interface and 2 implementations - plaintext (default) and protobuf (selected by sending a NULL byte)
- Protobuf protocol is roughly the same architecture as Splitflap's:
- PacketSerial (cobs) framing with NULL delimiters
- CRC32 checksums for packets
- nanopb generated code for encoding/decoding (generated firmware code is checked in, since it should change less frequently and this reduces burden to build the project from scratch)
- Software
- Typescript example host-side code:
- smartknobjs-proto
- Autogenerated types/encoding/decoding protobuf code (using protobufjs)
- smartknobjs
- Helper library for interfacing the with smartknob via serial/protobuf. Implements basic outgoing queue (with retries and ACK checking) and message callback for responding to messages from the SmartKnob
- example
- Basic demo CLI app that uses smartknobjs to connect to the smartknob, send a haptic config, and print state changes and log messages to the console
The voltage regulator that was originally used isn't available at the moment. To provide more options, a second footprint was added to the PCB for an alternative regulator that has a different pinout. Important to note that only one regulator should be used.
Also, adjusted .gitignore for Mac files and KiCad auto-generated backups.
- Updated view_base and view_screen KiCad projects to v6 files
- Updated footprints to v6 versions
- Fixed all DRC errors and most warnings
- Updated CI
- Run on Ubuntu 22.04 runner
- Updated KiBot and KiKit versions
- Use KiBot for 3d rendering now instead of custom scripts
- Switched to using KiCad text variables for replacement rather than raw text find&replace
- Misc design updates
- Exposed bottom-side thermal pad underneath TMC6300 to make it easier to possibly hand-solder
- Separated GND and GNDA nets, replaced connection with a net-tie, and updated corresponding copper fills around HX711
Removed some legacy platformio envs that are not actively being maintained. But also fixed some bugs with different build flags that caused compilation issues.
Fixes#49
Service loops weren't really feasible/helpful, so don't recommend them via the silkscreen. Fixes#10
Also added testpoints (or could be solder points) for all signals on the top side of the screen PCB. Fixes#11
- Modify TLV493d library to expose frame counter in order to check for lockup, and implement auto-reset in tlv_sensor in case of lockup
- Implement MT6701 SimpleFOC sensor
- Make display optional
- Add optional LED, strain, ALS support
- Connect ALS to LED and display brightness
- Hardcoded strain gauge thresholds and haptic feedback
- Use KiKit for fab automation
- Add splitflap scripts for exporting pcb pdfs, and switch to splitflap script for 3d rendering (for consistency with fab automation)
- Added support in 3d rendering scripts for soldermask & silkscreen colors, option to skip virtual components
- Added silkscreen to base and screen pcbs for commit and date info