Arduino Neural Network Robot
by seanhodgins in Circuits > Arduino
42872 Views, 263 Favorites, 0 Comments
Arduino Neural Network Robot
This instructable is based on a 3 Part series I made for the Make YouTube Channel which shows you exactly how to prototype, design, assemble, and program, your own Arduino neural network robot. After watching the full series, you should have a better grasp on neural networks, PCB Design, and Arduinos in general. You don't have to make this exact robot(of course you can if you want) but I want to help people understand the process and what it takes to make a robot from start to finish. All of the files are open source and are available for you to download and modify. Follow these steps to make your own Arduino Neural Network Robot.
Be sure to also Subscribe to my personal YouTube Channel, where I release all sorts of cool open source projects that you can make yourself, for free!
Watch Part 1: Design and Prototype
If you're going to be designing your own robot, you need to prototype and test some components before you begin to design a custom circuit board.This video will do just that. We will finish off with a completed custom PCB to send away to be ordered!
Get the Parts and Tools.
Parts used for the prototyping:
Parts used for the Robot:
- Bill of Materials(FindChips)
- Motors 26:1 from Pololu
- Wheels from Pololu
- OLED from Aliexpress
- LiPo Battery
- Custom Circuit Board - OSHPark or PCBway
Tools:
Prototype and Develop.
If you're making your own design, now is the time to make a simple prototype that will allow you to test the components you will be using later on. This will help you sort out any problems you may encounter in the future. Make a breadboard version of the robot, and add some firmware to test out the components.
Create the Schematic.
With the prototype completed, you can use the exact same wiring to create your own schematic. This will be the map for when you start to work on your custom PCB. I personally use KiCad for my projects.
Design the PCB Outline.
I like to design the PCB in cad software before I start working on it in KiCad. This way you can export the design as a DXF Files and import it into your KiCad project. Makes it way easier to create cool looking circuit boards.
Start Placing Your Components and Routing Traces.
This is probably the most difficult part of the whole build, especially if you haven't done it before. Place the components into small sub groups. This helps organize things prior to placing them on the board. Then take the sub groups and start placing in locations on the board. Its easiest to centralize the microcontroller, then look at where the lines have to go and place the components accordingly. Start routing traces. Take your time and just work away at it, moving things as necessary.
Send Your Board Off to Be Manufactured.
Pick a PCB manufacturer to create the real custom PCB you just made! I use OSHPark and PCBWay depending on my needs.
If you want to just directly order the board I made you can purchase it here from OSHPark or here from PCBWay.
Watch Part 2: Assembly and Programming
Now that you have ordered your PCB, check out part 2 of the video series. This part I will show you how to assemble the board, and give you some tips and tricks along the way. Check it out!
Organize Your Components.
I like to separate the components into different types, surface mount discreet(resistors, capacitors), surface mount chips(integrated circuits), then lastly through hole components(this will be installed last). The resistors and caps will be installed first, then the ICs. Also its nice to start with the smallest(shortest) components first, so you don't end up hitting things with the tweezers.
Add Your Solder Paste.
You need to apply solder paste to each one of the pads on the board where a component is being installed.
Start Adding Components!
Like I mentioned start with the shortest components and work up, starting with the resistors, caps, any discreet components. Then move onto the integrated circuits. We will install the through hole components later.
Stick It in the Oven.
Time to cook it! In my case(with my cheap toaster over) I set the oven to the max setting 230C, turn it on, and wait for the solder to "reflow". After that happens, I wait a few seconds, then take it out of the oven and let it cool off. Its a very simple process.
Fix the Components.
Some components may have shifted or not soldered properly. Slowly go over the board and visually inspect it for problems. Fixing them with your soldering iron. Fix any bridged pins on the IC components as well. The video covers various techniques.
Solder the Through Hole Components.
Time to soldering on the remaining through-hole components. No particular order, but again doing the shortest components first is ideal.
Add a Bootloader
At this point, since everything is on, its time to power up the device and add a bootloader. Use the Atmel ICE on the programming header. You will need to power the device separately, either with another USB connected, or the batter. Open Atmel Studio 7 and Follow the instructions in the video.
The Bootloader can be found here: https://github.com/IdleHandsProject/makennbot
Run Your Test Program.
We developed the program earlier to test the robots features. If your schematic has not changed at all you should be able to use the same test program. Try it out! It works!
Watch Part 3: Neural Networks and Arduinos
In the third and final part of the series we talk about Neural Network and running them on an Arduino. I show you how the robot can be controlled with and without one. Its an interesting experiment. This video will cover some basics to Neural Networks and should hopefully help you understand a little bit more of what is happening.
Program the Robot With the Neural Network Program.
Head to the GitHub to download the firmware for the robot. If you follow along in the video it should help you understand what the different sections of the code are doing. Program it, and train your neural network!
Run Some Tests!
Now that you have gained a little more knowledge in neural networks, play with the program, setting, input, etc. and see how it affects it. Also see if you can come up with even better ways to train or control the robot. This definitely isn't perfect, or the best way by a long shot.
Have Fun With Your Little Neural Network Bot!
Support These Projects!
If you think I have earned it, please consider subscribing to my YouTube Channel. I will be doing a lot more cool open source projects like this one in the future, and I would love for you to join along.
If you want to support me on the next level, and have some cash to spare. Please check out my Patreon. The more patrons I receive, the more complicated and intricate projects I can develop and share to the world. I want to make cool stuff, and make that cool stuff free and public for everyone else to make as well.