Tuesday, January 29, 2013

Tracking Satellites With Arduino

With the recent progress in software defined radio hacks (rtl-sdr), receiving and decoding radio signals is now easier and cheaper than ever! 
While the original FPGA based software defined radio (SDR) platforms cost around $1500 minimum,  now a $30 DVB-t dongle can be purchased on ebay and hacked with some custom drivers to perform the exact same task (with the exception of being able to transmit a signal). All of a sudden everyone can tune into and decode (given the right software) everything that lay between the  52 - 2200MHz frequencies. 

Among the many interesting signals, the one that caught my attention was was the NOAA weather satellite's automatic picture transmission (APT) downlink that is on around 137.100MHz (for NOAA-19). As the NOAA satellite comes over the horizon line, it is possible to start capturing and decoding the signal into live weather images (provided you have the right antenna and have a relatively good view of the horizon), now that sounds like a relatively easy task to accomplish until you consider that unless you have a right hand circular polarised antenna (i.e a Quadrafilar Helical Antenna) sitting 3 stories high you will be trying to deal with capuring the signal, adjusting the tuning as the satellite moves past to compensate for the Doppler effect, tracking the satellites position with other software.... all whilst trying to aim a directional antenna (likely a yagi or dipole) as accurately as possible at the satellite! 
Not to mention that if your serious, all of this goes down in about 10 minutes at around 3am, so unless you are prepared and well practiced, the chances of getting anything useful are pretty slim.

So this brings me to the satellite tracker, the objective of this project was to be able to track satellites live using the current GPS location, and in the near future add a compass module / accelerometer to either provide user feedback on the current 'accuracy' of their aiming, or to fully automate the aiming process using stepper motors. IMHO latter would be preferred.

The tracker uses the PLAN13 algorithms by James Miller to track the satellites using NORAD issued two line element (TLE) data sets.  Multiple satellites can be tracked, they just need their own TLE variables declared, you can then simply pass the variables for every satellite you want to track into the PLAN13 library (courtesy of +Bruce Robertson 's qrptracker) and it will return the azimuth and elevation for that satellite at you current location.

for example....



The PLAN13 library I used (modified for >>Arduino 1.0) can be found here. Please note: This software is beer-ware, please donate a beer below if you use this code :)





Monday, January 28, 2013

Using free SMS for long distance GPS tracking

SMS based GPS tracking

Leveraging free SMS from long distance GPS tracking


I have published a project on mbed that uses a Seeed Studio SIM900 shield with an Adafruit ultimate GPS module to leverage the free SMS provided between Virgin mobile prepaid SIM cards in Australia.

A Virgin SIM charged with $30 long term credit will provide 3 months of unlimited country wide GPS tracking. The project can be configured to reply to the sender either on the event of any SMS, an SMS containing a secret request code or even a request code from a defined phone number.  The system replies with the raw statistics of the GPS module such as time, heading (in both degrees and cardinal co-ordinates), speed and of course the current location. Following this, a second message is sent with the GPS location parsed into a google maps URL ready for directions / mapping.



I have also provided a basic port of the Adafruit GPS lib for the mbed compiler.

You can find the project here.   

Chasing the Sun

Chasing the Sun

an exercise in solar tracking for mobile systems.



With versatile platforms like mbed and Arduino around these days, the power of google, and the resources of places like Github, taking a project from idea to creation can be trivial to say the least. One of the major problems I've faced with my projects hasn't been programming or accuracy... It's been power. 

'Un-tethering' your project from the convenient USB power can introduce all sorts of complications in regards to power, batteries are great for the short burst or even up to a day, but if you have something that needs power 24/7 whilst on the road, sea or wind - Chances are you will end up with solar.  
This had me wondering about increasing the efficiency of such applications by using a GPS module to track the sun in real time at any given location. TTL serial GPS modules can easily be had for under $40 from places like Adafruit, couple that with recent projects like Paul Stoffregen's ARM based Teensy3.0 Arduino board and you have core components for a very compact, yet powerful Arduino compatible tracking system. 

So with that said, the next problem is the physics and maths involved with predicting planetary orbits, let alone from a given point on the surface of the earth. After some research I found PSA, otherwise known as "La Plataforma Solar de Almería" who have been kind enough to publish their solar tracking algorithms, which are accurate to 3.5 Arc-minutes (0.06 deg).

for anyone interested, I've composed an Arduino library that makes using these algorithms simple! 



The library can be downloaded from here.     Enjoy!