This post is meant to be an explanation of the final schematic for my Smartwatch board, version 1 with a bit of reasoning behind each component and my reasoning behind why I did what I did.
|Total Schematic Overview|
This is just the reset button, connected to reset the AVR and BLE module. I also originally tied the screen reset to it as well until I realized the Adafruit screen library required it to be connected to a GPIO.
This is the vibration motor circuit. Since the motor uses up to 85mA, about twice what the AVR can supply, it’s hooked up to an N-MOSFET to amplify the current. I also hooked up the gate of the MOSFET to a PWM pin on the AVR in case I don’t need the full vibration. There is also a diode and capacitor attached to the leads of the motor to help reduce noise and prevent large voltage spikes.
Next are the switches. The four-pin box above is actually a navigation switch with each pin being a connection for up, down, and press actions. Since the AVR has built in internal pull-up resistors, the switches are all tied to ground. I also quickly ran out of interrupt pins (there are four or five on this AVR but they also doubled as communication pins that I needed for other things) so am using PCINT pins instead. I have never used these before and they aren’t built into the Arduino toolchain so we’ll see how using them goes.
Here is the BLE module in all of its low power glory. I grabbed the eagle part over from the same place I got the breakout board and used his design as a reference. There are debugging LEDs on the TX, RX, and Connect lines to show the status of the BLE module, but odds are I won’t be keeping these since LEDs take several mA and I won’t have power to spare.
Above is the power regulation circuit. It takes the battery (3.4V – 3.7V) and regulates down to 3.3V. I also added a power switch at the last minute in case I want to solder the battery leads directly onto the PCB.
This is the charging circuit. It takes 5V power from the USB port and feeds it to a chip that handles the charging for me.
Next is the cheap 3-axis accelerometer I’m hoping to use for a good deal of the interactivity of the watch. However, it is a secondary feature so if I messed up it’s not too big of a deal.
Here’s a simple brightness-detection circuit. I want to automatically control the brightness of the screen as a means of saving power so I’ve hooked up a photoresistor in a voltage divider circuit with the output being sent to an analog pin on the AVR.
This is just the header for the screen.
Lastly is the AVR itself. In addition to the connections I’ve already covered there’s also a voltage divider connected directly to the battery as a simple means of detecting the battery voltage as well as the USB data pins in the hopes that I can load the Arduino bootloader and program the watch directly from the computer.