StuckAtPrototype / Racer

Apache License 2.0
2.29k stars 336 forks source link

Micro Racer Car - StuckAtPrototype

thank you for the overwhelmingly positve support!! such an inspiration to keep making fun open source content!

Youtube Video

A bit of a back-story of how this project came to be.

My Kickstarter failed, so I open sourced it

Sub if you like what you see.

Some pictures of the project

Picture of PCB car

Picture of PCB car

Hardware Remote for this car

https://github.com/StuckAtPrototype/Thumbtroller

Project Structure

The project consists of

  1. Firmware
  2. Hardware
  3. Mechanical
  4. Scripts

These are structured into their own files. I could have used submodules, but decided against it.

1. Firmware

Code for the little car. This lives on the ESP32

Requirements

2. Hardware

Schematic

PDF schematic included for your viewing pleasure.

PCBs

All the gerber files you'd need to send to a fab house.

Kicad

All the files you'd need to expand and work on this further. If you'd like.

3. Mechanical

Enclosure

All the step files you need to make one of these. Extrusion printer works well for this part.

Wheels

A bit of caution on this one.. you'll need an SLA printer.

4. Scripts

Did anyone say neural networks?

This folder has all the python code you'd need to train up your own neural network for the car. It also consists scripts that let you drive it using a keyboard -- just in case you dont want to make a physical controller.

Requirements

Training the neural network

Training the neural network is as simple as running the training script with the data in the color_data.txt file. For data format see the sample data in the file. You need to stick to the formatting.

To train run python trainer.py

Keyboard controller

To run the script python controller.py

Use w s a d for control. Modify the script for different speeds, etc

Protocol for motor control

60,1,60,1,5 -- translates to:

motor side A: speed 60, direction forward

motor side B: speed 60, direction forward

500 miliseconds run time

See firmware file motor.c if you need more details

What the project could use

  1. Cleanup, but thats true for almost anything out there
  2. Some fun code that makes the little car drive using the color sensor -- think very fancy line follower
  3. LLM integration -- ChatGPT driving a physical little robot? anyone? :)

If you take it further

Let me know if you ever make one of these, I'd love to see it. Seriously, that'd be exciting and inspiring to keep making my projects open source!


License

Apache 2.0 -- i.e. use as you'd like

http://www.apache.org/licenses/LICENSE-2.0


Special Thanks

Thanks to Michael Angerer for his open sourced esp32_ble_ota project. I used it to get BLE running in this project. His blog post and github repo are a great resource. Check it out. https://github.com/michael-angerer/esp32_ble_ota