Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ All notable changes to Patternflow will be documented in this file, newest first
### Hardware

- **Besoiobiy's printed case is the second enclosure remix** (`hardware/case/remixes/besoiobiy-printed/`). Two long pieces glued side by side, a frame round the panel and a box for the board and the power bank, closed at the back by four screwed-on covers, with the panel bolted through the case into its own M3 sockets. Its README takes the place of the build guide's sections 4 and 6 and sets the order of 7 to 9; check your panel against it first, because the BOM's panel takes M4 screws on another hole pattern. The build guide's printing section and the assembly map point at it.
- **Mykyta Bilous' horizontal desktop case is the third enclosure remix** (`hardware/case/remixes/mbchars-horizontal-desktop-printed/`, [#488](https://github.com/engmung/Patternflow/pull/488) by [@mbchars](https://github.com/mbchars)). The panel lies the long way across on two removable stands, with the four controls on the right. Three front sections print face down, two white frames and an orange control section, and four joint bars on brass inserts hold them together without glue; two rear covers open onto the electronics and carry wall-mount openings. There is no power-bank bay: a separate PDSink 303PDSink01 trigger module in the control section feeds J4, the screw terminal, at 5 V. One Bambu Studio project holds all nine plates, with illustrated assembly instructions and the BOM changes beside it.

### Web

- **/build lets you pick the case, and the 3D view shows the one you pick.** The Build panel's switch (the official v3.9 case, Besoiobiy's printed case, SimonePDA's laser-cut one; `?case=` links to one) brings up that case's card, a remix's opening with its README on GitHub, and swaps the device in the preview for that case, with the same v3.9 board, DevKit and LED panel inside (and, on Besoiobiy's case, its own knob caps). SimonePDA's case comes in its two finishes, acrylic and MDF. Each model is made by `tools/case-models` from the case's own files in this repository (the guide's v3.9 case, Besoiobiy's STLs, SimonePDA's cutting layout) and sits beside the case's photos, `web/public/cases/<id>/model.glb`. The model the page loads first is 0.32 MB, where the old v3.0 one (`3dforweb.glb`, now removed) was 1.15 MB; a remix's model loads when it is picked, and the guide takes its LED panel from the official one.
- **/build has a fourth case, mbchars' horizontal desktop one, in the switch and in the 3D view.** Its card is its README's facts and the author's photos, and the switch is four tabs, two by two on a phone. `tools/case-models/mbchars.py` puts its model together from the remix's STLs, since no assembled file exists, and checks it against the README; in it the panel lies the long way (`ledTurn` in `placement.json`), the official knob is printed white (`knobLook`), and the orange is the one in the author's 3MF, `#F46B16` (`pla_orange`). The model is 0.38 MB and loads when the case is picked; the other three rebuild byte for byte. The case is 41 cm across, so on a desktop's tall view it is drawn smaller, by as little as keeps it clear of the arrows; on a phone all four cases, and on a desktop the three upright ones, are still drawn at the one scale. The build map's pin for the same build goes by the maker's name now, mbchars (it was extraplojo).
- **The preview's case is white, not beige, and the rest of it looks more like the photos.** The printed parts are a neutral white PLA (`#f4f4f2`, matte), where the guide's warm white had come along; the case front measures b\* +0.4 and L\* 89.8 where it was +1.7 and 82.5. The frame goes through the shoulder of the Neutral tone curve, which leaves what is under its knee as lit and rolls off what is brighter with its channels together, so a bright light no longer clips red and green first and leaves the white yellow. The light is made on the page from light panels, as on the guide's stage, instead of an environment map fetched from a CDN at run time. The LED panel is a grid of round LEDs on a black mask where it was solid blocks on grey (each LED becomes its whole cell once it is under about three pixels across, as on a phone), its sides and back are the panel's black frame, and what glowed before (the whites, and the bright yellows and cyans of a pattern from the editor) glows as before. The official knob is the printed knob's own profile drawn round, where it was a 32-sided prism. SimonePDA's clear acrylic is clear: the canvas is see-through, and every partly covered pixel used to reach the page far too bright, which drew the sheet frosted white; its three feet, which no photo shows on it, now come out only with the parts and on Assemble. Every case is drawn at one scale, so the LED panel is the same size in all three (the remixes drew it 3.5 to 4% smaller). The three models were rebuilt with `tools/case-models/build.sh`; the official one grows by 0.8 KB.

### Docs
Expand Down
79 changes: 79 additions & 0 deletions hardware/case/remixes/mbchars-horizontal-desktop-printed/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
Author: Mykyta Bilous (mbchars), https://github.com/mbchars
License: CC-BY-SA-4.0
Based on: Patternflow enclosure by engmung / SeungHun Lee;
Fits: Patternflow v3.0 controller PCB; 320 × 160 mm LED panel with the tested hole pattern
Material: PLA; Bambu P2S; 0.4 mm nozzle; 0.20 mm layers; textured plate.
Verified: 2026-10-07; assembled by the author; photographs below

# Horizontal desktop printed enclosure

This enclosure holds Patternflow horizontally on two removable stands. There are also screw openings for wall-mounting. The four controls are on the right in the front view.

The release has one control section with a holder for the **PDSink 303PDSink01 USB Trigger**. The separate module connects to **J4**, the controller power terminal.

![Completed enclosure with white frames and orange controls](images/photo_front.jpg)

## Features

- The three front sections print with their front faces on the plate.
- The power bank compartment is removed.
- Four joint bars connect the front sections independently of the rear covers.
- Two rear covers give access to the electronics.
- Four small alignment pins are optional. They can guide the parts during glue.

**Glue is optional. The joint bars hold the enclosure without glue.**

The enclosure dimensions are approximately 411 × 176 × 42 mm. These dimensions exclude the knobs and stands.

![Front surface, controls, and cable](images/photo_front_angle.jpg)

## Print files

Open [print_layout.3mf](print_layout.3mf) as a project in Bambu Studio. This single project contains all nine plates.

Select your printer and PLA profile. Keep the supplied part orientations and support blockers.

Each plate uses one color.

| Plate | Part | Quantity | Color |
|---|---|---:|---|
| 01 | [Outer frame](stl/white_outer_frame.stl) | 1 | White |
| 02 | [Inner frame](stl/white_inner_frame.stl) | 1 | White |
| 03 | [Control section](stl/control_section.stl) | 1 | Orange |
| 04 | [Display rear cover](stl/rear_display_cover.stl) | 1 | White |
| 05 | [Control rear cover](stl/rear_control_cover.stl) | 1 | White |
| 06 | [Joint bar](stl/joint_bar.stl) | 4 | White |
| 06 | [Optional alignment pin](stl/alignment_pin_2mm.stl) | 4 | White |
| 07 | [USB retainer](stl/usb_retainer.stl) | 1 | Orange |
| 08 | [Stand](stl/stand.stl) | 2 | Orange |
| 09 | [Knob](stl/knob.stl) | 4 | White |

Each STL contains one part. The 3MF contains the quantities in the table. The colors are optional.

The front sections and USB retainer use configured supports. The covers, joint bars, pins, stands, and knobs do not use supports.

Keep the USB retainer screw face upward. Remove its supports before assembly. Do not put supports inside the PCB guides or alignment holes.

An STL does not contain print settings. For another slicer, use the 3MF orientations and support locations as references.

The estimated total is 24 hours 08 minutes and 714 g of PLA.

## Parts and assembly

Use the [BOM changes](bom.md) with the original v3.0 BOM. Follow the [illustrated assembly instructions](assembly.md).

Make sure that your panel hole pattern agrees with the enclosure before you print. Panel dimensions alone do not establish compatibility.

The tested module PCB is 27.8 × 11.1 × 1.5 mm, excluding the socket overhang. The metal socket is 8.97 mm wide.

The USB retainer accepts PCB lengths from 27.5 to 28.3 mm. Other modules with the same product name can have different dimensions.

**J4 is the controller's only power input.** Do not use its onboard USB footprint or DevKit USB port for LED panel power.

Set the separate trigger output to 5 V. Measure its output before connection to J4. Follow the original [power connection instructions](../../../../BUILD_GUIDE.md#2-power-input--use-the-screw-terminal).

## Attribution and license

This is a community remix of [Patternflow by engmung / SeungHun Lee](https://github.com/engmung/Patternflow).

Mykyta Bilous designed the enclosure changes and supplied the build photographs. The files in this folder use [CC BY-SA 4.0](../../../../LICENSE-CC-BY-SA).
141 changes: 141 additions & 0 deletions hardware/case/remixes/mbchars-horizontal-desktop-printed/assembly.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Assembly instructions

Use the parts in [bom.md](bom.md). Disconnect the supply before mechanical assembly or wire installation.

The **joint bar** connects two front sections. The **USB retainer** holds the separate trigger PCB against its socket location.

The controls are on the right in the front view. They are on the left in the rear view.

## 1. Prepare the printed parts

1. Remove all supports and brims.
2. Remove loose material from the joint channels, PCB guides, and screw holes.
3. Put the three front sections face down on a clean, soft, flat surface.
4. Put the concealed laps into their recesses.
5. Make sure that the front faces are flush.
6. If a joint does not close, remove the obstruction before you continue.

Do not use screws to pull a distorted frame flat.

## 2. Install the brass inserts

![Insert dimensions and joint screw section](images/02_joint_section.png)

1. Put the four joint bars on a heat-resistant surface, away from the enclosure.
2. Use a temperature-controlled insert tool to install two M3 inserts in each bar.
3. Make each insert top flush with the bar surface.
4. Let the bars cool on a flat surface.
5. Make sure that each bar is straight.
6. Install the 16 rear cover inserts in their case bosses.
7. Install one insert in the USB retainer screw boss.
8. Let all inserts cool before screw installation.

Use the insert tool supplier's procedure for PLA. Keep the tool away from visible surfaces.

## 3. Connect the front sections

![Four joint bars in the rear view](images/01_frame_connections.png)

1. Keep the three front sections face down.
2. Slide one joint bar beneath each pair of joint lugs.
3. Point the insert openings toward the rear of the enclosure.
4. Install two M3 × 8 mm countersunk screws through each lug pair into its bar.
5. Leave the screws loose initially.
6. Hold the joint closed with the front faces flush.
7. Tighten the two screws alternately until the joint is secure.
8. Repeat the procedure for all four bars.
9. Make sure that all three sections remain connected with the rear covers removed.

The joint lug holes and rear cover insert holes are separate. Do not put joint screws into the cover insert holes.

### Optional alignment pins and glue

![Optional alignment pins at a joint](images/03_optional_pins.png)

The four small printed pins are optional. They locate the parts and can guide them during glue application.

The joint bars provide the mechanical connections. Glue is not required.

1. If you use the pins, put them in the four alignment locations before you close the joints.
2. Make sure that each pin permits the joint to close fully.
3. If a pin holds a joint open, remove it.
4. If you use glue, first assemble the joints without glue to confirm the fit.
5. Apply a small quantity of PLA-compatible glue to the mating faces as specified by its manufacturer.
6. Keep glue away from the visible faces, inserts, PCB guides, and electronics.
7. Align the parts with the pins during glue application.
8. Keep the joints aligned until the glue has cured.

## 4. Install the panel and controller

1. Put the LED panel in the frame with its display face toward the front.
2. Make sure that its power and data connectors face the internal cable passage.
3. Make sure that the rear components do not contact the joint bars.
4. Install the panel with its correct mounting screws.
5. Tighten the panel screws gradually.
6. Make sure that the frame joints stay closed.
7. Install the controller with the encoder shafts through the control section.
8. Install the encoder washers and nuts.
9. Tighten the nuts until the controller is secure.

If a joint opens, stop before you tighten the screws further. Correct the cause before you continue.

## 5. Install the separate USB module

![USB module and short retainer in the rear view](images/04_usb_installation.png)

1. Put the module into its guides, with the socket first.
2. Keep the components toward the open rear of the enclosure.
3. Seat the socket behind the side opening.
4. Put the USB retainer against the rear PCB edge.
5. Keep the output wires above the low retainer tongue.
6. Install the M3 × 8 mm countersunk retainer screw.
7. Tighten the screw only until the module is secure.
8. Make sure that the retainer does not contact the adjacent joint bar.
9. With the supply disconnected, insert and remove the USB-C cable gently.
10. Make sure that the plug seats fully and the PCB stays in position.

Do not use the retainer to force the module into position. Do not clamp wires beneath the retainer.


![Actual socket installation](images/photo_socket_detail.jpg)

## 6. Connect power and data

![Electrical connection diagram](images/05_connections.png)

**CAUTION: The trigger output must be 5 V. A higher voltage can damage the controller and panel.**

1. With the supply disconnected, set the trigger to 5 V according to the module manufacturer's instructions.
2. Keep the trigger output disconnected from J4.
3. Connect the USB-C supply to the trigger.
4. Measure the trigger output voltage and polarity with a multimeter.
5. If the output is not 5 V with the correct polarity, stop.
6. Disconnect the supply.
7. Connect the module's positive output to J4 +5 V.
8. Connect the module's negative output to J4 GND.
9. Connect the panel power cable to J3.
10. Connect the HUB75 ribbon cable between J1 and the panel input.
11. Make sure that the ribbon cable orientation agrees with the connector keys and panel labels.
12. Make sure that all terminals are secure and no bare conductor can contact another connection.
13. Keep the wires clear of screws, joint bars, and cover edges.

**J4 is the controller's only power input.** Do not use the controller USB footprint or DevKit USB port for panel power.

The diagram shows the connections, not the physical terminal order. Use the labels on the actual boards.

![Actual rear assembly with controller, module, and connections](images/photo_rear_assembly.jpg)

## 7. Close the enclosure

1. Make sure that all supports and loose objects are removed from the enclosure.
2. Put the two rear covers in position.
3. Make sure that the covers seat without pressure on wires or components.
4. Install the 16 rear cover screws.
5. Tighten the screws until the covers are secure.
6. Install the four knobs on the encoder shafts.
7. Put one stand at each lower end of the enclosure.
8. Put the enclosure on a stable, flat surface.
9. Connect the supply.
10. Make sure that the display and all four controls operate correctly.

Follow the original [build guide](../../../../BUILD_GUIDE.md) for controller setup and operation.
46 changes: 46 additions & 0 deletions hardware/case/remixes/mbchars-horizontal-desktop-printed/bom.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Bill of materials changes

Use these changes with the original [v3.0 BOM](../../../bom/bom_v3.0.csv). The controller PCB components and LED panel remain unchanged.

## Replacement parts

| Original item | Replacement for this enclosure |
|---|---|
| Original printed enclosure | Parts in the [print table](README.md#print-files) |
| Power bank | External USB-C supply with a 5 V output compatible with the trigger |
| USB cable cut for connection to J4 | Complete USB-C cable, separate trigger module, and two output wires to J4 |


## Additional hardware

| Part | Quantity | Specification or location |
|---|---:|---|
| PDSink 303PDSink01 USB Trigger | 1 | Separate module; output set to 5 V |
| Brass heat-set insert | 25 | M3 thread; 5 mm outside diameter; 5 mm length; 4.5 mm printed pilot |
| Joint bar screw | 8 | M3 × 8 mm, countersunk head; two per joint bar |
| USB retainer screw | 1 | M3 × 8 mm, countersunk head |
| Rear cover screw | 16 | M3 × 8 mm, countersunk head |
| Output wire pair | 1 pair | Module +5 V and GND to controller J4 |

The 25 inserts comprise 16 cover inserts, eight joint bar inserts, and one USB retainer insert.

The enclosure uses 25 M3 screws in total.

Do not substitute the enclosure screws for the panel screws.

## Printed quantities

| Part | Quantity |
|---|---:|
| Outer frame | 1 |
| Inner frame | 1 |
| Control section | 1 |
| Display rear cover | 1 |
| Control rear cover | 1 |
| Joint bar | 4 |
| USB retainer | 1 |
| Stand | 2 |
| Knob | 4 |
| Optional 2 mm alignment pin | 4 |

The four small pins can guide the parts during glue application. Glue and pins are optional; the joint bars provide the connections.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading