🐞I am an electronics student majoring in IoT electronics, with a passion for exploring and creating gadgets. Back in 2023, I read an article on the Technoblogy website about ATtiny85 projects. I was fascinated by their Tiny Time Watch project, and that’s when I discovered the term Charlieplexing. According to Wikipedia, the Charlieplexing technique was introduced by Maxim Integrated in 2001. With Charlieplexing, you can control a large number of LEDs or switches using a small number of GPIO pins, as demonstrated in the Tiny Time Watch, which is powered by the ATtiny85 and uses only 4 pins to drive 12 LEDs for the hours and minutes. There’s a formula "n(n-1)=a" that tells you how many GPIO pins and LEDs/switches you can use, where 'n' refers to the GPIO pins and 'a' refers to the number of LEDs/switches
🐞This will eliminate the use of shift registers, which are used for expanding GPIO pins. First, I was greatly inspired by the Tiny Time Watch so, I decided to make my own version with some modifications.
🐞While playing with charlieplexing and After successfully making an LED matrix without using shift resistors, I am now curious about why not implementing it in tiny wearable electronics. so 𝐆𝐞𝐚𝐫𝐞𝐝 𝐔𝐩 𝐟𝐨𝐫 𝐄𝐱𝐞𝐜𝐮𝐭𝐢𝐨𝐧, and now I am planning to make a watch. The ESP32-S3-WROOM-1-N4 is well suited for this due to its compact size (25.5 mm x 18 mm x 3.1 mm) and its Bluetooth and Wi-Fi functionality, with very low power consumption when idle, in light sleep mode, or in deep sleep mode, also The compact size of the ESP32-S3-WROOM-1-N4 makes it perfect for a wearable watch with a diameter of 35.5 mm, Also The compact size of the ESP32-S3-WROOM-1-N4 makes it perfect for a wearable watch.
🌲First, I wanted to use a 2020 package WS2812B LED on the wrist-sized board. Also, the LED is addressable, so the circuitry would be less complex
🌲I made this diagram for illustration, showing how many LEDs can fit in a 35.5 mm diameter. Based on this, I will design the schematic accordingly. However, when displaying text on the watch, each character requires a minimum of 5x7 pixels. With these LEDs, this isn't feasible unless I choose a smaller package. Unfortunately, smaller packages of WS2812B LEDs are not available in my local market, and ordering them overseas would take too much time. So, I decided to move forward and try using 0603 normal SMD LEDs instead.
🌼LEARN Charlieplexing🌼Charlieplexing is a great concept for driving multiple LEDs separately by giving addresses to each LED using a limited number of general-purpose input/output pins in a microcontroller. Thanks to Clam's video on Charlieplexing, the concept is easier to understand
🌼The Charlieplexed circuit looks like this
🌼Let's say I want to drive 20 LEDs. By using only 5 GPIOs, we can achieve an array of 20 LEDs using the Charlieplexing formula N(N-1), where N is the number of GPIOs used. In a Charlieplexed watch, we can expand this circuit to achieve a higher number of rows and columns in the LED matrix
🦢PROCESS of Making Gerber File🦢 While making the Gerber file, I make sure the circuit is compact enough to fit in my wristwatch case. If I design my own 3D enclosure, it’s better to create a sleek watch for aesthetics. So, I will go for the default 1.6 mm PCB thickness
🦢I want the watch to have fewer open areas, as my wristwatch doesn't have holes or openings. It's a classic metal watch, and drilling into it may be a hassle. Therefore, I don't want any switches in my watch. If we don't install any switches, the watch matrix will run all the time, which drains the battery quickly. So, here is a solution
🦢 Although we can use a module too, the inbuilt LED and LD3985 voltage regulator are space-consuming. I will use the 1117 3.3V voltage regulator for both the MPU and ESP32-S3. Using the MPU chip reduces space, which is good for our wearable
🦢In place of switches, the watch senses gyroscopic and accelerometer readings to wake and display the desired information based on its position
Comments