“There is only one happiness in life, to love and be loved.” – George Sand
If you have ever fallen in love then you know how it feels. Your days become nights and the nights become your days. You feel high on air with increased energy and sleeplessness. With this much energy you wouldn’t be able to control yourself from expressing your love to your partner. Everyone has a different way of expressing love. Some buy things for their loved ones while others decide to make something special for them. Being a maker myself I decided to make something special for my valentine to make her feel special this Valentine’s day.
This was my first Valentine’s day ever so I decided to make it special by giving her a surprise, but later I couldn’t resist and told her that I am making an LED display necklace cum badge for her with a secret text message scrolling on it. She liked the overall idea but she also asked for an extra feature to change the text messages on desire. So I modified the design and added a bluetooth low energy to upload any text message to it using an android phone.
SCHEMATICS and PCB:
The github repo for the project can be found here. The design is pretty simple. I exported a heart shape DXF into KiCAD for the edge cuts and sticked to all smd parts to minimize the size of the circuit board. There are 128 (0603) smd LEDs in total arranged in 8 rows and 16 columns. Two 74HC595 shift resisters(daisy chained) were used to control 8 columns each. An 8 channel ULN2803 is used as a current sink for all the 8 rows. A XC6210B332MR LDO is used in the design to power the HM-11 BLE at 3.3V. I used HM-11 because of its small footprint size. The entire circuit is controlled by ATMEGA328p microcontroller and is powered by a small 320 mAh LiPo battery.
The most challenging part of this project was to solder 128 LEDs and it took me around two hours to solder all of them by hand, approx 1 min for each.
Each character to be displayed is stored as 8 bytes in the program memory of ATMEGA. For example char ‘A’ is stored in 8 bytes as:
You can see the arrangement of 1s in the above array forms the character ‘A’. The complete text is displayed in a row scanning mode where each row is scanned for a very short amount of time and the columns are fed with a the appropriate bytes. By quickly scanning across the rows, and turning on the respective LEDs in each column of that row, the persistence of vision comes in to play, and we perceive the displayed image as still.
A buffer variable is maintained which stores the characters currently displayed.
To scroll the text this buffer variable is shifted left after every few milliseconds and new data is fed into the buffer from the right.
I modified the demo BLE app by google (here) to work with the HM-11 BLE modules for transferring text messages to the device. The entire source code for the app can be found in the project github repo here.
And here is the video of her wearing it as a necklace
– I shall admit that I get high by making things