{"id":20885428,"url":"https://github.com/lab11/opo","last_synced_at":"2026-03-12T13:36:48.064Z","repository":{"id":12479508,"uuid":"15148336","full_name":"lab11/opo","owner":"lab11","description":"Opo is a human interaction sensor, able to characterize face to face interactions with 5 cm accuracy and 2 s temporal fidelity.","archived":false,"fork":false,"pushed_at":"2020-07-30T00:59:05.000Z","size":392881,"stargazers_count":2,"open_issues_count":4,"forks_count":4,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-12T19:38:16.105Z","etag":null,"topics":[],"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/lab11.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}},"created_at":"2013-12-12T21:48:32.000Z","updated_at":"2021-07-16T22:40:30.000Z","dependencies_parsed_at":"2022-09-16T10:41:01.424Z","dependency_job_id":null,"html_url":"https://github.com/lab11/opo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lab11/opo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lab11%2Fopo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lab11%2Fopo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lab11%2Fopo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lab11%2Fopo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lab11","download_url":"https://codeload.github.com/lab11/opo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lab11%2Fopo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30427339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T12:46:33.731Z","status":"ssl_error","status_checked_at":"2026-03-12T12:42:20.405Z","response_time":114,"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":[],"created_at":"2024-11-18T08:13:28.686Z","updated_at":"2026-03-12T13:36:48.030Z","avatar_url":"https://github.com/lab11.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"Opo\n===\n\nOpo is a face-to-face interaction sensor, able to characterize face to face interactions with 5~cm accuracy \nand 2~s temporal fidelity while maintaining a week-long battery life on a relatively small (110 mAh) battery.\n\n\nInstallation\n---\n\n1) Checkout my version of Contiki:\n\n    git clone --recursive https://github.com/lab11/contiki.git\n    git checkout cc2538-opo\n\n2) Install a toolchain:\n    Detailed instructions can be found at https://github.com/lab11/contiki/tree/cc2538-opo/platform/cc2538dk\n    In ubuntu:\n    sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded\n    sudo apt-get update\n    sudo pat-get install gcc-arm-none-eabi \n\n3) Checkout the Opo repo\n    git clone https://github.com/lab11/opo.git\n\n4) Download Android studio \n    http://developer.android.com/sdk/index.html\n\n5) Either make or ask us for a programmer\n    https://github.com/lab11/epic-multi-prog.git\n\n6) Either make or ask us for Opo boards\n    opo/hardware/Opo8001v2 - No FTDI\n\n7) If making your own boards, we recommend these batteries: https://www.sparkfun.com/products/13112\n\n8) Go to /contiki/apps/opo8001v2opo_plugin in the Opo repo.\n\n9) Modify line 9 (CONTIKI = /home/wwhuang/Dropbox/git/contiki) to point to whever you checked out my Contiki repo to (step 1). \n\n10) Connect the Opo to the programmer using a tag connect cable \u003chttp://www.tag-connect.com/TC2030-IDC-NL\u003e. \n\n11) Install the opo89001v2opo_plugin app by typing python2 idmake ID in a terminal, where ID is a 16 bit unsigned integer \nthat will be used as the targeted Opo's ID during ranging operations.\n\nUsage\n---\n\n![Opo sensor](https://github.com/lab11/opo/blob/master/images/opo-photo.png)\n\n### Attaching Opos to people\n\nWe are currently working on a 3d printed case. In the meantime, obtain a lanyward, such as this one \n\u003chttps://www.amazon.com/MIFFLIN-Vertical-Badge-Holder-Lanyard/dp/B01G7VTE98/ref=sr_1_2?ie=UTF8\u0026qid=1499377440\u0026sr=8-2-spons\u0026keywords=lanyard\u0026psc=1\u0026smid=A29P802DGSGI7W\u003e.\nCarve a hole in the plastic such that the transducer (large silver part with mesh) pokes out of the sheathe, and use \nelectric tape to secure the Opo inside the sheathe if neccessary. \n\nThe Opo must be worn such that they are unobstructed (e.g, NOT behind a shirt), and so that the transducer is facing \nforward. Ideally, the Opo should be worn near the neck, such that they are facing forward while not pointing upwards, \nas can happen on the chest.\n\n### Charging the Opos and downloading the data\n\nOpos can be charged from standard microUSB chargers, such as the ones used to charge smartphones. They can also \nbe charged from laptops, or really anything that provides USB power. \n\nTo download the data, one must plug in the Opo and then run the nodejs application, cloudcomm.js, found in the \n/node folder of the Opo repository. When the Opo is plugged in, the LED should turn blue, and when the Opo is uploading data the blue and red LEDs will blink. Keep in mind the LEDs are provided by one RGB LED, so if both the red and blue LEDs are on, the light will look purple. The data gets downloaded as JSON in a file titled opo_cc_data.dat. The key pieces of data are: \n\n* RX_ID: This Opo's ID \n* TX_ID: The other Opo's ID\n* RANGE: distance between the two Opos in meters \n* M_UNIXTIME: This Opo's sense of what time the interaction occurred, expressed as a unix timestamp. \n* TX_UNIXTIME: The other Opo's sense of what time the interaction occurred, expressed as a unix timestamp. \n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flab11%2Fopo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flab11%2Fopo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flab11%2Fopo/lists"}