a scrappy gimbal that insults you in shakespearean english
1
2
3# Myrus
4
5
6
7<p align="center">
8 <img src="https://raw.githubusercontent.com/taciturnaxolotl/carriage/main/.github/images/line-break-thin.svg" />
9</p>
10
11this is my team's project for `scrapyard columbus` we are making a gymbal that is controlled by a phone app that tracks faces; comunication is done over ~[`iroh`](https://www.iroh.computer/)~ `webserial` and the gymbal is controlled by the hackclub [`blot`](https://blot.hackclub.com) control board jerry rigged to an orpheus pico. you can see a demo of the app at https://www.youtube.com/watch?v=buTqpQQnUd0
12
13## pins
14
15<img src="https://raw.githubusercontent.com/taciturnaxolotl/myrus/main/.github/images/acon-scrapyard-live-footage.png" width=320 align="right" />
16
17| Pico Pin | Blot Pin | Description |
18|----------|----------|-------------|
19| `GP11` | `D10` | Step signal for Motor 1 |
20| `GP10` | `D9` | Direction control for Motor 1 |
21| `GP9` | `D2` | Enable/disable control for both motors |
22| `GP8` | `D8` | Step signal for Motor 2 |
23| `GP7` | `D7` | Direction control for Motor 2 |
24| `GP9` | `D1` | Enable/disable control for both motors |
25| `GND` | `GND` | Ground |
26| `3V3` | `3V3` | Power |
27
28## firmware
29
30The firmware is written in circuitpython and is in the [`firmware`](/firmware) directory.
31The firmware sends complete rotations based on serial input in two formats:
32- `[1 or 2] [number]` -> rotate to a position in complete rotations
33- `[1 or 2] zero` -> set current position as zero
34
35The control is absolute - you specify the rotation count you want to go to rather than relative movement.
36
37Important notes:
38- Using 200 steps/rotation * 16 microsteps (very precise control)
39- Motors must be enabled by setting enable pin LOW
40- Movement speed controlled by delay between steps (currently 0.0001s)
41- Supports two motors controlled independently
42- Coordinates maintained in number of steps from zero
43- Direction controlled automatically based on target vs current position
44- Movement is blocking - the pico will not respond to serial commands while moving
45
46## web interface
47
48The web interface is a pwa that is served from cloudflare pages. It uses the web serial api to communicate with the pico. The web interface is hosted at [myrus.dunkirk.sh](https://myrus.dunkirk.sh).
49
50## cad
51
52The cad was done in onshape around midnight of the `15th` and can be found and exported from here: [cad.onshape.com/documents/8d200c472...](https://cad.onshape.com/documents/8d200c472fc5b660efdf8352/w/ff1d53ebe00121ac7a3c9bc5/e/6edac687c4356b98c8934741?renderMode=0&uiState=67d649b588856c134638cb6b)
53
54## schematics / blueprints
55
56
57
58
59
60<p align="center">
61 <img src="https://raw.githubusercontent.com/taciturnaxolotl/carriage/main/.github/images/line-break.svg" />
62</p>
63
64<p align="center">
65 <i><code>© 2025-present <a href="https://github.com/taciturnaxolotl">Kieran Klukas</a>, <a href="https://github.com/paytontech">Payton Curry</a>, and Elizabeth Klukas</code></i>
66</p>
67
68<p align="center">
69 <a href="https://github.com/taciturnaxolotl/myrus/blob/master/LICENSE.md"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=AGPL 3.0&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a>
70</p>