{"id":22887242,"url":"https://github.com/chanulee/hapgrab","last_synced_at":"2026-04-27T23:32:38.659Z","repository":{"id":203985879,"uuid":"580019923","full_name":"chanulee/hapgrab","owner":"chanulee","description":"Interface for grab-and-move 3D interaction and haptic feedback","archived":false,"fork":false,"pushed_at":"2022-12-25T07:46:46.000Z","size":5305,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T19:13:24.277Z","etag":null,"topics":["6dof","bluetooth","esp32","flex-sensor","haptic-feedback","ili9341","openframeworks"],"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/chanulee.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":"2022-12-19T14:17:59.000Z","updated_at":"2024-07-25T08:15:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f58979f-0aba-4336-a1ac-8cd29e598528","html_url":"https://github.com/chanulee/hapgrab","commit_stats":null,"previous_names":["chanulee/hapgrab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chanulee/hapgrab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanulee%2Fhapgrab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanulee%2Fhapgrab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanulee%2Fhapgrab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanulee%2Fhapgrab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chanulee","download_url":"https://codeload.github.com/chanulee/hapgrab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanulee%2Fhapgrab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32360110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["6dof","bluetooth","esp32","flex-sensor","haptic-feedback","ili9341","openframeworks"],"created_at":"2024-12-13T20:31:51.448Z","updated_at":"2026-04-27T23:32:38.630Z","avatar_url":"https://github.com/chanulee.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HapGrab\n## 1. Description\n![Demo Gif](https://videoapi-muybridge.vimeocdn.com/animated-thumbnails/image/e7b8a2b5-0df9-4f0c-88be-426a93814a0d.gif?ClientID=vimeo-core-prod\u0026Date=1671954016\u0026Signature=fe06f929ae3c2d25bf72e7fc472b54ce7dbd1c75)\n![Demo Gif 2](https://videoapi-muybridge.vimeocdn.com/animated-thumbnails/image/22a3e30b-2522-436b-9fc9-66449bc0d7e8.gif?ClientID=vimeo-core-prod\u0026Date=1671954204\u0026Signature=3846d5d5ca744750d53c82f5a46b2181102cd9aa)\n- Interface for Grab-and-move 3D interacetion and haptic feedback\n- [Video Demo](https://vimeo.com/784200640)\n## 2. Features\n- Bluetooth Serial (Send and receive data) [[1]](#1)\n- Get and calculate flex sensor angle value [[2]](#2)\n- LCD display control [[3]](#3)\n- 6DoF Acc/Gryo Sensor\n- Haptic feedback [[4]](#4)\n- 3D Generative art on openFrameworks\n## 3. Specimen\n### 3-1. Hardware\nCheck out fritzing file for more information.\n- ESP32 Dev Module (runs on 3.3V)\n- ILI9341 TFT LCD Display\n- Flex Sensor\n- Qwiic 6DoF LSM6DSO\n- Lilypad Vide Board\n- ~~Qwiic Haptic Driver DA7280~~\n### 3-2. Power Module\n- 18650 Li-ion Battery\n- Li-ion power module\n- DC/DC Stepup module\n- Toggle switch\n### 3-3. Software Requirements\n- TFT_eSPI library (by bodmer) modified for ILI9341 and ESP32 (this project) [Go to repo](https://github.com/chanulee/TFT_eSPI)\n- Qwiic 6DoF LSM6DSO Library [Hookup Guide](https://learn.sparkfun.com/tutorials/qwiic-6dof-lsm6dso-breakout-hookup-guide)\n- ofxSimpleSerial by LeoColomb [Go to repo](https://github.com/LeoColomb/ofxSimpleSerial)\n## 4. References\n1. Bluetooth Serial for ESP32 \u003ca name=\"1\" href=\"https://randomnerdtutorials.com/esp32-bluetooth-classic-arduino-ide/\" target=\"_blank\"\u003eTutorial\u003c/a\u003e\n2. Flex sensor \u003ca name=\"2\" href=\"https://learn.sparkfun.com/tutorials/flex-sensor-hookup-guide?_ga=2.13438583.1502922294.1671452785-154993728.1671452785\" target=\"_blank\"\u003eHookup Guide\u003c/a\u003e \n3. TFT LCD Display \u003ca name=\"3\" href=\"https://www.youtube.com/watch?v=rq5yPJbX_uk\" target=\"_blank\"\u003eTutorial Video\u003c/a\u003e  \n4. \u003ca name=\"4\"\u003eHaptic Feedback using LilyPad Vibe Board\u003c/a\u003e\n5. https://junkiyoshi.com/2019/10/page/5/\n## 5. Memo / Trial \u0026 Error\n- Set to ESP32 Dev Module in IDE.\n- Button on right side of the microusb port should be pressed when uploading code. Press the other button to reboot after uploading.\n- You should set COM port as \"send\" on the device when you connect to ESP32 (Windows).\n- Quit openFrameworks app (ofApp) that gets serial data before uploading data to ESP32.\n- Haptic feedback of LilyPad Vibe Board feels a little bit weak on wrist. But still stronger than Qwiic Haptic Driver DA7280.\n- [Qwiic 6DoF Gyro/Acc LSM6DSO library](https://learn.sparkfun.com/tutorials/qwiic-6dof-lsm6dso-breakout-hookup-guide) and [Qwiic Haptic Driver DA7280 library](https://learn.sparkfun.com/tutorials/qwiic-haptic-driver-da7280-hookup-guide?_ga=2.22013947.1502922294.1671452785-154993728.1671452785) crashes on arduino ide    \n---\nPhysical Computing, Fall 2022     \nAdvisor Prof. Sangwook Lee  \nDept. of Art \u0026 Technology, Sogang University\n  \nHapgrab is built upon wearable interface [alpha](https://github.com/chanulee/alpha), which was funded by [National Research Foundation Korea](https://www.nrf.re.kr/eng/index) as University Innovation program, 2022\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchanulee%2Fhapgrab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchanulee%2Fhapgrab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchanulee%2Fhapgrab/lists"}