{"id":19542497,"url":"https://github.com/dr-mod/bob","last_synced_at":"2025-04-26T17:31:17.263Z","repository":{"id":43818600,"uuid":"511292373","full_name":"dr-mod/bob","owner":"dr-mod","description":"Big Orange Button a single-key USB keyboard","archived":false,"fork":false,"pushed_at":"2022-07-07T14:38:26.000Z","size":2183,"stargazers_count":47,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-04T16:41:54.951Z","etag":null,"topics":["mechanical-keyboard","rp2040"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dr-mod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-06T21:08:23.000Z","updated_at":"2025-03-28T13:58:06.000Z","dependencies_parsed_at":"2022-07-08T02:55:15.416Z","dependency_job_id":null,"html_url":"https://github.com/dr-mod/bob","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dr-mod%2Fbob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dr-mod%2Fbob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dr-mod%2Fbob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dr-mod%2Fbob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dr-mod","download_url":"https://codeload.github.com/dr-mod/bob/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251025736,"owners_count":21524851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mechanical-keyboard","rp2040"],"created_at":"2024-11-11T03:14:52.077Z","updated_at":"2025-04-26T17:31:15.817Z","avatar_url":"https://github.com/dr-mod.png","language":"Python","funding_links":["https://www.buymeacoffee.com/drmod"],"categories":[],"sub_categories":[],"readme":"# Big Orange Button a.k.a BOB\nBig Orange Button (BOB for short) is a customisable single-key USB keyboard\n![](docs/screenshot.png)\n\n## Hardware\nTo build this project you need access to a 3d printer. The model folder contains 3 parts.\n\n### Bill of materials\n* Pimoroni Tiny 2040 (x1)\n* Keyboard switch (x1)\n* M3x12 screw (x2)\n* Connection wire\n\n### Print\nThe 3d models can be downloaded from my Printables [here](https://www.printables.com/social/306904-dmytro-panin/models).\n\n### Assembly\n1. Populate the slot of the _bob_middle_ printed part with an MX-type keyboard switch.\n![](docs/schematic.png)\n2. Solder the microcontroller to the switch one wire should be connected to the PD7 pin of the microcontroller and the other one to the GND pin, make sure that wires are soldered to the top side of your Tiny.\n3. Insert the microcontroller into its slot in the _bob_bottom_ printed part.\n4. Secure the microcontroller with the _bob_middle_ printed model.\n5. Screw together the _bob_bottom_ and _bob_middle_ parts with the m3 screws.\n6. Put on the 3d printed _bob_plain_button_ on the key switch' tip.\n7. Optionally, you can stick some rubber feet on the bottom side of the device.\n\n## Software\n### Installing CircuitPython \nThe software is written in CircuitPython 7.3.1 and uses the HID module of CircuitPython Library Bundle.\n1. Download the CircuitPython UF2 from the official website [here](https://circuitpython.org/board/pimoroni_tiny2040/).\n2. Push and hold the BOOTSEL button and plug your Tiny 20240 into the USB port of your computer. Release the BOOTSEL button after your microcontroller is connected.\n3. It will mount as a Mass Storage Device called RPI-RP2.\n4. Drag and drop the CircuitPython UF2 file onto the RPI-RP2 volume. \n\n### Installing HID libraries\n1. Download the library bundle for the CircuitPython version you installed 7.x by default from [here](https://circuitpython.org/libraries)\n2. Unzip the bundle; Copy `adafruit_hid` from the `lib` folder to `\u003cCIRCUITPY DRIVE\u003e/lib/`\n\n### Software installation\n1. Download the software\n```shell\ncd ~\ngit clone https://github.com/dr-mod/bob.git\ncp bob/src/*.py \u003cCIRCUITPY DRIVE\u003e\n```\n\n### Configuration\nTo configure action modify `key_mapping.py`\n\nAt the moment there are 3 types of commands supported:\n* STRING - a sequence of characters printed when a button is pressed _e.g. \"Hello, world!\"_\n* KEY - a single key or combination of keys e.g. _A_ or _Ctrl + C_. [List](https://circuitpython.readthedocs.io/projects/hid/en/latest/_modules/adafruit_hid/keycode.html) of supported keycodes.\n* CONTROL_CODE - a control commands e.g. increase brightness, [List](https://circuitpython.readthedocs.io/projects/hid/en/latest/api.html#adafruit-hid-consumer-control-code-consumercontrolcode) of supported control codes.\n\n#### Example configuration:\n```python\n(STRING, \"sudo shutdown now \\n\"),\n```\n\n### Additional information\nThis project has uses a modified version of my other project [pico-mpad](https://github.com/dr-mod/pico-mpad) you can find more configuration examples and information there. \n\n### Support the project\nIf you would like to support what I do and keep me caffeinated, you can do it here:\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/drmod)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdr-mod%2Fbob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdr-mod%2Fbob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdr-mod%2Fbob/lists"}