loading

There’s a growing movement of people who believe that our space agencies are underfunded and that humanity isn’t paying enough attention to our present accomplishments and future plans in space exploration. Well, I know one way to direct attention to something: Point at it. This is the first prototype of the International Space Station orbit tracking pointer. If that name isn’t explanatory enough, its one job is simply to point directly at the ISS wherever it is in space, a small but constant reminder of what humanity is capable of.

Watch the YouTube video for a quick intro to the project!

Rough parts list:

Step 1: Code

All the code I used for the project can be found at the project repository on GitHub. The code compiles using mbed on the Nucleo F401RE development board.

To use the code, follow the steps below.

1. Create an mbed account at https://developer.mbed.org/.

2. On the GitHub repository, click the "Save Zip" button and download to your hard drive.

3. On mbed, click the "Import" button, then the "Upload" tab. At the bottom, click the "Choose File" button and navigate to the zip file. Click the "Import!" button to import the code as a program in your mbed workspace.

4. You will also need the import the mbed library to your program. Under the import wizard, navigate to the "Libraries" tab, search "mbed", and drag the official mbed library to your program workspace on the left.

5. In the "main.cpp" file, edit the set_time variable on line 68. This is the time that the board will assume every time it is powered up (this is the biggest limitation of the prototype - that it does not have a persistent clock). This value is in Unix time, so you can use http://www.unixtimestamp.com/ to find the current time or convert a time in the future.

6. Also in "main.cpp," enter in the two-line element set of the satellite you wish to track on lines 90 and 91. For the International Space Station, you can use the first entry on this page: https://celestrak.com/NORAD/elements/stations.txt.

7. Finally, enter your location details into the variables on lines 94 through 96.

8. Compile "main.cpp" using the "Compile" button and save the build file to your Nucleo board.

Step 2: Assembly

For the pointer itself, you only need a stepper motor for azimuth control and a 180 degree servo for elevation. How it looks is up to you! I used a wooden base, and aluminum Actobotics parts to make everything look nice. Everything bolts together, so it’s great for prototyping, and if I get tired of it, I can just take it apart and build something new. I also used a slip ring so that the main shaft can spin indefinitely without twisting up the servo wires. The slipring I bought needed to be "adjusted" so it could fit in the shaft. I used my wood lathe for this, which I'm pretty sure was a violation of the warranty.

Note that if you change the gearing ratio for the stepper motor, you will also need to adjust the code to account for the change.

Step 3: Wiring

Wiring is pretty straightforward.

1. Put the Adafruit motor shield on top of the Nucleo board.

2. Connect the stepper motor to M1 on the motor shield.

3. Connect the servo to S1 on the motor shield.

4. Connect a 9 or 12 volt power supply to the power terminal block on the motor shield.

5. Wire a resistor of 5 to 10 kOhm between pin 4 and the 3.3v pin on the motor shield. Repeat with pin 5. These are pull up resistors for the i2c signal pins (how the motor shield communicates with the Nucleo board).

6. Cut the trace on the motor shield that goes to 5 volts for logic, and solder a jumper to allow the board to run on 3 volt logic.

Step 4: Powering Up

Before powering up, point the arm at true north. The stepper motor doesn't have feedback to know which way it's pointing so it needs to be initialized. Remember that when you power up the board, it assumes the time you have coded into it.

The ISS orbits the earth every 90 minutes so the speed of motion is roughly on the order of a minute hand on a clock: slow enough that it’s not really interesting to watch it, but fast enough that it’s in a new place every time you glance over.

Step 5: Improvements

As I've noted, this is just a first prototype, a proof of concept, and it's not extremely functional or user-friendly. Things I’d I would include in version 2.0:

  • A real time clock with a battery backup. Right now I have to hardcode the time, which means any time power is disconnected, the time needs to be recoded. This is probably the biggest limitation of the system.
  • Switch the servo out with another stepper motor. Having to flip 180 degrees is cumbersome and makes the motion not as smooth. You'd have to have some kind of feedback for this though.
  • Internet connectivity to automatically download the latest orbital data. Right now, the two line element set for the ISS is hardcoded. Just for the sake of accuracy, it would be nice to be able to have the latest parameters as they come out. This would also allow you to track satellites other than the ISS.
  • LCD screen to show relevant information - azimuth and elevation, epoch, straight line distance, etc.

A few of these features have been implemented in a version of the device created by Patrick Ferrell.

For more info, visit my website or YouTube channel.

<p>Great project. I'm thinking of making one for the science museum where I volunteer. </p><p>Can you give any more detail on the slip-ring arrangement you used? Did you buy or build? </p>
I used this: https://www.adafruit.com/product/736<br><br>I think a homemade slip ring wouldn't be too hard, but just keep in mind that it's not just for power, but signal as well, so it has to be a really good connection.
<p>I'm hoping to make this for a school project and have little robotics experience. Is it possible to get a more details kit/item list? Thank you.</p>
<p>Very cool... I know my son would love to build this (Big Space Nut) But he is into the Arduino Boards and I know I would need to help with that part. Has anyone done or have you done an Arduino based design at all?</p>
The Arduino Uno does not have the memory to hold all the code. The Arduino Mego board could probably handle it just fine.
<p>A great project,I was thinking could this be modified for a solar tracker that could charge say phones etc .</p><p>Is it a idea that could consider.</p><p>I </p>
<p>this mechanical SETUP can also work for an antenna tracker for FPV RC plane or helicopter</p>
<p>this mechanical SETUP can also work for an antenna tracker for FPV RC plane or helicopter</p>
<p>Have you thought or adapting this for tracking celestial objects? I might give this a try as I would find it useful for astrophography.</p>
Most celestial objects move at the same speed, so it's not as necessary to have a microcontroller running the show. Also, for astrophotography, you would probably want an equatorial mount for smoother motion. My recommendation if you want to construct an astrophotography mount would be to find something commercially available and try to copy it.
<p>I'm not frightened by the concept of building a robot from scratch, but navigating GitHub gives me the heebejeebees. </p>
Haha I know what you mean. I tried to give exact steps so you would know exactly what to do. It's basically just clicking a single button to download all the files.
<p>Great project! </p><p>I'm working on something similar, different application though. I was wondering why you have chosen for a stepper motor and a servo? Why not 2 of either one?</p>
<p>I did a stepper for the azimuth so it could do full rotation. I did a servo for elevation since it has internal feedback and doesn't need to be initialized.</p>
Thanks! <br>For my tracking device, 90 degrees suffices, hence I use 2 digital servos. However, at its lowest speed (90 degrees in 7.5 sec) the servo movement is rather coarse. I'm thinking that this might be caused by the PWM therefore I'm considering to rewrite my program to use AVR timer interrupts directly.<br>Somewhere in the back of my mind, I'm thinking that a stepper motor might run smoother? On the other hand 1200 pulses in 7.5 seconds should give a smooth movement. What are your thoughts?
<p>The stepper I used has 200 steps per revolution. Most stepper motor drivers can do microstepping, so you can get quite a bit more resolution out of the motor. Plus I geared down at about 4:1, so the stepper resolution is really good (perhaps 4-6 discrete steps per degree of azimuth).</p>
<p>Thanks!</p>
<p>Great video, excellent project, well done!!</p><p>Alan Knight</p>
<p>BTW check out the ISS Spotter app on the Apple App Store. I presume they are using a common data source... Perhaps a version with an Edison board? Also, you could do a &quot;light pointer&quot; with a rack of LEDs instead of a mechanical arm, or perhaps a piezo mirror? Just thinking out loud. What would be cool is a steerable laser (mech. arm/servo or piezo mirror) that you could use outside at night for an ISS spotting party!!</p>
<p>Beautiful work! More people should appreciate what a great accomplishment ISS, and space exploration and study, are! </p>
<p>if you could miniaturize the mechanism (which wouldn't be too hard I think) and mount a small laser or narrow-beam LED to the stalk you could then fit that setup inside a globe... et voila, a globe with the position of the ISS tracked on its surface!</p>
<p>I love you project dude! Waiting for that 2.0!</p>
<p>Awesome project, and a great video to boot.</p>
<p>Awesome video! Thanks for taking the time to inspire. Your video answered a number of questions I had about the ISS. Who knows, maybe my grandsons and I will build your invention someday! </p>
<p>This sure looks like a fun project! To actually &quot;see&quot; where ISS is located is awe inspiring. I hope I get time to make one myself. There is one thing though, you link to Actobotics, but you never mention what specific parts/kits you are using. </p><p>Cheers! :O)</p>
<p>Nice project. I really like the Nucleo boards, you can't beat them for the price.</p><p>Wouldn't it be easier to use two full rotation servos?</p><p>As an aside, although developing on the mbed.org web site is decent, I ran into a problem where it was down at a very critical time on a project I was working on. I've looked for an open source solution that runs on a Mac but haven't found one yet.</p>
<p>Very cool!</p>
<p>Brilliant, I love this. Would be good if you could mount a small camera to the arm and record the ISS going overhead. Having the ISS centred in the frame with everything else moving around it would be pretty cool.</p>
<p>Just picking nits, but you don't say what the dev platform is. It might be in the video, but you name the other pieces......</p>
<p>Good catch. Fixed!</p>
<p>This is really usefull if you are a ham radio operator trying to do a LOS shot the ISS or hmm... can it be programmed with other satellite ephemeral data?<br><br></p>Frequencies in Use<p><br>The following frequencies are currently used for Amateur Radio ISS contacts:</p><p> (QSOs): Voice and SSTV Downlink: 145.80 (Worldwide)</p><p><br> Voice Uplink: 144.49 for ITU Regions 2 and 3 (The Americas, and the Pacific and Southern Asia)</p><p><br> Voice Uplink: 145.20 for ITU Region 1 (Europe, Russia and Africa)</p><p><br> VHF Packet Uplink and Downlink: 145.825 (Worldwide)</p><p><br> UHF Packet Uplink and Downlink: 437.550</p><p><br> UHF/VHF Repeater Uplink: 437.80</p><p><br> UHF/VHF Repeater Downlink: 145.80</p><p>73, KF5EUT</p>
<p>Thanks. Yes, under item 6 on step one, you can enter any TLE you'd like.</p>
<p>BRAVO!! Well done sir. I am very inspired by this project.</p>
<p>Awesome project ! Thanks for sharing !</p>
<p>This is very cool, and inspiring! I learned a lot just from watching your video! Thanks so much for sharing!</p>
<p>This is a really interesting little project. Thanks for sharing the details!</p>

About This Instructable

31,015views

428favorites

License:

Bio: Grady Hillhouse is a professional civil engineer and hobbyist everything else.
More by practicalengineering:Stone Inlay Tap Handle Tuned Mass Damper Demonstration Colorful Segmented Wooden Vase 
Add instructable to: