Introduction & Showcase Video
Also tired of hearing “NO!” when you want to touch a painting? Let's make one you CAN touch!
The idea is to make a painting you can touch using a Raspberry Pi and an Adafruit capacitive touch sensor. When you touch certain parts of the painting, things will light up & move. In this case, the painting is space themed, because space is awesome. Let's do it!
The first step is to get a canvas and start painting! We'll start by painting it all black, it's outer space after all, and then adding a moon-like landscape.
To add some more planets to the imaginary galaxy, I 3D modelled and printed two blobby planets, one in neon green and one in orange.
We'll be using RGB LEDs to add some light to the painting. We still had some Adafruit Sewable Neopixels laying around, so I used those. Make holes in the canvas where you want to place them. To do this, I first used a large needle and then a pencil. Very high tech!
After adding the holes, the painting itself is complete. To make it durable and also stop the holes from fraying and ripping, add some coats of protective varnish. I added two layers of a very glossy varnish, making it feel nice to the touch.
Note that I didn't actually sew them to the canvas, I used some quick and dirty duct-tape. Yes, I know... I'm still figuring out a more permanent solution, I think I'll just superglue them in place.
To diffuse the light and cover up the holes, I 3D modelled and printed some LED covers in transparent PET, which I then glued to the painting.
Sadly, I'm not the next Picasso so I won't be attempting a difficult painting. As I would also like the painting to be fun to touch, I decided to cut two space monsters out of fluffy fabrics and added googly eyes. I glued them into place on the previously painted and varnished space landscape. Perfection!
No space themed thing is complete without a rocket!
The idea is to add a rocket that moves around the green planet using a servo.
I sketched a rocket on paper, cut the pieces out of felt and sewed it all together by hand. I glued a Popsicle stick to the servo mount and added a bit of Velcro to the rocket and the end of the Popsicle stick. The servo was added to the back of the painting using... you guessed it.. more duct tape!
Capacitive Touch Sensors
Now it's time to add some magic: the capacitive touch sensor!
After the sensor is ready, you'll need to wire it to the places you want to make interactive. I added copper tape to the back of the painting, in the four spots that you can touch to interact with the painting (monster on the left, the monster on the right, the orange planet and the green planet). Believe it or not, it actually works really well, even through some thicker surfaces! It's really magical!
The one thing that wasn't mentioned in the tutorial but is very important, is that you need to re-calibrate the sensor when adding things to it, for instance when you're wiring it to a certain spot using conductive tape. It might seems quite obvious but it wasn't mentioned anywhere and I spent a full day trying to figure this out...
I wired the pins of the capacitive touch sensor to the four copper touchy parts using some alligator clips.
The last part: sprinkling in some code to get the magic working!
The full code is added in the code segment, but I'll roughly outline it here:
If you touch the fluffy blue monster on the left, the LEDs turn light blue for 3 seconds.
If you touch the purple monster on the right, the LEDs turn purple for 3 seconds.
If you touch the orange planet, the LEDs turn orange for 3 seconds.
If you touch the green planet, the LEDs turn green and the servo with the rocket on it moves back and forth.
If you don't touch anything at all, the LEDs are a dark blue.
Tadaaa! A magical interactive painting of two monsters in space!