Split-Flap Display
This is a DIY ESP32-based split-flap display, optimized for easy assembly at home in small quantities but able to be scaled up to large affordable displays.
The splitflap community Discord server is the best place to keep up with the latest changes or ask questions about the project!
Want to help support development or just say "thanks"? Consider a one-time or monthly sponsorship:
Using this project in a commercial setting or for paid client work? Go right ahead - it's open source (just make sure to follow the terms of the Apache License)! I would, however, ask that you consider sponsoring the project. I've been developing and maintaining this project in my free time for over 8 years, and I'd love to continue working on it. Sponsorships allow me to pay for prototypes and development tools that make this project possible. Unlike pure software projects, every iteration has real hardware costs; sponsorships allow me to keep iterating and improving the project faster. Thank you!
Current Status
Releases have been tested and used to produce working units, but as this is a continuously evolving open-source project, there may always be minor issues and/or incomplete documentation from time to time.
Stable release info
Component | Version | Notes |
---|---|---|
Enclosure/Mechanics | v0.7 | https://github.com/scottbez1/splitflap/releases/tag/v0.7 |
Electronics - Sensor | v1.1 | https://github.com/scottbez1/splitflap/releases/tag/releases%2Fsensor%2Fv1.1 |
Electronics - Chainlink Driver | v1.1 | https://github.com/scottbez1/splitflap/releases/tag/releases%2FchainlinkDriver%2Fv1.1 |
Electronics - Chainlink Buddy [T-Display] | v1.0 | https://github.com/scottbez1/splitflap/releases/tag/releases%2FchainlinkBuddyTDisplay%2Fv1.0 |
Firmware | latest | Current firmware is backwards-compatible and not strictly versioned; use the latest from the master branch |
Control Software Examples | latest | Example Typescript and Python code for driving the display is in the software directory. The Typescript library and examples are more actively developed. |
Here's a video of a large 108-module display powered by 18 Chainlink Driver boards and a Chainlink Base:
v2 (coming soon!)
A minor refresh of the mechanical and sensor design is currently in beta, and the stable release is expected in Summer 2024.
The beta designs (seen on this page) have been tested are nearly feature-complete, but documentation is still in progress.
Here's what to expect in v2:
- 52 flaps per module for more character/symbol options
- New printed flap design ("Epilogue") with 52 flaps per set (see animation above), including several color-block flaps
- Updated enclosure and mechanical parts (laser-cut) to accomodate 52 flaps
- Motor wires now exit downward for less awkward wiring!
- New sensor PCB that's easier to assemble and includes an LED for checking the magnet status
- Software-configurable calibration rather than mechanical sensor adjustment
But many things are staying the same for easy upgrades/compatibility:
- No change to flap dimensions!
- No changes to Chainlink Driver, Chainlink Buddy boards, or system architecture!
- 40-flap modules are still an officially supported option!
- Open source, as always!
- v0 parts (sensor kits) will continue to be stocked at Bezek Labs through 2024; don't worry if you haven't finished your build yet, the old sensor kits aren't going away!
I'd love to hear your thoughts and questions about this project, and happy to incorporate any feedback you might have into these designs! Please feel free (and encouraged) to open GitHub issues, email me directly, reach out on Twitter, and get involved in the open source development and let's keep chatting and building together!
Build Your Own
If you have any questions, please don't hesitate to ask in the community Discord server!
Note: the ordering and assembly guides have not yet been updated for the beta v2 designs. Ask in Discord if you have any questions about ordering or assembling a v2 display!
- Ordering guide (the "easy" route) - updated for Chainlink
- Chainlink Driver Electronics User Guide
- Latest stable release
- Assembly instructions (v0.5/0.6/0.7)
Table of Contents
- Design Overview
- Contributing/Modifying
Design Overview
Mechanical
The mechanical/structural components are made from laser-cut 3mm MDF or acrylic, and held together with M4 bolts and nuts. The design is parametric and built using OpenSCAD. See below for more info on rendering/modifying the design.
You can view an interactive 3d model of the design here.
The beta v2 mechanical design officially supports variants with 52 flaps (perfect for use with the new "Epilogue" printed flaps) and 40 flaps. But you can always modify the design to customize it further.
Stable v0.7 (40-flap modules)
The v0.7 stable release artifacts can be found at the v0.7 tagged release.
Beta v2 (52-flap module option - recommended)
Module dimensions:
Latest auto-generated (untested!) artifacts:warning::
- For Ponoko 3mm MDF (svg)
- For Ponoko 3mm acrylic (svg)
- For generic material (0.18mm kerf correction) (svg)
- For Elecrow 3mm Wood (zipped pdf)
- For Elecrow 3mm Acrylic (zipped pdf)
:warning:For tested/stable/recommended artifacts, use the latest release instead
Beta v2 (40-flap module option)
Module dimensions:
Latest auto-generated (untested!) artifacts:warning::
- For Ponoko 3mm MDF (svg)
- For Ponoko 3mm acrylic (svg)
- For generic material (0.18mm kerf correction) (svg)
- For Elecrow 3mm Wood (zipped pdf)
- For Elecrow 3mm Acrylic (zipped pdf)
:warning:For tested/stable/recommended artifacts, use the latest release instead
Electronics
[!NOTE] For small displays (up to 3 modules), you can skip the custom controller boards and use off-the-shelf ULN2003A driver modules plugged into an Arduino Uno. This is partially documented in the wiki but may require some additional tinkering to get it to work. Help wanted: if you'd like to help improve these instructions, please reach out in the Discord server, thanks!
The "Chainlink" electronics system is designed to support long chains of driver boards to control medium/large displays (up to 100+ split-flap modules). It's also designed to be easy and cheap to order pre-assembled or build yourself, especially in higher quantities, due to its simple BOM and surface-mount components.
To build a display, you'll need 3 different electronics:
- One Sensor PCB for every split-flap module
- One Chainlink Driver board for every 6 split-flap modules. This is what interfaces with the motors and sensors of each module. Chainlink Driver boards can be chained together to construct a large display.
- An ESP32 microcontroller board. There are a few options:
- For small/medium displays, one of the Chainlink Buddy boards are recommended
- Chainlink Buddy [T-Display] holds a Lilygo T-Display ESP32 module which includes a built-in LCD and 2 buttons
- Chainlink Buddy [Breadboard] makes it easy to connect a Chainlink Driver to a breadboard for prototyping, though you can also easily connect a Chainlink Driver to a breadboard with a few dupont wires.
- For large displays, the Chainlink Base provides a number of advanced features: central power management/distribution and fault monitoring, UART and RS-485 connections, configuration switches, and status LEDs.
- For small/medium displays, one of the Chainlink Buddy boards are recommended
Sensor PCBs (1 per module)
Each module needs a hall-effect sensor for start-up calibration and fault monitoring.
Sensors for stable v0.7 hardware
Older sensors for the v0.7 and older laser-cut hardware can be found in the tagged sensor release.
These older sensors are not compatible with v2 laser-cut hardware.