CanSat India Ground Station
A PyQt5 ground station for live telemetry, GPS, command control, and CSV logging for a 2nd-place national CanSat team.
This was the first project where my software felt mission-critical in a literal way.
I was the only software developer on the team. The ground station carried the mission view: telemetry, GPS position, command flow, and logs all depended on it.
If it froze, the team lost visibility into the satellite.
What It Needed To Do
The application had to provide three things at once:
- live telemetry visibility
- a safe command path during the mission
- reliable logs for analysis afterward
That meant the system could not block on serial reads, hide important state, or treat logging as optional.
What Mattered
The UI combined charts, gauges, GPS updates, and command controls.
The more important decision was behind the UI: telemetry ingestion was separated from rendering. A dedicated serial thread kept packets moving, while PyQt5 signals handled update handoffs safely.
That detail matters when the system is live. Responsiveness is not polish when people are relying on the screen.
Why It Stayed
We placed 2nd nationally.
The result made me proud, but the lasting lesson was bigger: once software represents an active physical system, latency, stability, and clear feedback decide whether the team trusts what it sees.