Jump to main content
Your email has not been verified. Verify email now ›

Build a Model Satellite with Arduino

Abstract

Have you ever wondered how satellites steer themselves? How can a spy satellite aim its camera? How can a satellite keep its solar panels oriented toward the sun? In this project, you will learn about one method satellites use to control their orientation, called a reaction wheel, and build your own working prototype of a miniature satellite.

Summary

Areas of Science
Difficulty
Method
Time Required
Average (6-10 days)
Prerequisites

Previous Arduino experience is recommended. See our How to Use an Arduino page for tutorials.

Material Availability

An Arduino kit is available from our partner Home Science Tools®. Additional supplies are required to complete the project. See Materials list for details.  

Cost
Average ($50 - $100)
Safety

No issues

Credits
Science Buddies is committed to creating content authored by scientists and educators. Learn more about our process and how we use AI.

Objective

Design and build a model Arduino satellite with a reaction wheel.

Introduction

How do satellites steer in space? Satellites are launched into orbit around Earth. While in orbit, satellites may need to control their orientation, or attitude, for a variety of reasons. A communications satellite (satellites that help send data like cell phone or internet signals) might need to point an antenna toward a certain location on the ground. A spy satellite (satellites typically used by governments to take pictures of Earth from space) may need to carefully aim a sensitive camera or telescope. A satellite might need to aim its solar panels toward the sun to maximize solar power generation. Satellites might also need to make small corrections to their orientation from disturbances caused by things like solar radiation pressure, Earth's magnetic field, or atmospheric drag.

Satellites can use a variety of different methods and technologies to control their attitude. One method is to use thrusters that eject mass. If the thruster is offset from the satellite's center of mass, this will generate a torque and cause the satellite to rotate. Thrusters can be chemically-based (burning a fuel and ejecting the exhaust) or electrical (for example, ejecting ions). Another method is to use magnetic torquers, or magnetorquers for short, which use electromagnetic coils to interact with Earth's magnetic field, generating torques on the satellite. A third method is the reaction wheel. When the wheel spins in one direction, due to conservation of angular momentum, the satellite's body will spin in the opposite direction. A combination of three reaction wheels can control the satellite's rotation in three-dimensional space (Figure 1).

Figure 1. A 3-axis reaction wheel system.

In this project, you will build a model satellite that uses a single reaction wheel to aim itself at a light source. The satellite will hang from a string, allowing it to rotate about a single axis (Figure 2). Two light sensors, called photoresistors, detect which way light is coming from, and the satellite spins the reaction wheel to rotate toward the light. This could help a real satellite keep its solar panels pointed towards the Sun in space. While a real satellite would need to do this in three dimensions, since you are doing your experiment on Earth and not in orbit, you will just demonstrate rotation about a single axis. 

Figure 2. A model Arduino satellite suspended from a string.

You can choose whether to add other sensors or accessories to your satellite, for example, an accelerometer to detect the direction of gravity, or light-emitting diodes (LEDs) as status indicators. See our extensive list of Arduino tutorials linked in the Bibliography for instructions on many other Arduino-compatible parts. 

Terms and Concepts

Questions

Bibliography

Materials and Equipment Buy Kit

Recommended Project Supplies

Get the right supplies — selected and tested to work with this project.

View Kit

Disclaimer: Science Buddies participates in affiliate programs with Home Science Tools®, Amazon.com, Carolina Biological, and Jameco Electronics. Proceeds from the affiliate programs help support Science Buddies, a 501(c)(3) public charity, and keep our resources free for everyone. Our top priority is student learning. If you have any comments (positive or negative) related to purchases you've made for science projects from recommendations on our site, please let us know. Write to us at [email protected].

Experimental Procedure

This project follows the Engineering Design Process. Confirm with your teacher if this is acceptable for your project, and review the steps before you begin.

Build Your Circuit

  1. Read about the engineering design process and think about constraints and criteria for your satellite before you proceed. See the link in the Bibliography.
  2. Assemble your circuit as shown in Figures 3, 4, and 5. You can also access a Tinkercad Circuits version of the simulation here. The circuit uses a part called an H-bridge to control a motor so it can spin in both directions and act as a reaction wheel.
    1. For now, keep both your Arduino and your breadboard flat on the table.
    2. Save space on the top half of your breadboard. You will be taping your motor and 9V battery there later.
    3. Note that your breadboard may have the left/right orientation of the positive (+) and negative (-) buses reversed. Always base your connection on whether it should be positive or negative, not the left/right position.
    4. Put the H-bridge chip in the breadboard so the notch is facing up (toward row 1). The chip has 16 pins, labeled counter-clockwise starting at the top left. Use jumper wires to connect the pins as follows:
      1. Pin 1 to positive bus.
      2. Pin 2 to Arduino pin 4.
      3. Pin 3 to motor positive wire.
      4. Pin 4 to negative bus (also called ground).
      5. Pin 5 to negative bus.
      6. Pin 6 to motor negative wire.
      7. Pin 7 to Arduino pin 2.
      8. Pin 8 to positive bus.
      9. Pin 12 to negative bus.
      10. Pin 13 to negative bus.
      11. Pin 16 to positive bus.
      12. Pins not listed here remain disconnected (they can be used to control a second motor).
    5. Note: this configuration will power the motor from the Arduino's 5V pin (the Arduino will be powered by a 9V battery). Normally, you would need a separate, external battery for a motor, because it will drain the 9V battery very quickly. However, for this project, you want to keep the satellite lightweight, and using the 9V battery is OK for quick demonstrations. See this video about how to power an Arduino project for more details.
    6. Connect a photoresistor and 10kΩ resistor in series to form a light sensor:
      1. Place the resistor's legs in two different rows of the breadboard. Make sure they are not in the same row as any of the H-bridge pins.
      2. Place one leg of the photoresistor in the same row as one of the resistor's pins. Place the other leg in a separate row.
      3. Connect the free end of the resistor to the negative bus.
      4. Connect the free end of the photoresistor to the positive bus.
      5. Connect the middle (the row where the two parts meet) to Arduino pin A2.
    7. Repeat step 2.e on the other side of your breadboard (across the gap in the middle), but connect this sensor to Arduino pin A3. 
    8. Connect power to your breadboard:
      1. Connect the opposite positive buses together.
      2. Connect the opposite negative buses together.
      3. Connect the Arduino's 5V pin to a positive bus.
      4. Connect the Arduino's GND pin to a negative bus.
    9. Optionally, connect your two solar panels. Important: only connect your solar panels directly to the Arduino if their maximum output is 5V or less. Higher voltages can damage your Arduino.
      1. Connect each solar panel's negative wire to a negative bus. 
      2. Connect the solar panels' positive wires to Arduino pins A0 and A1. 
Figure 3. Close-up view of the breadboard.
Figure 4. Zoomed-out view of the circuit showing the optional solar panels.
Figure 5. Schematic view of the circuit.
  1. Download the Arduino example code. Read through the commented code so you understand how it works.
  2. Upload the code to your Arduino. Open the serial monitor (Tools→Serial monitor) and look at the light sensor values. Make sure your body is not blocking or shading the photoresistors when you do this.
  3. The values may fluctuate slightly even if you are not moving. That is OK. Enter the approximate values you see for the light1Baseline and light2Baseline variables in the code, then re-upload the code.
  4. The motor should not spin. Now, try either covering one of the photoresistors with your finger or shining a flashlight directly at one of them but not the other. The motor should spin. 
  5. Cover the other photoresistor (or shine a flashlight on it). The motor should spin in the other direction.
  6. Try adjusting the deadband variable in the code. This will change the range of light sensor reading differences in which the motors will not spin. You do not want this value to be zero—since the sensor readings are slightly noisy, this would cause the motor to constantly spin back and forth when the readings are close. 

Build Your Satellite

So far, you have built a working prototype circuit on a breadboard. Your goal for this project is to build a working model satellite that can demonstrate reaction wheel control around a single axis. This is an engineering design project, so there is no single right or wrong way to do it. Figures 6 and 7 show two possibilities for mounting your satellite. Figure 6 shows the satellite hanging from a string. Figure 7 shows the satellite mounted on a vertical wooden dowel through a clear plastic straw. Both methods allow the satellite to rotate, but each one has advantages and disadvantages. This section of the procedure will show you how to build the satellite shown in the figures, but you do not have to follow this exact design.

Figure 6. Model satellite hanging from string. The advantage of this approach is that the satellite can rotate freely with very little friction. The disadvantage is that torsion in the string tries to rotate the satellite back in the opposite direction when it turns.
Figure 7. Satellite mounted on a wooden dowel through a straw. The advantage of this approach is that the satellite can rotate freely about the dowel without any restoring torque. The disadvantage is that there is friction between the straw and the wood at the base due to the weight of the satellite. This particular satellite was too heavy to rotate in this configuration, however, it may work without the added weight of the solar panels.

To build a satellite similar to the one shown in this project, follow these steps. Refer to Figures 8 through 11.

  1. Temporarily disconnect wires that go from the breadboard to the Arduino.
  2. Peel the adhesive backing off the breadboard.
  3. If you will be mounting solar panels, attach popsicle sticks to the adhesive backing so they stick out to the sides.
  4. Attach a straw vertically in the middle of the breadboard. This is useful for a later step, even if you do not plan to mount the satellite on a wooden dowel.
  5. Using double-sided tape and pieces of cardboard as needed, attach the Arduino to the back side of the breadboard (Figure 8).
  6. Mount the motor and 9V battery to the empty area on the breadboard using tape or glue (Figure 9).
  7. Press a cork onto the shaft of the motor to give it added mass.
  8. Bend the photoresistors around the edge of the breadboard so they face "forward" (toward the Arduino side).
  9. Reconnect wires between the Arduino and the breadboard, carefully wrapping them from front to back.
  10. Attach a small piece of cardboard between the photoresistors (you can glue or tape it to the straw). This helps block light that is hitting one photoresistor from hitting the other one (Figure 10).
  11. Drill a small hole in the top edge of the breadboard and screw in a small eye hook (Figure 11).
  12. Tie a string to the eye hook.
  13. Clamp the other end of the string to a shelf.
  14. Your satellite is now ready to test! Make sure it can rotate freely, and then move on to the next section.
Figure 8. Front view of the Arduino side of the satellite. Wires plugged into the Arduino wrap around to the breadboard on the back.
Figure 9. Back view of the satellite. The motor and 9V battery are attached to the breadboard.
Figure 10. Bottom view of the satellite, with a cardboard divider between the photoresistors. 
Figure 11. Top view of the satellite with an eye hook screwed into the breadboard.

Test Your Satellite

  1. Disconnect the USB cable from your Arduino if you haven't already. The USB cable will prevent the satellite from spinning freely.
  2. Make sure the string is completely untwisted and the satellite is not rotating on its own due to torsion in the string.
  3. Plug the 9V battery into the Arduino using the snap connector and barrel jack. This will power on the Arduino and cause the program to immediately start running.
  4. The lighting conditions may have changed since you now have the satellite hanging vertically compared to when your circuit was sitting flat on the table. Ideally, your motor should not spin by default. Try to make sure no asymmetric shadows or light sources are falling on the photoresistors. You may need to adjust the lighting in the room, for example, by turning a lamp on or off, or by opening or closing window curtains.
  5. You may need to recalibrate your baseline light sensor readings while your satellite is vertical. This may require a longer USB cable so you can connect your satellite to your computer while it is hanging. 
  6. Once you have calibrated your sensors so the motor does not spin when the satellite is just hanging there, try aiming a flashlight at one of the photoresistors. The motor should spin, causing the entire satellite to rotate in the opposite direction and point towards the light source.
    1. Note: if your satellite rotates the wrong way (spins away from the light source), temporarily disconnect the 9V battery. Switch the motor's positive and negative wire connections to the H-bridge. This will reverse the motor's spin direction and should fix the problem.
  7. If you shine your flashlight on the other photoresistor, does the satellite spin in the opposite direction?
  8. If you shine the flashlight evenly on both photoresistors at once, does the satellite hold still? 
  9. If you have trouble with your satellite's performance, what changes could you make to the physical design or the code to make it work better?
  10. How could this behavior help a real satellite aim its solar panels towards the sun?
icon scientific method

Ask an Expert

Do you have specific questions about your science project? Our team of volunteer scientists can help. Our Experts won't do the work for you, but they will make suggestions, offer guidance, and help you troubleshoot.

Variations

  • Can you use the solar panel voltages directly to control your satellite's rotation without using the photoresistors at all?
  • Can you use a proportional controller instead of a simple on/off controller to control your satellite's rotation? A proportional controller makes the motor spin faster as the difference between the light sensor readings gets bigger. You can use the Arduino analogWrite command on a pin connected to H-bridge pin 1 to control the motor's speed.
  • Can you add LEDs to your satellite as indicators for the motor status? For example, one LED for clockwise rotation and one for counter-clockwise?
  • Can you add other sensors to your satellite? See our list of Arduino tutorials for ideas.

Careers

If you like this project, you might enjoy exploring these related careers:

Career Profile
Humans have always longed to fly and to make other things fly, both through the air and into outer space—aerospace engineers are the people that make those dreams come true. They design, build, and test vehicles like airplanes, helicopters, balloons, rockets, missiles, satellites, and spacecraft. Read more
Career Profile
Just as a potter forms clay, or a steel worker molds molten steel, electrical and electronics engineers gather and shape electricity and use it to make products that transmit power or transmit information. Electrical and electronics engineers may specialize in one of the millions of products that make or use electricity, like cell phones, electric motors, microwaves, medical instruments, airline navigation system, or handheld games. Read more
Career Profile
Mechanical engineers are part of your everyday life, designing the spoon you used to eat your breakfast, your breakfast's packaging, the flip-top cap on your toothpaste tube, the zipper on your jacket, the car, bike, or bus you took to school, the chair you sat in, the door handle you grasped and the hinges it opened on, and the ballpoint pen you used to take your test. Virtually every object that you see around you has passed through the hands of a mechanical engineer. Consequently, their… Read more
Home Science Tools®

Contact Us

Our kits are developed in partnership with Home Science Tools®. If you have purchased a kit for this project, Home Science Tools® is pleased to answer any questions.

In your email, please follow these instructions:
  1. Include your Home Science Tools® order number.
  2. Please describe how you need help as thoroughly as possible:

    Examples

    Good Question I'm trying to do Experimental Procedure step #5, "Scrape the insulation from the wire. . ." How do I know when I've scraped enough?
    Good Question I'm at Experimental Procedure step #7, "Move the magnet back and forth . . ." and the LED is not lighting up.
    Bad Question I don't understand the instructions. Help!
    Good Question I am purchasing my materials. Can I substitute a 1N34 diode for the 1N25 diode called for in the material list?
    Bad Question Can I use a different part?

Contact Support

News Feed on This Topic

 
, ,

Cite This Page

General citation information is provided here. Be sure to check the formatting, including capitalization, for the method you are using and update your citation, as needed.

MLA Style

Finio, Ben. "Build a Model Satellite with Arduino." Science Buddies, 2 Oct. 2026, https://www.sciencebuddies.org/science-fair-projects/project-ideas/SpaceEx_p067/space-exploration/satellite-attitude-control-reaction-wheel. Accessed 2 Oct. 2026.

APA Style

Finio, B. (2026, October 2). Build a Model Satellite with Arduino. Retrieved from https://www.sciencebuddies.org/science-fair-projects/project-ideas/SpaceEx_p067/space-exploration/satellite-attitude-control-reaction-wheel


Last edit date: 2026-10-02
Top
Free science fair projects.