Introduction: CNC Etch a Sketch (and Video Player)
I'm not the first person to connect stepper motors to an Etch a Sketch, but I may be the first to make one wireless and safe for kids. The really fun part came when I started using it for stop motion. The first video below gives an overview of the project showing the simulated touch-screen effects towards the end. It's intended for general audiences to maximize views. Please share it with as many people as you can. The 2nd video contains all the details you makers will want to know in case you want to replicate the project or do your own unique version with similar hardware.
2nd video with details about Raspberry Pi, batteries, programming:
Step 1: Framework
If you can't pick up an Etch a Sketch and shake it then what's the point? Naturally it needs to be light and sturdy. I could have used wood, but recently spent a small fortune on a TIG welder so I better use it! The frame ended up 11" wide by 12" tall by 4" deep. I knew I would eventually encase the entire thing in clear plastic so it was necessary to make it as square as possible.
The hardest part was combining machined features with welded ones. I machined the mounts for the stepper motors to keep them precise but welding them together nearly negated all that precision. In the end it worked out pretty well.
Step 2: Drivetrain
I elected to use standard 3D printer stepper motors (NEMA 17). They had plenty of torque, especially considering the gear ratio they got from the 3D printed pulleys. Those blue timing pulleys are tapered on the inside to match the molded Etch a Sketch knobs and just press on. They fit so well it's difficult to get them off!
Step 3: Brains
This project is based on a Raspberry Pi running bCNC. In order to drive the stepper motors I elected to use the CNC Hat offered by Protoneer. It's capable of driving up to four stepper motors but I only needed two.
Step 4: Power
To avoid a bunch of cords hanging out of this thing it needs substantial batteries. I went with classic 18650 lithium cells which give it a solid 5 hour run time of continuous operation. In order to prevent them from being over or under charged I used a Battery Management System (BMS) board. I'd never used one before but they're pretty slick. Don't use the spring contact style battery holder I went with though. The contact springs have high resistance, eat power and keep the BMS from working properly. I eventually swapped enough parts to get it to work but plan on upgrading to a better solution at some point.
The Protoneer CNC hat can be powered directly off the BMS but the Raspberry Pi needs 5v USB power. To get that I used a buck converter and dialed it in to 5v. I sacrificed a USB cable and plugged directly from the buck converter into the USB power port on the Raspberry Pi.
Step 5: Programming
bCNC is a nice FREE program for running gcode. It works but doesn't contain some of the perks of a full blown commercial program like Mach 3. The thing I miss the most is backlash compensation. As you can imagine, an Etch a Sketch is pretty sloppy when changing directions. Like loose steering on an old truck, changing directions sometimes means turning the wheel farther than you thought. I ended up with almost two millimeters of slop when changing directions on the Etch a Sketch. To compensate I used a free program I found called "No Lash" designed for use with worn out 3D printers. You specify how much slop and in what axis and it modifies your gcode so the x/y coordinates already contain backlash compensation. It doesn't know what to do with circular commands G2 and G3 so I modified my "post" in Fusion 360 with “allowedCircularPlanes= 0” so it would only generate straight line segments. Also "No Lash" like a lot of free programs is very specific on syntax. "G1 X" is the only acceptable beginning of each line. G00, G01 or X won't do squat. Also it only works in millimeters which is fine since I was already setting up the rest of the system in millimeters anyway.
I should mention there's another program called GRBL that runs in the background on the CNC hat. It's where you calibrate how much rotation of the stepper motors will give how many millimeters of movement on the Etch a Sketch. Be patient with it, once you get it set up and working you won't have to mess with it again. It just does its job in the background and does it well.
If you don't know anything about driving stepper motors with CNC, go look up This Old Tony "Build Your Own CNC" on YouTube. That man is amazing and his instruction on the basics of CNC kits is NEXT LEVEL. I wish his stuff was available when I first wanted to learn how to do this!
Step 6: Video
Making the Etch a Sketch appear to act like a video touch screen was a lot of fun. Essentially I used old-school stop motion video with hundreds of pictures for each video. In order to clear the screen between each frame but return everything to the same place I needed a rigid repeatable fixture. I attached extra machine screws to the bottom of the Etch a Sketch frame and made little sockets for them on a piece of plywood. I then made a camera mount fixed to that plywood. Immediately I noticed a bad reflection off the shiny window of the Etch a Sketch that made the images look horrible. I used a combination of black fabric and construction paper to cover everything but the camera lens so there would be nothing to reflect. It worked wonderfully and made the videos look far better than other Etch a Sketch videos I've seen online.
The cat was a challenge. I got a video of a cat walking in front of a wall and grabbed screen shots I could trace in Fusion 360 then write gcode programs to follow the line. To speed up the already slow process of stop motion I put all the cat drawing programs together so each time I took a picture and reset the Etch a Sketch the next cat outline would be the next to draw. It took a few iterations but I'm really happy with the result.
The touch effect meant a combination of sped up CNC drawing as well as pictures taken with my pointer finger in various locations. Clearly I had to get creative in places but that made it really fun.
Step 7: Bringing It All Together
My goal at the beginning was a "magic" box I could switch on/off anytime I wanted to show it off. Unfortunately that's more of an Arduino behavior which doesn't have the brains to run something like bCNC. Sigh... So whenever I'm heading to a school to talk to students I plug in a monitor, make sure the batteries are charged (they hold their charge forever when it's off), fire up bCNC and load the program I want to run. bCNC isn't capable of "looping" a program or calling subroutines so when I'm heading to a science fair or exhibition which will last several hours I copy the program 20+ times and run it over and over. To indicate when it's time to shake/reset the Etch a Sketch I connected an LED to an M code output for coolant and power it on for 30 seconds at the end of each sketch. The LED is one with a built-in microprocessor that alternates between three colors and flashes like cop lights. That way all you have to do is switch it on and it makes the cool effects all by itself. In order to extend the battery even more I added a pause button on the side so the steppers aren't hogging power when I'm waiting to show it to students.
Second Prize in the
Raspberry Pi Contest 2020