Sat-Notifier is a little DIY satellite tracking project I've completed. It consists of 2 pieces. Firstly, a Python controller app running on my Mac that determines when a particular satellite will next be passing overhead my location, and whether that pass will be visible to the naked eye (this depends on the position of sun relative to the satellite, and also whether it's day time when the pass occurs). It transmits this information via XBee radios to a microcontroller which then displays details of the upcoming pass on an LCD display, and also uses an RGB LED to signify upcoming events in ways only an RGB LED can.

The Sat-Notifier controller app can be configured in a number of ways:
  • it can monitor any satellite that is currently listed on Heavens-Above (this is where Sat-Notifier scrapes its information from).
  • it can post to Twitter letting others know when your choice of satellite is overhead.
  • it can post to Pachube to graph passes over time, although due to the averaging over time it's not exactly useful.
This configuration is done via simple text files that the Python app reads at startup. For example the satellite config file looks like this:

latitude: -33.8170
longitude: 151.1670
altitude: 80
timezone: AEST
satellite_id: 25544
satellite_name: "ISS"
hash_tag: ISS

This way I can easily change the app to monitor, say, the Hubble Space Telescope (HST) by quickly changing a couple of lines in the above file.

Gratuitous, in progress, circuit board shots. First generation board with microcontroller and Xbee module. Leads at bottom of photo go to RGB LED. LCD not in place in this pic.

This is how everything is wired up to the microcontroller:

         Connection     ATmega328      Connection
         Reset       1| PC6   PC5 |28  SCL  
         Rx          2| PD0   PC4 |27  SDA  
         Tx          3| PD1   PC3 |26  
                     4| PD2   PC2 |25  
         XBee Tx     5| PD3   PC1 |24  LCD_E
         XBee Rx     6| PD4   PC0 |23  LCD_RS
                     7| VCC   GND |22
                     8| GND  AREF |21
         Xtal        9| PB6  AVCC |20
         Xtal       10| PB7   PB5 |19  
         LCD_D7     11| PD5   PB4 |18  
         LCD_D6     12| PD6   PB3 |17  RGB_BLUE
         LCD_D5     13| PD7   PB2 |16  RGB_GREEN
         LCD_D4     14| PB0   PB1 |15  RGB_RED

Screenshot of Python controller app running on my Mac. Should run equally well on Windoze or Linux as it's bog standard Python. The app regularly check for updates to the satellite data, which happen due to reboosts to keep satellites in their correct orbit. Without reboosts their orbits naturally decay and end in a firey death for the satellite. The app currently checks every 30 minutes and sends updated data to the microcontroller.

Final assembly underway. Case has been prepared for LCD by cutting window out. Also holes for LCD mounting, LED and ISS badge have been drilled.

All assembled! First pic shows initial startup whilst waiting for the data feed to start from the Python controller app. Second pic shows details of an upcoming overhead pass at 21:07 for a duration of 5 minutes 44 seconds, and transiting from South-south-west to the East - this particular one won't be visible ([NV]) - visible passes are indicated by the apparent magnitude being displayed. Third pic shows display when a satellite is overhead - the RGB LED pulses purple - I like purple.

Below is the live Twitter feed that the Python controller app posts to. Hopefully you can see the most recent status of the ISS relative to my home in Sydney.

Why buy stuff off the shelf when you can build it yourself - and learn something along the way! This has been a fun project - next project will involve some old skool Nixie tubes (circa 1970). Watch this space.

hit counter