Upgrading a manual equatorial mount into an automated star tracker that locates and follows celestial objects. Controlled from a web interface, with real-time astronomical calculations running on a backend server.
The system is split into three parts that work together: a web interface for control, a Python backend that handles the astronomical mathematics, and an ESP32 microcontroller that drives the physical hardware. Each does one thing and communicates with the others in real time.
An ESP32 handles all the mechanical movement and stays connected to the server over Wi-Fi. It drives two stepper motors on the mount's axes, calibrated to match the gear reductions of the original manual knobs.
Once the telescope reaches its target, it switches into tracking mode and rotates at exactly the Earth's rotation speed, keeping the object centered in the eyepiece. Built-in failsafes stop the motors after a set time to prevent cables from wrapping around the mount.
The astronomical calculations run on a Python server using dedicated libraries to compute real-time positions of planets based on the observer's GPS coordinates and the current time. Commands travel between the server and the telescope over MQTT, a lightweight IoT protocol designed for exactly this kind of fast, reliable delivery.
The server also monitors the horizon continuously. If a tracked object sets below the visible sky, it automatically halts the telescope before the mount points into the ground.
The control interface is a responsive web app with a live radar-style polar map showing the current positions of visible objects: Sun, Moon, planets. Clicking any target on the map sends a movement command to the telescope immediately.
The interface receives real-time telemetry from the server and updates without page refresh, showing whether the mount is moving, tracking, or waiting for a new target.
The full workflow takes a few seconds. The web app loads, the server calculates what is currently visible and populates the map. You click on a planet. The backend computes its exact coordinates for that specific second and sends a message over the network. The ESP32 receives it, translates the coordinates into motor steps, and drives the mount. Once the planet is in the eyepiece, the system reports back and begins its slow sidereal drift across the sky.