The previous logs are descriptions of the different parts of the project, but I haven't really commented on how well it works! As of right now, the device works but there is a lot of work left to get it working well, and with a fully functional android app. I am an IC designer by trade, with some experience in embedded systems, but I've had to learn a lot about MCUs, firmwares, and android programming to get to this point. I've focused mainly on getting the hardware working, with the intention on working on the app later or getting other people to work on it with me. So this log is a kind of to-do list, some things i want to work on in the future now that I have the foundation of the device working properly.
TO DO LIST!
- The firmware processes short clicks, long clicks, and the capacitive touch slider. I want to add the ability for double clicks, click-and-hold, multi-button clicks, rocker gestures....As mentioned before, i'd like to do this all in firmware because the MCU has better dection and timing control that would be needed to do a lot of this.
- Power management: I haven't optimized the firmware for minimal power consumption. Things that can be done are utilizing power down features of the MCU, optimizing the BLE settings, blinking the LEDS instead of leaving them on full time...For example as i will discuss in a later log, i had to make the BLE connection interval very fast in order to get the capacitive touch slider working decently. This is only needed when the capacitive touch slider is being touched however. If its not being touched, I can slow the BLE connection interval down, which saves power.
- The PCB board worked in its first rev, although not without a little bit of modifications. For starters, none of my headers were correct. Lesson learned, the kicad footprint wizard defaults to pin numbers that 'zig zag'. IE, in a DIP socket, pin 1 is across from pin 2..pin 3 is across from pin 4, etc.c Every package ive ever used starts with pin 1 in the upper left, and goes around the package counter clockwise. So i had to create custom cables just to hook the thing up, it was a real pain!
- I also flipped the connections to the coin cell battery socket, whoops :)
- I could never get the AEM monitor to work. The board has 3 powering options. VDD from the development board, VDD from the coin cell, or VDD through the development boards "AEM". This allows you to use the silicon libraries IDE to monitor power consumption in real time. Seems like a neat feature, i couldn't get it to work, so i need to double check those connections.
- I layed out the capacitive touch slider using the kiCad footprint wizard as well. Its a cool feature, but i think my slider can use some layout improvements. If you drag your finger slowly across it, you can notice some 'dead spots' where the values don't change.
- ANDROID APP
- Lots do do here. Each activity needs to implement the callback functions, to do anything. Ideally there would be a default action for each button that would be pretty generic (ie implement keypad_up), then you could override those functions if you wanted it to do something different.
- I need to do more research on HID, and inter-application communication. I wanted to do all the communications in a service so that it could run in the background, and be able to be used in any app. I'm not sure if this is possible. Having the device act as an HID might make this possible, but i haven't learned how to do that.
- I only have two activities right now. A list that shows all my contacts that you can scroll through, and a map that you can pan left/right/up/down. Theres tons of development that could be done with the device, including a music player, text viewer, etc. If I can't get HID or inter-app working, then i'll have to rely on my own app to handle anything you would want to interact with.