Assembly - BaconBett/Split-Flap-Display GitHub Wiki
You can bend the flaps until they fit into the holes on the character drum.
It helps to organize the flaps before assembly.


It is important that the flaps arount the magnet are the blank flaps and that the next flap is the letter A. Follow the images for guidance.



Use a small dab of superglue to fix the magnet in position. You can use something flat to ensure the magnet is correctly seated

The hall effect sensors are unipolar, meaning they will only detect the magnet if it is in the correct orientation. You will need to build a module/test for yourself on a breadboard which magnet direction is correct.
1 . Remove LEDS from ULN2003 Motor Driver (Optional But Recommended)
-
Removing the LEDS can easily be done with pliers, no need to even use the soldering iron.
-
This stops any light from seeping between the enclosure gaps and also allows us to route the motor cable without risk of it being snagged by the led pins.

2 . Bend Pins
-
Packaging requires that the black plastic base piece for the ULN2003 motor driver be removed, and then the pins bent so that the PCF8575 is at the correct angle inside the enclosure.
-
The two power pins for the ULN2003 should also be bent so that the protoboard fits correctly as shown in the photos.

3 . Create Protoyping Board
- Snap yourself a prototyping board with an area of 4x3 holes, as in the photos.

-
This allows us to easily wire multiple connections in parallel to the board, to supply 5v to the motor driver, PCF8575 IO expander and ESP32 (master module only).
-
The protoboard is also where the power wires of the 4 pin JST connectors are wired into.
-
Cut the connector wires so that there is approx 60-70mm of wire left after the connector, this will be the correct length for the enclosure.

-
You need to run two wires from the prototyping board to the PCF8575, for 5V power, before soldering the PCF8575 to the ULN2003
-
It is recommended to solder the protoyping board up before wiring to the ULN2003. Follow the photos is you are stuck.
3.1 (Master Module Only) - Solder Wires for ESP32 and Power Connector
- The ESP32 and power connector have two wires each that need to be connected to the protoboard, this is only needed for the master module.
- The ESP32 also has two wires (SDA and SCL) which need to go to the PCF8575
4 . Solder I2C Communication Wires
- Solder the white wires to SCL, and the yellow wires to SDA. You will need to strip and twist the wires together as there is only one hole for these on the PCF8575.
5 . Set Module I2C Address
- Solder the pins on the back of the PCF8575 (A0,A1,A2) to set the address of the module.
6 . Solder PCF8575 to ULN2003
- Directly solder the bent pins of the ULN2003 to pins PO1 to PO4 on the PCF8575, this is the neatest method I could come up with for wiring.
7 . Solder the Prototyping Board to the ULN2003
- Make sure the 5V side of the board goes to the 5v pin on the ULN2003, if this is wrong, you will probably damage the ULN2003 (I know because I did it!)
- Do not use the photos as reference because this is the one that broke. :D
8 . Solder the Hall Effect Sensor
- The sensor needs 5V, Gnd and a signal pin to run to P17 on the PCF8575.
9 . Attach Motor to Enclosure
-
Insert the motor and route the cable, the ears of the motor need to be bent so that they don't hit the character drum.
-
10 . Slide the Electronics Into the Enclosure
-
At this point, slide the completed electronics board into the module enclosure.
-
Be careful of the hall effect sensor wires, these will need to be tucked under the threaded bar hole.
11 . Assemble the Module
- Place the motor gear plate onto the motor, route the cable nicely and place the wire retainer in place, with the hall effect sensor also in its little slot.
- The M3x30mm screws can now be inserted. Use captive nuts on the gear plate to tighten the assembly together.
- Add the gears, with a little grease if assembling for final, followed by the assembled character drum.
ToDO:
Organize wiring images:

















For the firmware you have two options:
- Use my original firmware, which i have tested working for ESP32-S3 on Arduino IDE
- Use firmware written by Jordan Hoff (@jhoff on Makerworld). He has done some amazing work with the firmware, adding support for more boards and adding PlatformIO support. You are already in his repo.
I would recommend trying Jordan's firmware first because it will be more up to date, with more features, but here are the instructions for mine anyway:
Instructions for my original firmware
### 1. Download Code and Setup- Head to the project github, download the src repo and open with Arduino IDE 2
- You will need to install the following packages and plugins:
- ESPAsyncWebServer & AsyncTCP - Installed Through IDE
- LittleFS Plugin (For Uploading Files) Find Here
- Press Cntr + Shift + P in the IDE, and select "Upload LittleFS to ...."
- This will upload the HTML, CSS and JS for the web server onto the flash memory of the esp32
- Enter the file "SplitFlapDisplay.cpp"
- Change the numModules variable to reflect how many characters you have in your display
- Ensure that the moduleAddresses variable correctly shows your module address, in order
- Compile and upload the code to the ESP32
Since the ESP32 does not initially know your wifi credentials, it will host it's own open WiFi network "Split Flap Display" which you can connect to to setup the device.
- Connect to the network "Split Flap Display"
- Open your browser and visit "splitflap.local" (This should bring you to the config page)
- Go to settings, and enter the correct wifi credentials

- The ESP32 will then attempt to connect:
- If fail: it will host it's own network again
- If successful: the esp32 will connect to your network and stop hosting it's own access point
After setup, the esp32 will remember the last used wifi credentials, so it should connect automatically.
Official instructions for the firmware on this repo:
- Install dependencies
- PlatformIO Core CLI
- Node Version Mananger
- ClangFormat (Only required if contributing code)
- Download or clone this git repository.
- Open a terminal and
cd
to the project root - Install required version of npm for the project -
nvm install
- Install build dependencies -
npm install
- Connect the ESP32 to your computer using a USB cable.
- Build everything and upload to the board -
npm run build
- Automatically formats all source code (
npm run format
- if needed ) - Compiles and minifies all frontend assets (
npm run assets
) - Downloads all required arduino / esp32 libraries
- Compiles and uploads the esp32 firmware (
npm run pio:firmware
orpio run -t upload -e <environment>
) - Compiles and uploads the littlefs filesystem (
npm run pio:filesystem
orpio run -t uploadfs -e <environment>
)
- Enjoy!
On the settings page set an OTA password to enable OTA updatable firmware. Use this same password for your auth
flag in platformio.ini
, and then use a device environment with *_ota
appended (ie esp32_s3_ota
) to upload a new firmware and/or filesystem
At this point you should have a fully working, but floppy, split flap display.

-
Cut some M3 threaded rod. The formula for rod length is
(Number of Modules*37.9) + 11mm
-
Use the sandwich plates to squash the modules together. Do not tighten the lower front screw too tight or it will jam the system.

- Use a soldering iron to place heat-in inserts into the sandwich plates and mount the endplates.

- Push the USB-C connector through the endplate hole so it is still visible.
Showcase your Split Flap Display! Enjoy the Envy


