{"id":19491524,"url":"https://github.com/ev3dev-lang-java/usb-devices","last_synced_at":"2026-04-30T12:32:22.937Z","repository":{"id":142584041,"uuid":"90551837","full_name":"ev3dev-lang-java/usb-devices","owner":"ev3dev-lang-java","description":"A Java libraries to manage USB devices like Controllers, Arduinos, IMUs, GPS, etc...","archived":false,"fork":false,"pushed_at":"2018-04-29T11:01:53.000Z","size":2599,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-25T19:45:24.455Z","etag":null,"topics":["arduino","bno055","brickpi","ev3","ev3dev","java"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ev3dev-lang-java.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-07T18:05:26.000Z","updated_at":"2024-01-02T15:12:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"587aee60-73b0-4f6d-ab25-c54d73df4200","html_url":"https://github.com/ev3dev-lang-java/usb-devices","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ev3dev-lang-java/usb-devices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ev3dev-lang-java%2Fusb-devices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ev3dev-lang-java%2Fusb-devices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ev3dev-lang-java%2Fusb-devices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ev3dev-lang-java%2Fusb-devices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ev3dev-lang-java","download_url":"https://codeload.github.com/ev3dev-lang-java/usb-devices/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ev3dev-lang-java%2Fusb-devices/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32465009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["arduino","bno055","brickpi","ev3","ev3dev","java"],"created_at":"2024-11-10T21:17:09.055Z","updated_at":"2026-04-30T12:32:22.920Z","avatar_url":"https://github.com/ev3dev-lang-java.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# usb-devices\n\nA Java library to manage USB devices like LIDARs, Arduino boards, IMUs, GPS, etc...\n\n## Devices supported\n\n## 1. 2D LIDAR\n\nThe library supports SLAMTEC A1 \u0026 A2 models\n\n![](https://raw.githubusercontent.com/ev3dev-lang-java/usb-devices/develop/docs/images/rplidar_a2.png)\n\nExample using a RPLIDAR A2\n\n``` java\npackage examples;\n\nimport ev3dev.sensors.slamtec.RPLidarA1;\nimport ev3dev.sensors.slamtec.RPLidarProviderListener;\nimport ev3dev.sensors.slamtec.model.Scan;\nimport lombok.extern.slf4j.Slf4j;\n\nimport java.util.concurrent.atomic.AtomicInteger;\n\npublic @Slf4j class Demo3 {\n\n    private static AtomicInteger counter;\n\n    public static void main(String[] args) throws Exception {\n\n        log.info(\"Testing RPLidar on a EV3Dev with Java\");\n        final String USBPort = \"/dev/ttyUSB0\";\n        final RPLidarA1 lidar = new RPLidarA1(USBPort);\n        lidar.init();\n        lidar.addListener(new RPLidarProviderListener() {\n            @Override\n            public void scanFinished(Scan scan) {\n                //log.info(\"Iteration: {}, Measures: {}\", counter.incrementAndGet(), scan.getDistances().size());\n                log.info(\"Measures: {}\", scan.getDistances().size());\n                scan.getDistances()\n                        .stream()\n                        .filter((measure) -\u003e measure.getQuality() \u003e 10)\n                        .filter((measure) -\u003e (measure.getAngle() \u003e= 345 || measure.getAngle() \u003c= 15))\n                        .filter((measure) -\u003e measure.getDistance() \u003c= 50)\n                        .forEach(System.out::println);\n            }\n        });\n        for(int x = 0; x \u003c= 10; x++) {\n            lidar.scan();\n        }\n        lidar.close();\n        log.info(\"End\");\n        System.exit(0);\n    }\n\n}\n\n```\n\n## 2. Arduino\n\n### Arduino 9 axes motion shield (BNO055)\n\nhttp://www.arduino.org/products/shields/arduino-9-axes-motion-shield\n\n![](https://raw.githubusercontent.com/ev3dev-lang-java/usb-devices/develop/docs/images/Arduino-9-Axes-Motion-Shield.jpg)\n\nExample using the Arduino + Shield:\n\n``` java\n\npackage examples;\n\nimport ev3dev.actuators.Sound;\nimport ev3dev.arduino.sensors.bn055.BNO055;\nimport ev3dev.arduino.sensors.bn055.BNO055Listener;\nimport ev3dev.arduino.sensors.bn055.model.BNO055Response;\nimport ev3dev.arduino.sensors.bn055.model.Euler;\nimport ev3dev.arduino.sensors.bn055.model.Euler;\nimport ev3dev.sensors.Battery;\nimport ev3dev.sensors.Button;\nimport lombok.extern.slf4j.Slf4j;\n\npublic @Slf4j class BNO055TurnTest {\n\n\tpublic static void main(String[] args) throws Exception {\n\n\t\tfinal String port = \"/dev/ttyACM0\";\n\t\tfinal BNO055 bno055 = new BNO055(port);\n\t\tbno055.init();\n\n\t\tlog.debug(\"{}\", Battery.getInstance().getVoltage());\n\n\t\tbno055.addListener(new BNO055Listener() {\n\n\t\t\t@Override\n\t\t\tpublic void dataReceived(final BNO055Response response) {\n\n\t\t\t\tif(response.getEuler() != null){\n\n\t\t\t\t\tfinal Euler euler = response.getEuler();\n\n\t\t\t\t\tlog.debug(\"Heading: {}\", euler.getHeading());\n\n\t\t\t\t\tif( (euler.getHeading() \u003e 90.0f) \u0026\u0026\n\t\t\t\t\t\t(euler.getHeading() \u003c= 100.00f)) {\n\n\t\t\t\t\t\t//Sound.getInstance().beep();\n\t\t\t\t\t\tlog.info(\"REACHED\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\n\t\tButton.waitForAnyPress();\n\t\tlog.debug(\"{}\", Battery.getInstance().getVoltage());\n\t\tbno055.close();\n\t\tlog.info(\"Closing connection with Arduino\");\n\n\t}\n}\n\n```\n\n**Video:**\n\nhttps://www.youtube.com/watch?v=OY2B7B0Qi2Y\n\n## 3. GPS\n\nExample connecting with a USB GPS\n\n![](https://raw.githubusercontent.com/ev3dev-lang-java/usb-devices/develop/docs/images/usb-gps.jpg)\n\n``` java\npackage examples;\n\nimport ev3dev.sensors.gps.GenericGPS;\nimport lombok.extern.slf4j.Slf4j;\n\n@Slf4j\npublic class GenericGPSTest {\n\n\tpublic static void main(String[] args) throws Exception {\n\n\t\tfinal String port = \"/dev/ttyACM0\";\n\t\tfinal GenericGPS gps = new GenericGPS(port);\n\t\tgps.init();\n\n\t\t//This method block main thread 10 seconds\n\t\ttimeCounter(10);\n\n\t\tgps.close();\n\t\tlog.info(\"Closing connection with the USB GPS Device\");\n\n\t\tlog.info(\"LAT: {} {}, LAT: {} {}, ALT: {}\", gps.getLatitude(), gps.getLatitudeDirection(), gps.getLongitude(), gps.getLongitudeDirection(), gps.getAltitude());\n\t\tlog.info(\"DATE: {}, TIMESTAMP: {}\", gps.getDate(), gps.getTimeStamp());\n\t\tlog.info(\"NSTAT: {}\", gps.getSatellitesTracked());\n\n\t}\n\n\tprivate static void timeCounter(final int seconds) throws InterruptedException {\n\t\tlog.info(\"Start reading\");\n\t\tfor(int x = 0; x \u003c= seconds; x++){\n\t\t\tlog.info(\"Iteration: {} \\n\\n\", x);\n\t\t\tThread.sleep(1000);\n\t\t}\n\t}\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fev3dev-lang-java%2Fusb-devices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fev3dev-lang-java%2Fusb-devices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fev3dev-lang-java%2Fusb-devices/lists"}