In the previous sections, I've placed parts inside the canvas to create lighting effects emanating from the interior. In my experience, the most interesting lighting effects come from placing lights on both sides of the canvas, with interior lights directed out and exterior lights pointing back onto the canvas.
In this section I am going to show some ways of transitioning from behind the canvas to the exterior such that light may be directed at the front side of the canvas.
I want to stress here that I've left the front of the canvas plain up to this point in the guide because you may arrive at better, cooler, more stylish exterior designs than I can imagine. As I proceed, my general design idea is to make it look like flowering plants are sprouting out of the canvas. You may want to read ahead and then consider whether you want to follow me exactly or branch out with a different set of parts and designs for the front of your canvas.
The key part I've chosen for transitioning from the back to the front of the canvas are the USB panel mount cables shown here (and in the parts list just below).
In the pictures here, I am sizing up roughly how the cables will sit on the back of the canvas.
I'll add these cables one at a time. After seeing my results, you may choose to do only one or the other, or to find some other arrangement and set of parts.
What follows next is the parts list and process for adding the first external feature: a Circuit Playground Express. In the next section, I will show how to mount a Gemma M0 as a second external feature.
These pictures show roughly how the parts will be arranged from the front. In the second picture, the panel mount USB cable is oriented horizontally, which makes the ribbon cable flat. As you'll see in upcoming pictures, I chose instead to orient the panel mount USB cable vertically, which gives the ribbon cable a twist.
In this picture I have the CompuCanvas running, but turned around and resting against the wall. I have the exact cable assembly I plan to use and I've confirmed that I can access the CircuitPython REPL and control the NeoPixels.
This type of test is advisable before committing these parts to the canvas. In fact, the first cable assembly I tried did not work. The ribbon cables can be tricky to assemble! I ended up swapping a few parts (I was originally trying to use a 10 cm ribbon cable) and then was able to confirm the configuration shown here worked.
In these pictures I am measuring and marking a rectangle where I will cut a hole for the USB cable. Some things to highlight about this process:
- Using the nylon screws for orientation, I carefully examined both sides of the canvas before selecting a spot. It is crucial to make sure the USB cable will fit behind the spot you cut! I wanted the cable to be close to the rPi, but not too close.
- The rectangle I trace here is about 1.1 cm by 1.9 cm. Having cut several of these holes now, these numbers seem just about right. If the hole is too small, the canvas could rip when placing it. With this 1.1x1.9 cm hole, the canvas should stretch a little around the cable and be a snug fit.
In these pictures, I show cutting the rectangular hole in the canvas and the beginning to place the USB cable.
One thing to double-check is the orientation of the USB cable. It could be flipped in one of 2 directions. The last picture shows how I plugged in the Circuit Playground Express to make sure this orientation of the USB cable works.
In these pictures, I have pulled the USB cable into place. The sides of the USB cable have plastic prongs that bend a little as the cable slides in. I try to push the prongs in as I pull the cable through and then wiggle the cable a bit to nest it in place.
In the back, notice how the cable needs to be massaged away from where the foam board (or wall) will be.
These pictures show how I marked 6 spots on the canvas where I will poke holes to attach the Circuit Playground Express (CPX).
You may notice a lot of the nylon screw parts attached to the CPX in these pictures. This arrangement will be explained just below.
You may also notice that I 'cheated' when marking these spots by using a second CPX. If you have a second CPX, you can skip ahead and attach the nylon screw parts and then mark things the way I did. If you just have the one CPX, try to find and mark a place where it will hang well before attaching the nylon screws.
Either way, if you are following my lead here you should mark these 6 spots:
- On one side: SCL/A4, 3.3V and TX/A7
- On the other side: A3, GND and A0
In these pictures, I'm starting to attach a bunch of the nylon screw parts to the Circuit Playground Express.
First, I attached 6 of the longest standoffs at the points shown. These 6 standoffs will be used to mount the CPX to the canvas, so they correspond to the 6 points marked in the previous step.
I actually ended up using the last 6 of the longest standoffs from the kit for this (I had to reclaim one from the Gemma M0 used in the alternate interior lighting setup). If you run out of long standoffs, 2 of the shorter standoffs are about the same length.
These pictures show how I also attached some of the nylon spacer parts to the CPX.
These are not for attaching to the canvas. Instead they should enhance the "light-show" by both capturing some of the light (and glowing) and also blocking some light, creating shadows on the canvas.
There are lots of variations that could be explored using the nylon screw parts to tune the NeoPixel light from the CPX.
In this step I poked through the 6 spots in the canvas where I'm going to mount the Circuit Playground Express. I used the awl widen the holes just enough to screw the standoffs through the canvas.
I had to detach the standoffs from the CPX initially here. The pictures show how I used 6 of the nylon hex nuts to attach the standoffs to the canvas. Finally, I placed the CPX on the front over the standoffs and screwed it in.
In these pictures, I've booted up the system and tried a few different light configurations. Once you get into the REPL, use commands like this to control the NeoPixels:
import board, neopixel
pixels = neopixel.NeoPixel(board.NEOPIXEL, 10)
These pictures show how I re-attached the NeoTrellis to the Raspberry Pi using the short USB cable. This time I used one more of the short nylon standoffs to avoid the NeoTrellis M4 from contacting the USB panel mount cable.
Here I am testing the lights on both the Circuit Playground Express and the NeoTrellis M4 to find combinations that look nice.
At this point we could declare this CompuCanvas finished from a hardware point of view, and refocus on creating animations for the lights or other programming exercises. But read on if you want to see how I placed another feature on the front of the canvas using a different type of cable assembly.