# Shopping list — two rows of seven moving characters

Prepared **October 23, 2026**. This is the updated full flight-tracker panel: **14 motorized characters, 38 flaps per character, 532 flaps total**. Every position can show space, A–Z, 0–9 or a hyphen. The first prototype becomes one of the 14 finished modules.

**Recommended purchase allowance: $329.58–$470.21 before tax, shipping and possible tariffs.** This includes spare component packs, wiring, mechanical hardware and three full filament spools. Printer and new tools are excluded. Subtract supplies already owned. This is a purchasing plan, not an order or a promised delivered price.

| Item / link | Exact requirement | One prototype | Full 14-character panel | Buy quantity | Extended purchase cost |
| --- | --- | --- | --- | --- | ---: |
| [ESP32-C3 SuperMini](https://www.amazon.com/dp/B0FBG9N7M3) | Compact C3, USB-C, 4 MB flash; AITRIP pack has soldered male headers | 1 | 1 | 1 two-pack: 1 installed +1 spare | $9.99 · observed |
| [5V stepper + ULN2003 sets](https://www.amazon.com/dp/B0CLYCM1CP) | 28BYJ-48 5V, 5-wire unipolar, nominal 1:64 gearbox; matching ULN2003 | 1 | 14 | 5 three-packs: 15 sets, 1 spare | $39.95 · observed |
| [MCP23017 GPIO breakouts](https://www.adafruit.com/product/5346) | Adafruit 5346; 43×18×5mm; 5V supply; addresses 0x20–0x24 | 1 | 5 | 6 boards: 5 installed +1 spare | $35.70 · observed |
| [Bare A3144 Hall switches](https://www.amazon.com/dp/B07LG77559) | 3-lead digital unipolar open-collector Hall switch; 5V supply | 1 | 14 | 2 ten-packs: 20 sensors, 6 spare | $12.98 · observed |
| [Drum magnets](https://www.apexmagnets.com/3mm-x-1mm-disc-neodymium-magnet) | 3mm diameter×1mm thick, axial neodymium discs; N48 reference | 1 | 14 | 1 hundred-pack | $6.99 · observed |
| [I2C and reset voltage translator](https://www.adafruit.com/product/757) | Adafruit 757 BSS138, 3.3V↔5V; 3 of 4 channels used | 1 | 1 | 1 board | $3.95 · observed |
| [10kΩ resistors](https://www.digikey.com/en/products/filter/through-hole-resistors/53) | 10kΩ, 1/4W or 1/8W; 4 motor pulldowns +1 Hall pullup per character | 5 | 70 | 100 pieces | $3.00–$6.00 · allowance |
| [Decoupling and bulk capacitors](https://www.digikey.com/en/products/category/capacitors/3) | 100nF at each Hall; 470–1000µF electrolytic ≥10V at each row feed | 1 ceramic +1 bulk | 14 ceramics +2 bulk | 20 ceramics +3 bulk | $5.00–$10.00 · allowance |
| [Enclosed regulated 5V6A adapter](https://www.digikey.com/en/products/detail/mean-well-usa-inc/GST60A05-P1J/7703709) | Mean Well GST60A05-P1J, 30W; center-positive 5.5×2.1×11mm; factory 16AWG lead | 1 | 1 | 1 adapter | $19.40–$24.86 · observed |
| [Grounded AC cord](https://www.digikey.com/en/products/detail/mean-well-usa-inc/YP12-YC12/7707223) | US NEMA5-15P→IEC C13 listed cord; Mean Well YP12_YC12 reference | 1 | 1 | 1 if not owned | $7.29 · observed |
| [Rated prewired panel inlet](https://www.digikey.com/en/products/detail/tensility-international-corp/10-02878/8635385) | Tensility 10-02878: 5.5×2.1mm jack, 6.5A, 305mm 18AWG pigtail | 1 | 1 | 1 assembly | $4.74–$4.91 · observed |
| [Row and logic fuses/holders](https://www.digikey.com/en/products/detail/littelfuse-commercial-vehicle-products/FHAC0001ZXJ/2004062) | Littelfuse FHAC0001ZXJ covered ATO holders, 16AWG, 32VDC/20A; 3A row and 1A logic fuses | 1 row +1 logic holder | 3 holders; 2×3A +1×1A installed | 3 holders +6×3A +3×1A fuses | $25.59 · observed |
| [Insulated distribution connectors](https://www.digikey.com/en/products/detail/wago-corporation/221-415/13549457) | WAGO 221-415 reference, 5-conductor copper splice, 24–12AWG | 2 | 10 | 10 pieces | $10.00–$18.00 · allowance |
| [Power wire and insulation](https://www.adafruit.com/category/282) | 18AWG copper input/row trunks; 22–24AWG short branches; heat-shrink | short bench harness | ~2m trunk +~5m branch wire | 5m 18AWG total +10m 22–24AWG total +heat-shrink | $18.00–$30.00 · allowance |
| [Signal wire and removable headers](https://www.adafruit.com/category/154) | 26AWG multicolor hookup wire, 2.54mm mating signal headers | 1 character harness | 14 harnesses +short 5-expander bus | ~30m multicolor wire +header/socket assortment | $10.00–$20.00 · allowance |
| [Rear prototyping boards](https://www.adafruit.com/category/124) | 2.54mm isolated-pad perfboard; space for 5 MCPs, C3, shifter, resistors | 1 bench area | one rear electronics assembly | 2–3 cuttable sheets | $8.00–$15.00 · allowance |
| [Spare breakaway headers](https://www.adafruit.com/category/154) | 2.54mm male/female headers as needed | as needed | as needed | 2–4 strips if not included | $2.00–$5.00 · allowance |
| [Module screws](https://shop.marshfasteners.com/products.asp?dept=480) | M3×0.5×30mm countersunk flat-head machine screws | 4 | 56 | 100 pieces | $8.00–$15.00 · allowance |
| [Row end-cover screws](https://shop.marshfasteners.com/products.asp?dept=480) | M3×0.5×8mm countersunk flat-head machine screws | 4 | 8 | 20–25 pieces | $3.00–$7.00 · allowance |
| [M3 hex nuts](https://boltdepot.com/Metric_hex_nuts) | M3×0.5 standard hex nuts | 12 | 76 | 100 pieces | $4.00–$8.00 · allowance |
| [Brass heat-set inserts](https://www.lowes.com/pd/Unique-Bargains-M3-x-4mm-L-x-5mm-OD-Female-Thread-Brass-Embedment-Nuts-50pcs/105591295) | M3 thread, 4mm length×5mm outside diameter | 4 | 22 | 50 pieces | $5.00–$10.00 · allowance |
| [M3 threaded rods](https://www.walmart.com/ip/822356439) | M3×0.5 fully threaded steel; final cut 276.3mm | 4×48.9mm | 8×276.3mm | 10×300mm rods | $18.00–$28.00 · allowance |
| [Outer carrier screws](https://boltdepot.com/Metric_machine_screws) | 14×M3×8mm +4×M3×20mm; 2 short screws require button heads ≤1.8mm high, others button/pan | 0 | 14 short +4 long | 20×M3×8 +10×M3×20 | $6.00–$15.00 · allowance |
| [Foot pads and thin foam](https://www.homedepot.com/b/Hardware-Cabinet-Hardware-Cabinet-Accessories-Cabinet-Bumpers/N-5yc1vZc2eh) | 4 non-slip adhesive foot pads; 0.5–0.6mm foam strips for carrier fit | 0 | 4 pads +small foam strips | 1 small pack of each | $4.00–$8.00 · allowance |
| [Magnet glue and gear lubricant](https://www.homedepot.com/b/Paint-Paint-Supplies-Adhesives-Super-Glue/N-5yc1vZci1o) | Small cyanoacrylate glue +plastic-compatible grease | small amounts | small amounts | 1 each if not owned | $5.00–$10.00 · allowance |
| [Black and white PLA](https://us.store.bambulab.com/products/pla-basic-filament) | 1.75mm PLA; black parts/flaps, white glyph layers | slice to measure | 532 flaps +14 mechanisms +carrier | 2kg black +1kg white stock allowance | $45.00–$75.00 · allowance |
| [USB data cable](https://www.adafruit.com/category/612) | USB-C data cable compatible with computer | 1 | 1 | 1 if not owned | $4.00–$8.00 · allowance |
| [Bench breadboard and jumpers](https://www.adafruit.com/category/124) | Small breadboard and mixed jumpers; logic tests only | 1 | 1 | 1 set if not owned | $5.00–$10.00 · allowance |

## What to buy first

1. Order the controller, five MCP23017 boards plus one spare, a BSS138 board, the motor/driver packs, Hall sensors, magnets and resistors. Keep one motor/Hall set together for the first mechanism. The MCP boards are the new control architecture; the old PCF8575 shopping list no longer applies.
2. Order the Mean Well supply, matching rated Tensility inlet, AC cord if needed, fuses and copper wire. These have known electrical specifications; do not replace the inlet with an unmarked barrel adapter just because it fits.
3. Obtain the exact screws/inserts and **300mm or longer M3 rods**. The previous 250mm rods cannot span a seven-character row.
4. Print and qualify one new 38-slot drum with its matching 38-flap set while electronics are in transit. Only then batch the remaining 13 mechanisms. The old 37-slot drum and flap boundary pairs do not become a 38-character mechanism through a firmware setting.
5. Build the rear controller and power distribution on the bench while the batch prints. Check the completed carrier against actual connector/header heights before closing it.

## Price and arrival evidence

“Observed” means the product price was readable on October 23, 2026. Extended quantities are arithmetic from those prices, not an inventory reservation. Rows marked “allowance” still need the exact merchant SKU and checkout quote. Nothing has been ordered.

- [AITRIP C3 two-pack](https://www.amazon.com/dp/B0FBG9N7M3): **$9.99**, one controller and one spare; product photos showed soldered male headers.
- [VKLSVAN motor/driver three-pack](https://www.amazon.com/dp/B0CLYCM1CP): **$7.99 per pack**; five packs supply 15 sets for **$39.95**. Fourteen installed leaves one spare.
- [Bridgold A3144 ten-pack](https://www.amazon.com/dp/B07LG77559): **$6.49 per pack**; two packs supply 20 sensors for **$12.98**.
- Those Amazon pages showed Prime delivery **Saturday, October 24 to 60068** when checked earlier today for one pack. The full motor/sensor quantities, current cutoff and delivery promise must be checked again at checkout. No same-day full-panel delivery has been established.
- [Adafruit MCP23017 5346](https://www.adafruit.com/product/5346): **$5.95 each, in stock**; six including the spare cost **$35.70**. [BSS138 757](https://www.adafruit.com/product/757): **$3.95**, 22 shown in stock. Their pages state some USPS orders are delayed; no destination delivery date was obtained.
- [Apex 3×1mm N48 magnets](https://www.apexmagnets.com/3mm-x-1mm-disc-neodymium-magnet): **$6.99/100, in stock**. Fourteen are needed; the rest are spare stock. Delivery to 60068 was not verified.
- [Mean Well GST60A05-P1J at DigiKey](https://www.digikey.com/en/products/detail/mean-well-usa-inc/GST60A05-P1J/7703709): **$19.40**, 1,381 shown in stock; DigiKey says a tariff may be added. [TRC alternative](https://www.trcelectronics.com/products/mean-well-gst60a05-p1j): **$24.86 including tariff**, 20 shown in stock. Both still need shipping/tax quotes.
- [Tensility 10-02878 at DigiKey](https://www.digikey.com/en/products/detail/tensility-international-corp/10-02878/8635385): **$4.91**, 7,183 shown in stock. [Manufacturer](https://www.tensility.com/products/10-02878): **$4.74**, 100 shown in stock. Combining inlet and supply at one distributor may save shipping.
- [Mean Well US C13 cord](https://www.digikey.com/en/products/detail/mean-well-usa-inc/YP12-YC12/7707223): **$7.29**. Reuse a suitable grounded computer cord if already owned.
- The linked 300mm rod pack was indexed at $9.99 for five, but its fresh price/date could not be confirmed. The BOM uses an $18–28 purchase allowance for ten rods. [McMaster 94185A578](https://www.mcmaster.com/product/94185A578/) is a dimensionally matching 300mm M3×0.5 alternative; current price not confirmed.

## Important component choices

The panel uses **one ESP32-C3 and five MCP23017 expanders at 5V**, mounted behind the mechanisms. Each expander controls up to three characters: four ULN2003 input lines plus one Hall input per character. Five chips use unique addresses 0x20–0x24; the sixth purchased chip is a spare. The linear mapping crosses the row boundary at the third expander. Use the firmware configuration rather than assuming one expander belongs to one row. [Adafruit breakout specifications](https://www.adafruit.com/product/5346).

One BSS138 board translates SDA, SCL and the shared MCP reset line between the C3’s 3.3V side and the 5V electronics. Reset uses an open-drain C3 output through the third translator channel. There are **56 motor-input 10kΩ pulldowns and 14 Hall-output 10kΩ pullups: 70 required resistors**. Additional reset/bus resistors are conditional on what the purchased breakouts already contain. The 100-pack provides margin; it is not an instruction to fit 100 resistors. [Adafruit translator](https://www.adafruit.com/product/757).

For these exact Adafruit 5346 boards, **remove the R3 resistor array only from the fifth expander, address 0x24**. Close that board’s +4/A2 address jumper to 5V; verify A0/A1 stay LOW. Leave R3 untouched on the other four boards. R3 also contains a RESET pullup and A2 pulldown, so removal is safe only with that explicit address strap and the fifth RESET connected to the common reset net, which retains pullups on the four other boards and translator. Verify continuity/resistance before power. This produces about 2kΩ per high-side bus line and 10kΩ per low-side line, with about 2.59mA combined sink current at a 0.4V low level. Add no extra I2C pullups. Keep wiring short and verify rise time ≤1µs at 100kHz and total bus capacitance ≤400pF. This is a board-specific modification, not generic advice for other MCP breakouts. [Adafruit schematic](https://github.com/adafruit/Adafruit-MCP23017-PCB), [ELECTRICAL.md](ELECTRICAL.md).

The original four-pin PH module daisy-chain is replaced by a short rear I2C bus and individual motor/Hall harnesses. Each motor gets its own short branch from its row supply. Hall sensors and MCPs use the separate fused logic rail; add 100nF close to each Hall supply pair. All grounds are common at the rated distribution. Keep motor return current out of the C3 and signal wiring. The driver-board motor socket remains matched to its motor.

The selected bare Hall switches must be checked for their actual pinout, open-collector behavior and required magnet pole. A same-looking linear 49E sensor is a different part. ULN2003 clone PCB size, header height and indicator-LED loading still need a first-unit inspection; mechanical enclosure fit is not established by matching the chip name. Controlled LED removal may be useful for electrical load or light leakage, following the electrical guide.

## Power parts and acceptance targets

The **GST60A05-P1J is a 5V, 6A, 30W enclosed supply** with a factory 16AWG low-voltage cable and center-positive 5.5×2.1mm plug. The **Tensility 10-02878 is a 6.5A-rated matching panel jack with a factory 18AWG pigtail**, so the brick cable does not need cutting. Its jack requires an 11–12mm panel opening and a 1–4.5mm panel thickness. Use the final carrier’s specified hole and insulate its low-voltage terminations. [Mean Well datasheet](https://www.meanwell.com/Upload/PDF/GST60A/GST60A-SPEC.PDF), [Tensility assembly](https://www.tensility.com/products/10-02878), [jack drawing](https://tensility.s3.us-west-2.amazonaws.com/uploads/pdffiles/54-00063.pdf).

The three specified [FHAC0001ZXJ covered holders](https://www.digikey.com/en/products/detail/littelfuse-commercial-vehicle-products/FHAC0001ZXJ/2004062) cost $7.37 each. Buy six [3A 0287003.PXCN fuses](https://www.digikey.com/en/products/detail/littelfuse-inc/0287003-PXCN/3102553) at the observed $0.36 quantity tier and three [1A 0287001.PXCN fuses](https://www.digikey.com/en/products/detail/littelfuse-inc/0287001-PXCN/3102551) at $0.44: **$25.59 total** before checkout extras. Only two 3A fuses and one 1A fuse are installed; the rest are spares. Confirm holder placement in the rear bay.

Two 3A fuses feed the motor rows; a separate 1A fuse feeds the C3, MCPs, translator and Hall sensors. These are branch protection values, not a claim that the system can draw 7A through a 6A brick. Use 18AWG copper for the input and row trunks, short 22–24AWG motor branches, covered holders and insulated distribution. The original USB-C inlet and a solderless breadboard are not full-panel power paths.

With 50Ω windings, a conservative two-coil estimate is 14×2×5/50 = **2.8A before driver voltage drop**, plus controller/electronics. This is a model, not a measured load; motor variants can differ. Planning targets are below 4.8A total and 2.4A per row during normal operation, with satisfactory startup and far-module voltage. The MCP reset/pulldown design is intended to keep coils off before initialization. Verify actual behavior, simultaneous movement and connector temperatures. Revisit power distribution if measured results fall outside those targets.

## Printed parts and exact hardware arithmetic

The revised alphabet has **38 positions: space, A–Z, 0–9 and hyphen**. Fourteen mechanisms therefore require **532 flaps**. Print matching new drum/flap geometry; the original 37-flap files remain reference material. Each moving module also needs an enclosure, motor-gear plate, drum, motor gear, centre gear and wire retainer. The two rows together need four sandwich plates and four end covers, plus the new outer carrier parts listed in the generated hardware manifest.

| Hardware | Row mechanisms/ends | Carrier addition | Installed total |
| --- | ---: | ---: | ---: |
| M3×30 countersunk | 14×4 =56 | 0 | **56** |
| M3×8 countersunk | 2×4 =8 | 0 | **8** |
| Standard M3 nuts | 56+16 =72 | 4 | **76** |
| M3 heat-set inserts, 4mm long /5mm OD | 8 | 14 | **22** |
| M3×8: 2 low button-head ≤1.8mm high +12 button/pan-head | 0 | 14 | **14** |
| M3×20 button/pan-head | 0 | 4 | **4** |
| M3 threaded rods | 2×4 =8 | 0 | **8** |

Carrier CAD checks have passed, but physical validation remains. Also obtain four non-slip foot pads and small 0.5–0.6mm foam strips for the carrier fit. The carrier’s 14 short screws cover eight back-cover positions, four feet and two concealed underside seam-strap positions. The two underside screws must have low button heads no higher than 1.8mm for clearance; the other 12 short screws may be button or pan-head. Four longer through-bolts join its rear seam. Associated nuts/inserts are already counted above.

Original rod formula is **37.9×N+11mm**, giving **276.3mm for each seven-character row**. Cut eight final rods only after a dry assembly. Ten 300mm rods provide eight final rods, one rod for four 48.9mm one-character prototype pieces and one spare. Account for kerf and deburr the ends. The prototype’s screws/inserts may be reused in the final rows; it is not an extra finished character. [Original assembly source](https://www.instructables.com/Split-Flap-Display-3D-Printed-Modular-Compact-Encl/).

The filament allowance is two kilograms black and one kilogram white purchased stock, not a measured requirement. Slice the final carrier, 14 mechanisms and 532 flaps to establish grams and time. The source author reports that a 0.4mm nozzle works and a 0.2mm nozzle produces finer lettering; printer-specific profiles still need adaptation. Inspect color changes/AMS mapping and a sample glyph before a batch.

## Tools and fast completion plan

- Printer, black/white PLA and the correct slicer profile.
- Temperature-controlled soldering iron, solder, flux, solder wick, wire cutters/stripper, pliers and tweezers.
- Matching screw driver/hex key, calipers, small file, rod-cutting tool and eye protection.
- Multimeter for continuity, polarity, winding resistance and operating voltage/current; a current-limited bench supply is useful.
- Heat-set insert tip, USB data cable and a small logic-test breadboard. An oscilloscope is useful for I2C rise time and supply transients.

| Work | Hands-on planning estimate | Printer / elapsed estimate |
| --- | ---: | ---: |
| One revised 38-flap mechanism, Hall/driver bring-up and fit check | 4–8 hours | 5–12 printer hours |
| Remaining mechanisms, repeated wiring, rear controller and carrier | 16–25 hours | Roughly 75–148 more printer hours |
| Final fit, per-character calibration, simultaneous motion and power checks | 4–7 hours | Several observed cycling sessions |
| **Whole panel** | **24–40 hands-on hours** | **80–160 printer hours**, plus delivery |

After all parts arrive, **5–8 focused elapsed days** is an aggressive target with a reliable printer and parallel bench work; **7–14 days** is more realistic for fitting and reprints. These are estimates, not slicer measurements. The new 38-flap geometry is the first physical gate. Finer nozzles, print failures, procurement delays or harness changes can exceed these ranges.

The fastest path is to overlap first-unit printing with flashing, sensor tests and wire preparation; qualify one complete character; batch the remaining mechanisms while assembling the controller; then calibrate and close the carrier. Waiting for every last enclosure part before proving a motor/Hall loop wastes the most time.

Before calling it finished: every module homes repeatedly from different starting positions, all 38 characters align, simultaneous changes do not stall/reset, row and total current are measured, the farthest module has acceptable supply voltage, connectors do not heat abnormally, power-cycle recovery works, and the closed carrier clears all moving parts. No physical acceptance test has been completed yet.
