Introduction: PIXO Pixel - IoT 16x16 LED Display
This is an entry in the
Epilog Challenge 9
There are a number of RGB displays out there already, but most of them are either difficult to interact with, too big, require a ton of wiring, or process heavy on the micro-controller you're using. When I remembered that there was another Make/100 this year to challenge myself with on Kickstarter, I knew this would be a great project for it. After discovering the tiny APA102-2020 LED, they was perfect for this and I had to use them. Combine those with an ESP32 for WiFi and BLE that can be programmed using the Arduino IDE, and now you've got your own custom programmable display that can report basically anything you want it to.
This is the PIXO Pixel, and its open source.
I'm currently doing a Kickstarter for the Make/100 if you would like an assembled unit(there are only 100 available), but there are also kits that will come with the hardware, circuit boards, and an ESP32.
Please be aware this project is for advanced users who are aware of the power requirements of such a device and are comfortable with high current applications(3A). Please see the step "Power Limits" for more info.
Step 1: Watch the Video
I will be later making a video on how to program different things on it. But there will be a starter example program.
Step 2: Get the Parts and Tools
If the Kickstarter is still running you can get some of the parts in the DIY kit on it: Here
- Circuit Boards (Kickstarter or GitHub for Files)
- Hardware - NutsScrews(35mm)Screws(22mm)Spacers (Kickstarter Kit)
- 256 x APA102-2020 LED (AliExpress or Adafruit)
- ESP32 Module (AliExpress or Adafruit)
- Electronic Components (Digikey)
- Power Supply 5V at least 5A (Adafruit)
- USB Cable
- Cheap Toaster Oven (I normally would say this is optional, but with 256 LEDs to solder, its really not)
- Hot Air Rework Station (For fixing)
- Soldering Iron
- Tweezers Kit
- Solder Paste
- Stencil for the LED side of the Board(at the very least)
Step 3: Apply Solder Paste to Microcontroller Board
Start with the Microcontroller board, I didn't get a stencil for this since I used 0805 components. I just applied the solder paste by hand, as usual. A little goes a long way.
Step 4: Apply Components to Microcontroller Board
Carefully place the components on their corresponding pads. If you ordered from Digikey they should all be labelled correctly. Any confusion, consult the schematic.
Step 5: Reflow in Toaster Oven
Turn on, wait for solder to reflow.
Step 6: Test the Board and Fix Accordingly
Before you plug in the board, you will want to make sure there are no bridges on any of the connections. Find and fix them accordingly(I always have a few when I don't use a stencil).
Once they are fixed, plug the board into your computer and make sure all of the magic smoke stays in. See if it connects properly and can be programmed. Right button is Boot, left button is Reset. There are plenty of instructions online on how to program an ESP32 with Arduino. Be sure to check those out if you are unsure.
Step 7: Apply Solder Paste to Pixel Board
I ordered a stencil for the top of the Pixel board(the LED side), and you should too. I couldn't imagine applying solder paste to each one of these pads by hand. Nightmare!
Scrape the solder paste onto the board and carefully remove the stencil.
Step 8: Add Each LED
Yep, all 256, put on some music and get to it.
Okay there is a bit of a tricky part, since there is no silkscreen on this side, you have to know how to orient the LEDs properly. If you look at the LEDs up close you will notice there is a square inside that is off center. You want that to be offset, upwards. Which way is up? Well the bottom has a line of VIAs for the ground at the bottom of it. See the image for clarity.
Step 9: Reflow Again
Yep, stick it in the oven again. I suppose you could have done the two boards at the same time. But I didn't want to risk cooking the board improperly by having two in there. This is the first time I've used these LEDs!
Step 10: Hand Solder Components on Back of Pixel Board
You could definitely use a low temp solder paste here, but I didn't want to risk damaging the LEDs with my first board, so I just put the components on by hand soldering. For the Capacitors, I tinned one pad for each of them, added flux to that side, then brought in the capacitor with tweezers and touched the soldering iron to that tinned pad and the capacitor. Then you just add solder to the other side, easy. You will want to add a liberal amount of solder to the barrel jack.
Step 11: Test Again
Its time to test the boards together. I have a simple program that can be used to test them out. You can find it on GitHub: https://github.com/IdleHandsProject/pixopixel
Looks like I have some improperly connected LEDs!
If you write your own program you need to be aware of what these LEDs are capable of power wise. See the step "power requirements" and a disclaimer.
Download the test program. Connect the display and board using the 2" 4-Pin jumper cable. Program the display(with the 5V power on or off). Then once programmed, give it power if you haven't done so(through the barrel jack) and hit reset. Check to see if all of the LEDs work. If not, next step!
Step 12: Hot Air Fixing the LEDs
If yours is anything like mine, you may have 1 or 2 LEDs that need the solder joints fixing. Get out your hot air rework station, tape off around those LEDs, apply solder paste and apply heat until it re-seats. I set my hot air station to 250C. I would practice a bit before going straight to these tiny LEDs if this is your first time.
Step 13: Assemble!
Put the socket hex cap screw through the Pixel PCB(short ones on top holes, long ones on bottom), then add a spacer on all 4, next add the Microcontroller PCB. For the top two screws(short), loosely tighten the nuts. For the bottom two add another spacer, then add the nuts. The bottom are longer so that the unit is able to stand up right.
Step 14: Power Requirements
Now that the unit is assembled, I figured this would be a good time to talk about the power requirements of the PIXO Pixel. Each LED is capable of pulling about 40mA at full brightness with all 3 internal LEDs on fully. This means the whole unit theoretically is possibly to consume over 10A! I cannot and do not recommend this. This small board would not be able to dissipate the amount of heat that would produce. It would also blow the on-board 3A.
In order to stay within these power requirements, you must make sure you are not illuminating a lot of LEDs all at the same time, or at least keep their brightness down. There is a BRIGHTNESS variable in the program which helps limit the brightness of all of the LEDs regardless of what value you give them in the program(for colour).
Please be aware of what you're programming to avoid damage to the device. This unit will become warm under normal use. At full brightness(which you shouldn't do), it would be putting out as much heat as a 50W light-bulb, keep that in mind.
Step 15: Program It!
Depending on your skill level you can make it do all sorts of things(probably better than I can!)
Social Medial Notifications, Games, Computer Interactions, Information pulled from online. You name it!
There are plenty of programs out there for gathering information with the ESP32, you just need to send that information to the display. I've started you off with the hardware, and I can't wait to see what you all come up with.
Step 16: Nerd Out.
You can also just put cool 8-bit style images on it and nerd out like me.
Step 17: Support These Projects!
These projects are open source, which means you can gather all of the parts and build one yourself without the need to purchase anything from me. I release them free on the internet so others can learn and eventually design their own.
With that said, a little support for these projects goes a long way. All of the parts and designs come out of pocket. If you want to support me and my open source projects, first off becoming part of the Kickstarter is a great way to do so, even if you're not interested in ordering one of these, any small donation helps!
Second subscribing to my YouTube and checking out my videos also helps. It will keep you up to date on my latest projects and hopefully you will learn a thing or two also!
Lastly, If you want to add a continued support, I have a few options for that as well. Patreon gives me the easiest way to contact you, but I also have Paypal and LiberaPay, you can find them all here:
We have a be nice policy.
Please be positive and constructive.