Introduction: Arduino Rocket Guidance
Rocket guidance can be achieved 2 ways, thrust vectoring and fin angling. The way I am guiding my rocket is by using thrust vectoring. Basically, an Arduino with a gyroscope and an accelerometer tell servo motors which way to angle the engine, and the rocket will move to the opposite of the engine's thrust vector. Lets get this show started with some material lists!
Step 1: Material List
This section should give you a basic idea about what you will need, more details will be explained in future steps
1) Power distro board (Custom Made)
2) .25 inch Aluminum billet or 3/8 inch basswood (For the chassis)
3) Rocket Motor
4) MPU6050 6 axis gyro chip
5) Arduino
6) laser cutter
7) Computer
8) Metal Gear Servos
Step 2: Make the Power Distro. Board
Its critical to save weight on a rocket, and the power distro. board will take power from a 11v lipo battery and distribute it to the servo motors and to the arduino/sensors. Using the diagram i posted, make a distro board.
Step 3: Wire the Gyro to the Arduino
The gyroscope has to be wired to the arduino in a specific way for it to work/be read. Since this is a fairly cheap module, no directions were provided and I had to figure it out myself. Using the pictures, make a cable for the gyroscope.
Step 4: Make the Thrust Vectoring Frame
The thrust vectoring frame must be powerful enough to take the rocket motor's thrust and not break. For this reason I went with a custom plasma cut aluminum frame, although if you pick a smaller engine, you could go with a wooden one.
The 2 inner rectangles are going to be used to house the servo motors, while the outer circle moves in the x axis and the inner circle moves in the y axis. The rocket engine will sit in the inner circle. I lost the laser cutting files for this piece so you might have to piece it together yourself
Step 5: Attach Servos to the Frame
The servo motors I am using are metal geared and shave a fairly fast movement time (critical to rockets). The servos are attached to rods, which connect to both the inner and outer circle. I had to epoxy the servo motors in because they kept coming loose.
Step 6: Make the Electronics Bay
The electronics bay will house the arduino and power board, along with the battery, and will keep these items safe from the rocket's thrust. You have to be creative here and I made mine so I could slide a tube over it for launch
Step 7: Programming
The code here will let the rocket fly straight up without fins using artificial stabilization, great for the first test flight!
Attachments

Participated in the
Microcontroller Contest

Participated in the
Tech Contest
21 Comments
2 years ago
Has anyone ever flown this on a rocket, I am looking to build this for in flight use.
Also what are the springs you used to connect the servos to the motor?
Thanks,
2 years ago
Nice! With this knowledge and the tannerite shaped charge, I shall build my own ATGM.
Question 3 years ago on Step 6
How does the module allow for the ejection of the nosecone and parachute? Will the servos and circuts be damaged by the ejection charge released by the engine?
Answer 3 years ago
Remove the ejection charge or Make the tvc mount (the motor holder hollow from top so the ejection charge won't break the mount and put fire waddings under the electronics
Check out peyspace,hyer, Delta space systems ,bps.space,canine rocket technologies to find out more
Question 3 years ago
I know its been a while since you've posted this project, but was curious if you have flown this system on a model rocket yet? Noticed your code was a proportional controller and would be relatively unstable in flight.
Question 3 years ago
sir can you please mail me the cnc cutout file please
it would be of great help!
Question 4 years ago on Step 7
I am trying this project out and I am having some trouble with the code. It says :
Multiple libraries were found for "Wire.h"
Used: C:\Users\Family\Documents\Arduino\libraries\Wire
Not used: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\libraries\Wire
Multiple libraries were found for "I2Cdev.h"
Used: C:\Users\Family\Documents\Arduino\libraries\I2Cdev
Not used: C:\Users\Family\Documents\Arduino\libraries\MPU6050
exit status 1
Error compiling for board Arduino Nano.
Any help would be great.
Question 4 years ago on Step 2
Uh can you provide the link to your circuit board
Tip 4 years ago on Step 3
Could you please add the diagram for the power distor board
4 years ago
Hello
thanks for sharing this awesome idea. I am not really in this programming theme but i wanted to try it still. So i ordered everything on amazon and downloaded the Arduino open source (windows installer) and then I ran into a problem when I was uploading the file, as you can tell from the image I uploaded. You seem like a smart guy so i hope you ( or anyone else) can help me.
thanks for your help
Daniel
Reply 4 years ago
Tried the sketch using a Mega2560 connected to a mpu6050 and a servo without problems. The servo reacts to the movement of the MPU6050. The next step is to design and build the structure.
Reply 4 years ago
Hello
Yes this was really helpful. And I am really happy that there is quiet a simple solution.
Would you maybe tell me how you would build that power distro board? The pictures on the article aren't really in good resolution. Would be very kind of you.
Thanks for your help
Daniel
Reply 4 years ago
I had the same issue when I tried to run the program and I needed to download the I2C library from GitHub (https://github.com/rambo/I2C). Then I had to unzip the file and go into the folder and rename the file called SoftI2CMaster.h to I2Cdev.h and the folder to I2Cdev. Next, I went into the Arduino program and went Sketch -> Include library -> Add .ZIP file. Then find the folder that you renamed I2Cdev, select the folder and click Choose. I don't know where the file will be on Windows but on Mac, it was under Documents -> Arduino -> Libraries.
Once you have done this you will encounter a similar error with the next line of code. Just download the Arduino MPU 6050 library (https://github.com/jarzebski/Arduino-MPU6050) and repeat the same process with adding it.
Next, you will encounter an error that says: 'class MPU6050' has no member named 'initialize'
The error happens with the line of code that says: mpu.initialize();
You can just change this to mpu.begin();
It has the same meaning as mpu.initialize(); it is just updated command with a different word to do the same function.
Finally, you will encounter an error that says: 'class MPU6050' has no member named 'getMotion6'
I havent figured out how to solve this issue yet. I think the issue is for a similar reason as the last error where it was an outdated command because the error message has the same format just with different terms or commands. I have yet to find the equivalent command in the new versions of the Arduino software.
I hope this helped
7 years ago
i am making a swing-fire [a swing fire is basically a javelin] so thanks for the design!
8 years ago on Introduction
Excellent!
8 years ago on Step 7
I have been experimenting a whole lot as of late with spin stabilised rockets and now I'm looking at venturing into the realms of GYRO stabilised rocketry. This Instructable is exactly what I need to make a start on my project.
Thank you for posting this up!
Much like AJManfield I'm very keen to see the final product perform in a real life scenario.
Power to ya!
8 years ago on Introduction
I was wondering what kind of response you got. I've been working on this type of thing, but the rocket starts out moving so fast that the hardware doesn't have time to react before its too late. What kind of latency do you get from sensing a deviation to adjusting for it in real life?
Also, have you considered using a PID or PD controller to adjust for overshoot?
8 years ago on Step 7
Also, do you have a video
8 years ago on Step 7
Did it work?
8 years ago on Introduction
Nice!
Would benefit from a micro instead of uno (for weight reduction)
Good project, I like