{"title":"NODE Family of LED Controllers","description":"\u003c!-- ============================================================\n     Wateefy · NODE Family — Shopify Collection Description\n     Rev 1  ·  2026-08-02\n     Self-contained. Paste into a collection description (Show HTML)\n     or a custom section. All styles scoped under .wtf-node so they\n     won't fight your theme. Google Fonts link at top — if your\n     theme strips \u003clink\u003e, the system fallbacks still look fine.\n     ============================================================ --\u003e\n\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;600;700\u0026amp;family=IBM+Plex+Mono:wght@400;500;600\u0026amp;family=Inter:wght@400;500\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003cdiv class=\"wtf-node\"\u003e\n  \u003cstyle\u003e\n    .wtf-node{\n      \/* ---- palette pulled off the physical board ---- *\/\n      --board:   #0b1a2b;   \/* soldermask, deep          *\/\n      --panel:   #10233a;   \/* lifted card surface        *\/\n      --silk:    #e9eef5;   \/* silkscreen white           *\/\n      --silk-dim:#7f97b0;   \/* muted silkscreen           *\/\n      --gold:    #cda349;   \/* ENIG 1µ\" gold              *\/\n      --gold-dim:rgba(205,163,73,.22);\n      --led:     #ff7d2e;   \/* fuse-status LED orange     *\/\n\n      --f-disp: 'Space Grotesk', system-ui, sans-serif;\n      --f-mono: 'IBM Plex Mono', ui-monospace, monospace;\n      --f-body: 'Inter', system-ui, sans-serif;\n\n      background: var(--board);\n      color: var(--silk);\n      font-family: var(--f-body);\n      line-height: 1.6;\n      padding: clamp(28px, 5vw, 64px);\n      border-radius: 4px;\n      max-width: 1080px;\n      margin: 0 auto;\n      \/* faint board-fab grid, very subtle *\/\n    }\n    .wtf-node *{ box-sizing: border-box; }\n\n    .wtf-node .eyebrow{\n      font-family: var(--f-mono);\n      font-size: .72rem;\n      letter-spacing: .28em;\n      text-transform: uppercase;\n      color: var(--gold);\n      margin: 0 0 18px;\n    }\n    .wtf-node h1{\n      font-family: var(--f-disp);\n      font-weight: 700;\n      font-size: clamp(2.4rem, 7vw, 4.2rem);\n      line-height: .98;\n      letter-spacing: -.02em;\n      margin: 0;\n      color: var(--silk);\n    }\n    .wtf-node h1 .fam{\n      display:block;\n      font-weight: 400;\n      font-size: clamp(1rem, 2.4vw, 1.35rem);\n      letter-spacing: .01em;\n      color: var(--silk-dim);\n      margin-top: 10px;\n    }\n    .wtf-node .lead{\n      font-family: var(--f-disp);\n      font-weight: 500;\n      font-size: clamp(1.15rem, 3vw, 1.6rem);\n      color: var(--silk);\n      margin: 26px 0 0;\n      max-width: 30ch;\n    }\n    .wtf-node .lead::after{\n      content:\"\";\n      display:block;\n      width: 64px; height:2px;\n      background: var(--led);\n      margin-top: 20px;\n      box-shadow: 0 0 12px var(--led);\n    }\n    .wtf-node .intro{\n      font-size: 1rem;\n      color: #c3d0de;\n      max-width: 62ch;\n      margin: 22px 0 0;\n    }\n\n    \/* ---- shared-DNA spec chips ---- *\/\n    .wtf-node .chips{\n      list-style:none;\n      display:flex;\n      flex-wrap:wrap;\n      gap: 8px;\n      padding:0;\n      margin: 26px 0 0;\n    }\n    .wtf-node .chips li{\n      font-family: var(--f-mono);\n      font-size: .74rem;\n      letter-spacing: .04em;\n      color: var(--silk);\n      border: 1px solid var(--gold-dim);\n      border-radius: 3px;\n      padding: 6px 11px;\n      background: rgba(205,163,73,.05);\n      white-space: nowrap;\n    }\n\n    \/* ---- board list ---- *\/\n    .wtf-node .boards{\n      margin: 40px 0 0;\n      border-top: 1px solid var(--gold-dim);\n    }\n    .wtf-node .board{\n      display: grid;\n      grid-template-columns: minmax(0,1fr);\n      gap: 6px;\n      padding: 28px 0;\n      border-bottom: 1px solid var(--gold-dim);\n      transition: background .18s ease, padding-left .18s ease;\n    }\n    .wtf-node .board:hover{\n      background: linear-gradient(90deg, rgba(205,163,73,.06), transparent 70%);\n      padding-left: 14px;\n    }\n    .wtf-node .b-head{\n      display:flex;\n      align-items:baseline;\n      flex-wrap:wrap;\n      gap: 12px;\n    }\n    .wtf-node .dot{\n      width:9px;height:9px;border-radius:50%;\n      background: var(--led);\n      box-shadow: 0 0 8px var(--led);\n      align-self:center;\n      flex:0 0 auto;\n      animation: wtf-pulse 2.6s ease-in-out infinite;\n    }\n    .wtf-node .b-name{\n      font-family: var(--f-disp);\n      font-weight: 700;\n      font-size: clamp(1.35rem, 3.4vw, 1.9rem);\n      letter-spacing: -.01em;\n      margin:0;\n      color: var(--silk);\n    }\n    .wtf-node .b-name b{ color: var(--gold); font-weight:700; }\n    .wtf-node .b-tag{\n      margin-left:auto;\n      font-family: var(--f-mono);\n      font-size: .68rem;\n      letter-spacing: .14em;\n      text-transform: uppercase;\n      color: var(--gold);\n      border:1px solid var(--gold-dim);\n      border-radius: 3px;\n      padding: 4px 9px;\n      align-self:center;\n    }\n    .wtf-node .b-line{\n      font-family: var(--f-disp);\n      font-style: italic;\n      font-weight: 500;\n      font-size: 1.02rem;\n      color: var(--silk);\n      margin: 4px 0 0;\n    }\n    .wtf-node .b-body{\n      font-size: .95rem;\n      color: #b6c4d4;\n      max-width: 66ch;\n      margin: 6px 0 0;\n    }\n    .wtf-node .b-spec{\n      font-family: var(--f-mono);\n      font-size: .74rem;\n      letter-spacing: .03em;\n      color: var(--silk-dim);\n      margin: 12px 0 0;\n    }\n    .wtf-node .b-spec span{ color: var(--gold); }\n\n    \/* ---- closer ---- *\/\n    .wtf-node .closer{\n      margin: 36px 0 0;\n      font-family: var(--f-disp);\n      font-weight: 500;\n      font-size: clamp(1.05rem, 2.6vw, 1.35rem);\n      color: var(--silk);\n    }\n    .wtf-node .closer .sig{\n      display:block;\n      font-family: var(--f-mono);\n      font-size: .74rem;\n      letter-spacing: .22em;\n      text-transform: uppercase;\n      color: var(--silk-dim);\n      margin-top: 14px;\n    }\n\n    @keyframes wtf-pulse{\n      0%,100%{ opacity:1; }\n      50%{ opacity:.35; }\n    }\n    @media (prefers-reduced-motion: reduce){\n      .wtf-node .dot{ animation:none; }\n      .wtf-node .board{ transition:none; }\n    }\n    @media (max-width: 560px){\n      .wtf-node .b-tag{ margin-left:0; }\n    }\n  \u003c\/style\u003e\n\n  \u003cp class=\"eyebrow\"\u003eWateefy Electronics\u003c\/p\u003e\n  \u003ch1\u003eNODE\u003cspan class=\"fam\"\u003eFamily of LED Controllers\u003c\/span\u003e\n\u003c\/h1\u003e\n\n  \u003cp class=\"lead\"\u003eSame board underneath. Three ways to drive it.\u003c\/p\u003e\n\n  \u003cp class=\"intro\"\u003e\n    Every NODE controller runs the identical protected 8-port pixel stage —\n    three isolated power domains, a fuse on every output, non-destructive\n    reverse-polarity protection, 5–48 V on one SKU, 30 A at standard\n    copper, WLED. Nothing in that path was softened to hit a price. What changes\n    is the brain on top — how it gets on the network, and how much GPIO is left\n    over for goodies.\n  \u003c\/p\u003e\n\n  \u003cul class=\"chips\"\u003e\n    \u003cli\u003e8 fused outputs\u003c\/li\u003e\n    \u003cli\u003e3 power domains\u003c\/li\u003e\n    \u003cli\u003ereverse-polarity protected\u003c\/li\u003e\n    \u003cli\u003e5–48 V · one SKU\u003c\/li\u003e\n    \u003cli\u003e30 A · standard copper\u003c\/li\u003e\n    \u003cli\u003eWLED out of the box\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cdiv class=\"boards\"\u003e\n\n    \u003cdiv class=\"board\"\u003e\n      \u003cdiv class=\"b-head\"\u003e\n        \u003cspan class=\"dot\"\u003e\u003c\/span\u003e\n        \u003ch2 class=\"b-name\"\u003eNODE \u003cb\u003eMini\u003c\/b\u003e\n\u003c\/h2\u003e\n        \u003cspan class=\"b-tag\"\u003eWi-Fi\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"b-line\"\u003eThe smallest node in the network. None of the compromises.\u003c\/p\u003e\n      \u003cp class=\"b-body\"\u003e\n        Seeed XIAO ESP32-S3, Wi-Fi. The compact node for standard runs where you\n        just need it on the network and driving pixels.\n      \u003c\/p\u003e\n      \u003cp class=\"b-spec\"\u003e\u003cspan\u003eMCU\u003c\/span\u003e Seeed XIAO ESP32-S3  ·  \u003cspan\u003eLINK\u003c\/span\u003e Wi-Fi 2.4 GHz\u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"board\"\u003e\n      \u003cdiv class=\"b-head\"\u003e\n        \u003cspan class=\"dot\"\u003e\u003c\/span\u003e\n        \u003ch2 class=\"b-name\"\u003eNODE \u003cb\u003eFlex\u003c\/b\u003e\n\u003c\/h2\u003e\n        \u003cspan class=\"b-tag\"\u003eWi-Fi \/ ETH\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"b-line\"\u003eOne board. Whatever module is in the drawer.\u003c\/p\u003e\n      \u003cp class=\"b-body\"\u003e\n        Universal DevKit carrier — 0.9″ and 1.0″ row spacing both on the board,\n        jumper-mapped to the outputs. Seat whatever ESP32 module you have; swap it\n        when that one goes end-of-life. The compatibility list can't go stale.\n      \u003c\/p\u003e\n      \u003cp class=\"b-spec\"\u003e\u003cspan\u003eMCU\u003c\/span\u003e Any ESP32 DevKit, 0.9″\/1.0″  ·  \u003cspan\u003eLINK\u003c\/span\u003e per module (incl. ETH01)\u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"board\"\u003e\n      \u003cdiv class=\"b-head\"\u003e\n        \u003cspan class=\"dot\"\u003e\u003c\/span\u003e\n        \u003ch2 class=\"b-name\"\u003eNODE \u003cb\u003eBackbone\u003c\/b\u003e\n\u003c\/h2\u003e\n        \u003cspan class=\"b-tag\"\u003eEthernet · PoE\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"b-line\"\u003eWired control. The network powers the node.\u003c\/p\u003e\n      \u003cp class=\"b-body\"\u003e\n        Waveshare ESP32-S3-ETH-POE with a dedicated W5500. Wired 10\/100 Ethernet\n        and PoE for the high-node-count install that outgrew Wi-Fi — deterministic\n        frames, one cable for power and control.\n      \u003c\/p\u003e\n      \u003cp class=\"b-spec\"\u003e\u003cspan\u003eMCU\u003c\/span\u003e Waveshare ESP32-S3-ETH-POE + W5500  ·  \u003cspan\u003eLINK\u003c\/span\u003e 10\/100 wired · PoE\u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n  \u003cp class=\"closer\"\u003e\n    Same protection. Same fuses. Same firmware.\n    \u003cspan class=\"sig\"\u003ePick the brain that fits the install.\u003c\/span\u003e\n  \u003c\/p\u003e\n\n\u003c\/div\u003e","products":[{"product_id":"mode-mini-led-controller","title":"Node Mini LED Controller","description":"\u003c!-- ============================================================\n     Wateefy · NODE Mini — Shopify Product Description\n     Rev 1  ·  2026-08-02\n     Self-contained, scoped under .wtf-mini. Paste into the product\n     description (Show HTML) or a custom section. If the theme strips\n     \u003clink\u003e or \u003cstyle\u003e, use a custom Liquid\/HTML section instead.\n     ============================================================ --\u003e\n\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;600;700\u0026amp;family=IBM+Plex+Mono:wght@400;500;600\u0026amp;family=Inter:wght@400;500\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003cdiv class=\"wtf-mini\"\u003e\n  \u003cstyle\u003e\n    .wtf-mini{\n      --board:   #0b1a2b;\n      --panel:   #10233a;\n      --panel2:  #0e1f34;\n      --silk:    #e9eef5;\n      --silk-dim:#7f97b0;\n      --gold:    #cda349;\n      --gold-dim:rgba(205,163,73,.22);\n      --led:     #ff7d2e;\n\n      --f-disp: 'Space Grotesk', system-ui, sans-serif;\n      --f-mono: 'IBM Plex Mono', ui-monospace, monospace;\n      --f-body: 'Inter', system-ui, sans-serif;\n\n      background: var(--board);\n      color: var(--silk);\n      font-family: var(--f-body);\n      line-height: 1.62;\n      padding: clamp(28px, 5vw, 64px);\n      border-radius: 4px;\n      max-width: 1080px;\n      margin: 0 auto;\n    }\n    .wtf-mini *{ box-sizing:border-box; }\n\n    \/* ---------- masthead ---------- *\/\n    .wtf-mini .eyebrow{\n      font-family: var(--f-mono);\n      font-size:.72rem; letter-spacing:.28em; text-transform:uppercase;\n      color: var(--gold); margin:0 0 16px;\n    }\n    .wtf-mini h1{\n      font-family: var(--f-disp); font-weight:700;\n      font-size: clamp(2.4rem, 7vw, 4rem); line-height:.98;\n      letter-spacing:-.02em; margin:0; color:var(--silk);\n    }\n    .wtf-mini h1 b{ color: var(--gold); }\n    .wtf-mini .sub{\n      font-family: var(--f-mono); font-size:.82rem; letter-spacing:.06em;\n      color: var(--silk-dim); margin:12px 0 0;\n    }\n    .wtf-mini .hero-line{\n      font-family: var(--f-disp); font-weight:500;\n      font-size: clamp(1.15rem, 3vw, 1.55rem);\n      color: var(--silk); margin:24px 0 0; max-width:32ch;\n    }\n    .wtf-mini .hero-line::after{\n      content:\"\"; display:block; width:64px; height:2px;\n      background: var(--led); margin-top:18px;\n      box-shadow:0 0 12px var(--led);\n    }\n\n    \/* ---------- section label ---------- *\/\n    .wtf-mini .sec-label{\n      font-family: var(--f-mono);\n      font-size:.72rem; letter-spacing:.22em; text-transform:uppercase;\n      color: var(--gold); margin:52px 0 18px;\n      display:flex; align-items:center; gap:14px;\n    }\n    .wtf-mini .sec-label::after{\n      content:\"\"; height:1px; flex:1; background: var(--gold-dim);\n    }\n\n    \/* ---------- at a glance ---------- *\/\n    .wtf-mini .glance{\n      list-style:none; padding:0; margin:0;\n      display:grid; grid-template-columns:1fr 1fr; gap:1px;\n      background: var(--gold-dim);\n      border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden;\n    }\n    .wtf-mini .glance li{\n      background: var(--panel);\n      padding:16px 18px;\n      font-size:.92rem; color:#b6c4d4;\n    }\n    .wtf-mini .glance li b{\n      display:block; color:var(--silk); font-weight:600;\n      font-family: var(--f-disp); font-size:1rem; margin-bottom:2px;\n    }\n    .wtf-mini .glance li.blank::before{ content:none; }\n    .wtf-mini .glance li::before{\n      content:\"+\"; color:var(--gold); font-family:var(--f-mono);\n      font-weight:600; margin-right:8px;\n    }\n    .wtf-mini .fuse-spec{\n      font-family: var(--f-mono); font-size:.8rem; letter-spacing:.03em;\n      color: var(--silk-dim); margin:16px 0 0;\n      border-left:2px solid var(--led); padding-left:12px;\n    }\n    .wtf-mini .fuse-spec b{ color: var(--silk); font-weight:500; }\n\n    \/* ---------- architecture intro ---------- *\/\n    .wtf-mini .lead-claim{\n      font-family: var(--f-disp); font-weight:600;\n      font-size: clamp(1.3rem, 3.4vw, 1.8rem);\n      color: var(--silk); margin:0 0 16px; letter-spacing:-.01em;\n    }\n    .wtf-mini p.body{ font-size:1rem; color:#c3d0de; max-width:64ch; margin:0 0 18px; }\n    .wtf-mini p.body strong{ color:var(--silk); font-weight:600; }\n\n    \/* ---------- domain cards ---------- *\/\n    .wtf-mini .domains{ display:grid; gap:1px; background:var(--gold-dim);\n      border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; margin:6px 0 0; }\n    .wtf-mini .domain{\n      background: var(--panel); padding:22px clamp(18px,3vw,28px);\n      display:grid; grid-template-columns:auto 1fr; gap:20px; align-items:start;\n      position:relative;\n    }\n    .wtf-mini .domain .num{\n      font-family: var(--f-mono); font-weight:600;\n      font-size: clamp(1.6rem,4vw,2.2rem); color:var(--gold);\n      line-height:1; letter-spacing:-.02em; opacity:.9;\n    }\n    .wtf-mini .domain h3{\n      font-family: var(--f-disp); font-weight:700; font-size:1.15rem;\n      margin:0 0 6px; color:var(--silk);\n    }\n    .wtf-mini .domain p{ margin:0; font-size:.94rem; color:#b6c4d4; max-width:62ch; }\n    .wtf-mini .domain.clean h3{ color:var(--silk); }\n    .wtf-mini .domain .redled{ color:#ff5a4d; font-weight:600; }\n\n    \/* ---------- BEEFCAKE ---------- *\/\n    .wtf-mini .beefcake{\n      margin:1px 0 0; border:1px solid var(--gold-dim); border-radius:4px;\n      background:\n        radial-gradient(120% 180% at 8% 0%, rgba(255,125,46,.14), transparent 55%),\n        var(--panel2);\n      padding: clamp(24px,4vw,34px);\n      text-align:left;\n    }\n    .wtf-mini .beefcake .word{\n      font-family: var(--f-disp); font-weight:700;\n      font-size: clamp(2rem,7vw,3.4rem); letter-spacing:.02em;\n      color: var(--led); margin:0; line-height:1;\n      text-shadow: 0 0 24px rgba(255,125,46,.45);\n    }\n    .wtf-mini .beefcake p{\n      font-family: var(--f-mono); font-size:.92rem; color:var(--silk);\n      margin:14px 0 0; max-width:52ch;\n    }\n\n    \/* ---------- reason-to-believe blocks ---------- *\/\n    .wtf-mini .rtb{ margin-top:34px; }\n    .wtf-mini .rtb h4{\n      font-family:var(--f-disp); font-weight:600; font-size:1.1rem;\n      color:var(--silk); margin:0 0 8px;\n    }\n\n    \/* ---------- 72% stat row ---------- *\/\n    .wtf-mini .stat-head{\n      font-family: var(--f-disp); font-weight:700;\n      font-size: clamp(1.3rem,3.6vw,1.9rem); color:var(--silk);\n      margin:38px 0 4px; letter-spacing:-.01em;\n    }\n    .wtf-mini .stat-head b{ color:var(--gold); }\n    .wtf-mini .stats{\n      display:grid; grid-template-columns:repeat(3,1fr); gap:1px;\n      background:var(--gold-dim); border:1px solid var(--gold-dim);\n      border-radius:4px; overflow:hidden; margin:20px 0 0;\n    }\n    .wtf-mini .stat{ background:var(--panel); padding:20px 16px; text-align:center; }\n    .wtf-mini .stat .n{\n      font-family:var(--f-mono); font-weight:600;\n      font-size: clamp(1.8rem,5vw,2.6rem); color:var(--gold); line-height:1;\n    }\n    .wtf-mini .stat .l{\n      font-family:var(--f-mono); font-size:.68rem; letter-spacing:.08em;\n      text-transform:uppercase; color:var(--silk-dim); margin-top:8px;\n    }\n    .wtf-mini .believe{\n      font-size:1rem; color:#c3d0de; margin:20px 0 0; max-width:64ch;\n    }\n    .wtf-mini .believe strong{ color:var(--silk); font-weight:600; }\n\n    @media (max-width: 620px){\n      .wtf-mini .glance{ grid-template-columns:1fr; }\n      .wtf-mini .stats{ grid-template-columns:1fr; }\n    }\n    @media (prefers-reduced-motion: reduce){ .wtf-mini *{ transition:none; } }\n  \u003c\/style\u003e\n\n  \u003c!-- masthead --\u003e\n  \u003cp class=\"eyebrow\"\u003eWateefy Electronics · NODE Mini\u003c\/p\u003e\n  \u003ch1\u003eNODE \u003cb\u003eMini\u003c\/b\u003e\n\u003c\/h1\u003e\n  \u003cp class=\"sub\"\u003e8-Channel Addressable LED Controller · Seeed XIAO ESP32-S3\u003c\/p\u003e\n  \u003cp class=\"hero-line\"\u003eThe smallest node in the network. None of the compromises.\u003c\/p\u003e\n\n  \u003c!-- at a glance --\u003e\n  \u003cp class=\"sec-label\"\u003eAt a Glance\u003c\/p\u003e\n  \u003cul class=\"glance\"\u003e\n    \u003cli\u003e\n\u003cb\u003e8 independent output channels\u003c\/b\u003eWS281x \/ SK6812 \/ TM1814 family, 5 V level-shifted drive\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003e5–48 VDC input, no jumpers\u003c\/b\u003ethe same board runs 5\/12\/24\/36\/48 V systems with nothing to set wrong\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003e30 A through the board at standard copper\u003c\/b\u003enot a paid upgrade\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eThree isolated power domains\u003c\/b\u003edirty input, clean protected power, fused distribution bus\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eA fuse on every single output\u003c\/b\u003eeight channels, eight fuses, no sharing\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eNon-destructive reverse-polarity protection\u003c\/b\u003enothing is consumed when someone wires it backwards\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eRuns WLED out of the box\u003c\/b\u003eno custom firmware, no vendor lock-in\u003c\/li\u003e\n    \u003cli class=\"blank\"\u003e\n  \u003c\/li\u003e\n\u003c\/ul\u003e\n  \u003cp class=\"fuse-spec\"\u003e\u003cb\u003eFuses\u003c\/b\u003e — up to 30 A max input · 7.5 A nominal \/ 10 A max per output\u003c\/p\u003e\n\n  \u003c!-- architecture --\u003e\n  \u003cp class=\"sec-label\"\u003eThe Architecture · Three Power Domains\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eThis is the part that matters.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    Most controllers have one power rail. Input voltage lands on a terminal and it\n    is the same copper that reaches your strips. Whatever arrives — spike, reverse\n    polarity, sag, transient — arrives everywhere at once.\n  \u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\u003cstrong\u003eNODE splits power into three separate domains on their own copper planes:\u003c\/strong\u003e\u003c\/p\u003e\n\n  \u003cdiv class=\"domains\"\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e01\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eDirty power in\u003c\/h3\u003e\n        \u003cp\u003eThe input terminal accepts whatever the supply, the wiring, and the person\n        doing the wiring hand it. This domain is assumed hostile. It is isolated to the\n        smallest region of the board possible and nothing downstream touches it directly.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain clean\"\u003e\n      \u003cdiv class=\"num\"\u003e02\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eClean power\u003c\/h3\u003e\n        \u003cp\u003eBetween dirty and clean sits the protection stage: bidirectional transient\n        clamping and an \u003cem\u003eactive\u003c\/em\u003e reverse-polarity blocker. Reverse the supply and\n        the pass element simply never turns on — no current path exists to the rest of the\n        board, nothing is sacrificed, and the \u003cspan class=\"redled\"\u003ered polarity indicator\u003c\/span\u003e\n        tells you why. Correct the wiring and it comes back on its own.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e03\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe protected bus\u003c\/h3\u003e\n        \u003cp\u003eClean power passes the main fuse to become the distribution bus. Every one of\n        the eight output channels taps this bus through its own individual fuse. A fault on\n        run six opens one fuse. Runs one through five and seven through eight never notice.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- BEEFCAKE --\u003e\n  \u003cdiv class=\"beefcake\"\u003e\n    \u003cp class=\"word\"\u003eBEEFCAKE.\u003c\/p\u003e\n    \u003cp\u003eThe pass element is a 205 A MOSFET on a 30 A board. It will never be the thing that fails.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- decoupling --\u003e\n  \u003cdiv class=\"rtb\"\u003e\n    \u003ch4\u003eDecoupling where the current actually is.\u003c\/h4\u003e\n    \u003cp class=\"body\"\u003e\n      Two thousand microfarads of bulk sits on the protected bus, and another forty-seven\n      at \u003cem\u003eevery single output connector\u003c\/em\u003e. The distribution is the point: one reservoir\n      at the input cannot cover the harness inductance of eight separate output runs no matter\n      how large it is. When a full-white frame lands on all eight channels at once, each channel\n      draws from its own reserve sitting centimetres from its terminal.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- four levels --\u003e\n  \u003cdiv class=\"rtb\"\u003e\n    \u003ch4\u003eFour levels of protection between the screw terminal and your pixels.\u003c\/h4\u003e\n    \u003cp class=\"body\"\u003e\n      Clamp, active block, main fuse, channel fuse — each on its own copper. That is why this\n      board is four layers with a split inner power plane instead of two layers with one pour.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sec-label\"\u003eWhat Else You Actually Get\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eThree things field abuse can kill. All three pull out by hand.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    The parts most likely to die in the field are the parts you can replace in a garage — by hand, with\n    parts you can source anywhere. No hot air, no solder braid, no scrapped board.\n  \u003c\/p\u003e\n  \u003cdiv class=\"domains\"\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e01\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe fuse\u003c\/h3\u003e\n        \u003cp\u003eA mini blade — the variety-pack part sold at every gas station and parts counter in the country.\n        Pulls with fingers, costs pennies. Not a cartridge you order online and wait for.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e02\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe buffer\u003c\/h3\u003e\n        \u003cp\u003eA jellybean octal logic IC in a DIP socket, sitting directly behind your wiring — the part most\n        likely to die and the most annoying to replace anywhere else. Here it lifts out with a fingernail,\n        and the socket takes \u003cem\u003eeither a '541 or a '245\u003c\/em\u003e — fit whichever is in stock.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e03\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe MCU\u003c\/h3\u003e\n        \u003cp\u003eA socketed module. Blow it up, seat another. No hot air, no braid, no scrap board. Nobody else in\n        this class can claim all three.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rtb\"\u003e\n    \u003ch4\u003eData lines treated like data lines.\u003c\/h4\u003e\n    \u003cp class=\"body\"\u003e\n      Each output runs through a series resistor and a sub-picofarad ESD device on the \u003cem\u003econnector\u003c\/em\u003e\n      side, where transients actually arrive. The low-capacitance part is deliberate: a fat protection diode\n      rounds off WS281x bit timing and gives you a board that works on the bench but not on a 40-foot run.\n      This one holds timing all the way out.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rtb\"\u003e\n    \u003ch4\u003eConformal coated — not shipped bare.\u003c\/h4\u003e\n    \u003cp class=\"body\"\u003e\n      Every board is conformal coated after assembly, with connectors, sockets, fuse clips and switches\n      masked. Competing boards in this class ship uncoated. A coated board in a vented enclosure shrugs off\n      the condensation and humidity a bare board can't — which is the whole game for a seasonal outdoor install.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"stat-head\"\u003eAt the top of the range — the full 48 V, every common pixel voltage on one board — no component in the power path runs above \u003cb\u003e80%\u003c\/b\u003e of its rating.\u003c\/p\u003e\n  \u003cdiv class=\"stats\"\u003e\n    \u003cdiv class=\"stat\"\u003e\n\u003cdiv class=\"n\"\u003e80%\u003c\/div\u003e\n\u003cdiv class=\"l\"\u003ePass MOSFET\u003c\/div\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"stat\"\u003e\n\u003cdiv class=\"n\"\u003e74%\u003c\/div\u003e\n\u003cdiv class=\"l\"\u003eIdeal-diode controller\u003c\/div\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"stat\"\u003e\n\u003cdiv class=\"n\"\u003e60%\u003c\/div\u003e\n\u003cdiv class=\"l\"\u003eBuck regulator\u003c\/div\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cp class=\"believe\"\u003e\n    The ≥63 V power plane is what makes that possible — finding the board real-estate for that\n    headroom was the hard part, and it keeps even the bulk reservoir at 76%, wide open, at the top of\n    the range. Drop to a 36 V system and the whole path falls back under 60%. It is a number nobody else\n    in this class publishes, and it is\n    \u003cstrong\u003ethe reason to believe the rest of this page.\u003c\/strong\u003e\n  \u003c\/p\u003e\n\n\u003c\/div\u003e","brand":"Wateefy Electronics","offers":[{"title":"Board Only","offer_id":55081856958836,"sku":"Node-Mini-00","price":99.0,"currency_code":"USD","in_stock":true},{"title":"TI SN74AHCT541 \/ SEEED XAIO ESP32S3 (Pre-Soldered)","offer_id":55081828024692,"sku":"Node-Mini-01","price":120.0,"currency_code":"USD","in_stock":true},{"title":"TI SN74AHCT541 \/ SEEED XAIO ESP32S3  (Pre-Soldered) \/ 8 Output terminals","offer_id":55081706881396,"sku":"Node-Mini-03","price":127.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1015\/0487\/6916\/files\/NodeMini.png?v=1785957536"},{"product_id":"node-flex-led-controller","title":"Node Flex LED Controller","description":"\u003c!-- ============================================================\n     Wateefy · NODE Flex — Shopify Product Description\n     Rev 1  ·  2026-08-02\n     Self-contained, scoped under .wtf-flex. Paste into a custom\n     Liquid\/HTML section (recommended) or product description.\n     ============================================================ --\u003e\n\u003cp\u003e\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e \u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\"\u003e \u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;600;700\u0026amp;family=IBM+Plex+Mono:wght@400;500;600\u0026amp;family=Inter:wght@400;500\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\u003c\/p\u003e\n\u003cstyle\u003e\n    .wtf-flex{\n      --board:#0b1a2b; --panel:#10233a; --panel2:#0e1f34;\n      --silk:#e9eef5; --silk-dim:#7f97b0; --gold:#cda349;\n      --gold-dim:rgba(205,163,73,.22); --led:#ff7d2e;\n      --f-disp:'Space Grotesk',system-ui,sans-serif;\n      --f-mono:'IBM Plex Mono',ui-monospace,monospace;\n      --f-body:'Inter',system-ui,sans-serif;\n      background:var(--board); color:var(--silk); font-family:var(--f-body);\n      line-height:1.62; padding:clamp(28px,5vw,64px); border-radius:4px;\n      max-width:1080px; margin:0 auto;\n    }\n    .wtf-flex *{ box-sizing:border-box; }\n    .wtf-flex .eyebrow{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.28em; text-transform:uppercase; color:var(--gold); margin:0 0 16px; }\n    .wtf-flex h1{ font-family:var(--f-disp); font-weight:700; font-size:clamp(2.4rem,7vw,4rem); line-height:.98; letter-spacing:-.02em; margin:0; }\n    .wtf-flex h1 b{ color:var(--gold); }\n    .wtf-flex .sub{ font-family:var(--f-mono); font-size:.82rem; letter-spacing:.06em; color:var(--silk-dim); margin:12px 0 0; }\n    .wtf-flex .hero-line{ font-family:var(--f-disp); font-weight:500; font-size:clamp(1.15rem,3vw,1.55rem); color:var(--silk); margin:24px 0 0; max-width:32ch; }\n    .wtf-flex .hero-line::after{ content:\"\"; display:block; width:64px; height:2px; background:var(--led); margin-top:18px; box-shadow:0 0 12px var(--led); }\n    .wtf-flex .sec-label{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gold); margin:52px 0 18px; display:flex; align-items:center; gap:14px; }\n    .wtf-flex .sec-label::after{ content:\"\"; height:1px; flex:1; background:var(--gold-dim); }\n    .wtf-flex .glance{ list-style:none; padding:0; margin:0; display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; }\n    .wtf-flex .glance li{ background:var(--panel); padding:16px 18px; font-size:.92rem; color:#b6c4d4; }\n    .wtf-flex .glance li b{ display:block; color:var(--silk); font-weight:600; font-family:var(--f-disp); font-size:1rem; margin-bottom:2px; }\n    .wtf-flex .glance li.blank::before{ content:none; }\n    .wtf-flex .glance li::before{ content:\"+\"; color:var(--gold); font-family:var(--f-mono); font-weight:600; margin-right:8px; }\n    .wtf-flex .fuse-spec{ font-family:var(--f-mono); font-size:.8rem; letter-spacing:.03em; color:var(--silk-dim); margin:16px 0 0; border-left:2px solid var(--led); padding-left:12px; }\n    .wtf-flex .fuse-spec b{ color:var(--silk); font-weight:500; }\n    .wtf-flex .lead-claim{ font-family:var(--f-disp); font-weight:600; font-size:clamp(1.3rem,3.4vw,1.8rem); color:var(--silk); margin:0 0 16px; letter-spacing:-.01em; }\n    .wtf-flex p.body{ font-size:1rem; color:#c3d0de; max-width:64ch; margin:0 0 18px; }\n    .wtf-flex p.body strong{ color:var(--silk); font-weight:600; }\n    .wtf-flex p.body em{ color:var(--gold); font-style:italic; }\n    .wtf-flex .domains{ display:grid; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; margin:6px 0 0; }\n    .wtf-flex .domain{ background:var(--panel); padding:22px clamp(18px,3vw,28px); display:grid; grid-template-columns:auto 1fr; gap:20px; align-items:start; }\n    .wtf-flex .domain .num{ font-family:var(--f-mono); font-weight:600; font-size:clamp(1.6rem,4vw,2.2rem); color:var(--gold); line-height:1; letter-spacing:-.02em; opacity:.9; }\n    .wtf-flex .domain h3{ font-family:var(--f-disp); font-weight:700; font-size:1.15rem; margin:0 0 6px; }\n    .wtf-flex .domain p{ margin:0; font-size:.94rem; color:#b6c4d4; max-width:62ch; }\n    .wtf-flex .domain .redled{ color:#ff5a4d; font-weight:600; }\n    .wtf-flex .beefcake{ margin:1px 0 0; border:1px solid var(--gold-dim); border-radius:4px; background:radial-gradient(120% 180% at 8% 0%,rgba(255,125,46,.14),transparent 55%),var(--panel2); padding:clamp(24px,4vw,34px); }\n    .wtf-flex .beefcake .word{ font-family:var(--f-disp); font-weight:700; font-size:clamp(2rem,7vw,3.4rem); letter-spacing:.02em; color:var(--led); margin:0; line-height:1; text-shadow:0 0 24px rgba(255,125,46,.45); }\n    .wtf-flex .beefcake p{ font-family:var(--f-mono); font-size:.92rem; color:var(--silk); margin:14px 0 0; max-width:52ch; }\n    .wtf-flex .rtb{ margin-top:34px; }\n    .wtf-flex .rtb h4{ font-family:var(--f-disp); font-weight:600; font-size:1.1rem; color:var(--silk); margin:0 0 8px; }\n    .wtf-flex .stat-head{ font-family:var(--f-disp); font-weight:700; font-size:clamp(1.3rem,3.6vw,1.9rem); color:var(--silk); margin:38px 0 4px; letter-spacing:-.01em; }\n    .wtf-flex .stat-head b{ color:var(--gold); }\n    .wtf-flex .stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; margin:20px 0 0; }\n    .wtf-flex .stat{ background:var(--panel); padding:20px 16px; text-align:center; }\n    .wtf-flex .stat .n{ font-family:var(--f-mono); font-weight:600; font-size:clamp(1.8rem,5vw,2.6rem); color:var(--gold); line-height:1; }\n    .wtf-flex .stat .l{ font-family:var(--f-mono); font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--silk-dim); margin-top:8px; }\n    .wtf-flex .believe{ font-size:1rem; color:#c3d0de; margin:20px 0 0; max-width:64ch; }\n    .wtf-flex .believe strong{ color:var(--silk); font-weight:600; }\n    @media (max-width:620px){ .wtf-flex .glance{ grid-template-columns:1fr; } .wtf-flex .stats{ grid-template-columns:1fr; } }\n    @media (prefers-reduced-motion:reduce){ .wtf-flex *{ transition:none; } }\n  \u003c\/style\u003e\n\u003cdiv class=\"wtf-flex\"\u003e\n\u003cp class=\"eyebrow\"\u003eWateefy Electronics · NODE Flex\u003c\/p\u003e\n\u003ch1\u003eNODE \u003cb\u003eFlex\u003c\/b\u003e\n\u003c\/h1\u003e\n\u003cp class=\"sub\"\u003e8-Channel Addressable LED Controller · Universal Module Carrier\u003c\/p\u003e\n\u003cp class=\"hero-line\"\u003eOne board. Whatever module is in the drawer.\u003c\/p\u003e\n\u003cp class=\"sec-label\"\u003eAt a Glance\u003c\/p\u003e\n\u003cul class=\"glance\"\u003e\n\u003cli\u003e\n\u003cb\u003e8 independent output channels\u003c\/b\u003eWS281x \/ SK6812 \/ TM1814 family, 5 V level-shifted drive\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eAny ESP32 DevKit, 0.9″ or 1.0″ spacing\u003c\/b\u003eboth spacings on the board, up to 22 positions per row, jumper-mapped to the outputs\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003e5–48 VDC input, no voltage jumper\u003c\/b\u003enothing to set wrong, ever\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003e30 A through the board at standard copper\u003c\/b\u003enot a paid upgrade\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eThree isolated power domains\u003c\/b\u003edirty input, clean protected power, fused distribution bus\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eA fuse on every single output\u003c\/b\u003eeight channels, eight fuses, no sharing\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eNon-destructive reverse-polarity protection\u003c\/b\u003enothing is consumed when someone wires it backwards\u003c\/li\u003e\n\u003cli class=\"blank\"\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"fuse-spec\"\u003e\u003cb\u003eFuses\u003c\/b\u003e — up to 30 A max input · 7.5 A nominal \/ 10 A max per output\u003c\/p\u003e\n\u003cp class=\"sec-label\"\u003eWhy This Exists\u003c\/p\u003e\n\u003cp class=\"lead-claim\"\u003eCompatibility is geometry, not a part number.\u003c\/p\u003e\n\u003cp class=\"body\"\u003eEvery ESP32 DevKit has a different pinout, and every controller board is hard-wired to exactly one of them. So the board you bought last year is scrap when that module goes end-of-life, and the dev boards in your parts drawer are useless because none of them match the footprint someone else chose.\u003c\/p\u003e\n\u003cp class=\"body\"\u003eNODE Flex carries \u003cstrong\u003eboth\u003c\/strong\u003e common DevKit row spacings — 0.9″ and 1.0″ — with up to 22 positions per row. Module length does not matter: a shorter board seats in the same sockets and leaves positions empty. A jumper field then decides which module pin drives which output channel. If a module lands on 0.9″ or 1.0″ centres, it fits — \u003cem\u003eincluding modules that do not exist yet.\u003c\/em\u003e\u003c\/p\u003e\n\u003cp class=\"body\"\u003eWhen your favourite DevKit is discontinued — and it will be — you seat a different one and keep going. Same board, same protection, same firmware. For anyone maintaining an installed base across mixed hardware, \u003cstrong\u003ethis is the SKU that ends the inventory problem.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp class=\"sec-label\"\u003eThe Architecture · Three Power Domains\u003c\/p\u003e\n\u003cp class=\"lead-claim\"\u003eThis is the part that matters.\u003c\/p\u003e\n\u003cp class=\"body\"\u003eFlexibility lives in the MCU interface. Nothing upstream of it was softened to get there. Most controllers have one power rail — input voltage lands on a terminal and it is the same copper that reaches your strips. Whatever arrives — spike, reverse polarity, sag, transient — arrives everywhere at once.\u003c\/p\u003e\n\u003cp class=\"body\"\u003e\u003cstrong\u003eNODE splits power into three separate domains on their own copper planes:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cdiv class=\"domains\"\u003e\n\u003cdiv class=\"domain\"\u003e\n\u003cdiv class=\"num\"\u003e01\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eDirty power in\u003c\/h3\u003e\n\u003cp\u003eThe input terminal accepts whatever the supply, the wiring, and the person doing the wiring hand it. Assumed hostile, isolated to the smallest region of the board possible, and nothing downstream touches it directly.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"domain\"\u003e\n\u003cdiv class=\"num\"\u003e02\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eClean power\u003c\/h3\u003e\n\u003cp\u003eBetween dirty and clean sits the protection stage: bidirectional transient clamping and an \u003cem\u003eactive\u003c\/em\u003e reverse-polarity blocker. Reverse the supply and the pass element never turns on — no current path to the rest of the board, nothing sacrificed, and the \u003cspan class=\"redled\"\u003ered indicator\u003c\/span\u003e tells you why. Correct the wiring and it recovers on its own.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"domain\"\u003e\n\u003cdiv class=\"num\"\u003e03\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eThe protected bus\u003c\/h3\u003e\n\u003cp\u003eClean power passes the main fuse to become the distribution bus. Each of the eight output channels taps that bus through its own fuse. A fault on run six opens one fuse and the other seven never notice.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"beefcake\"\u003e\n\u003cp class=\"word\"\u003eBEEFCAKE.\u003c\/p\u003e\n\u003cp\u003eThe pass element is a 205 A MOSFET on a 30 A board. It will never be the thing that fails.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rtb\"\u003e\n\u003ch4\u003eDecoupling where the current actually is.\u003c\/h4\u003e\n\u003cp class=\"body\"\u003eTwo thousand microfarads of bulk sits on the protected bus, and another forty-seven at \u003cem\u003eevery single output connector\u003c\/em\u003e. One reservoir at the input cannot cover the harness inductance of eight separate output runs no matter how large it is. When a full-white frame lands on all eight channels at once, each channel draws from its own reserve sitting centimetres from its terminal.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rtb\"\u003e\n\u003ch4\u003eFour levels of protection between the screw terminal and your pixels.\u003c\/h4\u003e\n\u003cp class=\"body\"\u003eClamp, active block, main fuse, channel fuse — each on its own copper. That is why this is a four-layer board with a split inner power plane rather than two layers and one pour.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp class=\"sec-label\"\u003eWhat Else You Actually Get\u003c\/p\u003e\n\u003cp class=\"lead-claim\"\u003eThree things field abuse can kill. All three pull out by hand.\u003c\/p\u003e\n\u003cp class=\"body\"\u003eThe parts most likely to die in the field are the parts you can replace in a garage — by hand, with parts you can source anywhere. No hot air, no solder braid, no scrapped board.\u003c\/p\u003e\n\u003cdiv class=\"domains\"\u003e\n\u003cdiv class=\"domain\"\u003e\n\u003cdiv class=\"num\"\u003e01\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eThe fuse\u003c\/h3\u003e\n\u003cp\u003eA mini blade — the variety-pack part sold at every gas station and parts counter in the country. Pulls with fingers, costs pennies. Not a cartridge you order online and wait for.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"domain\"\u003e\n\u003cdiv class=\"num\"\u003e02\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eThe buffer\u003c\/h3\u003e\n\u003cp\u003eA jellybean octal logic IC in a DIP socket, sitting directly behind your wiring — the part most likely to die and the most annoying to replace anywhere else. Here it lifts out with a fingernail, and the socket takes \u003cem\u003eeither a '541 or a '245\u003c\/em\u003e — fit whichever is in stock.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"domain\"\u003e\n\u003cdiv class=\"num\"\u003e03\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eThe MCU\u003c\/h3\u003e\n\u003cp\u003eA socketed module. Blow it up, seat another. No hot air, no braid, no scrap board. Nobody else in this class can claim all three.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rtb\"\u003e\n\u003ch4\u003eData lines treated like data lines.\u003c\/h4\u003e\n\u003cp class=\"body\"\u003eEach output runs through a series resistor and a sub-picofarad ESD device on the \u003cem\u003econnector\u003c\/em\u003e side, where transients actually arrive. The low-capacitance part is deliberate: a fat protection diode rounds off WS281x bit timing and gives you a board that works on the bench but not on a 40-foot run. This one holds timing all the way out.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rtb\"\u003e\n\u003ch4\u003eConformal coated — not shipped bare.\u003c\/h4\u003e\n\u003cp class=\"body\"\u003eEvery board is conformal coated after assembly, with connectors, sockets, fuse clips and switches masked. Competing boards in this class ship uncoated. A coated board in a vented enclosure shrugs off the condensation and humidity a bare board can't — which is the whole game for a seasonal outdoor install.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rtb\"\u003e\n\u003ch4\u003eDefined-state inputs.\u003c\/h4\u003e\n\u003cp class=\"body\"\u003eBecause a channel's jumper may legitimately be left unset, every buffer input carries a pull-down. An unconfigured channel sits at a known logic low instead of floating and driving whatever it feels like — darkness rather than noise. It's the detail that separates a real universal carrier from a breakout board with headers.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp class=\"stat-head\"\u003eAt the top of the range — the full 48 V, every common pixel voltage on one board — no component in the power path runs above \u003cb\u003e80%\u003c\/b\u003e of its rating.\u003c\/p\u003e\n\u003cdiv class=\"stats\"\u003e\n\u003cdiv class=\"stat\"\u003e\n\u003cdiv class=\"n\"\u003e80%\u003c\/div\u003e\n\u003cdiv class=\"l\"\u003ePass MOSFET\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"stat\"\u003e\n\u003cdiv class=\"n\"\u003e74%\u003c\/div\u003e\n\u003cdiv class=\"l\"\u003eIdeal-diode controller\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"stat\"\u003e\n\u003cdiv class=\"n\"\u003e60%\u003c\/div\u003e\n\u003cdiv class=\"l\"\u003eBuck regulator\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"believe\"\u003eThe ≥63 V power plane is what makes that possible — finding the board real-estate for that headroom was the hard part, and it keeps even the bulk reservoir at 76%, wide open, at the top of the range. Drop to a 36 V system and the whole path falls back under 60%. It is a number nobody else in this class publishes, and it is \u003cstrong\u003ethe reason to believe the rest of this page.\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e","brand":"Wateefy Electronics","offers":[{"title":"Node Flex LED Controller Board Only","offer_id":55084547506548,"sku":"Node-Flex-00","price":99.0,"currency_code":"USD","in_stock":true},{"title":"Node Flex \/ TI SN74AHCT541N \/ 40pcs 20 cm Dupont Jumpers","offer_id":55084504514932,"sku":"Node-Flex-02","price":115.0,"currency_code":"USD","in_stock":true},{"title":"Node Flex \/ TI SN74AHCT541N \/ 40pcs 20 cm Dupont Jumpers \/ 8 Terminal outputs","offer_id":55084504482164,"sku":"Node-Flex-01","price":125.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1015\/0487\/6916\/files\/NodeFlex.png?v=1785958224"},{"product_id":"node-backbone-led-controller","title":"Node Backbone LED Controller","description":"\u003c!-- ============================================================\n     Wateefy · NODE Backbone — Shopify Product Description\n     Rev 1  ·  2026-08-02\n     Self-contained, scoped under .wtf-back. Paste into a custom\n     Liquid\/HTML section (recommended) or product description.\n     ============================================================ --\u003e\n\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;600;700\u0026amp;family=IBM+Plex+Mono:wght@400;500;600\u0026amp;family=Inter:wght@400;500\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003cdiv class=\"wtf-back\"\u003e\n  \u003cstyle\u003e\n    .wtf-back{\n      --board:#0b1a2b; --panel:#10233a; --panel2:#0e1f34;\n      --silk:#e9eef5; --silk-dim:#7f97b0; --gold:#cda349;\n      --gold-dim:rgba(205,163,73,.22); --led:#ff7d2e; --net:#4bb3d6;\n      --f-disp:'Space Grotesk',system-ui,sans-serif;\n      --f-mono:'IBM Plex Mono',ui-monospace,monospace;\n      --f-body:'Inter',system-ui,sans-serif;\n      background:var(--board); color:var(--silk); font-family:var(--f-body);\n      line-height:1.62; padding:clamp(28px,5vw,64px); border-radius:4px;\n      max-width:1080px; margin:0 auto;\n    }\n    .wtf-back *{ box-sizing:border-box; }\n    .wtf-back .eyebrow{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.28em; text-transform:uppercase; color:var(--gold); margin:0 0 16px; }\n    .wtf-back h1{ font-family:var(--f-disp); font-weight:700; font-size:clamp(2.4rem,7vw,4rem); line-height:.98; letter-spacing:-.02em; margin:0; }\n    .wtf-back h1 b{ color:var(--gold); }\n    .wtf-back .sub{ font-family:var(--f-mono); font-size:.82rem; letter-spacing:.06em; color:var(--silk-dim); margin:12px 0 0; }\n    .wtf-back .hero-line{ font-family:var(--f-disp); font-weight:500; font-size:clamp(1.15rem,3vw,1.55rem); color:var(--silk); margin:24px 0 0; max-width:32ch; }\n    .wtf-back .hero-line::after{ content:\"\"; display:block; width:64px; height:2px; background:var(--net); margin-top:18px; box-shadow:0 0 12px var(--net); }\n    .wtf-back .sec-label{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gold); margin:52px 0 18px; display:flex; align-items:center; gap:14px; }\n    .wtf-back .sec-label::after{ content:\"\"; height:1px; flex:1; background:var(--gold-dim); }\n    .wtf-back .glance{ list-style:none; padding:0; margin:0; display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; }\n    .wtf-back .glance li{ background:var(--panel); padding:16px 18px; font-size:.92rem; color:#b6c4d4; }\n    .wtf-back .glance li b{ display:block; color:var(--silk); font-weight:600; font-family:var(--f-disp); font-size:1rem; margin-bottom:2px; }\n    .wtf-back .glance li.blank::before{ content:none; }\n    .wtf-back .glance li::before{ content:\"+\"; color:var(--gold); font-family:var(--f-mono); font-weight:600; margin-right:8px; }\n    .wtf-back .fuse-spec{ font-family:var(--f-mono); font-size:.8rem; letter-spacing:.03em; color:var(--silk-dim); margin:16px 0 0; border-left:2px solid var(--led); padding-left:12px; }\n    .wtf-back .fuse-spec b{ color:var(--silk); font-weight:500; }\n    .wtf-back .lead-claim{ font-family:var(--f-disp); font-weight:600; font-size:clamp(1.3rem,3.4vw,1.8rem); color:var(--silk); margin:0 0 16px; letter-spacing:-.01em; }\n    .wtf-back p.body{ font-size:1rem; color:#c3d0de; max-width:64ch; margin:0 0 18px; }\n    .wtf-back p.body strong{ color:var(--silk); font-weight:600; }\n    .wtf-back p.body em{ color:var(--gold); font-style:italic; }\n    .wtf-back .domains{ display:grid; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; margin:6px 0 0; }\n    .wtf-back .domain{ background:var(--panel); padding:22px clamp(18px,3vw,28px); display:grid; grid-template-columns:auto 1fr; gap:20px; align-items:start; }\n    .wtf-back .domain .num{ font-family:var(--f-mono); font-weight:600; font-size:clamp(1.6rem,4vw,2.2rem); color:var(--gold); line-height:1; letter-spacing:-.02em; opacity:.9; }\n    .wtf-back .domain h3{ font-family:var(--f-disp); font-weight:700; font-size:1.15rem; margin:0 0 6px; }\n    .wtf-back .domain p{ margin:0; font-size:.94rem; color:#b6c4d4; max-width:62ch; }\n    .wtf-back .domain .redled{ color:#ff5a4d; font-weight:600; }\n    \/* fourth, network domain — visually distinct *\/\n    .wtf-back .domain.net{ background:linear-gradient(90deg,rgba(75,179,214,.08),var(--panel) 60%); }\n    .wtf-back .domain.net .num{ color:var(--net); }\n    .wtf-back .domain.net h3{ color:var(--net); }\n    .wtf-back .beefcake{ margin:1px 0 0; border:1px solid var(--gold-dim); border-radius:4px; background:radial-gradient(120% 180% at 8% 0%,rgba(255,125,46,.14),transparent 55%),var(--panel2); padding:clamp(24px,4vw,34px); }\n    .wtf-back .beefcake .word{ font-family:var(--f-disp); font-weight:700; font-size:clamp(2rem,7vw,3.4rem); letter-spacing:.02em; color:var(--led); margin:0; line-height:1; text-shadow:0 0 24px rgba(255,125,46,.45); }\n    .wtf-back .beefcake p{ font-family:var(--f-mono); font-size:.92rem; color:var(--silk); margin:14px 0 0; max-width:52ch; }\n    .wtf-back .rtb{ margin-top:34px; }\n    .wtf-back .rtb h4{ font-family:var(--f-disp); font-weight:600; font-size:1.1rem; color:var(--silk); margin:0 0 8px; }\n    .wtf-back .rtb h4.n{ color:var(--net); }\n    .wtf-back .stat-head{ font-family:var(--f-disp); font-weight:700; font-size:clamp(1.3rem,3.6vw,1.9rem); color:var(--silk); margin:38px 0 4px; letter-spacing:-.01em; }\n    .wtf-back .stat-head b{ color:var(--gold); }\n    .wtf-back .stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; margin:20px 0 0; }\n    .wtf-back .stat{ background:var(--panel); padding:20px 16px; text-align:center; }\n    .wtf-back .stat .n{ font-family:var(--f-mono); font-weight:600; font-size:clamp(1.8rem,5vw,2.6rem); color:var(--gold); line-height:1; }\n    .wtf-back .stat .l{ font-family:var(--f-mono); font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--silk-dim); margin-top:8px; }\n    .wtf-back .believe{ font-size:1rem; color:#c3d0de; margin:20px 0 0; max-width:64ch; }\n    .wtf-back .believe strong{ color:var(--silk); font-weight:600; }\n    @media (max-width:620px){ .wtf-back .glance{ grid-template-columns:1fr; } .wtf-back .stats{ grid-template-columns:1fr; } }\n    @media (prefers-reduced-motion:reduce){ .wtf-back *{ transition:none; } }\n  \u003c\/style\u003e\n\n  \u003cp class=\"eyebrow\"\u003eWateefy Electronics · NODE Backbone\u003c\/p\u003e\n  \u003ch1\u003eNODE \u003cb\u003eBackbone\u003c\/b\u003e\n\u003c\/h1\u003e\n  \u003cp class=\"sub\"\u003e8-Channel Addressable LED Controller · Ethernet + PoE Node\u003c\/p\u003e\n  \u003cp class=\"hero-line\"\u003eWired control. The network powers the node.\u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eAt a Glance\u003c\/p\u003e\n  \u003cul class=\"glance\"\u003e\n    \u003cli\u003e\n\u003cb\u003e8 independent output channels\u003c\/b\u003eWS281x \/ SK6812 \/ TM1814 family, 5 V level-shifted drive\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eWired Ethernet on dedicated silicon\u003c\/b\u003eW5500 controller with its own MAC, PHY and hardware TCP\/IP stack\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003ePower over Ethernet\u003c\/b\u003ethe switch powers the controller; no separate supply for the electronics\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003e5–48 VDC pixel input, no jumpers\u003c\/b\u003eseparate rail for strip power, nothing to set wrong\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003e30 A through the board at standard copper\u003c\/b\u003enot a paid upgrade\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eThree isolated power domains\u003c\/b\u003edirty input, clean protected power, fused distribution bus\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eA fuse on every single output\u003c\/b\u003eeight channels, eight fuses, no sharing\u003c\/li\u003e\n    \u003cli class=\"blank\"\u003e\n  \u003c\/li\u003e\n\u003c\/ul\u003e\n  \u003cp class=\"fuse-spec\"\u003e\u003cb\u003eFuses\u003c\/b\u003e — up to 30 A max pixel input · 7.5 A nominal \/ 10 A max per output\u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eWhy This Exists\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eThe SKU for the install that outgrew Wi-Fi.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    Wi-Fi is fine until it isn't. Put twelve controllers on one property, push sixty frames a second\n    of sACN at all of them, and the failure mode is not a clean disconnect — it is stutter, tearing,\n    and one zone that goes dark for four seconds during the show. Adding access points helps until\n    the 2.4 GHz band gives up.\n  \u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    NODE Backbone puts the control plane on wire. Each node gets an Ethernet drop; the switch powers\n    the logic and carries the data. Frame timing becomes deterministic, the controller shows up in\n    your DHCP table like every other piece of infrastructure, and troubleshooting becomes a\n    \u003cstrong\u003elink light instead of a signal-strength guess.\u003c\/strong\u003e\n  \u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eThe Architecture · Power Domains\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eThis is the part that matters.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    Choosing Ethernet does not mean accepting a weaker power section — the pixel path here is identical\n    to the rest of the line. Most controllers have one power rail: whatever arrives at the terminal —\n    spike, reverse polarity, sag, transient — arrives everywhere at once.\n  \u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\u003cstrong\u003eNODE splits power into separate domains on their own copper planes:\u003c\/strong\u003e\u003c\/p\u003e\n\n  \u003cdiv class=\"domains\"\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e01\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eDirty power in\u003c\/h3\u003e\n        \u003cp\u003eThe input terminal accepts whatever the supply, the wiring, and the person doing the wiring\n        hand it. Assumed hostile, isolated to the smallest region of the board possible, nothing\n        downstream touching it directly.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e02\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eClean power\u003c\/h3\u003e\n        \u003cp\u003eBetween dirty and clean sits the protection stage: bidirectional transient clamping and an\n        \u003cem\u003eactive\u003c\/em\u003e reverse-polarity blocker. Reverse the supply and the pass element never turns on\n        — no current path, nothing sacrificed, and the \u003cspan class=\"redled\"\u003ered indicator\u003c\/span\u003e tells\n        you why. Correct the wiring and it recovers on its own.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e03\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe protected bus\u003c\/h3\u003e\n        \u003cp\u003eClean power passes the main fuse to become the distribution bus. Each of the eight output\n        channels taps that bus through its own fuse. A fault on run six opens one fuse and the other\n        seven never notice.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain net\"\u003e\n      \u003cdiv class=\"num\"\u003e04\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe network side\u003c\/h3\u003e\n        \u003cp\u003eA fourth domain, entirely separate. Logic power arrives over Ethernet, on its own ground\n        domain, joined to board ground at \u003cem\u003eone\u003c\/em\u003e deliberate point. Control plane and high-current\n        pixel return are treated as a design problem rather than an accident of layout — the difference\n        between a board that passes on a bench and one that behaves across long runs and multiple\n        supplies.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"beefcake\"\u003e\n    \u003cp class=\"word\"\u003eBEEFCAKE.\u003c\/p\u003e\n    \u003cp\u003eThe pass element is a 205 A MOSFET on a 30 A board. It will never be the thing that fails.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rtb\"\u003e\n    \u003ch4 class=\"n\"\u003eEthernet on dedicated silicon.\u003c\/h4\u003e\n    \u003cp class=\"body\"\u003e\n      The ESP32-S3 has no built-in Ethernet MAC, so this variant runs a \u003cstrong\u003eW5500\u003c\/strong\u003e — a\n      standalone controller carrying its own MAC, its own PHY, and a hardware TCP\/IP stack, talking to\n      the MCU over SPI. The alternative in this class is an ESP32-classic driving an external PHY over\n      RMII: nine GPIO consumed, and the network stack running on the same cores rendering your effects.\n      Here, \u003cem\u003ethe network is somebody else's job.\u003c\/em\u003e\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rtb\"\u003e\n    \u003ch4\u003eReachable even when the pixel supply is off.\u003c\/h4\u003e\n    \u003cp class=\"body\"\u003e\n      Because logic power comes over Ethernet, the node stays on the network with the strip supply dark\n      — useful for pre-season configuration, and for telling \"controller down\" apart from \"supply down\"\n      without a ladder.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rtb\"\u003e\n    \u003ch4\u003eDecoupling where the current actually is.\u003c\/h4\u003e\n    \u003cp class=\"body\"\u003e\n      Two thousand microfarads of bulk on the protected bus, and another forty-seven at\n      \u003cem\u003eevery single output connector\u003c\/em\u003e. When a full-white frame lands on all eight channels at\n      once, each draws from its own reserve sitting centimetres from its terminal. Four levels between\n      the screw terminal and your pixels — clamp, active block, main fuse, channel fuse — each on its\n      own copper.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sec-label\"\u003eWhat Else You Actually Get\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eThree things field abuse can kill. All three pull out by hand.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    The parts most likely to die in the field are the parts you can replace in a garage — by hand, with\n    parts you can source anywhere. No hot air, no solder braid, no scrapped board.\n  \u003c\/p\u003e\n  \u003cdiv class=\"domains\"\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e01\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe fuse\u003c\/h3\u003e\n        \u003cp\u003eA mini blade — the variety-pack part sold at every gas station and parts counter in the country.\n        Pulls with fingers, costs pennies. Not a cartridge you order online and wait for.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e02\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe buffer\u003c\/h3\u003e\n        \u003cp\u003eA jellybean octal logic IC in a DIP socket, sitting directly behind your wiring — the part most\n        likely to die and the most annoying to replace anywhere else. Here it lifts out with a fingernail,\n        and the socket takes \u003cem\u003eeither a '541 or a '245\u003c\/em\u003e — fit whichever is in stock.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e03\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe MCU\u003c\/h3\u003e\n        \u003cp\u003eA socketed module. Blow it up, seat another. No hot air, no braid, no scrap board. Nobody else in\n        this class can claim all three.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rtb\"\u003e\n    \u003ch4\u003eData lines treated like data lines.\u003c\/h4\u003e\n    \u003cp class=\"body\"\u003e\n      Each output runs through a series resistor and a sub-picofarad ESD device on the \u003cem\u003econnector\u003c\/em\u003e\n      side, where transients actually arrive. The low-capacitance part is deliberate: a fat protection diode\n      rounds off WS281x bit timing and gives you a board that works on the bench but not on a 40-foot run.\n      This one holds timing all the way out.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rtb\"\u003e\n    \u003ch4\u003eConformal coated — not shipped bare.\u003c\/h4\u003e\n    \u003cp class=\"body\"\u003e\n      Every board is conformal coated after assembly, with connectors, sockets, fuse clips and switches\n      masked. Competing boards in this class ship uncoated. A coated board in a vented enclosure shrugs off\n      the condensation and humidity a bare board can't — which is the whole game for a seasonal outdoor install.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"stat-head\"\u003eAt the top of the range — the full 48 V, every common pixel voltage on one board — no component in the power path runs above \u003cb\u003e80%\u003c\/b\u003e of its rating.\u003c\/p\u003e\n  \u003cdiv class=\"stats\"\u003e\n    \u003cdiv class=\"stat\"\u003e\n\u003cdiv class=\"n\"\u003e80%\u003c\/div\u003e\n\u003cdiv class=\"l\"\u003ePass MOSFET\u003c\/div\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"stat\"\u003e\n\u003cdiv class=\"n\"\u003e74%\u003c\/div\u003e\n\u003cdiv class=\"l\"\u003eIdeal-diode controller\u003c\/div\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"stat\"\u003e\n\u003cdiv class=\"n\"\u003e60%\u003c\/div\u003e\n\u003cdiv class=\"l\"\u003eBuck regulator\u003c\/div\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cp class=\"believe\"\u003e\n    The ≥63 V power plane is what makes that possible — finding the board real-estate for that\n    headroom was the hard part, and it keeps even the bulk reservoir at 76%, wide open, at the top of\n    the range. Drop to a 36 V system and the whole path falls back under 60%. It is a number nobody else\n    in this class publishes, and it is\n    \u003cstrong\u003ethe reason to believe the rest of this page.\u003c\/strong\u003e\n  \u003c\/p\u003e\n\n\u003c\/div\u003e","brand":"Wateefy Electronics","offers":[{"title":"Node Backbone Board Only","offer_id":55084552618356,"sku":"Node-Backbone-00","price":149.0,"currency_code":"USD","in_stock":true},{"title":"Node Backbone \/ Waveshare Eth-PoE \/ TI SN74AHCT541N","offer_id":55084476924276,"sku":"Node-Backbone-01","price":149.0,"currency_code":"USD","in_stock":true},{"title":"Node Backbone \/ Waveshare ETH-POE \/ TI SN74AHCT541N  \/ 8 Terminal outputs","offer_id":55084476957044,"sku":"Node-Backbone-02","price":159.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1015\/0487\/6916\/files\/Node_Backbone2.png?v=1785959415"},{"product_id":"node-power","title":"Node Power 8","description":"\u003c!-- ============================================================\n     Wateefy · NODE Power 8 — Shopify Product Description\n     Rev 1  ·  2026-08-02\n     Self-contained, scoped under .wtf-pwr8. Paste into a custom\n     Liquid\/HTML section (recommended) or product description.\n     ============================================================ --\u003e\n\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;600;700\u0026amp;family=IBM+Plex+Mono:wght@400;500;600\u0026amp;family=Inter:wght@400;500\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003cdiv class=\"wtf-pwr8\"\u003e\n  \u003cstyle\u003e\n    .wtf-pwr8{\n      --board:#0b1a2b; --panel:#10233a; --panel2:#0e1f34;\n      --silk:#e9eef5; --silk-dim:#7f97b0; --gold:#cda349;\n      --gold-dim:rgba(205,163,73,.22); --led:#ff7d2e;\n      --f-disp:'Space Grotesk',system-ui,sans-serif;\n      --f-mono:'IBM Plex Mono',ui-monospace,monospace;\n      --f-body:'Inter',system-ui,sans-serif;\n      background:var(--board); color:var(--silk); font-family:var(--f-body);\n      line-height:1.62; padding:clamp(28px,5vw,64px); border-radius:4px;\n      max-width:1080px; margin:0 auto;\n    }\n    .wtf-pwr8 *{ box-sizing:border-box; }\n    .wtf-pwr8 .eyebrow{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.28em; text-transform:uppercase; color:var(--gold); margin:0 0 16px; }\n    .wtf-pwr8 h1{ font-family:var(--f-disp); font-weight:700; font-size:clamp(2.4rem,7vw,4rem); line-height:.98; letter-spacing:-.02em; margin:0; }\n    .wtf-pwr8 h1 b{ color:var(--gold); }\n    .wtf-pwr8 .sub{ font-family:var(--f-mono); font-size:.82rem; letter-spacing:.06em; color:var(--silk-dim); margin:12px 0 0; }\n    .wtf-pwr8 .hero-line{ font-family:var(--f-disp); font-weight:500; font-size:clamp(1.15rem,3vw,1.55rem); color:var(--silk); margin:24px 0 0; max-width:32ch; }\n    .wtf-pwr8 .hero-line::after{ content:\"\"; display:block; width:64px; height:2px; background:var(--led); margin-top:18px; box-shadow:0 0 12px var(--led); }\n    .wtf-pwr8 .sec-label{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gold); margin:52px 0 18px; display:flex; align-items:center; gap:14px; }\n    .wtf-pwr8 .sec-label::after{ content:\"\"; height:1px; flex:1; background:var(--gold-dim); }\n    .wtf-pwr8 .glance{ list-style:none; padding:0; margin:0; display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; }\n    .wtf-pwr8 .glance li{ background:var(--panel); padding:16px 18px; font-size:.92rem; color:#b6c4d4; }\n    .wtf-pwr8 .glance li b{ display:block; color:var(--silk); font-weight:600; font-family:var(--f-disp); font-size:1rem; margin-bottom:2px; }\n    .wtf-pwr8 .glance li::before{ content:\"+\"; color:var(--gold); font-family:var(--f-mono); font-weight:600; margin-right:8px; }\n    .wtf-pwr8 .fuse-spec{ font-family:var(--f-mono); font-size:.8rem; letter-spacing:.03em; color:var(--silk-dim); margin:16px 0 0; border-left:2px solid var(--led); padding-left:12px; }\n    .wtf-pwr8 .fuse-spec b{ color:var(--silk); font-weight:500; }\n    .wtf-pwr8 .lead-claim{ font-family:var(--f-disp); font-weight:600; font-size:clamp(1.3rem,3.4vw,1.8rem); color:var(--silk); margin:0 0 16px; letter-spacing:-.01em; }\n    .wtf-pwr8 p.body{ font-size:1rem; color:#c3d0de; max-width:64ch; margin:0 0 18px; }\n    .wtf-pwr8 p.body strong{ color:var(--silk); font-weight:600; }\n    .wtf-pwr8 p.body em{ color:var(--gold); font-style:italic; }\n    .wtf-pwr8 .domains{ display:grid; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; margin:6px 0 0; }\n    .wtf-pwr8 .domain{ background:var(--panel); padding:22px clamp(18px,3vw,28px); display:grid; grid-template-columns:auto 1fr; gap:20px; align-items:start; }\n    .wtf-pwr8 .domain .num{ font-family:var(--f-mono); font-weight:600; font-size:clamp(1.6rem,4vw,2.2rem); color:var(--gold); line-height:1; letter-spacing:-.02em; opacity:.9; }\n    .wtf-pwr8 .domain h3{ font-family:var(--f-disp); font-weight:700; font-size:1.15rem; margin:0 0 6px; }\n    .wtf-pwr8 .domain p{ margin:0; font-size:.94rem; color:#b6c4d4; max-width:62ch; }\n    .wtf-pwr8 .domain .redled{ color:#ff5a4d; font-weight:600; }\n    .wtf-pwr8 .beefcake{ margin:1px 0 0; border:1px solid var(--gold-dim); border-radius:4px; background:radial-gradient(120% 180% at 8% 0%,rgba(255,125,46,.14),transparent 55%),var(--panel2); padding:clamp(24px,4vw,34px); }\n    .wtf-pwr8 .beefcake .word{ font-family:var(--f-disp); font-weight:700; font-size:clamp(2rem,7vw,3.4rem); letter-spacing:.02em; color:var(--led); margin:0; line-height:1; text-shadow:0 0 24px rgba(255,125,46,.45); }\n    .wtf-pwr8 .beefcake p{ font-family:var(--f-mono); font-size:.92rem; color:var(--silk); margin:14px 0 0; max-width:52ch; }\n    .wtf-pwr8 .modes{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; margin:6px 0 0; }\n    .wtf-pwr8 .mode{ background:var(--panel); padding:22px clamp(18px,3vw,26px); }\n    .wtf-pwr8 .mode .tag{ font-family:var(--f-mono); font-size:.68rem; letter-spacing:.14em; text-transform:uppercase; color:var(--gold); }\n    .wtf-pwr8 .mode h3{ font-family:var(--f-disp); font-weight:700; font-size:1.1rem; margin:6px 0 8px; color:var(--silk); }\n    .wtf-pwr8 .mode p{ margin:0; font-size:.92rem; color:#b6c4d4; }\n    .wtf-pwr8 .note{ font-size:1rem; color:#c3d0de; max-width:64ch; margin:22px 0 0; border-left:2px solid var(--led); padding-left:14px; }\n    .wtf-pwr8 .note strong{ color:var(--silk); }\n    @media (max-width:620px){ .wtf-pwr8 .glance{ grid-template-columns:1fr; } .wtf-pwr8 .modes{ grid-template-columns:1fr; } }\n    @media (prefers-reduced-motion:reduce){ .wtf-pwr8 *{ transition:none; } }\n  \u003c\/style\u003e\n\n  \u003cp class=\"eyebrow\"\u003eWateefy Electronics · NODE Power 8\u003c\/p\u003e\n  \u003ch1\u003eNODE \u003cb\u003ePower 8\u003c\/b\u003e\n\u003c\/h1\u003e\n  \u003cp class=\"sub\"\u003ePower Injection \u0026amp; Distribution · 8 Fused Outputs\u003c\/p\u003e\n  \u003cp class=\"hero-line\"\u003ePut the volts back where the long run ate them.\u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eAt a Glance\u003c\/p\u003e\n  \u003cul class=\"glance\"\u003e\n    \u003cli\u003e\n\u003cb\u003e8 fused injection outputs\u003c\/b\u003eV+ \/ GND per port, individual blade fuse on each\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003e5–48 VDC input, no jumpers\u003c\/b\u003e5 \/ 12 \/ 24 \/ 36 \/ 48 V systems, nothing to set wrong\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003e30 A through the board at standard copper\u003c\/b\u003enot a paid upgrade\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eThe same protected front end as every NODE\u003c\/b\u003etransient clamp, active reverse-polarity block, main fuse\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eA fuse and a status LED on every output\u003c\/b\u003ethe dead tap shows itself\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eNon-destructive reverse-polarity protection\u003c\/b\u003enothing is consumed when someone wires it backwards\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003ePure power — no data, no firmware\u003c\/b\u003eyour pixel data runs through the strip; this just feeds it\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eSmaller than the controllers\u003c\/b\u003erides in the enclosure, or lives out at the injection point\u003c\/li\u003e\n  \u003c\/ul\u003e\n  \u003cp class=\"fuse-spec\"\u003e\u003cb\u003eFuses\u003c\/b\u003e — up to 30 A max input · 7.5 A blade fitted, 10 A max per output — Keystone 3568, user-replaceable\u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eWhy This Exists\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eCopper drops volts. Long runs go dim.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    At 12 V, a long pixel run browns out before it ends. The first pixels are full white; by the far\n    end they sag dim and off-colour, because the thin copper inside the strip dropped the voltage on\n    the way down. Past roughly sixteen feet you cannot win it from one end no matter how fat the feed —\n    the strip itself is the resistor.\n  \u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    NODE Power feeds fresh, fused power into the middle or the far end of the run, so the last pixel\n    sees the same voltage as the first. Eight ports means eight injection points from one board —\n    \u003cem\u003eeach one fused on its own,\u003c\/em\u003e so a shorted run out at the eaves opens one fuse and the other\n    seven never flicker.\n  \u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eWhere It Goes\u003c\/p\u003e\n  \u003cdiv class=\"modes\"\u003e\n    \u003cdiv class=\"mode\"\u003e\n      \u003cspan class=\"tag\"\u003eMode A · In the box\u003c\/span\u003e\n      \u003ch3\u003eBeside the controller\u003c\/h3\u003e\n      \u003cp\u003eSame enclosure, same supply. Short jumper from the PSU terminals into Power 8, then heavier-gauge\n      runs out to the mid-string injection points. One tidy brick feeds the whole zone.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"mode\"\u003e\n      \u003cspan class=\"tag\"\u003eMode B · At the pixels\u003c\/span\u003e\n      \u003ch3\u003eOut where it's needed\u003c\/h3\u003e\n      \u003cp\u003eRun one heavier feed from the supply to a remote Power 8 sitting near the far pixels, then fan\n      out short fused taps from there. The long run carries the drop once, not eight times.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cp class=\"note\"\u003e\n    \u003cstrong\u003eOne rule either way:\u003c\/strong\u003e keep the injection board on the same supply and ground as the\n    controller driving those pixels. One PSU per box means injected power shares a ground reference with\n    the data — no ground loops, no back-feeding, no diode-OR games. It just works.\n  \u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eThe Architecture · Three Power Domains\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eSame protection as the controllers. Just power.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    An injection board sees exactly the abuse a controller does — the same reversed supplies, the same\n    transients, the same shorted runs out in the weather. So it gets the same front end. Whatever\n    arrives at the terminal is split into three domains on their own copper planes:\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"domains\"\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e01\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eDirty power in\u003c\/h3\u003e\n        \u003cp\u003eThe input terminal accepts whatever the supply and the wiring hand it. Assumed hostile,\n        isolated to the smallest region of the board possible, nothing downstream touching it directly.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e02\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eClean power\u003c\/h3\u003e\n        \u003cp\u003eBidirectional transient clamping and an \u003cem\u003eactive\u003c\/em\u003e reverse-polarity blocker. Reverse the\n        supply and the pass element never turns on — no current path, nothing sacrificed, and the\n        \u003cspan class=\"redled\"\u003ered indicator\u003c\/span\u003e tells you why. Fix the wiring and it recovers on its own.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e03\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe fused bus\u003c\/h3\u003e\n        \u003cp\u003eClean power passes the main fuse to become the distribution bus. Each of the eight outputs taps\n        that bus through its own fuse, with local bulk capacitance right at the terminal. One faulted run\n        opens one fuse. The rest keep the pixels lit.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"beefcake\"\u003e\n    \u003cp class=\"word\"\u003eBEEFCAKE.\u003c\/p\u003e\n    \u003cp\u003eThe pass element is a 205 A MOSFET on a 30 A board. It will never be the thing that fails.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sec-label\"\u003eVoltage Headroom\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eRated 5–48 V. The whole range is yours.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    There is no buck regulator on this board to cap the input, so it runs the full range the\n    controllers can't — right up to 48 V. At 12 to 36 V the entire power path sits with wide margin.\n    At the full 48 V the semiconductors still run comfortably — \u003cstrong\u003epass MOSFET at 80%, ideal-diode\n    controller at 60%\u003c\/strong\u003e of rating — and the 50 V bulk reservoir is sized for the job rather than\n    for a spec-sheet trophy.\n  \u003c\/p\u003e\n  \u003cdiv class=\"modes\"\u003e\n    \u003cdiv class=\"mode\"\u003e\n      \u003cspan class=\"tag\"\u003eAt 36 V\u003c\/span\u003e\n      \u003ch3\u003eWide open\u003c\/h3\u003e\n      \u003cp\u003eMOSFET 60% · ideal-diode 45% · bulk caps 72% (1.4× margin). Nothing near a limit anywhere.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"mode\"\u003e\n      \u003cspan class=\"tag\"\u003eAt 48 V\u003c\/span\u003e\n      \u003ch3\u003eComfortable\u003c\/h3\u003e\n      \u003cp\u003eMOSFET 80% · ideal-diode 60% · bulk caps run closer to rating. Give the board airflow on a\n      continuous 48 V system and it's set.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e","brand":"Wateefy Electronics","offers":[{"title":"Default Title","offer_id":55094436266356,"sku":"Node-Power08-00","price":50.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1015\/0487\/6916\/files\/NodePower8.png?v=1785960629"},{"product_id":"node-power-4","title":"Node Power 4","description":"\u003c!-- ============================================================\n     Wateefy · NODE Power 4 — Shopify Product Description\n     Rev 1  ·  2026-08-02\n     Self-contained, scoped under .wtf-pwr4. Paste into a custom\n     Liquid\/HTML section (recommended) or product description.\n     ============================================================ --\u003e\n\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;600;700\u0026amp;family=IBM+Plex+Mono:wght@400;500;600\u0026amp;family=Inter:wght@400;500\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003cdiv class=\"wtf-pwr4\"\u003e\n  \u003cstyle\u003e\n    .wtf-pwr4{\n      --board:#0b1a2b; --panel:#10233a; --panel2:#0e1f34;\n      --silk:#e9eef5; --silk-dim:#7f97b0; --gold:#cda349;\n      --gold-dim:rgba(205,163,73,.22); --led:#ff7d2e;\n      --f-disp:'Space Grotesk',system-ui,sans-serif;\n      --f-mono:'IBM Plex Mono',ui-monospace,monospace;\n      --f-body:'Inter',system-ui,sans-serif;\n      background:var(--board); color:var(--silk); font-family:var(--f-body);\n      line-height:1.62; padding:clamp(28px,5vw,64px); border-radius:4px;\n      max-width:1080px; margin:0 auto;\n    }\n    .wtf-pwr4 *{ box-sizing:border-box; }\n    .wtf-pwr4 .eyebrow{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.28em; text-transform:uppercase; color:var(--gold); margin:0 0 16px; }\n    .wtf-pwr4 h1{ font-family:var(--f-disp); font-weight:700; font-size:clamp(2.4rem,7vw,4rem); line-height:.98; letter-spacing:-.02em; margin:0; }\n    .wtf-pwr4 h1 b{ color:var(--gold); }\n    .wtf-pwr4 .sub{ font-family:var(--f-mono); font-size:.82rem; letter-spacing:.06em; color:var(--silk-dim); margin:12px 0 0; }\n    .wtf-pwr4 .hero-line{ font-family:var(--f-disp); font-weight:500; font-size:clamp(1.15rem,3vw,1.55rem); color:var(--silk); margin:24px 0 0; max-width:32ch; }\n    .wtf-pwr4 .hero-line::after{ content:\"\"; display:block; width:64px; height:2px; background:var(--led); margin-top:18px; box-shadow:0 0 12px var(--led); }\n    .wtf-pwr4 .sec-label{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gold); margin:52px 0 18px; display:flex; align-items:center; gap:14px; }\n    .wtf-pwr4 .sec-label::after{ content:\"\"; height:1px; flex:1; background:var(--gold-dim); }\n    .wtf-pwr4 .glance{ list-style:none; padding:0; margin:0; display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; }\n    .wtf-pwr4 .glance li{ background:var(--panel); padding:16px 18px; font-size:.92rem; color:#b6c4d4; }\n    .wtf-pwr4 .glance li b{ display:block; color:var(--silk); font-weight:600; font-family:var(--f-disp); font-size:1rem; margin-bottom:2px; }\n    .wtf-pwr4 .glance li::before{ content:\"+\"; color:var(--gold); font-family:var(--f-mono); font-weight:600; margin-right:8px; }\n    .wtf-pwr4 .fuse-spec{ font-family:var(--f-mono); font-size:.8rem; letter-spacing:.03em; color:var(--silk-dim); margin:16px 0 0; border-left:2px solid var(--led); padding-left:12px; }\n    .wtf-pwr4 .fuse-spec b{ color:var(--silk); font-weight:500; }\n    .wtf-pwr4 .lead-claim{ font-family:var(--f-disp); font-weight:600; font-size:clamp(1.3rem,3.4vw,1.8rem); color:var(--silk); margin:0 0 16px; letter-spacing:-.01em; }\n    .wtf-pwr4 p.body{ font-size:1rem; color:#c3d0de; max-width:64ch; margin:0 0 18px; }\n    .wtf-pwr4 p.body strong{ color:var(--silk); font-weight:600; }\n    .wtf-pwr4 p.body em{ color:var(--gold); font-style:italic; }\n    .wtf-pwr4 .domains{ display:grid; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; margin:6px 0 0; }\n    .wtf-pwr4 .domain{ background:var(--panel); padding:22px clamp(18px,3vw,28px); display:grid; grid-template-columns:auto 1fr; gap:20px; align-items:start; }\n    .wtf-pwr4 .domain .num{ font-family:var(--f-mono); font-weight:600; font-size:clamp(1.6rem,4vw,2.2rem); color:var(--gold); line-height:1; letter-spacing:-.02em; opacity:.9; }\n    .wtf-pwr4 .domain h3{ font-family:var(--f-disp); font-weight:700; font-size:1.15rem; margin:0 0 6px; }\n    .wtf-pwr4 .domain p{ margin:0; font-size:.94rem; color:#b6c4d4; max-width:62ch; }\n    .wtf-pwr4 .domain .redled{ color:#ff5a4d; font-weight:600; }\n    .wtf-pwr4 .beefcake{ margin:1px 0 0; border:1px solid var(--gold-dim); border-radius:4px; background:radial-gradient(120% 180% at 8% 0%,rgba(255,125,46,.14),transparent 55%),var(--panel2); padding:clamp(24px,4vw,34px); }\n    .wtf-pwr4 .beefcake .word{ font-family:var(--f-disp); font-weight:700; font-size:clamp(2rem,7vw,3.4rem); letter-spacing:.02em; color:var(--led); margin:0; line-height:1; text-shadow:0 0 24px rgba(255,125,46,.45); }\n    .wtf-pwr4 .beefcake p{ font-family:var(--f-mono); font-size:.92rem; color:var(--silk); margin:14px 0 0; max-width:52ch; }\n    .wtf-pwr4 .modes{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--gold-dim); border:1px solid var(--gold-dim); border-radius:4px; overflow:hidden; margin:6px 0 0; }\n    .wtf-pwr4 .mode{ background:var(--panel); padding:22px clamp(18px,3vw,26px); }\n    .wtf-pwr4 .mode .tag{ font-family:var(--f-mono); font-size:.68rem; letter-spacing:.14em; text-transform:uppercase; color:var(--gold); }\n    .wtf-pwr4 .mode h3{ font-family:var(--f-disp); font-weight:700; font-size:1.1rem; margin:6px 0 8px; color:var(--silk); }\n    .wtf-pwr4 .mode p{ margin:0; font-size:.92rem; color:#b6c4d4; }\n    .wtf-pwr4 .note{ font-size:1rem; color:#c3d0de; max-width:64ch; margin:22px 0 0; border-left:2px solid var(--led); padding-left:14px; }\n    .wtf-pwr4 .note strong{ color:var(--silk); }\n    @media (max-width:620px){ .wtf-pwr4 .glance{ grid-template-columns:1fr; } .wtf-pwr4 .modes{ grid-template-columns:1fr; } }\n    @media (prefers-reduced-motion:reduce){ .wtf-pwr4 *{ transition:none; } }\n  \u003c\/style\u003e\n\n  \u003cp class=\"eyebrow\"\u003eWateefy Electronics · NODE Power 4\u003c\/p\u003e\n  \u003ch1\u003eNODE \u003cb\u003ePower 4\u003c\/b\u003e\n\u003c\/h1\u003e\n  \u003cp class=\"sub\"\u003ePower Injection \u0026amp; Distribution · 4 Fused Outputs\u003c\/p\u003e\n  \u003cp class=\"hero-line\"\u003eThe same fight against the drop. Half the ports, smaller board.\u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eAt a Glance\u003c\/p\u003e\n  \u003cul class=\"glance\"\u003e\n    \u003cli\u003e\n\u003cb\u003e4 fused injection outputs\u003c\/b\u003eV+ \/ GND per port, individual blade fuse on each\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003e5–48 VDC input, no jumpers\u003c\/b\u003e5 \/ 12 \/ 24 \/ 36 \/ 48 V systems, nothing to set wrong\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003e30 A through the board at standard copper\u003c\/b\u003enot a paid upgrade\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eThe same protected front end as every NODE\u003c\/b\u003etransient clamp, active reverse-polarity block, main fuse\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eA fuse and a status LED on every output\u003c\/b\u003ethe dead tap shows itself\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eNon-destructive reverse-polarity protection\u003c\/b\u003enothing is consumed when someone wires it backwards\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003ePure power — no data, no firmware\u003c\/b\u003eyour pixel data runs through the strip; this just feeds it\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eSmallest board in the family\u003c\/b\u003etucks anywhere a run needs a boost\u003c\/li\u003e\n  \u003c\/ul\u003e\n  \u003cp class=\"fuse-spec\"\u003e\u003cb\u003eFuses\u003c\/b\u003e — up to 30 A max input · 7.5 A blade fitted, 10 A max per output — Keystone 3568, user-replaceable\u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eWhy This Exists\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eCopper drops volts. Long runs go dim.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    At 12 V, a long pixel run browns out before it ends. The first pixels are full white; by the far\n    end they sag dim and off-colour, because the thin copper inside the strip dropped the voltage on the\n    way down. Past roughly sixteen feet you cannot win it from one end no matter how fat the feed.\n  \u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    NODE Power 4 feeds fresh, fused power into the middle or far end of the run, so the last pixel sees\n    the same voltage as the first. It is the right size when you have a prop or two that need a boost and\n    do not want to hang an eight-port board to do it — \u003cem\u003esame protection, fewer ports, less board.\u003c\/em\u003e\n  \u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eWhere It Goes\u003c\/p\u003e\n  \u003cdiv class=\"modes\"\u003e\n    \u003cdiv class=\"mode\"\u003e\n      \u003cspan class=\"tag\"\u003eMode A · In the box\u003c\/span\u003e\n      \u003ch3\u003eBeside the controller\u003c\/h3\u003e\n      \u003cp\u003eSame enclosure, same supply. Short jumper from the PSU terminals into Power 4, then heavier-gauge\n      runs out to the injection points. One tidy brick feeds a smaller zone.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"mode\"\u003e\n      \u003cspan class=\"tag\"\u003eMode B · At the pixels\u003c\/span\u003e\n      \u003ch3\u003eOut where it's needed\u003c\/h3\u003e\n      \u003cp\u003eRun one heavier feed to a remote Power 4 near the far pixels, then fan out short fused taps. Ideal\n      for a single long element — a mega-tree leg, a roofline run — that needs one clean re-feed.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cp class=\"note\"\u003e\n    \u003cstrong\u003eOne rule either way:\u003c\/strong\u003e keep the injection board on the same supply and ground as the\n    controller driving those pixels. One PSU per box means injected power shares a ground reference with\n    the data — no ground loops, no back-feeding, no diode-OR games.\n  \u003c\/p\u003e\n\n  \u003cp class=\"sec-label\"\u003eThe Architecture · Three Power Domains\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eSame protection as the controllers. Just power.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    A small board is not an excuse for a cheap front end. Power 4 sees the same reversed supplies,\n    transients, and shorted runs a controller does, so it gets the same three domains on their own copper\n    planes:\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"domains\"\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e01\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eDirty power in\u003c\/h3\u003e\n        \u003cp\u003eThe input terminal accepts whatever the supply and the wiring hand it. Assumed hostile, isolated\n        to the smallest region of the board possible, nothing downstream touching it directly.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e02\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eClean power\u003c\/h3\u003e\n        \u003cp\u003eBidirectional transient clamping and an \u003cem\u003eactive\u003c\/em\u003e reverse-polarity blocker. Reverse the\n        supply and the pass element never turns on — no current path, nothing sacrificed, and the\n        \u003cspan class=\"redled\"\u003ered indicator\u003c\/span\u003e tells you why. Fix the wiring and it recovers on its own.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"domain\"\u003e\n      \u003cdiv class=\"num\"\u003e03\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eThe fused bus\u003c\/h3\u003e\n        \u003cp\u003eClean power passes the main fuse to become the distribution bus. Each of the four outputs taps\n        that bus through its own fuse, with local bulk capacitance right at the terminal. One faulted run\n        opens one fuse. The rest keep the pixels lit.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"beefcake\"\u003e\n    \u003cp class=\"word\"\u003eBEEFCAKE.\u003c\/p\u003e\n    \u003cp\u003eThe pass element is a 205 A MOSFET on a 30 A board. It will never be the thing that fails.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sec-label\"\u003eVoltage Headroom\u003c\/p\u003e\n  \u003cp class=\"lead-claim\"\u003eRated 5–48 V. The whole range is yours.\u003c\/p\u003e\n  \u003cp class=\"body\"\u003e\n    There is no buck regulator on this board to cap the input, so it runs the full range the\n    controllers can't — right up to 48 V. At 12 to 36 V the entire power path sits with wide margin.\n    At the full 48 V the semiconductors still run comfortably — \u003cstrong\u003epass MOSFET at 80%, ideal-diode\n    controller at 60%\u003c\/strong\u003e of rating — and the 50 V bulk reservoir is sized for the job rather than\n    for a spec-sheet trophy.\n  \u003c\/p\u003e\n  \u003cdiv class=\"modes\"\u003e\n    \u003cdiv class=\"mode\"\u003e\n      \u003cspan class=\"tag\"\u003eAt 36 V\u003c\/span\u003e\n      \u003ch3\u003eWide open\u003c\/h3\u003e\n      \u003cp\u003eMOSFET 60% · ideal-diode 45% · bulk caps 72% (1.4× margin). Nothing near a limit anywhere.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"mode\"\u003e\n      \u003cspan class=\"tag\"\u003eAt 48 V\u003c\/span\u003e\n      \u003ch3\u003eComfortable\u003c\/h3\u003e\n      \u003cp\u003eMOSFET 80% · ideal-diode 60% · bulk caps run closer to rating. Give the board airflow on a\n      continuous 48 V system and it's set.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e","brand":"Wateefy Electronics","offers":[{"title":"Default Title","offer_id":55097052463476,"sku":"Node-Power04-00","price":35.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1015\/0487\/6916\/files\/NodePower4.png?v=1785960439"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1015\/0487\/6916\/collections\/Screenshot2026-07-16033726.png?v=1785703611","url":"https:\/\/shop.wateefy.com\/collections\/node-family-of-led-controllers.oembed","provider":"Wateefy Electronics","version":"1.0","type":"link"}