Alexander HogansonNate Foss
Published © CC BY-NC-ND

Etch-A-Whiteboard: Automated Precision Drawing

Fully automated 6'x4' whiteboard. Give it any image and it renders the edges and sketches them in huge, precise, monochromatic glory.

AdvancedShowcase (no instructions)Over 8 days5,872
Etch-A-Whiteboard: Automated Precision Drawing

Things used in this project

Hardware components

Bipolar Stepper Motor
×2
Raspberry Pi 2 Model B
Raspberry Pi 2 Model B
×1
Dual H-Bridge motor drivers L298
SparkFun Dual H-Bridge motor drivers L298
×2
L12 Linear Actuator 50mm 100:1 12V Analog
×2
McMaster-Carr Timing Belts
×1
McMaster-Carr Pulley
×1

Software apps and online services

OpenCV
OpenCV

Hand tools and fabrication machines

Laser cutter (generic)
Laser cutter (generic)
3D Printer (generic)
3D Printer (generic)

Story

Read more

Custom parts and enclosures

CAD of pen holder

While all of these files are in the CAD repository, the pictures are still good visual demonstrations. This is a custom MeshMixer support structure superimposed on the autoCAD drawing of the pen holder.
00

CAD of XY interface

The XY interface is one of the most important parts in the entire project. It both provides for stable support for the Y axis, and allows the entire axis to move fluidly along the X axis.
Picture1

CAD repository.

Due to the unique nature of the project, almost all components had to be built from scratch. To this end, the CAD softwares AutoCAD, Inventor, MeshMixer, and Eagle were used extensively. Attached are the files used in construction of this project.

Schematics

Electronics Diagram

A simplified diagram of the electronic configuration.
Capture

Capture.PNG

Capture

Actuator Circuit Drawing

This circuit enables a signal from the raspberry pi to switch ground and power to the two linear actuators, enabling them to go up and down
Img 0666

Code

Etch-A-Whiteboard Code

findEdges.py uses OpenCV to detect and thin the image's edges, then instructionGenerator.py traces out those edges and turns them into commands for the whiteboard, outputting them into a .eaw file. Movement.py can be used on its own to take one command at a time inline (useful for re-calibration and testing) or as a resource for draw.py, which takes a .eaw file as an argument and executes the instructions therein.

Credits

Alexander Hoganson

Alexander Hoganson

1 project • 3 followers
TJHSST Class of 2016 Robotics Lab Yale Class of 2020 Engineering Major
Contact
Nate Foss

Nate Foss

1 project • 1 follower
Contact

Comments