Main Content

Arduino Star Tracker

Track stars using Arduino, GPS, a laser pointer, and some motors!

This project follows the system design for making a laser-pointer point to a star with a given date, time, GPS location, and the star’s celestial coordinates.

The system is calibrated at startup by pointing the laser at the North Star and getting an initial heading and pitch reading from a 9-axis sensor. This initial reading is then used to calculate an offset for both heading and pitch such that the motors will be able to adjust the position of the laser to the specific target horizontal coordinate of a star.

One obstacle in developing this system is the fact that a star’s horizontal coordinate is constantly changing as time progresses. Luckily, the equatorial coordinate system uses fixed coordinates for stars which can be converted to the horizontal coordinates we want to use. This way we can predefine coordinates for stars within the program and use the GPS location, date, and time to get real-time updates for the target’s horizontal coordinates which we can point to with the aid of the 9-axis sensor.

When the system boots, a GPS reading is taken to get the latitude and longitude of the device. The GPS also gives us the current time and date which is used to initialize the processor’s real-time clock (RTC) module. These readings are needed in order to arrive at your local sidereal time (LST). Where one solar day is 24 hours and based around how long it takes Earth to revolve once around its axis, a sidereal day is roughly 4 minutes shorter than a solar day and is based around how long it takes for the Earth to rotate about its axis relative to the stars - this difference is caused by Earth’s orbit around the sun. Local sidereal time is needed to get a star’s equatorial coordinates based on the system’s location.

Let’s try to visualize both the horizontal and equatorial coordinate systems.”

Link to article