Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Etch-A-Snap — The Raspberry Pi powered Etch-A-Sketch camera

Etch-A-Snap is (probably) the worlds first Etch-A-Sketch Camera. Powered by a Raspberry Pi Zero (or Zero W) it snaps photos just like any other camera, but outputs them by drawing to an Pocket Etch-A-Sketch screen. Quite slowly.

Photos are processed down to 100x60 pixel 1-bit (black & white) line drawings using Pillow and OpenCV and then translated into plotter commands by building a network graph representation with networkx. The Etch-A-Sketch wheels are driven by two 5V stepper motors mounted into a custom 3D printed frame. The Etch-A-Snap is entirely portable and powered by 4xAA batteries & 3x18650 LiPo cells.

The developing time for a photo is approximately 15 minutes - 1 hour depending on complexity1.

The first video shows the process of taking a photo with the Etch-A-Snap, including the initial drawing of the image on the screen. The second clip is a timelapse showing the drawing of the resulting picture.

Keep scrolling for some more examples.

Camera Examples

These shots were taken live using the Etch-A-Snap — a single shot was taken and immediately drawn to the screen. The drawing process was captured using a timelapse camera.

Outdoor street view, showing the Etch-A-Snap struggling a bit on building details.

Doraemon and a Deer shows a real-time recording of a snap. The image taken with the camera can be seen here for reference. In realtime you can see the initial print speed is slow as the graph is still being calculated, but then quickly increases. Print time is 6 minutes.

In early tests the Etch-A-Snap ran at 2 pixels per second, but now achieves a lightning fast 20 pixels per second.

Image examples

The Etch-A-Snap can also draw a picture from any image type supported by Pillow using the draw.py utility. Using this script the Etch-A-Snap crops, resizes and processes the images the exact same way as from the camera, but you can be a bit more selective with the image and increase the chances of getting something half decent out.

Etch-A-Sketch logo generated from a monochrome PNG.

The Queen. There is no route-optimisation (travelling salesman) at work when drawing, aside from adding weight to previously draw areas to encourage avoiding them in future. This picture of the Queen shows some serious back-tracking over the hair/top right corner.

Django Wagner. Het is weer weekend. This picture produces a poorly connected network around the face, which Etch-A-Snap deals with by adding a number of linker lines (shown in red). These links are optional additions, which can be used to shortcut while drawing but omitted if not needed — the right ear shows an example of an unused linker.

How does it work?

If you're interested in how the Etch-A-Snap works, or want to build one yourself, take a look at the separate parts of the write-up — Build, Processing, Drawing and Plotter.

The following files and resources are also available —

  • The full code is available on Github along with a Jupyter notebook which details (and allows you to) experiment with the image processing and graph generation.
  • You can download the STL files for 3D printing, or edit the model on TinkerCad directly.
  • The circuit Fritzing file is also available.

  1. It's quicker than film! ↩



This post first appeared on Martin Fitzpatrick – Python Coder, Postgraduate, please read the originial post: here

Share the post

Etch-A-Snap — The Raspberry Pi powered Etch-A-Sketch camera

×

Subscribe to Martin Fitzpatrick – Python Coder, Postgraduate

Get updates delivered right to your inbox!

Thank you for your subscription

×