As soon as I saw it, I knew our half of the Viper Bots (Ludi, Josie and Joseph) would be interested in giving it a try.
A couple of key differences. First, the original instructions used a battery-driven WeDo motor. We have an EV3-based robot named ViperEvie, so we connected an EV3 medium motor to her. It was a little tricky anchoring the medium motor to the LEGO mat, but I figured out a way to do it. Second, we had trouble with eggs rotating and falling, despite trying many adjustments. The thing that worked best for us was adding rubber tires to the back wheels.
We made a video showing the results:
H/T to Lauren Kornegay-Dollar for sharing this link with us!
Over the past few years, I have coached both First Lego League and First Lego League Jr. teams at Vogt Elementary. The older FLL team has always been called the Viper Bots. The younger team has changed its name over time: First they were the Sci Girls, then the LadyBots. This year they became the Unicorn Girls.
Well, we ended up having so many interested 1st-3rd grade girls that we had to add a second Jr. FLL team: the Unimermaids. It was quite an experience coaching these two teams, along with co-coaches Yoli and Heather Roberts, and our middle school helper, Ludi.
In June and July, I borrowed the girls’ robotics team Lego pieces and EV3 brain in order to build my own dot-matrix printer.
At various FIRST events, I have seen a kid or two who built a printer. I’ve also seen some on YouTube. As a fan of retrocomputing and Legos, I thought it would be a lot of fun to make my own printer.
The basic idea is simple and requires three motors. One feeds the paper forward or backward. One slides a print head back and forth horizontally across the page. The last one moves a marker or a pen up and down to draw a dot.
I made a lot of iterations of this printer, trying to solve various problems. It wasn’t perfect, and I was particularly limited by the number and kinds of pieces I had available. But it DID work! I was able to print out some portraits that were recognizable, as well as a Print Shop-style banner.
The main challenges (for me, anyway), were how to move the marker up and down, and how to code the printer so that it had good resolution. Early on, I attached the motors directly to the axles, then measured how far to move things using tacho counts. But that led to very sloppy, inconsistent results. After a while, I realized I needed to use a technique called “gearing up”: The motor turns a small gear, which then drives a much larger gear. This decreases speed, requiring me to use many more tacho units to move the print head the same amount. This might sound bad, but in fact it greatly reduces errors and inconsistency. I used “gearing up” to improve both the paper feeder, and the horizontal print head movement.
I wrote the code for the printer in Python, and controlled the EV3 using the ev3dev linux system. Later versions of the code were capable of reading in a PNG file and converting it to a low-res black and white image to print.
At the end of the summer, I created a 3D model of the printer using Lego Digital Designer. Download the viper-printer.lxf file and try it yourself in either LDD or Stud.io. The model isn’t perfect (There are two blank slots in the tread where I couldn’t get things to connect, for example), but is a nearly exact replica.
Inexplicably, I failed to take photos of the final version of the printer. So, here instead are some renderings of the printer, made using Stud.io: