Zeon Tech have remade the BigTrak. I'd been wanting one of these for quite a while before the remake came around, so I decided I had to have one. They're pretty cheap - going for about 21 quid on Amazon at the moment - and a fairly big and sturdy platform to build an autonomous vehicle on.
IGEP's V2 board fits neatly into the space where the keypad was. The IGEP is a board similar to the BeagleBoard, but quite a bit smaller and featuring onboard WiFi. Otherwise it's similar - a Cortex-A8 ARM processor running at 720MHz, C64 graphics, 512MB of RAM, DVI, sound, a real ethernet socket and USB. This is usable as a desktop PC if you load Ubuntu onto it. It's also pretty low power, drawing about 5W at full load, which is great for a mobile application. Unfortunately, I found getting an OS with all the features I wanted quite tricky.
The only problem I had with the IGEP was that it didn't seem to power USB peripherals from the main USB socket. I needed to attach a powered hub to use my USB wireless keyboard. Apparently the OTG socket (the one with the smaller socket) does power devices, so you might want to try that one.
There are a number of suggestions for operating system setups at http://labs.igep.es/ but none of them quite fit my bill. The instrutcions for Ubuntu 9.04 worked and produced a nicely working desktop computer with WiFi, but lacked the cdc-acm module which was necessary to talk to the mbed controller. I couldn't get the Ubuntu 10.04 image to boot at all.
My best success was with the OpenBricks distribution, which is related to the Geexbox distribution mentioned on the wiki. OpenBricks will cross-compile a new linux distribution from scratch. It can specifically target the IGEPv2.
This is a list of the steps I took to get a bootable image with ttyACM and WiFi support. I've written this down from memory, and there may be steps missing - I will try and go through this from scratch to check it in future.
hg clone http://hg.openbricks.org/openbricks
cd openbricks
make menuconfig
Set the options you want for the image, ignoring kernel/module options. You can remove most of the networking services so save time, but enable Telnet and make it start on boot.
make
scripts/clean busybox; scripts/build busybox
cd packages/busybox
make menuconfig here; set it to build <i>udhcpc</i> as well as anything else you think you might need
cd ../.. back to the openbricks top level
make
The instructions at http://labs.igep.es/index.php/How_to_setup_Marvell_88w8686_SDIO_wifi#How_to_get_WIFI_active_upon_system_start_.28using_a_WPA2_access-point.29 are helpful here. You should already have the wireless drivers. You should have sd8686.bin and sd8686_helper.bin in /lib/firmware and /firmware (only one is necessary, but I don't know which one)
Create a wpa_supplicant.conf on your desktop with wpa_passphrase:
wpa_passphrase "your SSID" yourPassword > wpa_supplicant.conf
That creates the basic layout. You'll need to add "proto", "key mgmt" and "parwise"; the IGEP page suggests values for those, but I found I needed different settings and additionally the 'group' command. It will depend on your access point - trial and error got it for me.
This is my wpa_supplicant.conf:
network={
ssid="ikaria"
psk=<long string of hex digits>
proto=WPA
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
}
With that in /etc/wpa_supplicant
, you should find that wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -d&
will bring up wlan0. You'll then need to assign an IP address to it. Try udhcpc -iwlan0
to get an address and ifconfig wlan0 <ip address>
to assign it to the adapter.
Since I want my card to start on boot, I chose a fixed IP address and put this into /etc/wifi:
wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -d&
sleep 60
ifconfig wlan0 192.168.80.216
You could write a script which parses the output of udhcpd to get the IP - but there's probably a better way to get DHCP working.
After that, it just remains to add something to /etc/init to get it started on boot. Create /etc/init/wifi.conf containing this:
author "JimM"
start on started networking
script
sh /etc/wifi
end script
This is pretty dirty, but it works. Any suggestions on how to do this more neatly are welcome.
The other part I constructed is a switchmode power supply. This is based on a MIC4576-5 chip. There's a datasheet at http://pdf1.alldatasheet.com/datasheet-pdf/view/74603/MICREL/MIC4576-5.0BT.html (You'll need to click through a few links). I've just built the example application from that datasheet, on stripboard - the only slight oddity is having to drill slightly larger holes in the stripboard to fit the diode's leads through. I also attached a piece of sheet copper to the chip to act as heatsink, with some thermal transfer paste, and used that to mount the whole circuit. With the heatsink, this easily powers the IGEP, hub, mbed and motor controllers without getting warm, off a 7.2V NiCd racing pack.