Gumstix Goliath

Being used as the flight computer for HAPS-1

Introduction

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.)

Setting up the hardware

Connecting to the Goliath Board

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:

  • Using another daughterboard to either provide network access (such as a netstix) or a tweener to get access to a serial port
  • Manage to set up usbnet so that you could use the mini-usb port - this won't work, as the port is host by default and the drivers aren't set up to do this. To get this working will require applying some patches that are apparently available.
  • Usb-serial adapters - to get access I used 2 usb-serial adapters, one from my laptop and the other from the gumstix and then using some wire attached their tx, rx and gnd. The gumstix verdex has the driver for the ftdi usb-serial connector (I used an arduino board).
    • First its necessary to set up the gumstix to put a shell onto the usb-serial port, so its necessary to change teh getty entry on the verdex's /etc/inittab file to use ttyUSB0 instead of ttyS1. This will require you getting access to the verdex with another board first, making the change to the file and transfering back to the goliath daughter board.
    • Then its necessary to connect up the usb-serial convertors, remember that the gumstix needs a ftdi convertor, i just used wire to connect the two boards.
    • You then can use kermit or minicom to make a connection, turn the gumstix+goliath on (i recommend using an external powersupply) and you should see the board booting.

More information soon

Setting up the GPS

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.

Setting up the GSM module

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!).

Setting up the accelerometer

Setting up the UCB100 ADC pins

Packet Radio

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!):

Compiling soundmodem

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:

  • In configure.in
    • remove GTK check
    • make CROSSCOMPPATH point to the correct bin directory in the OE buildroot gumstix/gumstix-oe/tmp/cross/bin/ (I think)
    • soundmodem wants libxml which is outdated, instead in OE libxml2 is used so some changes need to be make, first of its necessary to switch xml-config to xml2-config. Also -xml needs to be changed to -xml2
  • The change from libxml to libxml2 also needs some source code changes, there is an excellent page on the differences between the two libraries http://xmlsoft.org/upgrade.html , mainly its changing the #include <*.h> to #include <xml/*.h> and also child and root to children. Best thing to do is run the make file and just swap any errors that appear.
  • There is definitely more changes that are necessary but I can't remember anything off the top of my head. Eventually you'll manage to build an ipk of soundmodem.

Installing soundmodem and other software

Software that you'll need:

  • soundmodem
  • libax25
  • ax25-tools
  • ax25-apps
  • libaudiofile

Config files you'll need:

  • /etc/ax25/soundmodem.conf
  • /etc/ax25/axports

Running soundmodem

  • soundmodem & (if the conf is set up this should work fine)
  • kissattach /dev/soundmodem0 radio 192.168.1.1
  • beacon -s radio “TEST”
    • The plan is to use 'beacon' to transmit the data, the -s option only runs once so every minute beacon -s could be executed with “TEST” replaced with the gps coords etc.

Radio Interface Circuit

  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

Status

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.

Files

Links

Links

 
gumstix_bible/goliath.txt · Last modified: 2008/08/06 09:39 by jamescoxon
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki