Inspiration

We wanted to create a physical interface between astronomical data and the night sky. The idea of a laser pointer that could automatically aim at celestial objects felt like a compelling way to make astronomy more tangible and interactive.

What it does

AstroPointer uses a Raspberry Pi to calculate the azimuth and elevation of celestial objects using Astropy. These coordinates are sent via serial to an Arduino, which uses a magnetometer to determine its orientation and align a mounted laser pointer accordingly. The result is a physical beam of light that points to stars, planets, or even black holes.

How we built it

We designed and 3D-printed a dual-axis mount for the laser pointer. The Raspberry Pi runs a Python script that uses Astropy to compute target coordinates based on time and location. These are transmitted to the Arduino, which uses a QMC5883L magnetometer and two servo motors to align the laser.

Challenges we ran into

Most of our challenges came from physically printing the mount and mechanical components. We had to iterate multiple times to get tolerances right for gear meshing, servo fitment, and structural rigidity. Print failures, layer adhesion issues, and inconsistent bed leveling added delays. Designing for printability while maintaining mechanical function required constant tweaking in Fusion 360 and OrcaSlicer.

Accomplishments that we're proud of

The system runs fully headless and can be operated remotely. We built a modular, reprintable mount that can be adapted to different setups. The workflow from target selection to laser alignment is fast and intuitive.

What we learned

We learned how to integrate astronomical libraries with embedded systems, how to calibrate magnetometers in noisy environments, and how to translate abstract data into physical motion.

What's next for AstroPointer

We plan to add GPS for automatic location detection and maybe create an app to communicate over a local Wi-Fi network from the pi to a phone.

Share this project:

Updates