Being used as the flight computer for HAPS-1
For ATLAS Gumstix kindly sent me a protoype of their GoliathGPS-vx board as it has both onboard Ublox GPS and also a Siemens GSM. The advantage for a balloon payload is its all built on so there are fewer wires to come loss and overall is lighter. There isn't much documentation on the device yet so I thought it would be helpful for me to document as I go along (if you would like contribute please feel free to email.)
This actually is quite a difficult job, the board itself relies on usb to provide most of its functions and doesn't actually bring out the normal verdex serial ports. There is a single mini usb port which has host capabilities. There are a couple of methods of making a connection:
More information soon
The GPS module on the Goliath is a Ublox NEO-4S and is attached by usb to the usb hub. Its a great gps module for high altitude work as it doesn't have an altitude cap or have issues with altitudes above 24km (unlike the SIRF III). To set up the GPS module I found that it was necessary to find the right kernel module which is the cdc-acm module. I didn't need to compile this module as it had already been compiled when I set up OE, all I needed to do was find the file which was in
gumstix-oe/tmp/work/gumstix-custom-verdex-angstrom-linux-gnueabi/gumstix-kernel-2.6.21-r1/linux-2.6.21/drivers/usb/class/
Just copy the file cdc-acm.ko to the gumstix and see if works:
insmod cdc-acm.ko
Dmesg gave me:
<6>cdc_acm 1-2.3:1.0: ttyACM0: USB ACM device <6>usbcore: registered new interface driver cdc_acm <6>drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters
By running
cat /dev/ttyACM0
you should see the NMEA.
Thanks to an email that was sent to the gumstix mailing list it was pretty easy to setup the GSM module.
To turn on the module you just need to toggle GPIO100:
echo "out set" > /proc/gpio/GPIO100 sleep 2 echo "in" > /proc/gpio/GPIO100
The module will signal its on by turning on the blue LED.
Next set up the serial port (ttyS2) to use the correct baud rate:
stty -F /dev/ttyS2 speed 115200
You can now send and recieve AT commands, there are various ways of doing this, the most basic is to just echo a command e.g:
echo -ne "AT\r\n" >/dev/ttyS2
However by using echo you won't get any on the response messages, there are a few options, I personally use kermit which i compiled off OE and installed via ipkg. Now that the module is on there are lots of AT commands that can be sent, I'm tempted to cheat a bit and use gnokii to manage sending the commands as its a nice stable program to use and I've got lots of experience with it.
To shutdown the module all that is needed is to do:
echo -ne "AT^SMSO\r\n">/dev/ttyS2
By installing the kernel module to access the GPS module you'll also be able to access the GSM module through its USB interface, this could perhaps be used to free up the serial port (by cutting the traces but makes sure that you've got a good usb connection first!).
Partially as there aren't any serial ports that are brought out on the board and the potential to send more then just strings of gps coords I'm going to investigate using the audio out to do packet radio. In this case we'll use a normal Radiometrix module as the radio and then use the goliath's soundcard to act as a Modem and TNC. Packet radio support is intergrated into the linux kernel so all that will be required is to recompile the kernel to include the necessary AX.25 modules and also to compile the soundmodem userland software which will set up the sound card appropriately. Once setup the whole system will act as a network device and it should be possible to transmit both gps coordinate data but also files such as pictures (taken by the usb webcam).
Wow this has taken a lot of work! Here is a rough guide (I'll upload all the files when I've got access to the gumstix - it'll make a lot more sense then!):
Soundmodem doesn't cross compile very well and required quite a lot of hacking both to the configure.in file but also directly to some of the source code. I've written a bitbake receipe and once I've put together some patches I'll get upload them both here and also to the OE tree. Partially to act as a reminder and also if you want to have a go now I'll write down what I remember:
Software that you'll need:
Config files you'll need:
3V >-----------------------+---------> NTX2 Pin 7 (power)
or |
3.3V |
|
|
+++
G | |
u | |100Kohm (for 3V or 120K for 3.3V power)
m | |
s 100nF +++
t +-+ +-+ |
i | | | | |
x >----| | | |-----------+---------> NTX2 Pin 7 (TX data)
Audio | | | |
Out +-+ +-+
Gnd
>---------------------------------> NTX2 pin 6 (0V)
>---------------------------------> NTX2 pin 4 (EN)
GPIO
Diagram courtesy of rocketboy
So at present I've got the gumstix make the audio that will next be fed into a radio module. To check I ran a audio cable from the gumstix to the audio input on my laptop and then using trueTTY (shareware) on my Mac (running on wine which I installed from macports I was able to decode the packets.
Originally the plan was to use 300bps instead of 1200bps however it appears that soundmodem is unable to do 300bps (when i change the conf file to 300bps and a 200Hz shift it only sends a single tone - please correct me if there is a way).
Now that I've interfaced the radio the whole system works (remember to use FM), I've written a small script that grabs the latest gps coords and using the 'beacon' software transmits the data as a packet.