So it's been a while since I last posted about my OLED watch, and I've done a lot of work on it! (And also broke it multiple times)
It's taken me a lot of work to get this far, and I developed EVERYTHING from the ground up. The electronics design, the PCB layout, the RTOS and firmware drivers, the graphics engine, the user-mode app code, and even USB communications apps. I've used C, C#, and Python extensively in this project, and Altium Designer for the schematic and PCB.
Overall it has been an awesome learning experience, and if I was to make another one I would do a lot of things differently!
Here's a few features of my firmware:
- USB HID Communication (No PC drivers required!)
- Watch face for telling the time (Kind of required...)
- Date & Upcoming events
- Accelerometer reading
- RTOS Kernel debug info
And some features planned for the future:
- Bluetooth 4.0 (Still need to get the IC for it though)
- Magnetometer readings
- Smart alarm clock that wakes me up at the ideal time, by detecting my sleeping patterns through the accelerometer
- Auto screen on by rotating or shaking my wrist
If you've read my last blog post, you'll know that I ripped the USB traces off my last PCB! I ended up using my hot-air reflow station to transfer the components to a spare PCB, and luckily it all powered up and worked after that! Here are some photos of my reflow process:
Notice how I soldered the OLED directly to the PCB, I had used a connector in my last board but it added extra distance to the OLED cable, so it wouldn't fit into the case. Soldering directly to the PCB gave me a few more millimeters to work with!
I was going to print a case for my watch on the 3D printer, but then I found something far more suitable - an aluminium case designed for iPod Nanos. After struggling with metal cutters and grinders, I managed to turn it into something my watch could fit into:
It's by no means waterproof, but it looks nice!
Unfortunately I found that the cable on the OLED screens doesn't like being bent at tight angles:
After breaking two screens this way I decided to try and fix it:
This provided enough strength to the cable to prevent it from breaking, and it's working beautifully now!
I've also had a few bugs with my hardware design, and they are so much harder to debug than software! One particuarly problematic issue was that my LiPo charger circuit wouldn't charge the battery if it was completely flat! The only way to power it back up was to apply voltage directly to the battery to "jump-start" it. Eventually after many iterations of soldering in different resistors, I noticed I had set the charge current an order of magnitude too low (something like 10mA charge current instead of 100mA), so the battery would never charge. After replacing that resistor it came right.
Now the hardware is mostly done, I just need to work on the user interface to make it more usable. Currently battery life is just over 24 hours with intermittent use, but I plan on extending that through better firmware.
I've released the schematics, PCB layout, and firmware as open-source: OSHW OLED Watch
comments powered by Disqus