The plan was to take my nephew via a few locations and perhaps involve a bit more than just the GPS. In the end he had to do 6 challenges. The first 5 were to find a certain point. He had a descriptive clue and sometimes wither a distance countdown or an arrow pointing in the right direction. The final challenge was to find some magnetic ball bearings and put them on the lid, operating a reed switch and unlocking it. It all went well with only a couple of minor hitches.
Some photos
Link to full size ones.
Source code
Attached as ZIP.
The components
- A Netduino Mini - running 4.1.1 alpha 7 firmware so that I could use an SD card to store the data.
- An EM406 GPS unit (serial TTL) to track where it was
- A HM6352 compass (I2C) for orientation
- A µSD breakout board (SPI)
- A 4D systems µOLED-128-G1 1.5" display (serial TTL)
- 2 x Hitec HS-55 servos (one for the lock, one for the direction arrow)
- Cogs from a clock I picked up from a charity shop. You should have seen it. It was hideous. I've done the world a favour chopping it up.
- 3 x 9v batteries.
Things that worked well
- You may notice that I'm using two serial TTL devices (GPS and display) but the Mini has only one TTL COM port. I used both at the same baud rate and had no problems using the TX line for the display and the RX for the GPS. As far as the Netduino was concerned it was an odd hybrid device that was told to display some text and responded with incessant NMEA chatter. 4800 baud was the easiest to get them sharing. It was quick enough.
Things I'd do differently if I did it again
- Consumer 9v batteries are rubbish. They'll power the Mini but as soon as you have a couple of servos moving it all goes wrong. I was approaching a deadline so just wired 3 alkaline batteries in parallel. A better solution would be a decent LiPo battery.
- The compass didn't seem great. Continuous reading mode seemed flaky and even in query mode the reading jumped around. Having some Neodymium magnets in my pocket may not have helped!
Things I would have improved given more time
- The OLED display is a great little device. It can display images and video. It has inbuilt µSD storage that I could have used instead of a breakout. It does sound. I ran out of time to do any of this. On the negative side, readability in sunlight wasn't great - especially red text.
- Kept the servos a bit further from the compass. The magnets in the motors may not have helped with the accuracy.
- Spent more time on the wooden box. It's balsa wood stained brown and looks OK but could be better. Inside was hastily done using off-cuts and araldite.
The result
It worked really well. As his favourite thing at the moment is the film "How to train your dragon" it had a Viking theme. He pretty soon sussed out that I'd made the box and it hadn't been "left with me by some Viking who'd knocked at the door", but he played along.
The arrow went crazy at one point and pointed completely the wrong direction. Probably a bug in my code, but was conveniently blamed on crafty dragons that were trying to fool him. I wish I could use that sort of excuse at work! The second coordinate where the arrow was used it worked fine.
All up, it was weeks of effort and a far more expensive than the present it contained, but great fun to do.