The 3224 LiPo Watch is an ATtiny3224 microcontroller-controlled device that uses a RTC IC in combination with an OLED display to show the current time of day when woken. The device runs off a 40mAh LiPo rechargeable via USB-C. It is a culmination of my MCU Dev Boards, LiPo BMS, and experience with OLED displays, all in one large embedded project.
For the PCB manufacturing in this project I will be using PCBWay's PCB manufacturing services to prototype and later receive a final working printed circuit board. I find their website easy to use, their engineers easy to work with over email whenever there were engineering questions, and their turnaround time very fast. If you'd like to try out PCBWay's services, check the link below:
The video below demonstrates the first prototype of the watch with every feature working, from displaying the current time and setting the current time to powering strictly off the LiPo battery.
Below are photos showcasing the final schematic sections and printed circuit board design for the project.
Below is a table containing all of the parts as well as a link to the Digikey parts list.
| Part Name | Count | Cost Per Part |
|---|---|---|
| 1N4148WT-7 | 4 | $0.10 |
| Blue SMD LED | 1 | $0.23 |
| Green SMD LED | 3 | $0.23 |
| Red SMD LED | 1 | $0.23 |
| Yellow SMD LED | 1 | $0.23 |
| 1x3 Male 2.54mm Header | 1 | $0.12 |
| 1x4 Male 2.54mm Header | 2 | $0.17 |
| Slide Switch SPDT | 1 | $0.80 |
| ATtiny3224-XU | 1 | $0.99 |
| SMD Push Button | 1 | $0.94 |
| 10µF 0805 Capacitor | 1 | $0.13 |
| 10µF 1206 Capacitor | 1 | $0.13 |
| 0.01µF 1206 Capacitor | 1 | $0.21 |
| 1µF 1206 Capacitor | 2 | $0.29 |
| 0.1µF 1206 Capacitor | 2 | $0.43 |
| 4.7µF 1206 Capacitor | 2 | $1.32 |
| 100kΩ 0402 Resistor | 2 | $0.10 |
| 453kΩ 0402 Resistor | 1 | $0.10 |
| DS3231SN | 1 | $12.80 |
| SMD Side Push Button | 2 | $0.30 |
| 120pF 0201 Capacitor | 1 | $0.10 |
| 10µF 0603 Capacitor | 1 | $0.12 |
| IRLML2502TRPBF | 1 | $0.45 |
| IRLML6402TRPBF | 3 | $0.42 |
| MCP73831T-2ACI/OT | 1 | $0.76 |
| 1kΩ 1206 Resistor | 5 | $0.10 |
| 10kΩ 1206 Resistor | 8 | $0.10 |
| 5.1kΩ 1206 Resistor | 2 | $0.10 |
| 33kΩ 1206 Resistor | 1 | $0.10 |
| 620Ω 1206 Resistor | 2 | $0.10 |
| SS14 | 3 | $0.36 |
| TPSM82823SILR | 1 | $3.35 |
| USB4105-GF-A | 1 | $0.78 |
Using the Device such as IO or Setup is detailed below.
Below is information and necessary tables of IO for the device.
| IO Technical Name | IO Name | IO Info |
|---|---|---|
| Female USB-C Port | USB-C | Power & battery charging |
| WAKE // TICK Input | Right Side Button | Wakes watch OLED and adjusts time when setting |
| SET Input | Left Side Button | Enable SET mode, changes hr/min being adjusted |
| IND_ENA Input | Indicator Slide Switch | Enables / Disables debug LED indicators |
For device setup, simply plug the watch in via USB-C until the amber "CHGD" LED turns off on the board, indicating the battery is fully charged. Once done, or technically after any amount of charging, the device can be unplugged and used.
To set the current time, click the left-side SET button once. Then, click the right side TICK button as needed to adjust the hour. Once the correct hour is displayed, click the SET button again and then adjust the minutes as needed using the TICK button. Finally, once the time is fully correct, click the SET button one last time to put the watch back to sleep with your newly set time.
Challenges, What I Learned, and More.
This device has been by far my most difficult project to date. To begin, the biggest challenge was to find the proper microcontroller capable of the job. This went beyond just pinout count or other simple metrics. To run an OLED display, many large libraries need to be loaded onto the MCU, and as such, flash and memory were a big challenge in picking the microcontroller. I originally looked at using an ATMega328PB as my MCU, but decided against it as I much prefer the UPDI method of programming over SPI. As such, I knew I wanted an ATtiny series MCU, but all the ones I had used previously were not capable of storing those libraries. After some research, I came across the ATtiny3224 MCU, a 32kb flash MCU capable of storing all my program data and having well enough pins for the job, while also still being UPDI programmable. The next big challenge for me was combining all of the different systems, LiPo BMS, MCU, OLED, RTC IC, into one board, and also into a footprint small enough to fit on a normal-sized watch face. I was able to conquer this challenge but it took a lot of extra and detailed planning and layout work for the PCB design. Finally, I'd say the RTC IC was a challenge. It worked first try on the first manufactured prototype, but I definitely had a lot of worries with my schematic work revolving around the IC, afraid I might have missed something and that it wouldn't work. But, as mentioned, it worked first try, and that was largely in part to me reading the datasheet thoroughly.
In developing this watch I not only improved a ton of my technical skills but I also learned a lot. I think the biggest thing for me was the practicing of combining all of these systems into one coherent and working device. I think that gave me valuable insight into doing that going forward for other embedded projects, and although that's not an obvious or straight forward "Thing I learned", I think that practice and coming out the other side with a working watch was very helpful and encouraging to me to keep developing embedded systems. Beyond that, I think the MCU research I had to do was also valuable, I think I fully learned how to go about picking the correct MCU for the job and how to research into new MCUs that I hadn't used before when needed. Finally, the RTC IC, both research and implementation, taught me how to take a need (telling accurate time, in this case), and use that need to do research for and find a compatible IC. In doing so it definitely built my confidence in finding ICs for future projects and implementing them.
This project did not have a direct inspiration. I think I more-so thought it would be cool to wear a watch that I built myself around and that was kinda the inspiration that I ran with. I suppose it could be "inspired" by my other projects (MCU Dev Boards, LiPo BMS) just because they were in fact combined into this one.