Revisiting my dot-matrix EV3 Lego printer

This photo shows v3.0 of the Viper Printer.

This year I decided to revisit the dot-matrix Lego printer that I first built and programmed in 2017. The original design was the result of a lot of iterating, but it still had some significant problems. I wanted to try again, with a focus on eliminating errors and printing very consistent images.

You can download .LXF and .IO models of v3.0 of my LEGO printer, plus Python code for the printer, from the Viper Bots’ GitHub repo.

Keep reading to learn more.


Continue reading “Revisiting my dot-matrix EV3 Lego printer”

Corona chronicles: LEGO egg spinner for Easter

Our EV3 version of the LEGO Easter egg decorating machine.

Like so many others, the Renaud Empire has been staying put at Renaud Manor.

With Easter approaching, I came across a link to directions to build a LEGO egg decorating machine

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.

Continue reading “Corona chronicles: LEGO egg spinner for Easter”

Houston, we have some Unicorn Girls!

The Unicorn Girls robotics team from Vogt Elementary at their St. Louis Expo

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.

Continue reading “Houston, we have some Unicorn Girls!”

Viper Bots’ last hurrah?

This was my fourth season coaching an FLL team. This year all three Renaud girls were on the team: it was Jadzia’s fourth and final year, Ludi’s second, and Josie’s first.

The Viper Bots are a school-based team, so we begin when school begins in August at Vogt Elementary. After that, it’s a race to build and program our robot, research a project, and write a presentation by November. It is pretty exhausting.

Continue reading “Viper Bots’ last hurrah?”

Building a dot-matrix EV3 Lego printer

One of my early attempts to build a Lego printer. The print head here is driven by a rack and pinion. Later versions used a technic tread and sprocket.

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.

This is a simple dot-matrix portrait of my dad made using an early version of my Lego printer. The right side gets distorted, but the left and center are pretty good.

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 down”: The motor drives a small gear, which then turns a much larger gear on the axle. This decreases speed, requiring me to use many more tacho units to move the print head the same amount (it also increases torque). This might sound bad, but in fact it greatly reduces errors and inconsistency. I used “gearing down” 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:

UPDATE (2021-05-12): I uploaded the Python scripts I wrote for the Viper Printer to the team’s GitHub repo: https://github.com/Viper-Bots/viper-printer. Check them out, and please let me know if you build a printer based on my idea!