HackerBox 0036: JumboTron

This month, HackerBox Hackers are exploring jumbo LED matrix displays, ESP32 single-chip computers, and joystick game controls. This Instructable contains information for getting started with HackerBox #0036, which can be purchased here while supplies last. Also, if you would like to receive a HackerBox like this right in your mailbox each month, please subscribe at HackerBoxes.com and join the revolution!

Topics and Learning Objectives for HackerBox 0036:

  • Configure the Arduino IDE to program the ESP32
  • Interface joystick and push-button control inputs
  • Wire data and power to JumboTron LED Panels
  • Program various applications leveraging matrix displays

HackerBoxes is the monthly subscription box service for DIY electronics and computer technology. We are hobbyists, makers, and experimenters. We are the dreamers of dreams. HACK THE PLANET!

Step 1: HackerBox 0036: Box Contents

  • P3 RGB LED Matrix with 64x32 pixels
  • ESP32 Development Board
  • Game Controller Board with Joystick
  • Power Supply Harness for LED Matrix
  • DuPont Jumpers Female-Female 20cm
  • Exclusive HackerBoxes Glider Koozie
  • Exclusive Atari retro fan art Decal

Some other things that will be helpful:

  • 5V DC power supply (2-4 Amps)
  • Soldering iron, solder, and basic soldering tools
  • Computer for running software tools

Most importantly, you will need a sense of adventure, hacker spirit, patience, and curiosity. Building and experimenting with electronics, while very rewarding, can be tricky, challenging, and even frustrating at times. The goal is progress, not perfection. When you persist and enjoy the adventure, a great deal of satisfaction can be derived from this hobby. We all enjoy learning new technology and hopefully building some cool projects. Take each step slowly, mind the details, and don't be afraid to ask for help.

There is a wealth of information for current, and prospective, members in the HackerBoxes FAQ.

The Glider is a pattern that travels across the board in Conway's Game of Life. It has been loosely adopted as an emblem to represent hacker culture since the Game of Life cellular automaton appeals to hackers and the concept of the glider was born at almost the same time as the Internet and Unix. Can you program Conway's Game of Life on the 64x32 LED Matrix?

Step 2: ESP32 and Arduino IDE

The ESP32 is a single chip computer. It is highly integrated featuring 2.4 GHz Wi-Fi and Bluetooth. The ESP32 integrates the antenna switch, RF balun, power amplifier, low noise receive amplifier, filters, and power management modules. As such, the entire solution occupies minimal Printed Circuit Board (PCB) area.

There are a few types of ESP32 Development Boards. The one used here is a variation on the "DOIT ESP32 DevKit". Most of the I/O pins are run out to the pin headers on both sides for easy interfacing. A USB interface chip and voltage regulator are integrated into the module. The ESP32 is supported within the Arduino ecosystem and IDE, which is a very quick and easy way to work with the ESP32.

The Arduino ESP32 github repository includes installation instructions for Linux, OSX, and Windows. Click to that link and follow the instructions that correspond with the operating system on your computer.

PROGRAMMING THE DEVELOPMENT BOARD

To test that the IDE is correctly configured before moving on, load the BLINK example to flash the onboard LED. Change the delay values to try different blink frequencies and make sure the code is effectively reloading onto the ESP32 board.

When programming the ESP32, press and hold-down the “BOOT” button in the ESP32 development board prior to hitting the upload button on the Arduino IDE. Once the “Connecting _ _ _ …” message appears on the Arduino IDE, you can release the “BOOT” button and programming should begin.

Step 3: Game Controller Board With Joystick

This game controller "breakout board" includes an analog joystick control and four buttons. Its size and shape are well suited for handheld operation.

The analog position control is based on two potentiometers (one for x and one for y) which are wired up in the standard "voltage divider" configuration. Accordingly, OUTX and OUTY must be read as analog values and scaled appropriately as shown in the demo code. OUTZ and the four buttons are simple on/off digital switches that normally float open and short to GND when activated.

The board can be wired to the ESP32 using DuPont Jumpers on the following pins:

ESP32  Game Controller
GND    GND
3V3    VCC
35     OUTX
34     OUTY
26     OUTZ
27     KEY1
32     KEY2
33     KEY3
25     KEY4

There is nothing special about these pin assignments, but they are the ones used in the demo code. Since certain IO pins on the ESP32 are output only, you might want to keep it simple and just use these same values.

Step 4: 64x32 RGB LED Matrix P3 Panel

With 2048 full-color RGB LEDs, this matrix is like your own personal "mini" jumbotron display. These panels are actually the same type used in jumbo LED displays as you can probably tell from the industrial strength power harness. The LEDs are positioned on a 3mm pitch grid (hence the P3 designation). They are driven with a 1:16 scan rate.

We will be using the PxMatrix Library for the Arduino IDE. Go ahead and install that library now. There is also a ton of operating theory detail at that link if you are interested to check that out.

There are three connectors on the rear of the LED Matrix Panel. These include two 16 pin dual headers (labeled IN and OUT) and also a small power header. There are three different sets of wires to connect up to these as described below.

FINE Jumpers from DATA IN to DATA OUT

IN  OUT
R2  R1
G1  R2
G2  G1
B1  G2
B2  B1

NINE Jumpers from the ESP32 to DATA IN

ESP  IN
13   R1
22   LAT
19   A
23   B
18   C
5    D
2    OE
14   CLK
GND  GND

Power Harness

The provided power harness needs to be connected to a 5VDC supply. If you plan to illuminate all the LEDs to full brightness, the panel will draw up to approximately 4A. If you have a decent "bench supply" that should be apply to provide 4A. For typical average operation, 2A might suffice. For example, we tested out a 2.5A USB power bank (battery pack), which worked fine. We soldered a USB connector in place of the screw lugs on the power harness allowing it to be plugged into the USB power bank.

There are two four-pin headers on the power harness. These are for powering two panels. One of the headers can be removed if you wish to tidy things up, just be sure to wrap up the cut wire ends (with tape or tubing) to prevent shorting the power supply.

Common Power Supply to LED Panel and ESP32

Cut one end off of a DuPont jumper. Strip and tin the wire to connect it to a red line of the harness. An easy option is to use one of the lines where we removed the extra four-pin power header. Again, be sure to wrap the power splices to prevent shorting things out. After the ESP32 is programmed and the USB cable is removed, the female DuPont plug on the other end of the spliced wire can be placed on the VIN pin (not the 3V3 pin) of the ESP32 board. This will supply power to the ESP32 board and and the LED matrix from the same 5V supply making a tight and portable configuration for running under battery power.

Step 5: Matrix Demo Prog

Program the attached jumbotrondemo.ino sketch into the ESP32.

Be sure that the PxMatrix library is installed.

The four modes of the demo program are selected using K1 - K4. The code should be fairly self explanatory for extending into your own projects.

Step 6: 1 2 3 GO!

What are you going to make with your 64x32 Color Display and Game Controller? Start brainstorming with some inspiration from other example projects...

Once you get going, please send us a link to your project so we can share it:

  • here
  • here
  • here
  • or here

Step 7: HACK THE PLANET

If you have enjoyed this Instructable and would like to have a cool box of hackable electronics and computer tech projects descend upon your mailbox each month, please join the revolution by surfing over to HackerBoxes.com and subscribe to receive our monthly surprise box.

Reach out and share your success in the comments below or on the HackerBoxes Facebook Page. Certainly let us know if you have any questions or need some help with anything. Thank you for being part of HackerBoxes!

10 People Made This Project!

Recommendations

  • Optics Contest

    Optics Contest
  • Make it Glow Contest 2018

    Make it Glow Contest 2018
  • Plastics Contest

    Plastics Contest

45 Discussions

0
None
nykr95

16 hours ago

Blue LED very DIM on ESP32. Has anyone else noticed a very dim blue LED when using the Blink program?

0
None
Racer1TN

Question 13 days ago

With there being an Atari sticker in the box, is there a posibility of running any Atari games or a MAME rom type of emulator with this hardware?

4 more answers
0
None
JonW27Racer1TN

Answer 10 days ago

Great question! I want to build a single-purpose Galaga out of 6-9 of these in a vertical configuration. That would be so cool! I've been hunting, RetroPie might be an option. There is a HAT from Adafruit to fit the RPi that I'm considering.

0
None
Racer1TNJonW27

Reply 10 days ago

I like your idea, the only drawback I see is over 80 bucks per panel at that vendor. Can't find cheaper that won't deliver in less than 60 days overseas shipping. :(

0
None
Racer1TNJonW27

Reply 3 days ago

Not sure what you would get, the description shows P4 P5 and P3 all in the same line "ph4 led Board Panel 64x32 32x32 dot Matrix RGB led modulep4 p5 P3 RGB Pixel Panel HD Display". The display P3 is 2.5 mm spacing. the others are 0.5 mm added to each number. Not good for close up.

1
None
Racer1TN

13 days ago

I got the raindrops program to work, it's pretty cool. Also built the Revised Morphing clock with the ESP32 12E from HB #30.

20181105_082136.jpg20181107_123907.jpg
4 replies
0
None
Racer1TNRacer1TN

Reply 8 days ago

I fount it and another one on hackaday.io. just search by display. 64x32 led matrix. Google finds it too. Just rem out the esp8266 when you run on the esp 32 or vice versa. I'll see if I van post the link.

0
None
djcc2012Racer1TN

Reply 11 days ago

Racer1TN I cannot find the raindrops program. Is it somewhere in the exaamples? Thanks.

0
None
rob_hunt

Tip 15 days ago

Hmm - obviously I did something wrong here - not sure what. I checked my wiring twice but I don't see any mistakes

image.jpeg
2 replies
0
None
djcc2012rob_hunt

Reply 11 days ago

rob_hunt are you supplying it enough power?

1
None
rob_huntdjcc2012

Reply 7 days ago

hey djcc2012 - I guess I forgot to follow up after I got the problem resolved. Power wasn't the issue. Pin 23 on my esp32 was bad. I moved the "B" connection over to pin 21 and changed the define and then everything was good.

0
None
TonyP110

Question 7 days ago on Step 7

What are the Power Supply options? I'd like to see how you all handled that.

0
None
TonyP110

7 days ago

I am getting this compilation error. Please help:

PxMatrix LED MATRIX library_ID5437/PxMatrix.h:27:26: fatal error: Adafruit_GFX.h: No such file or directory

1 reply
0
None
TonyP110TonyP110

Reply 7 days ago

Never mind. I had to install the Adafruit GFX library

0
None
kitplummer

8 days ago on Introduction

Trying to get the ESP32 to work with Arduino IDE on a Mac. No luck...with any of the various tips and ideas floating around.

From what I can tell, my serial interface is fine after installing the requisite driver. But `esptool` bonks.


esptool.py v2.3.1
Traceback (most recent call last):
File "esptool.py", line 2637, in
File "esptool.py", line 2630, in _main
File "esptool.py", line 2355, in main
File "esptool.py", line 201, in __init__
File "esptool.py", line 206, in _set_port_baudrate
File "serial/serialutil.py", line 295, in baudrate
File "serial/serialposix.py", line 438, in _reconfigure_port
termios.error: (22, 'Invalid argument')
Failed to execute script esptool
the selected serial port Failed to execute script esptool
does not exist or your board is not connected

I also tried running the same command with the latest version of esptool (2.5.1) and am seeing the same thing. Maybe Arduino IDE is passing in an incorrect param...

Anyone else seen this?