24bit RGB LED Emoji/Sprite Display

by echundotcom in Circuits > LEDs

1868 Views, 10 Favorites, 0 Comments

24bit RGB LED Emoji/Sprite Display

Expressions of a Teacher during Covid

As a teacher going back to the classroom amidst COVID and the requirement to wear PPEs, I realised that my students won't be able to see my facial expressions (I teach high school, but have children that are going back to both elementary and secondary school). Was thinking of modifying the facial shield or the mask itself with LEDs and shapes, but figured that the cleaning of these would be a bit of an issue, so a solution that came to mind is to make a lightweight wearable, which can display emojis and images displaying my reactions. Here are my instructions on how I got this done.

Supplies

Physical Materials Required

  • 24bit RGB LED Matrix
  • ESP32
  • wires
  • switches/push buttons (optionally, can reprogram the ESP to use touch sensors)
  • EVA foam (or some other kind of frame)
  • acrylic (white, 1/4" thick)
  • acrylic (black, 1/8" thick)
  • tinting plastic (optional)

Software Required:

  • Arduino
  • Python
  • graphics editor (PhotoShop or GIMP)

Laser Cut Template

20200829_112618.jpg
20200829_112630.jpg
20200829_112634.jpg

Here's the laser cut template to make boxes around some acrylic, so that it protects the LEDs as a part of the frame. I did this with a 1/8" black piece of acrylic.

I tried to cut a thicker piece of white acrylic (1/4"), but found I didn't have the settings strong enough to cut through all the way, which happens to have turned out better than expected, as the white did a better job of diffusing the light from the LEDs and ended up making a better "pixel" (btw, fun fact, the word "pixel" is an acronym of Picture Element - sorry, the teacher inside me had to just say that)

Converting Images

pacman3.png
pinky1.png
spaceinvader4.png
ghost4.png
pacman1.png
mario3.png
pacman2.png
mario2.png
mario1.png
heart.png
face2.png
face3.png
face1.png
face4.png
ghost2.png
ghost1.png
peace.png
thumbsup.png
ghost3.png
spaceinvader1.png
pinky2.png
spaceinvader3.png
spaceinvader2.png
poop1.png
poop2.png
poop3.png
poop4.png
question.png

The next step I took was to convert some images for use in the Arduino code, which is a modification of the sample RGB LED code found for the ESP32 (in the next step).

Using the Python code included above, edited the file location portion of the code to generate the proper hex code for use in the RGB LED Matrix (if you're a programmer, you'll notice that the LEDs are linked up in series, and not a traditional Cartesian coordinates, so proper identification of the RGB locations need to zig zag between the rows of LEDs).

The code on the next page already has the header data updated with the associated names.

The Mario image above was taken from a sprite sheet I found on the Internet, and the rest were hand created in PhotoShop... just need to make a 16x16 canvas, and Zoom in all the way, and use a 1x1 pixel brush to make the images

Wiring and Coding

20200829_112710.jpg
20200829_112717.jpg
20200829_112736.jpg

The Arduino code is included above, and just had to wire the RGB LEDs to the proper power source off of the ESP32 (5V and GND), as well as the data link (P4)

Using push buttons (pulled from another piece of junk tech), connected these to pins P5 and P15, and the other end of GND. The code does a PULLUP to HIGH so that button activation occurs when it recognizes a LOW to HIGH change (so essentially when the button is releases as opposed to a down button)

Downloads

Putting It All Together

20200829_112646.jpg
20200830_194059.jpg
20200830_194111.jpg
16x16 RGB LED programmed display

In putting it all together, covered up the front of the white acrylic with some window tinting vinyl, which gives it the nice black screen look.

Cut out a frame using layers of EVA foam (supplies I had for the cosplay stuff I also create), and glued those using contact cement (two layers to house the items).

A third layer of EVA foam was added with cut outs so that the back would fit like a puzzle piece in place.

Added a strap so that it would easily hang off my neck. The total weight of all this is barely noticeable.

With regards to powering up the unit, I decided to use the built in micro USB connection that is used to program the ESP32, and had it connected to a USB power supply that I just kept in my pocket. To ensure that accidental pulls on the cord don't cause issues, I've added the use of one of those magnetically connected USB power charger adapters for the micro USB.

What's next? I'm looking to add a microphone to the ESP, and then make an animated sound volume bars, much like KITT from Knight Rider, so that students see a visual representation of my voice... stay tuned.