{"id":23978397,"url":"https://github.com/wrsturgeon/buoy","last_synced_at":"2026-05-13T22:37:37.798Z","repository":{"id":153843685,"uuid":"624607967","full_name":"wrsturgeon/buoy","owner":"wrsturgeon","description":"ESP32 vital-signs wristband with ML \u0026 onboard display, without a HAL.","archived":false,"fork":false,"pushed_at":"2023-10-27T18:48:10.000Z","size":20508,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-03T19:43:07.230Z","etag":null,"topics":["esp32"],"latest_commit_sha":null,"homepage":"","language":"C","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/wrsturgeon.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}},"created_at":"2023-04-06T21:13:08.000Z","updated_at":"2023-04-17T04:46:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"8f3ef174-7aaf-4f6a-a39f-b5ceddf5cc3b","html_url":"https://github.com/wrsturgeon/buoy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wrsturgeon/buoy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wrsturgeon%2Fbuoy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wrsturgeon%2Fbuoy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wrsturgeon%2Fbuoy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wrsturgeon%2Fbuoy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wrsturgeon","download_url":"https://codeload.github.com/wrsturgeon/buoy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wrsturgeon%2Fbuoy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33003134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"ssl_error","status_checked_at":"2026-05-13T13:14:51.610Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["esp32"],"created_at":"2025-01-07T08:18:03.941Z","updated_at":"2026-05-13T22:37:37.783Z","avatar_url":"https://github.com/wrsturgeon.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"https://user-images.githubusercontent.com/79714036/236497741-979da34e-243d-4cca-9406-edeb8d0d33e4.mov\n\n# Team Heartthrobs ❤️\nUPenn ESE 3500 Final Project\\\nWill Sturgeon \u0026 Mostafa Afr\n\n### About\nExtremely affordable custom wearable to monitor, display, and calculate heart rate abnormalities in real time.\n\n### Installation (flashing onto the hardware)\nJust run `make`. (This should install dependencies as well.)\n\n### Notable features:\n- Bare-metal register-level C on the ESP32 with a manual build script \u0026 flashing routine\n  - Such a pain to write register-heavy C for the Feather, but worth it in the end\n    - E.g., some essential registers (like `SENS_SAR_SLAVE_ADDR1`—I dare you to look it up) are just entirely absent from the manual\n  - The official library (ESP-IDF) is undocumented and ~20x slower than this repo (extra safety checks)\n- Scrolling display with interpolated lines, adjusted in real time to a moving average and running peak, all fast enough to display in real time\n- Fixed-point division, aligned with real-world seconds (by some crazy unit math), without overflow on the full range of possible human heart rates\n- Custom font by hand! Writes sideways as well!\n- Displaying integers uses an array of function pointers, choosing an integer in O(1)\n- Automatically write VSCode JSON when compiling for mouse-over config info (see `esp32/Makefile`)\n\n### Libraries\nNone at all.\n\n**Disclaimer**: as noted above, the ESP32 manual is literally incomplete, and so if a module was not working after multiple hours of following the instructions and exhausting reasonable what-ifs, I would comb through an [ESP-IDF](https://github.com/espressif/esp-idf) implementation to see which registers were missing. None of their code survives in any form, and I thoroughly documented my code to demonstrate understanding and help my future self.\n\n### Demonstration\nCurrent state of the project: https://youtube.com/shorts/ZsG0fzAm2Nc\nWe have gotten the heart beat monitor to work properly with a feather in baremetal on the LCD, and are currently working on adding a pulse oximeter as the next feature!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwrsturgeon%2Fbuoy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwrsturgeon%2Fbuoy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwrsturgeon%2Fbuoy/lists"}