{"id":28443011,"url":"https://github.com/willbicks/recurse-presentation-clicker","last_synced_at":"2025-06-29T11:32:32.815Z","repository":{"id":297501547,"uuid":"996995149","full_name":"willbicks/Recurse-Presentation-Clicker","owner":"willbicks","description":"A simple presentation clicker implemented during a 15 minute talk given at the Recurse Center.","archived":false,"fork":false,"pushed_at":"2025-06-05T19:53:37.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-05T20:33:44.283Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/willbicks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-05T19:31:49.000Z","updated_at":"2025-06-05T19:53:38.000Z","dependencies_parsed_at":"2025-06-05T20:44:40.103Z","dependency_job_id":null,"html_url":"https://github.com/willbicks/Recurse-Presentation-Clicker","commit_stats":null,"previous_names":["willbicks/recurse-presentation-clicker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/willbicks/Recurse-Presentation-Clicker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willbicks%2FRecurse-Presentation-Clicker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willbicks%2FRecurse-Presentation-Clicker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willbicks%2FRecurse-Presentation-Clicker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willbicks%2FRecurse-Presentation-Clicker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/willbicks","download_url":"https://codeload.github.com/willbicks/Recurse-Presentation-Clicker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willbicks%2FRecurse-Presentation-Clicker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262586290,"owners_count":23332825,"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":[],"created_at":"2025-06-06T06:40:17.203Z","updated_at":"2025-06-29T11:32:32.803Z","avatar_url":"https://github.com/willbicks.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# USB Presentation Clicker - PCB and firmware\n\n## The Recurse Center - 15 Minute Non-Programming Talk\n\nThis project was created as a 15 minute intro to circuit board concepts and design, including a live demonstration of the process of schematic capture and PCB design for this simple presentation clicker.\n\n[The slides for the talk leading up to the demo are available here.](https://docs.google.com/presentation/d/1ne3fzInx9VCI7aZ8SwKrGWYj8iwI68Q8ZW5xORLohZw)\n\n\u003ca href='https://www.recurse.com/scout/click?t=0059f2068e4524d430ccfedb6323af8e\n' title='Made with love at the Recurse Center'\u003e\u003cimg src='https://cloud.githubusercontent.com/assets/2883345/11325206/336ea5f4-9150-11e5-9e90-d86ad31993d8.png' height='20px'/\u003e\u003c/a\u003e\n\n## Printed Circuit Board\n\nThe schematic and board design are made with KiCAD 9.0, available from [kicad.org](https://www.kicad.org/). The project file is at [`rc-demo.kicad_pro`](./rc-demo.kicad_pro).\n\n![Front and back 3D renderings of PCB](./images/pcb-render.png)\n\nThe schematic and board layours were done live in front of an audience in around 10 minutes, so there's lots of room for improvement or expansion. Try tweaking the design to fit your sensibilities, or deleting the current design and starting fresh!\n\nTo learn more about KiCAD, check out their [getting started guide](https://docs.kicad.org/9.0/en/getting_started_in_kicad/getting_started_in_kicad.html#basic_concepts_and_workflow).\n\n## Firmware\n\nThe firmware for the remote is written in Rust, using the `rp_pico` board support package and `embedded-hal` traits, and using the [`usbd_human_interface_device`](https://crates.io/crates/usbd-human-interface-device) crate to implement the USB HID protocol for a keyboard. The firmware entrypoint is at [`src/main.rs`](./src/main.rs).\n\nIf you've installed the rust toolchain with `rustup`, the appropriate extras will be installed automatically as defined in the [`rust-toolchain.toml`](./rust-toolchain.toml) file. The only additional requirement is to install one (or both) of the following tools for flashing the firmware to the RP2040:\n\n```shell\n# Install probe-rs for flashing and debugging with debugging probe (requires cargo-binstall)\ncargo binstall probe-rs-tools\n# Install elf2uf2-rs to flash via RP2040 USB bootloader\ncargo install elf2uf2-rs\n```\n\nBy default, `cargo run` will use probe-rs to load and debug the firmware:\n\n```shell\ncargo run\n```\n\nTo flash the firmware via the RP2040 USB bootloader, you can use:\n\n```shell\ncargo build\nelf2uf2-rs ./target/thumbv6m-none-eabi/debug/usb-presentation-remote\n```\n\nAnd then copy the `./target/thumbv6m-none-eabi/debug/usb-presentation-remote.uf2` to the `RPI-RP2` drive that appears when you hold the BOOTSEL button on the RP2040 board while plugging it into your computer.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillbicks%2Frecurse-presentation-clicker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillbicks%2Frecurse-presentation-clicker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillbicks%2Frecurse-presentation-clicker/lists"}