11/23/2014 at 04:57 •
Sorry for the lack of updates... I've been busy with University over the past month with end of year exams and such, but now that's finished I can turn my attention back to this project!
I will now try to finish off the firmware to a stage where everything is more or less functional, and then I will begin creating a new hardware design based on e-ink technology and ultra-low power consumption electronics, and try to fit in some additional sensors. I may also revise the current OLED watch design to fix the issues with the current hardware, in case people would like to build the OLED version. I know a few people are attempting it!
The next steps for now are:
- Bluetooth 4.0 communications
- Magnetometer driver (and compass application)
- Tap-to-wake functionality
- Alarm clock API and application
- Better PC software for updating calendar, etc.
09/29/2014 at 06:48 •
It's been pretty hectic at uni, but I'd like to share my latest improvements to the watch so far:
Where to from here?
Well I would definitely like to implement the bluetooth 4.0 driver when I have time, so that I can implement wireless sync with my PC and phone instead of requiring a USB cable.
I would also like to add gesture recognition for automatically waking up the display, a compass app using the built-in magnetometer, and a smart alarm clock that detects my sleeping patterns to determine the optimal time to wake me up at!
And finally I would like to create a new PCB that fixes all the issues I've had so far.
Of course, the entire project is available under the Open Source Hardware (OSHW) license, and I welcome any contributions. (I know one other person has tried building my design, with success!)
09/16/2014 at 03:46 •
It's been a bit of a hectic week with University projects as well as this, but I've been chipping away at my github issues slowly fixing all the bugs with the firmware! (https://github.com/jorticus/zeitgeber-firmware/issues)
I've had quite a few interesting bugs to fix:
- Systick overflow bugs causing the watch to reset
- USB not detecting that the cable has been unplugged
- Buffer overflows in the printf() library
- Image buffer becoming corrupted when compiler optimizations are enabled
On the upside, I've got a new UI prototype and events system under-way:
New UI CPU Utilization Old UI
09/04/2014 at 02:20 •
I finally got around to soldering in the nRF8001 bluetooth LE chip, and yes it does work! (I haven't yet tested the RF side of things, I only know it responds to commands)
Also see my carefully soldered wires? This is why you should always add test points to your PCB!!! (The wires are connected to the SPI data/clock lines)
Bonus picture: Blue Screen of Death!
It now tells me something has gone wrong instead of just restarting. In this case my drawing code had some issues with pointers and near/far data addressing (Ah the joys of 16-bit processors)
08/31/2014 at 02:28 •
Here are some of my UI mockups from earlier on in the project..
You can probably tell it is somewhat inspired from the Android Holo theme, but I am also using aspects in my website's design too. The battery bar is inspired from an app you can get on the Android market, which I think provides nice simple visual feedback of the battery level.
I wanted to keep it very minimalistic, partly for the asethetics, but also to keep power consumption down and to reduce visible ghosting artifacts which seem to be a problem with my display.
08/21/2014 at 05:05 •
I've finally put together a short video for the competition:
Everything is available under the Open-Source Hardware license (OSHW).
08/18/2014 at 11:41 •
I have some further thoughts into this resetting bug; I've realised the watch doesn't actually report a brown-out reset, and it ONLY happens after leaving the watch in sleep mode for an extended amount of time (>1 hour). Furthermore, the scope trace appears identical for both when it works fine, and when it resets.
Perhaps there's a bug in my RTOS? Maybe I should move to FreeRTOS instead!
08/16/2014 at 05:06 •
So I've been tackling a rather tricky bug recently, where the whole watch would reset sometimes after waking up from sleep. I believe I have tracked the cause down to the voltage sagging too much and causing a brownout, as you can see in the following oscilloscope trace:
Unfortunately I can't seem to fix it, I've tried adding an inductor in series with the MCU, along with a 20uF capacitor, but neither have any affect on the above trace. This is probably due to the fact the OLED draws up to 100mA on start up.
I think the only way I can fix this is to disable the brown-out reset altogether, or perhaps I can figure out a way to soft-start the OLED.
Also, my bluetooth chips are on their way, so hopefully I can solder them in soon!
08/08/2014 at 21:59 •
I've finally got around to putting in an order for the nRF8001 bluetooth chip, so I will soon be able to test whether my PCB actually works or not! (I've never designed an RF layout before)
I should have it all soldered on in the next week or so.
I have also ordered an EFM32 devboard so I can start prototyping my next watch design, which will feature much lower power components and an e-ink display instead of OLED.
Interestingly, my OLED seems to have killed off a whole column of pixels, and they're stuck blue. ESD damage perhaps? Because I didn't stress the cable connection this time!