Skip to main content

Building a complete installation

Once your individual modules are built and homed, you can combine them into a multi-module installation. This page covers backboard mounting, the two kinds of boards that link modules, how signal and power flow through a row, how to address individual modules, and the software setup for a finished installation.

Mounting modules to the backboard​

Each module case has three dedicated screw holes on its back — designed specifically for attaching modules to a backboard. A custom-fitted backboard is the recommended way to hold everything together: it keeps spacing uniform, makes the assembly rigid, and makes it easy to take individual modules out for maintenance.

Three modules mounted side by side, back view showing the screw holes and connector boards

Screw the modules directly to the backboard using those three holes. The exact backboard material and dimensions depend on your display size — wood, aluminium sheet, and laser-cut acrylic all work well.

Neighbouring modules in a row are linked by small PCBs that snap directly between the connectors of two adjacent module PCBs, so there are no loose cables. Three of them exist, sharing one outline and one footprint, and although they look almost identical from the outside they do very different things to the power rail. Be sure not to mix them up:

Connection boardPower breakInjector board
SignalPasses throughPasses throughPasses through
12 VPasses throughCut — ends a power groupFed from the screw terminal
GroundPasses throughPasses through — common reference for the signalPasses through
12 V input——Screw terminal for the supply
Safety electronics——TI eFuse: over-/undervoltage, short-circuit and overcurrent protection
AvailabilityOne included with each PCBOrdered separatelyOrdered separately

Photos of all three, and how to choose between them, are on Connector Boards.

A connection board is a passive bridge: it carries the serial data line (TX of module N → RX of module N+1) and the 12 V power rail straight through to the next module. Use one between every pair of neighbours that should share power.

An injector board is where power enters the display. It provides a screw terminal for a 12 V supply and feeds the rail in both directions, so it sits at the junction after the first module of its group, powering that module backwards and the rest of the group forwards. The boundary to the next group is a power break, which is what keeps the two groups electrically separate. Each injector board also carries a TI eFuse that guards its power group against overvoltage, undervoltage, shorts on the bus, and overcurrent — ensuring the rating of any component on the bus is never exceeded. Signal passes through unaffected; only the power rail is interrupted.

Signal and power — two independent systems​

Two distinct systems run through these boards: signal and power. They share the same physical connectors but follow completely different rules, which is why a connection board and an injector board can look alike yet behave so differently.

Row 1
1
⚡12V
2
3
4
5
Power 1
⊘12V
6
⚡12V
7
8
9
10
Power 2
Row 2
1
⚡12V
2
3
4
5
Power 1
⊘12V
6
⚡12V
7
8
9
10
Power 2
Signal — serial daisy-chain through all modules and injectors
Power group — electrically isolated, max 3 A
Injector board — 12 V entry point, feeding both directions
Power break — 12 V cut between groups, ground and signal through
WiFi entry — first module connects to network, forwards to the rest

Use the sliders above to explore how different configurations change the layout. For a specific display size, the display planner counts the boards and the power groups you'll need.

Signal: one continuous chain per row​

Signal runs uninterrupted through every module in a row, regardless of how power is segmented. The first module in the row connects to your WiFi network and acts as the entry point for commands; all commands addressed to downstream modules arrive via WiFi and are forwarded along the chain using a very fast serial protocol. Downstream modules don't need their own WiFi credentials — a 10-module row only needs one WiFi client.

Different rows are fully independent: each row is its own signal domain with its own WiFi entry point. A 40-module display with four rows of ten has four WiFi clients and four independent serial chains.

The design also supports a more granular approach. Every module has the same PCB and can independently connect to WiFi — so you could split one long row into multiple independent segments, each with its own WiFi entry point. This increases fault isolation: a problem in one segment doesn't affect others. This flexibility is intentional and can be useful for very large installations or in environments where network reliability matters.

Power: isolated groups of at most 3 A​

Power is shared along the row too, but it is segmented into groups by the injector boards. Each group must draw less than 3 A in total, and groups are electrically isolated from each other. This isolation matters for two reasons:

  • A short circuit or overcurrent event is contained to a small number of modules and triggers a fast shutdown in the affected group only.
  • A fault can't cascade across the whole display.

Each module draws up to 500 mA under load, so the practical rule is one power group every 5 modules, since five modules approach the 3 A group limit. Each group gets one injector after its first module, and each boundary between groups gets a power break. Connector Boards shows the pattern.

What happens when a module fails​

The answer differs for power and for signal, which is worth knowing before you build something permanent.

Power faults stay in their group. Each injector board isolates at most five modules behind its own eFuse, so a short, an overcurrent or an overvoltage event shuts down that group and nothing else. A fault can't travel across the display.

A dead module breaks the chain behind it. Signal is forwarded module to module, so a module whose controller fails outright stops relaying commands, and everything downstream of it in that chain goes quiet. Modules upstream of it, and all other chains, carry on as normal.

That's the trade-off of a daisy chain, and it's adjustable. Every module can act as a WiFi entry point, so a long row can be split into several shorter independent chains. Ten chains of ten modules means a single controller failure takes ten modules offline instead of a hundred. On large or hard-to-reach installations that's worth the extra WiFi clients.

Mechanical failures stay local. A jammed drum or a bad flap set affects only that module, which keeps passing signal and power through untouched.

Taking a module out again​

Modules are screwed to the backboard through the three holes in the back case, so removing one currently needs access to the backboard from behind. That's fine for a cabinet or an open wall, and a problem for a display recessed into a sealed wall.

Front extraction is in development: releasing a module and lifting it out through the face of the display, with the connector boards doubling as the retention mechanism. If you're planning an installation where the back will be permanently closed up, get in touch before you build.

Either way, order a spare module or two. Swapping one in takes minutes, rebuilding one during an exhibition does not. Planning an Installation covers the rest of the questions a real room raises: enclosures, load, clearance and service access.

Addressing individual modules​

Because signal is one continuous chain, every module in a row is individually addressable through the row's single WiFi entry point. Modules are addressed by their relative position in the chain, using the command format from the serial protocol:

N:COMMAND:ARGUMENT
  • 0 addresses the module that receives the command — for a command sent to the row's WiFi entry, that's the first module.
  • 1 addresses the next module downstream (N+1), 2 the one after that, and so on.
  • @ addresses all modules in the chain at once — useful for things like firmware upgrades or showing a whole word.

So to make the fourth module in a row blink its LED, you send 3:BLINK to the first module — for example via the Serial-over-HTTP endpoint:

curl --request POST \
--url http://IP_OF_FIRST_MODULE/command \
--header 'content-type: application/x-www-form-urlencoded' \
--data command=3:BLINK

The first module relays the command down the chain until it reaches its target. The full list of supported commands lives on the electronics page.

Configuring a multi-row display with play.flipforward.de​

A single display that spans multiple rows is configured at play.flipforward.de. There, you can:

  • Define which rows belong to the same logical display and in what order.
  • Map character positions across rows so the display behaves as one coherent unit.
  • Send text updates and see them reflected across all rows simultaneously.
  • Render images across the grid, and build and preview alternative alphabets.

play runs virtual twins alongside hardware displays, and the two behave identically, so a multi-row layout can be built and tested in the browser before the modules for it exist. It's the intended way to drive displays with more than one row. The local-control desktop app does the same job without an internet connection, and Controlling Displays compares the two.

Receiving updates via webhook​

Once your display is set up on play.flipforward.de, you can integrate it with external systems using the webhook endpoint. Send an HTTP POST to your display's webhook URL with the text you want to show, and the platform pushes the update to all rows.

This is useful for dashboards, arrival boards, notifications, or anything else that benefits from a programmatic trigger — no open browser tab required.