Scanwheel is a drum style mechanical television you can build yourself
Build Your Own Scanwheel: A DIY Mechanical Television
The Scanwheel is an enthusiast project that allows you to construct a drum-style mechanical television from scratch. Unlike modern screens, this device uses a physical rotating drum to create images.
📺 System Overview
The device utilizes a single scanning drum to drive five side-by-side windows. While they share the same drum, each window is powered by its own dedicated LEDs, enabling the display of separate images simultaneously.
Technical Specifications
- Window Dimensions: A luxurious per window.
- Vertical Resolution: 20 scan lines.
- Horizontal Precision: By leveraging the
PIO(Programmable I/O) hardware of the Raspberry Pi Pico, the system achieves an extremely high horizontal resolution. This ensures the visual quality far exceeds what one would expect from a mere 20p resolution.
🛠️ Hardware Requirements
1. The Motor
You will need a modern Symbol Technologies 21-02485 stepper motor. Although it is an older model, it remains widely available through online marketplaces.
Wiring Note: This motor has a non-standard wiring configuration. To operate it as a bipolar stepper motor, you must cut the white wire before it enters the 4-pin connector.
Pro Tip: When adjusting the potentiometer, turn it down as far as possible without stopping the motor's rotation; the sweet spot is usually at the very bottom of the range.
2. The Controller
A Raspberry Pi Pico is required.
- Standard Pico: Works fine for basic operation.
- Pico W: Recommended if you wish to stream content wirelessly.
3. The Lighting (LEDs)
The build uses a combination of one RGB LED and four white LEDs. This setup balances wiring simplicity with acceptable image quality.
Crucial Constraints:
- The R, G, and B channels must be brightness-matched.
- The combined RGB output must match the intensity of the white LEDs.
- Total current draw must not exceed 50mA from the Pico's GPIO pins.
To calculate the necessary resistors, use Ohm's Law:
The following table outlines the specific values used by the creator to achieve balanced brightness:
| LED Channel | Resistor Value | Current Draw |
|---|---|---|
| Red | 120R | |
| Green | 260R | |
| Blue | 220R | |
| White | 82R |
🖨️ 3D Printing Guide
The necessary models are located in the /parts directory.
Printing Checklist
- Scale X and Y axes to
100.33%(to compensate for PLA shrinkage). - Keep Z axis at
100%. - Set 'Wall Generator' to
Arachne(if using Orca Slicer). - Use a
0.2mmnozzle for the drum (if supported).
Drum Fabrication
The drum is the most critical component. Because pinhole imperfections are highly visible, you must use high-quality settings:
- Low printing speeds
- Small layer heights
The project includes an OpenSCAD model for the drum, allowing you to tweak parameters. Additionally, you may want to add a washer to the drum's spindle to increase its moment of inertia.
💻 Software Architecture
The software is split between the host computer and the microcontroller.
File Breakdown
/picodirectory:scanwheel.py: The primary driver for the hardware.- Various example applications.
/hostdirectory:videostream.py: Handles the network stream from the PC.streaming.py: The receiving end of the stream on the Pico.pngdirect.py: A utility to convert standard images into the raw framebuffer format required by thescanwheel.
# Example logic for framebuffer conversion
def convert_to_framebuffer(image_path):
# Logic to transform PNG to raw scanwheel format
pass