{"id":15491785,"url":"https://github.com/tristanpenman/rover-kit","last_synced_at":"2025-03-28T16:42:46.089Z","repository":{"id":74416312,"uuid":"481798927","full_name":"tristanpenman/rover-kit","owner":"tristanpenman","description":"Adventures in building a toy rover and controlling it using Python","archived":false,"fork":false,"pushed_at":"2022-04-19T12:00:14.000Z","size":8513,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-19T10:23:56.236Z","etag":null,"topics":["python","raspberry-pi","rover","ultrasonic"],"latest_commit_sha":null,"homepage":"","language":"Python","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/tristanpenman.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":"2022-04-15T01:25:13.000Z","updated_at":"2022-04-15T04:44:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"1c9022af-6c92-43d7-8322-7e25e9880fa5","html_url":"https://github.com/tristanpenman/rover-kit","commit_stats":{"total_commits":22,"total_committers":1,"mean_commits":22.0,"dds":0.0,"last_synced_commit":"b2c4d8c886878c32971084d718732915b0ca8f39"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tristanpenman%2Frover-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tristanpenman%2Frover-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tristanpenman%2Frover-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tristanpenman%2Frover-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tristanpenman","download_url":"https://codeload.github.com/tristanpenman/rover-kit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246068238,"owners_count":20718501,"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":["python","raspberry-pi","rover","ultrasonic"],"created_at":"2024-10-02T07:56:24.541Z","updated_at":"2025-03-28T16:42:46.035Z","avatar_url":"https://github.com/tristanpenman.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rover Kit\n\nAdventures in building a toy rover that can respond to commands over Wi-Fi and send back readings from ultrasonic distance sensors.\n\n![Sensor mounted, not quite wired up...](./photos/05-sensors-mounted.jpeg)\n\n## Parts\n\nThe rover is based on the following parts:\n\n* [Whippersnapper Runt Rover](https://www.servocity.com/whippersnapper-runt-rover)\n* [Raspberry Pi Zero W](https://www.raspberrypi.com/products/raspberry-pi-zero-w)\n* [Adafruit DC \u0026 Stepper Motor HAT](https://www.adafruit.com/product/2348)\n* [HC-SR04 Ultrasonic Distance Sensor](https://www.sparkfun.com/products/15569) (x4)\n\nThis is all wired up with an assortment of resistors, jumper wires, and breadboards.\n\nPower to the Motor HAT is provided by a 12V battery pack. And power to the Raspberry Pi is provided by a portable USB power supply.\n\n### Inspiration\n\nThis project is inspired a series of blog posts that Mat Kelcey wrote about building a rover (I've used the same basic parts) and training it to move around autonomously.\n\nMy project is less ambitious. Seeing what he did made me think it would be fun just to tackle it as a hardware hacking project.\n\n### Early Prototype\n\nWhen I first started this project, I was using a regular Raspberry Pi 3.\n\nI eventually switched to using a Raspberry Pi Zero W, so that power usage and space requirements would be reduced.\n\n![Switching to Raspberry Pi Zero W](./photos/01-switching-to-pi-zero.jpeg)\n\nThe two front sensors were not attached when I took this photo.\n\nPart way through soldering the final sensor interface board (this was very slow, because I'm new to soldering):\n\n![Half way through sensor interface board](./photos/03-half-way.jpeg)\n\nIt all felt much neater with the new interface board. Now to figure out wiring:\n\n![Figuring out wiring after soldering was complete](./photos/04-figuring-out-wiring.jpeg)\n\nOther photos can be found [here](./photos).\n\n## Python\n\nThe scripts for controlling the rover are written in Python, and rely on some very useful libraries:\n\n* [Adafruit_CircuitPython_MotorKit](https://github.com/adafruit/Adafruit_CircuitPython_MotorKit)\n* [RPi.GPIO](https://pypi.org/project/RPi.GPIO)\n\nTest scripts:\n\n* [test-motors.py](./src/test-motors.py) - starts and stops each motor in turn\n* [test-sensors.py](./src/test-sensors.py) - outputs a series of ultrasonic sensor readings\n\nMain control script:\n\n* [rover-control.py](./src/rover-control.py) - runs a web server that can be used to control the rover\n\n## Rover Control\n\nThe _Rover Control_ frontend, which is served by the [rover_control.py](./src/rover_control.py) script, is pretty ordinary HTML and JavaScript. It currently provides the following commands:\n\n* Forwards\n* Backwards\n* Spin Clockwise\n* Spin Counter-clockwise\n\nThe code can be found in [src/web](./src/web).\n\n## License\n\nThis code is licensed under the MIT License.\n\nSee the LICENSE file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftristanpenman%2Frover-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftristanpenman%2Frover-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftristanpenman%2Frover-kit/lists"}