{"id":22887528,"url":"https://github.com/kevinthedang/iot-nerf-tank","last_synced_at":"2026-04-27T22:32:57.190Z","repository":{"id":156702140,"uuid":"600221991","full_name":"kevinthedang/IoT-nerf-tank","owner":"kevinthedang","description":"IoT Nerf Tank Project that utilizes Python, MQTT, and AWS to pass information from backend service with front-end controls.","archived":false,"fork":false,"pushed_at":"2024-06-23T18:22:39.000Z","size":2604,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T19:13:59.893Z","etag":null,"topics":["aws","iot","tanks"],"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/kevinthedang.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":"2023-02-10T21:28:43.000Z","updated_at":"2024-12-17T22:41:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"ff0fde2e-4418-48a5-8da3-4f276876cfd8","html_url":"https://github.com/kevinthedang/IoT-nerf-tank","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kevinthedang/IoT-nerf-tank","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinthedang%2FIoT-nerf-tank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinthedang%2FIoT-nerf-tank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinthedang%2FIoT-nerf-tank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinthedang%2FIoT-nerf-tank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kevinthedang","download_url":"https://codeload.github.com/kevinthedang/IoT-nerf-tank/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinthedang%2FIoT-nerf-tank/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32358509,"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":["aws","iot","tanks"],"created_at":"2024-12-13T20:34:55.091Z","updated_at":"2026-04-27T22:32:57.171Z","avatar_url":"https://github.com/kevinthedang.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003eIoT Nerf Tank\u003c/h1\u003e\n    \u003ch3\u003eDestruction on Treads and Money well spent\u003c/h3\u003e\n    \u003cp\u003e\u003ca href=\"#\"\u003e\u003c/a\u003e\u003ca href=\"https://opensource.org/license/mit\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/License-MIT-darkgreen.svg\" /\u003e\u003c/a\u003e\n    \u003cp\u003e\u003cimg alt=\"tank\" src=\"media/PXL_20230328_231253825.jpg\" width=\"500px\" /\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## Table of Contents\n* [Description](#description)\n* [Libraries](#libraries--modules)\n* [To Run](#to-run--test)\n* [Commands](#commands)\n* [Parts](#parts)\n* [Credit](#credit)\n\n## Description\nFor this project, we were inspired to combine a tank chassis with a nerf turret to create a tank that will be connected to a web server. The server will send json messages to certain topics on AWS where the tank (Raspberry Pi) will receive the messages through a proxy and execute the parsed commands.\n\n## Libraries / Modules\n* Front-End\n    * [React](https://react.dev/)\n    * [Vite](https://vitejs.dev/)\n    * [Axios](https://axios-http.com/docs/intro)\n* Back-end\n    * [aws-iot-device-sdk](https://github.com/aws/aws-iot-device-sdk-js)\n    * [Cors](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)\n    * [Express](http://expressjs.com/en/starter/installing.html)\n* AWS-Tank Proxy:\n    * [awscrt](https://pypi.org/project/awscrt/)\n    * command_line_utils.py\n        * [awsiot-python-sdk](https://github.com/aws/aws-iot-device-sdk-python-v2)\n            * `mqtt_connection_builder.py` (should be in the `awsiot` directory)\n                * If there is a error on call, the proxy could also depend on `mqtt5_client_builder.py`\n* Tank Controller\n    * [RPI.GPIO](https://pypi.org/project/RPi.GPIO/)\n    * [gpiozero](https://pypi.org/project/gpiozero/)\n    * [paho-mqtt](https://pypi.org/project/paho-mqtt/)\n\n## To Run / Test\n* Get the [SDK](https://github.com/aws/aws-iot-device-sdk-python) onto the pi and have certificates ready from aws to run commands to the pi from the client\n    * create folder in the `~` directory called `certs` and place all of your certification files in there.\n    * You will need to run a certain command in the `ClientToJoxConnectionProxy` directory.\n        * `python3 internetJox.py --topic \u003cyour topic-name\u003e --ca_file ~/certs/AmazonRootCA1.pem --cert ~/certs/certificate.pem.crt --key ~/certs/private.pem.key --endpoint \u003cyour aws endpoint here\u003e`\n            * You can also you the topic that the server uses: `from_client`.\n    * You will also need to run another command in a seperate terminal called `RobotJoxControl.py` can be found in the `RobotJoxControl` directory\n        * Run the file as `./RobotJoxControl.py`.\n    * Now the Tank should be able to listen to outside commands:\n        * Jox \u003c--- AWSProxy \u003c--- ExternalClient(s)...\n    * `internetJox.py` is not required for any other type of control or connection you would like to make with the tank! It is only a sample of a connection from a separate (or same) network client.\n\n    \n* Pull client and server [code](https://github.com/kevinthedang/IoT-nerf-tank) directories\n    * You will need to add your certifications into the `server` directory as a folder named `certifs`\n    * You will also need a json file named `endpoint.json` to hold your endpoint for the server to connect to:\n        * i.e. `{ \"endpoint\": \"\u003cyour_endpoint_here\u003e\" }`\n    * NodeJs must be install to run the client and sever\n        * go into the `client` directory and run `npm i` then `npm start`\n        * go into the `server` directory and run `npm i` then `npm start`\n        * not the server should be up at `localhost:5173` most likely (or whatever vite tells you its hosted at)\n    * Now you can click on the buttons and the Pi should receive the messages!\n    * Jox \u003c--- AWSProxy \u003c--- ExpressClient \u003c---\u003e UserClient\n\n## Commands\n* There are not too many commands for the Tank to run, but knowing them can help customize how they can run (either from the proxy or from default calls)\n    * Treads:\n        * \"leftTread:drive:`\u003cvalue between -1 to 1\u003e`\"\n        * \"rightTread:drive:`\u003cvalue between -1 to 1\u003e`\"\n    * Turret: \n        * To fire the turret, call commands in order:\n            * \"flywheel:fire\"\n            * \"ammoRammer:fire\"\n        * Turret Elevation:\n            * \"gunElevator:`\u003c\"up\" or \"down\"\u003e:`:`\u003cdegrees\u003e`\"\n                * The current degrees cannot exceed 90\n        * Turret Left / Right:\n            * \"turretRing:`\u003c\"turnRight\" or \"turnLeft\"\u003e`:`\u003cdegrees\u003e`\"\n                * The current degrees cannot exceed 90\n        * Targeting Laser:\n            * \"targetingLaser:`\u003c\"on\" or \"off\"\u003e`\"\n        * Some commands can be set to 0 degrees (home angle):\n            * \"`\u003c\"gunElevator\" or \"turretRing\"\u003e`:setHome\"\n\n\n## Parts\n* Refer to: \n    * `Parts_List.xlsx` in the `extras` folder for all the turret parts bought\n    * [Bluetooth Nerf Turret - Hardware](https://www.littlefrenchkev.com/bluetooth-nerf-turret/#comp-k1tpv8jv)\n    * [SZDoit Black T300 Tank Chassis](https://www.amazon.com/SZDoit-Raspberry-Learning-Caterpillar-Platform/dp/B08HRTZNHW/ref=sr_1_1?crid=G1VU0HSPKZJ4\u0026keywords=tank+chassis+SZDoit+Black+T300+Robot+tracked+car+for+Arduino%2FRaspberry+pi\u0026qid=1676065310\u0026refinements=p_n_availability%3A2661601011\u0026rnid=2661599011\u0026s=toys-and-games\u0026sprefix=tank+chassis+szdoit+black+t300+robot+tracked+car+for+arduino%2Fraspberry+p%2Ctoys-and-games%2C113\u0026sr=1-1) (Alternative and cheaper options for chassis are fine too)\n    * [Raspberry Pi](https://www.adafruit.com/product/4296)\n    * Also Refer to `3D printing parts` for other parts to for mounting\n    * [Adafruit DC and Stepper Motor HAT for Raspberry Pi](https://www.adafruit.com/product/2348)\n        * [Documentation](https://learn.adafruit.com/adafruit-dc-and-stepper-motor-hat-for-raspberry-pi/using-dc-motors) for use\n\n## Credit\n* [Kole Davis](https://github.com/Kole0518)\n* [Drew Bogdan](https://github.com/DrewBogdan)\n* [Vincent Do](https://github.com/VinnyVinVince)\n* [Kevin Dang](https://github.com/kevinthedang)\n* [Aaron Crandall](https://github.com/acrandal)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinthedang%2Fiot-nerf-tank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkevinthedang%2Fiot-nerf-tank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinthedang%2Fiot-nerf-tank/lists"}