Since my previous blog showing the breadboard version of the swim watch (with it’s obvious limitations in use…), I’ve spent time working on the next version that can actually be used in the pool. Though as you’ll see below, it far from perfect, and will get you some odd looks (though as someone who’s started running barefooted, I’m starting to get used to that 😀 ).
So what’s changed since last time (I’ll go into more detail in a bit for anyone interested)?
- Designed and created a circuit on perf-board and connected a battery;
- Updated the user interface to make it more useful (though there’s still a ton more to do on that front);
- Re-written the code so it’s more efficient;
So in order to test the watch in the pool, of course I needed to create a physical device. The circuit for the watch is still the same as the previous blog, so I’ll not bother putting it up here.
Since the last blog though, I’ve been teaching myself how to use Eagle CAD, which made it so much easier to design the perf-board layout. I’m still figuring out how to use it properly, but I’m getting there and learnt enough to get the circuit working and as optimised as I could (though I’m sure there’s probably a way to make the circuit even smaller, but at this stage, it’s fine). Below is the perf-board layout for the watch, with blue being the soldered tracks on the back (copper side) and red being wires across the top.
I’m still not 100% sure why I’ve used a 2×4 connection for the of LCD display (in the centre-top), oh well.
Below you can see photographs showing the top and bottom of the board (not as neat as I would like, but it’s my first time using perf-board instead of veraboard), and the watch on my palm so you can see the size. Of course this is much bigger than I would like, and there’s no chance that this would fit around a finger, but there are many ways I could make it much smaller by designing a PCB and using SMD components.
A few points on the circuit:
- The display covers the atmega, so that can’t be seen;
- The connection block on the right is for power (wires from the battery slot into it) and for connecting to the RasPi for re-programming;
- The button in the centre-middle is “select” and the two others are “up” and “down”.
The user interface in version 1.0 wasn’t great and would probably of been zero use in the pool. Therefore, I’ve had that re-designed.
Some of the things are just purely aesthetic, such as a nice boarder around the screen. The main UI features are below:
- The main menu still only has 2 options at this stage
- The record swim screen shows the total lengths, the total time, and the last length time
- The show history menu shows the total number of lengths and allows you to scroll through the time of each recorded length
As can be seen, there’s still a lot of improvements that can be done in the GUI and I hope to do that in the next version of the watch.
I’ve also cleaned up the code so that the interrupt handlers are dong as little as possible and all the display changes are done in the main loop.
The software for this version has been uploaded to the Google Code project.
Well of course this isn’t water-proof at all and would be of zero use in the pool as it is. Since this is still a very early prototype, I’m not going to go to the bother creating a proper case for this yet.
Therefore, I’ve done the next best thing: wrap it in cling-film and place it in a waterproof bag that’s designed for storing keys for open-water swimming.
You’ll have to wait for tomorrow to see some photos of that as I intend to take this to the pool for a full road-test. Keep tuned for more detail.