In this section I'll show construction steps for a wall hanging canvas with this 3mm pitch 64x64 matrix panel:

Winter time can be rough in the city. The sky is gray. The weather is unpredictable. So slough off those seasonal blues with some Times Square razzle dazzle from this...
Out of Stock

I found 2 kinds of 10x10 inch canvas that looked like a potential fit for this panel. One came in a 'value' 2-pack and the other came as a single.

Both are low profile and you might think they are exactly the same, but turn them around and you'll see the wood frame used in the 2-pack is a bit thinner - meaning more room for a matrix panel inside.

I first tried the 'traditional' canvas with the thicker wood framing. It was very close, but it does fit barely with maybe 1-2 mm to spare.

This actually seems like an ideal pairing. I won't even need offset clips on the bottom because the panel can rest directly on the wood frame.

In the picture below, the Matrix Portal is on the left side, but it will make much more sense to hang this canvas so the Matrix Portal is pointing down and the USB-C cable will then run directly down toward the ground.

The Matrix Portal sits at a bit of an angle where it encounters the canvas frame, but it seems like it will be a good electrical connection.

Update: I later added 2 of the 8-pin Arduino headers between the Matrix Portal and the panel, as shown in the previous build, for a better fit than shown in the picture below.

Because I'm using a 64x64 pixel panel, I'll need to solder the "E line" jumper to the 8 pin, as explained in the Matrix Portal guide. In the picture below you can see the blob of solder I added between the 8 and the E pads on the lower right, near the 3-pin JST connector.

The picture below shows how I'm planning to layout the D-rings and offset clips. We don't need offset clips on the bottom because the matrix panel will rest directly on the wood frame of the canvas. The main purpose of the offset clips here will be to keep the matrix panel from falling out of the canvas when it is taken off the wall and moved around.

I've cut an 8x3 inch piece of foam board, and the plan is to screw it to the matrix panel (with the M3 nylon screws) and then use the offset clips to hold the foam board and panel in place.

Here I've taped two wood screws, face up, over the M3 screw holes. I used this to mark two points on the foam board, pressing down enough to leave an impression and then using an awl to finish poking holes through the foam board.

I'll use the longest type of nylon screws from the M3 kit.

In the picture below, I've attached the D-rings and hanging wire and the offset clips to the canvas frame. I also have the foam board screwed to the matrix panel. It looks like it's ready to hang on the wall...

... but I forgot one thing: I need to cut a squarish hole in the center of the foam board to allow for the matrix panel power cabling.

These pictures show how I cut the hole and then arranged the power cable (mostly) underneath the foam board. Blue masking tape is great for helping with cable management.

I now made 2 final changes to get this system ready to hang:

  • Added a piece of electrical tape over the 5V and GND screw terminals.
  • Added two screws (#4, 0.75 inch) with 8mm spacers on the bottom of the frame, to avoid the large capacitor on the Matrix Portal bumping against the wall.

At this point, it's ready to hang on the wall. One gotcha is that since the Matrix Portal is pointing down, it's not in its default orientation.

This can be fixed in the CircuitPython code by setting the Display rotationproperty to 270.

Here is the code for the "Hello World" example used in the picture above:

Download: file
import board, displayio, terminalio
from adafruit_matrixportal.matrix import Matrix
from adafruit_display_shapes.rect import Rect
from adafruit_display_text import label

matrix = Matrix(width=64, height=64)
group = displayio.Group(max_size=4)
matrix.display.rotation=270
matrix.display.show(group)

rect = Rect(0,0,64,64,fill=0x003377, outline=0x888888)
group.append(rect)

lbl=label.Label(terminalio.FONT, max_glyphs=32, color=0x555500)
lbl.x=16 ; lbl.y=8; lbl.text="Hello\nWorld!"
group.append(lbl)

while True:
    pass

This guide was first published on Nov 10, 2020. It was last updated on Nov 10, 2020.

This page (64x64 pixel, 3mm pitch) was last updated on Nov 10, 2020.