LED BLE Hearty Necklace/Badge

8*16 LED matrix display with bluetooth low energy to connect to any smart phone

Similar projects worth following
“There is only one happiness in life, to love and be loved.” – George Sand. This LED matrix is a heart shaped circuit which you can make/buy(from me) and gift to your valentine or crush and spread your love. It can be worn as a necklace or as a badge. It has got BLE so you can display any text message on the necklace using a smart phone.


The project is now getting some interesting firmware upgrades. I recently upgraded the firmware to allow users to play games like Tetris and Snake on the badge using their smartphones. The older feature of displaying any text messgae) is still there. Cool isn't it?

Watch this video:

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.

And that's her wearing the necklace :)


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.

  • 1 × atmega328p Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 131 × LED Fiber Optics / Emitters
  • 1 × MCP73831 Power Management ICs / Power Supply Support
  • 2 × 74HC595 Electronic Components / Misc. Electronic Components
  • 1 × XC6210B332 Electronic Components / Misc. Electronic Components

View all 6 components

  • The Android App

    Nitesh Kadyan04/03/2018 at 05:16 0 comments


    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.

    A demo video of uploading a text message:

  • Building the Firmware

    Nitesh Kadyan04/03/2018 at 05:09 0 comments


    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.

    unsigned int DisplayBuffer[][8] = {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}; 

    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.

    if(Serial.available() > 0){
          message = Serial.readString();
      StringLength = message.length() ;
      for (k = 0; k < StringLength; k++) {
        for (scroll = 0; scroll < (8 / shift_step); scroll++) {
          for (ShiftAmount = 0; ShiftAmount < 8; ShiftAmount++) {
            DisplayBuffer[0][ShiftAmount] <<= 1;
            if (DisplayBuffer[1][ShiftAmount] & 0x80) {
              DisplayBuffer[0][ShiftAmount] |= 1;
            index = message[k];
            temp = pgm_read_byte_near(&Data[index - 32][ShiftAmount]);
            DisplayBuffer[1][ShiftAmount] = (DisplayBuffer[1][ShiftAmount] << shift_step) | (temp >> ((8 - shift_step) - scroll * shift_step));
          speed = 10;
          for (l = 0; l < speed; l++) {
            for (i = 0; i < 8; i++) {
              digitalWrite(rowPins[row], HIGH);
              digitalWrite(rowPins[row], LOW);
              if (row >= 8)
                row = 0;

    Two firmware boot on the first soldered board:

  • First batch of the badge

    Nitesh Kadyan04/02/2018 at 04:44 0 comments

    Since I don't have a stencil hence soldering the first circit few board with hand. This board is getting diffused white leds.

View all 3 project logs

Enjoy this project?



Duke Circuit Co.,Ltd wrote 04/18/2018 at 10:09 point

A nice project,would it popular on Valentine's Day?and can show Chinese?

  Are you sure? yes | no

Nitesh Kadyan wrote 04/18/2018 at 15:28 point

It was made for my valentine :) I guess it should be popular on Valentine's day. I don't know Chinese but I am sure it should be possible to display Chinese characters on this.

  Are you sure? yes | no

MRMAINT62 wrote 04/04/2018 at 20:06 point

Very Professional Job! How much do you think you will sell them for? Will they be a kit or completed board?

  Are you sure? yes | no

Nitesh Kadyan wrote 04/07/2018 at 08:52 point

Hello MRMAINT62,

Thanks! Right now I am thinking of it as a completed kit. Would be pricing it around $30 on Tindie soon. Would you be interesed in buying at that price?

  Are you sure? yes | no

MRMAINT62 wrote 04/07/2018 at 12:17 point

Maybe, but I don't have a use for it right now. I am thinking it might be a useful programming demonstration for my Robotics Club Class. Is all the support software complete and available/included?

  Are you sure? yes | no

Nitesh Kadyan wrote 04/15/2018 at 18:13 point


Yes all the software, design files and firmware are included and opensource. You can check the github repo. I will upload the firmare soon. Can't reply to your other comment. so replying here.

  Are you sure? yes | no

Piyush bansal wrote 04/03/2018 at 06:58 point

great work. :)

  Are you sure? yes | no

Nitesh Kadyan wrote 04/07/2018 at 08:53 point

Thanks Piyush :)

  Are you sure? yes | no

Sarvesh | SRK Fan wrote 04/03/2018 at 00:12 point

This is amazing. Kudos to you bro!!

  Are you sure? yes | no

Nitesh Kadyan wrote 04/03/2018 at 05:22 point

Thanks bro!! :)

  Are you sure? yes | no

Reginald Sourn wrote 04/01/2018 at 12:55 point

i'll make one for my crush xD

  Are you sure? yes | no

Nitesh Kadyan wrote 04/01/2018 at 19:38 point

HaHa. Cool. All the best :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates