HaleHound · Volume 2

HaleHound Volume 2 — The CYD Platform & Hardware

The Cheap Yellow Display family, four supported boards, two display controllers, and the breakout pins HaleHound steals for radios


Figure 1 — The back of an ESP32-2432S028R "Cheap Yellow Display" with its major parts labelled: the ESP32-WROOM-32 module, USB bridge, serial header, RGB LED, microSD slot, and the extended-IO co…
Figure 1 — The back of an ESP32-2432S028R "Cheap Yellow Display" with its major parts labelled: the ESP32-WROOM-32 module, USB bridge, serial header, RGB LED, microSD slot, and the extended-IO connectors HaleHound repurposes for radios. Photo: HaleHound.com / Random Nerd Tutorials.

2.1 About this Volume

HaleHound is firmware; the hardware it runs on is a commodity ESP32 touchscreen board. This volume takes that board apart on paper — the microcontroller, its memory constraint, the two display controllers it ships with, the resistive touch panel, the SD card, the SPI buses, and the power rails — and then compares the four board variants the v4.0 firmware builds for. The point is not to reproduce a generic CYD datasheet; it is to isolate the handful of platform facts that decide whether a HaleHound build works: which build target to flash, which pins are free for radios, why the on-board regulator cannot feed a power amplifier, and which USB connector affects how the board is powered and flashed.

Every pin and part figure here traces to the HaleHound v4.0 README, its LICENSE’s hardware notes, and the cross-referenced facts in the SquachWatch deep dive (the same ESP32-2432S028R platform). Where a platform fact is firmware-dependent, it is noted as such. Nothing is written from a built unit.

2.2 The Cheap Yellow Display in context

The base board is the ESP32-2432S028R, one of a family of inexpensive ESP32 display boards from Shenzhen Sunton and its clones. The part number is descriptive: 2432 is the 240×320 panel resolution, S028 the 2.8-inch glass, and the trailing letter the touch type — R for resistive (XPT2046), C for capacitive, N for none. The maker community named the board the Cheap Yellow Display (CYD) after its yellow solder mask; the name is generally credited to Brian Lough (witnessmenow), whose GitHub repository is the de-facto reference pinout for the board.

What makes it the ideal substrate for a tool like HaleHound is the combination of price and I/O: for roughly $7–18 the board bundles an ESP32-WROOM-32, a 2.8-inch TFT with resistive touch, a microSD slot, an RGB LED, a USB-serial bridge, and — critically — several breakout headers that expose spare GPIO and the VSPI bus. HaleHound plugs its four external radios into those headers. The board was designed to be a cheap touchscreen for home-automation hobbyists; HaleHound treats it as a radio motherboard that happens to have a screen.

Figure 2 — Sunton's dimension drawing of the board. The CYD footprint sets the envelope every HaleHound case is designed around. Photo: HaleHound.com / Sunton documentation.
Figure 2 — Sunton's dimension drawing of the board. The CYD footprint sets the envelope every HaleHound case is designed around. Photo: HaleHound.com / Sunton documentation.

2.3 The ESP32-WROOM-32 and its memory

2.3.1 The silicon

Table 1 — 3.1 The silicon

ParameterValueRelevance to HaleHound
ModuleESP32-WROOM-32 (ESP32-D0WD family)PCB trace antenna; no U.FL on the standard board
CPU2 × Xtensa LX6, up to 240 MHzDual-core is load-bearing: radios on one core, UI on the other
SRAM520 KB on-chip, no PSRAMThe constraint behind most engineering choices
Flash4 MB SPITwo OTA app slots (Volume 7)
Wi-Fi802.11 b/g/n, 2.4 GHz onlyNo 5 GHz path on this silicon
BluetoothBT 4.2: BR/EDR + BLEHaleHound’s BLE modules; +9 dBm
RF pathOne shared 2.4 GHz front end for Wi-Fi + BTWi-Fi and BLE time-share; teardown handled in firmware

The vendor’s store copy makes a point of the dual-core architecture: “all radio operations on Core 0, all UI rendering on Core 1.” That is what lets a full-power carrier run while the touchscreen scrolls without stutter, and it is why several modules (the dual-radio drone detector, IoT Recon) are described as running networking on one core and UI on the other. The ESP32-D0WD die is genuinely dual-core; any single-core description inherited from the ESP32-DIV lineage is historical.

2.3.2 Why memory dominates

With no PSRAM, every byte of heap is contested by the Wi-Fi driver, the Bluetooth host, the display frame buffer, and the UI. This is the hidden ceiling on an ESP32 handheld: the 520 KB total SRAM leaves roughly 300-odd KB of usable application DRAM after the radio stacks claim their share, and heap fragmentation from Wi-Fi/BLE churn is a real failure mode on CYD-class boards. HaleHound’s firmware carries this constraint — the proper Wi-Fi↔BLE radio teardown the README advertises exists precisely because the two stacks cannot both be fully resident while a large frame buffer is live. A buyer does not tune any of this, but it explains why the device is 2.4 GHz-centric and why the firmware, not the hardware, is where the cleverness lives.

  ESP32-2432S028R — block diagram as HaleHound uses it
  ════════════════════════════════════════════════════════════════════
   USB ──► CH340 ──UART0 (GPIO1/3)──┐            ┌── own SPI ─► 2.8" TFT
   5 V ──► LDO ─► 3.3 V             │            │   (ILI9341/ST7789)
                                    ▼            │
                       ┌───────────────────────┐│
   BOOT (GPIO0) ──────►│   ESP32-WROOM-32      ││── own SPI ─► XPT2046 touch
   RST (EN) ──────────►│   2 × LX6 @ 240 MHz   ││
                       │   520 KB SRAM         ││
                       │   4 MB flash          │└── VSPI (18/19/23) ─┬─► microSD
   RGB LED ◄─ 4/16/17 ─│   Wi-Fi/BT 2.4 GHz    │                     ├─► CC1101
   (repurposed by HH)  │   PCB antenna         │                     ├─► NRF24
                       └───────────────────────┘                     └─► PN532
   Free on connectors: GPIO22, GPIO27 (CN1), GPIO35 input-only (P3), GPIO 1 (P1/GPS)
  ════════════════════════════════════════════════════════════════════
   HaleHound repurposes the RGB-LED pins (4/16/17) as NRF24/PN532 control lines.

Note — HaleHound takes over the three RGB-LED GPIOs — 4, 16, 17 — as radio control lines (NRF24 CSN/CE/IRQ and PN532 SS in the stock pin map; see Volume 3). On a built unit the back-panel status LED is therefore no longer a status LED. This is normal and is one of the clearest tells that these boards have spare I/O only because something else has to give it up.

2.3.3 GPIO budget — the whole reason this fits

The CYD is attractive for a multi-radio build precisely because the ESP32 has just enough free I/O once the display, touch, and SD are accounted for. The firmware spends that budget deliberately. The table below is the bird’s-eye view; the exact per-board assignments are Volume 3’s job.

Table 2 — 3.3 GPIO budget — the whole reason this fits

GPIONative CYD useHaleHound use
18 / 19 / 23VSPI (SD card)Shared VSPI for SD + CC1101 + NRF24 + PN532
5microSD CSmicroSD CS (unchanged)
2 / 15 / (12/13/14)Display busDisplay (unchanged)
25 / 32 / 33 / 36 / 39XPT2046 touchTouch (unchanged)
4RGB-LED redNRF24 CSN (or CC1101 PA TX_EN on E32R28T/R35T)
16RGB-LED greenNRF24 CE
17RGB-LED blueNRF24 IRQ / PN532 SS
22Free (CN1/P3)CC1101 GDO0 (TX)
27Free (CN1)CC1101 CS (2.8”); backlight on 3.5”
35Free, input-only (P3)CC1101 GDO2 (RX)
21Free / backlight (varies)CC1101 CS on 3.5”; backlight on 2.8”
0BOOTE07 PA RX_EN (when a PA module is fitted)
1 / 3UART0 (USB serial)GPS TX in on GPIO 1; firmware detaches UART0 while GPS runs

The input-only pins (34–39) can only be read, which is why GPIO 35 is used for a receive line (CC1101 GDO2) and never a chip-select. The crowding on GPIO 4/17/21/27 — pins that mean different things on different boards — is the root cause of the per-board wiring differences Volume 3 has to tabulate. There is no spare I/O left over; a fifth SPI peripheral would need a GPIO expander.

2.3.4 Flash and OTA headroom

The WROOM-32’s 4 MB SPI flash is partitioned into two application slots so the firmware can update itself: a new image is written to the inactive slot and the board switches to it on reboot. HaleHound exposes this as OTA update from SD (Tools → Update Firmware) — a .bin dropped in /firmware/ on the card is flashed without a host computer (Volume 7). The two-slot scheme is why a failed OTA does not brick the board: the previous image remains in the other slot. The 4 MB ceiling is also why the firmware is frugal — there is no room for a second large payload store, and loot goes to the SD card, not internal flash.

2.4 The display and the touch panel

2.4.1 Two controllers across the family

Across the four supported boards HaleHound drives two different display controllers: the Ilitek ILI9341 on the 2.8-inch boards (240×320) and the Sitronix ST7796 on the 3.5-inch board (320×480). The UI scales automatically between the two resolutions — the README states “All UI scales automatically between 240×320 and 320×480. Pick your board, flash, done.” This is why there is no separate 2.8” vs 3.5” UI; the layout engine reflows.

Table 3 — 4.1 Two controllers across the family

Board sizeControllerResolutionTouch
2.8” (2432S028, E32R28T, NM-RF-Hat)ILI9341240×320XPT2046 resistive
3.5” (E32R35T)ST7796320×480XPT2046 resistive

Note — On the base 2.8” CYD, the display controller may be an ILI9341 or an ST7789 depending on manufacturing batch, with no external way to tell. The HaleHound build targets name ILI9341 for the 2.8” boards. If a freshly flashed board shows a solid white screen, the wrong controller variant was selected — on CYD-class boards that is a driver mismatch, not a dead board. Rotation and colour-order issues are fixed at runtime (Settings → Rotation / Swap Colors / Invert), covered in Volume 7.

Figure 3 — A 2.8" CYD with the display lit. HaleHound draws its touch UI to this same panel; the 3.5" E32R35T gives the same UI more room at 320×480. Photo: HaleHound.com.
Figure 3 — A 2.8" CYD with the display lit. HaleHound draws its touch UI to this same panel; the 3.5" E32R35T gives the same UI more room at 320×480. Photo: HaleHound.com.

2.4.2 Resistive touch (XPT2046)

All four boards use the XPT2046 resistive touch controller on its own SPI path. Resistive touch is pressure-based — it works through gloves and with a stylus but needs calibration, which HaleHound runs automatically as a four-corner crosshair routine on first boot (Settings → Touch Calibrate re-runs it). Resistive panels do not support multi-touch gestures; the HaleHound UI is built around single taps and on-screen keyboards for text entry (URLs, passwords, custom strings).

2.4.3 Display SPI clock and frame rate

On CYD-class boards the display bus runs at a 40 MHz or 80 MHz SPI clock — the ESP32’s divider snaps to those values, with no intermediate step. The 80 MHz option is a deliberate overclock of the panel controller’s rated write cycle; it roughly 1.7× the frame rate at the cost of occasional instability on marginal panels. HaleHound scales its UI across the two resolutions and does not expose a user clock control, but the behaviour matters for one diagnostic: an overclock failure looks identical to a wrong-driver failure — white screen, torn lines, or colour corruption. If a flashed board renders badly, the fix path is the same as §4.1 (correct build target, then runtime colour/rotation controls), not a hardware return.

Table 4 — 4.3 Display SPI clock and frame rate

Panel clockRelative frame rateRisk
40 MHz~22 fps (baseline)Safe on all panels
80 MHz~34 fps (~1.7×)Marginal panels may corrupt

2.4.4 Settings that touch the display

The firmware exposes display controls that matter when a freshly flashed or re-cased board looks wrong: Brightness (backlight PWM 10–255), Screen Timeout (30 s to Never), Swap Colors (BGR↔RGB panel toggle), Invert Display, Color Mode (Default / Colorblind / High Contrast), and Rotation (0°/180°/90° CW/90° CCW). None require a reflash. The Color Mode options are a usability feature worth noting: the high-contrast and colorblind palettes exist because the UI uses colour-coded state banners heavily.

2.5 The four supported boards and build targets

2.5.1 Where this firmware runs — supported hardware

Where this firmware runs — the supported-hardware table. HaleHound v4.0 builds for four exposed-SPI CYD boards, assembled by one of two sanctioned build paths. The matrix below is the authoritative at-a-glance view — every board, every build target, and both build paths in one place; the prose and subsections beneath it explain the choices. Capabilities are stated at category level only: whichever board and path a builder picks, the firmware is identical — all 40+ modules sit behind the VALHALLA disclaimer, and declining it drops the device into a persistent Blue Team passive mode.

Table 5 — 5.0 Where this firmware runs — supported hardware

Board / deviceSoCBuild target or variantFeature level / notesWhere to get it
ESP32-2432S028 CYD (2.8”)ESP32-WROOM-32, 2.4 GHz onlyesp32-cyd · ILI9341 240×320The reference CYD; Fully tested. Widest third-party documentation. SquachWatch runs on this same board.halehound.com (any exposed-SPI CYD) · flasher flash.halehound.com (browser; ships without firmware)
QDtech E32R28T CYD (2.8”)ESP32-WROOM-32, 2.4 GHz onlyesp32-e32r28t · ILI9341 240×320Cheapest exposed-SPI board; the one the DIY kits ship. Fully tested. Shares its platform with SquachWatch.halehound.com ($15.85 bare) · flash.halehound.com
QDtech E32R35T CYD (3.5”)ESP32-WROOM-32, 2.4 GHz onlyesp32-e32r35t · ST7796 320×480Larger 320×480 panel; complete units and PRO kits use it. Fully tested. CC1101 CS moves to a different pin.halehound.com ($18 bare) · flash.halehound.com
NM-RF-Hat CYD (2.8”)ESP32-WROOM-32, 2.4 GHz onlyesp32-cyd-hat · ILI9341 240×3202.8” board with an integrated RF hat. Marked Supported, not Fully tested — the least-proven of the four.halehound.com · flash.halehound.com
Classic build pathESP32-WROOM-32, 2.4 GHz onlyClassic · exposed-SPI CYD + Cinder Ferret carrier + harnessAny of the four boards above + a Cinder Ferret carrier holding CC1101/NRF24/GPS. Lowest cost, most flexibility; all modules VALHALLA-gated (decline → Blue Team passive mode).halehound.com (DIY kits / Cinder Ferret carriers) · flash.halehound.com
Fire Weasel build pathESP32-WROOM-32, 2.4 GHz onlyFire Weasel · exposed-SPI CYD + integrated board + “leash”Exposed-SPI CYD + integrated radio board, ~45-min build. Identical firmware and capability to Classic; all modules VALHALLA-gated (decline → Blue Team passive mode).halehound.com (Fire Weasel kit / board + leash) · flash.halehound.com

The v4.0 README names four boards, each with its own PlatformIO build target. Flashing the wrong target for a board is the most common cause of a non-working display. The web flasher (Volume 7) hides this behind a board picker, but builders compiling from source select the target explicitly.

Table 6 — 5.0 Where this firmware runs — supported hardware

BoardBuild targetDisplayTouchStatus
ESP32-2432S028 (2.8”)esp32-cydILI9341 240×320XPT2046Fully tested
QDtech E32R35T (3.5”)esp32-e32r35tST7796 320×480XPT2046Fully tested
QDtech E32R28T (2.8”)esp32-e32r28tILI9341 240×320XPT2046Fully tested
NM-RF-Hat (2.8”)esp32-cyd-hatILI9341 240×320XPT2046Supported
# Building from source (PlatformIO). The web flasher does this for you.
pio run -e esp32-cyd      --target upload   # 2.8" ESP32-2432S028
pio run -e esp32-e32r35t  --target upload   # 3.5" QDtech E32R35T
pio run -e esp32-e32r28t  --target upload   # 2.8" QDtech E32R28T
pio run -e esp32-cyd-hat  --target upload   # NM-RF-Hat
pio device monitor -b 115200                # serial console

The practical differences between the three “fully tested” boards are size and a few chip-select pins, not capability. The E32R28T is the board the DIY kits ship — the cheapest exposed-SPI 2.8” variant. The E32R35T is the 3.5” board the 3.5” complete units and 3.5” DIY kits use; its larger 320×480 panel is the main reason to pay more. The NM-RF-Hat is a 2.8” board that integrates an RF hat; it is marked “Supported” rather than “Fully tested,” so treat it as the least-proven of the four. The per-board pin differences — CC1101 CS and NRF24 CSN move between boards — are a Volume 3 topic because they are wiring facts, not platform facts.

Tip — Source compilation needs Python 3.10–3.13; Python 3.14 breaks PlatformIO unless platform.py is patched. Most users never compile — the web flasher serves the latest binary — but this is the one toolchain gotcha the README flags for anyone building from source.

2.5.2 Choosing between the four boards

For a buyer the choice collapses to screen size and how proven the board is:

Table 7 — For a buyer the choice collapses to screen size and how proven the board is

Want…PickWhy
Cheapest working unitE32R28T 2.8” (esp32-e32r28t)$15.85 bare; the board the DIY kits ship
More screen real estateE32R35T 3.5” (esp32-e32r35t)320×480 ST7796; complete units and PRO kits use it
Original/reference boardESP32-2432S028 (esp32-cyd)The canonical CYD; widest third-party documentation
Integrated RF hatNM-RF-Hat (esp32-cyd-hat)Only “Supported,” not “Fully tested” — least proven

The 3.5” ST7796 trade-off is worth stating: the larger 320×480 panel costs more board, more enclosure, and a slightly higher current draw, and it moves the CC1101 chip-select pin (GPIO 27 is the backlight on the 3.5”). None of that changes capability — the firmware reflows the same UI — so the 3.5” is purely an ergonomics-and-cost choice. The NM-RF-Hat is the wildcard: it folds an RF hat onto a 2.8” board, but its “Supported” status means it has not had the same test coverage as the other three. A first build should use one of the three fully-tested boards.

Note — The LICENSE’s hardware-disclaimer section lists the 3.5” variant it historically shipped as ESP32-3248S035 with “pin defines ready, untested” — older wording from the ESP32-DIV lineage. The v4.0 README supersedes it: the 3.5” target is esp32-e32r35t (QDtech E32R35T, ST7796), marked Fully Tested. Where the README and the older LICENSE text disagree on hardware status, the README is current.

2.6 Exposed-SPI variants and why they matter

HaleHound’s store sells boards described as “exposed-SPI” CYD — the 2.8” E32R28T at $15.85 and the 3.5” at $18. The phrase is the whole reason these specific boards are chosen. A stock CYD brings its VSPI bus and spare GPIO out to headers, but not every clone populates or breaks out the same pins. An “exposed-SPI” board guarantees that the VSPI lines (GPIO 18/19/23) and the control pins HaleHound needs are accessible on headers, so the external radios can be wired without scraping traces or soldering to fine-pitch module pads.

  Why "exposed-SPI" matters
  ─────────────────────────────────────────────────────────
   Stock hobbyist CYD:   VSPI feeds the on-board SD only;
                         spare GPIO may be unbroken-out.
   Exposed-SPI CYD:      VSPI (18/19/23) + CS/control pins
                         brought to accessible headers.
                              │
                              ▼
   HaleHound hangs CC1101 + NRF24 + PN532 off that shared
   bus, SD card included — the SPI manager arbitrates (§8).
Figure 4 — The 2.8" E32R28T exposed-SPI CYD, the board the DIY kits ship. Its broken-out VSPI and control headers are what make the Classic radio wiring possible. Photo: HaleHound.com.
Figure 4 — The 2.8" E32R28T exposed-SPI CYD, the board the DIY kits ship. Its broken-out VSPI and control headers are what make the Classic radio wiring possible. Photo: HaleHound.com.
Figure 5 — The back of the E32R28T CYD. The accessible headers along the edges carry the bus and spare GPIO HaleHound uses. Photo: HaleHound.com.
Figure 5 — The back of the E32R28T CYD. The accessible headers along the edges carry the bus and spare GPIO HaleHound uses. Photo: HaleHound.com.

Buying a random “CYD” off a marketplace and expecting a HaleHound build to go smoothly is a mistake — the exposed-SPI board is the one with the pins where HaleHound expects them. Volume 4 lists the specific SKUs and their prices; the takeaway here is that the board variant is a build dependency, not a cosmetic choice.

2.7 USB connectors, the CH340, and flashing implications

CYD boards appear with either a micro-USB connector (the original single-port revision) or USB-C (the later “CYD2USB” two-port revision). The connector type does not change the firmware but it changes two practical things: how the board is powered and how reliably it flashes.

Table 8 — 7. USB connectors, the CH340, and flashing implications

ConnectorRevisionPower noteFlashing note
micro-USBOriginal CYDA-to-micro cable, always worksCH340 auto-reset normal
USB-CCYD2USB (two-port)Lacks CC pull-downs — C-to-C cables may not power itUse A-to-C; otherwise identical

Warning — The two-port USB-C CYD revision omits the CC resistor pull-downs a compliant USB-C sink needs, so a C-to-C cable may deliver no power. Use an A-to-C cable. This bites people whose laptops only have C ports — the board appears dead when it is simply not being powered. It is a board-design quirk, not a HaleHound bug.

The USB-serial bridge is a CH340-family chip. Windows and older macOS usually need the WCH driver before the board enumerates; Linux has the driver built into kernel 5.x and later. The flasher needs a genuine data USB cable (charge-only cables silently fail). The CH340’s DTR/RTS lines normally drive the ESP32 into download mode automatically; when they do not, holding BOOT (GPIO 0) while connecting forces it. Volume 7 covers the per-OS driver install and the full flash procedure.

2.8 The SD card and the shared VSPI bus

The board’s microSD slot sits on the ESP32’s VSPI bus — GPIO 18 (SCK), 19 (MISO), 23 (MOSI) — with the card’s CS on GPIO 5. HaleHound’s defining hardware move is to hang all four external radios on that same VSPI bus, each with its own chip-select, and let a firmware SPI manager arbitrate so only one device is addressed at a time.

  VSPI bus sharing (GPIO 18/19/23) — one bus, many chip-selects
  ════════════════════════════════════════════════════════════════
   SCK  (18) ─┬────────┬────────┬────────┬────────┐
   MISO (19) ─┤        │        │        │        │
   MOSI (23) ─┤        │        │        │        │
              ▼        ▼        ▼        ▼        ▼
            microSD  CC1101   NRF24    PN532   (future)
            CS 5     CS 27/21 CSN 4/26 SS 17
              └────────┴────────┴────────┴──── SPI manager picks one
  ════════════════════════════════════════════════════════════════

This is why the card is optional but useful: every module handles a missing card gracefully, but the SD card is where loot, .sub files, wardriving logs, and OTA firmware live. The card must be FAT32. The firmware expects a specific folder layout (Volume 8 covers the full tree); it creates folders as needed and shows empty states when they are missing. The bus-sharing also sets an inherent constraint: radios cannot transmit and the card cannot be written in the exact same instant, so throughput-sensitive capture-to-SD is bounded by arbitration — a firmware concern the user does not tune.

Note — Because the radios share the SD card’s bus, a flaky or non-FAT32 card can manifest as radio init problems, not just storage errors. When a built unit shows intermittent radio faults, re-seating and re-formatting the card to FAT32 is a cheap first diagnostic before chasing wiring.

2.8.1 The breakout headers

The exposed-SPI CYD brings its spare I/O out on a handful of named headers. Knowing which header carries which signal is what makes the Volume 3 wiring legible — the firmware’s own Radio Test module even draws these connections on-screen. The README maps the radios to three headers plus the GPS JST:

Table 9 — The exposed-SPI CYD brings its spare I/O out on a handful of named headers. Knowing which header carries which signal is what makes the Volume 3 wiring legible — the firmware's own Radio Test module even draws these connections on-screen. The README maps the radios to three headers plus the GPS JST

HeaderCarriesUsed by
CN13.3 V, GND, GPIO 27CC1101 CS (2.8”); PN532 VCC/GND
P3GPIO 22, GPIO 35 (input-only)CC1101 GDO0 (TX) and GDO2 (RX)
P1VIN, GND, GPIO 1 (TX), GPIO 3 (RX)GPS module (JST), and VIN for battery input
VSPI pinsGPIO 18/19/23Shared SCK/MISO/MOSI for all SPI radios + SD

The GPS is the one radio not on the SPI bus: it is a serial device on UART0 (GPIO 1/3), which is also the USB-serial console. The firmware detaches UART0 (Serial.end()) while the GPS runs so the GPS owns the line, then restores it on exit — Volume 3 covers this conflict and its handling. The practical point for the platform: the GPS plugs into the P1 JST, not a breadboard jumper, which is why the Cinder Ferret V2 integrates an ATGM336H with a 1.25 mm JST directly on the carrier.

2.9 Power rails and the regulator ceiling

The CYD is a 5 V device: it takes 5 V over USB (or on the VIN pin of its serial header) and steps it down with an on-board linear regulator (LDO) to the 3.3 V rail that feeds the ESP32 and the display. The classic board has no battery and no charger — portable operation is an add-on (Volume 6’s power section), typically a 1S LiPo soldered to BAT+ / BAT− pads with a boost/charger module.

The single most important power fact for a HaleHound build is the current ceiling of that on-board LDO. It comfortably runs the ESP32, display, and the stock passive radios (bare CC1101 HW-863, PN532, GPS). It cannot run the amplified Ebyte modules:

Table 10 — The single most important power fact for a HaleHound build is the current ceiling of that on-board LDO. It comfortably runs the ESP32, display, and the stock passive radios (bare CC1101 HW-863, PN532, GPS). It cannot run the amplified Ebyte modules

Rail / supplyFeedsCeiling
CYD on-board 3.3 V LDOESP32, display, stock radiosAdequate for stock CC1101/PN532/GPS
Independent 5 V→3.3 V buckE07-433M20S PA, E01-2G4M27SX PARequired — do not share CYD rail
5 V USB VBUSSource for the buck’s inputTapped before the CYD regulator
Common groundAll modules + CYDEvery GND ties together
  Power topology with a PA module
  ───────────────────────────────────────────────────
   USB 5 V ──┬──► CYD LDO ──► 3.3 V ──► ESP32 + display + stock radios
             │
             └──► SEPARATE buck ──► 3.3 V ──► E07/E01 PA VCC only
                                               (signal wires still → ESP32 GPIO)
   All grounds common.

Warning — This is the independent-3.3 V-buck requirement from Volume 1, stated as a platform fact: the E07-433M20S sub-GHz PA and the E01-2G4M27SX NRF24 PA draw more than the CYD’s LDO can supply. Powering them from the CYD 3.3 V rail causes brownouts, random resets, and failed radio init. They get a separate 5 V→3.3 V buck (an AMS1117-3.3 module, an MP2307, or any 3.3 V regulator rated 500 mA+), fed from USB VBUS before the CYD regulator. Only VCC moves to the separate supply; all signal lines and grounds stay as wired. A 10 µF capacitor across the NRF24 VCC/GND additionally suppresses reset-inducing current spikes.

2.10 Enclosures and cases

The firmware does not care about the case, but a HaleHound build is a loose stack of a board, a carrier or integrated radio board, external antennas, and (usually) a battery, so a case is effectively part of the build. The store sells 3D-printed enclosures matched to specific board sizes and build paths — mixing them up is a common ordering error because a 2.8” case does not fit a 3.5” board, and a Fire Weasel case does not fit a Classic Cinder Ferret stack.

Table 11 — 10. Enclosures and cases

CaseFitsPrice (2026-10-16)Note
2.8” case (ESP32-E32R28T / 2432S028R options)2.8” Classic builds$30Select the variant matching the exact CYD
4” HaleHound case4”/3.5”-class complete build$30For the 5K-style complete unit
3.5” case (DIY, not Fire Weasel)3.5” E32R35T Classic DIY$30Explicitly not for the Fire Weasel board
Fire Weasel “bone pile” caseFire Weasel board build$45Reworked bone-pile for the integrated board
Talking Sasquatch 3.5” case3.5” CYD$45Limited run; some cut for an SS12F16-G3 switch

2.10.1 Portable power as part of the enclosure

Because the classic CYD has no battery or charger, a cased HaleHound carries its power train inside the shell: a 1S LiPo soldered to the BAT+ / BAT− pads, a boost converter to lift the cell’s 3.7 V to the 5 V the CYD expects, and — when an amplified radio is fitted — the independent 3.3 V buck of §9. The case must therefore have room for the board, the carrier or integrated radio board, the cell, two or three small converter modules, and the antenna leads. This is why the vendor’s cases are build-path-specific: a Fire Weasel’s integrated board packs differently from a Classic Cinder Ferret stack, and the 4”/3.5”/2.8” shells differ in both board cutout and internal volume.

Table 12 — 10.1 Portable power as part of the enclosure

Case classInternal volume for…Hardware
2.8” ClassicCYD + Cinder Ferret + cell + convertersM3 × 10 or M3 × 16
3.5” Classic (DIY)Larger CYD + stackM3 × 16
Fire WeaselIntegrated board + leash + cellM3 × 10
4” completeFactory stackper build
Figure 6 — The 2.8" HaleHound case, "the case that started it all." Case selection must match the exact CYD variant and build path. Photo: HaleHound.com.
Figure 6 — The 2.8" HaleHound case, "the case that started it all." Case selection must match the exact CYD variant and build path. Photo: HaleHound.com.

Note — Two useful case details from the store copy: the DIY-kit 3D-printed case has a slot that holds a readable/writeable NTAG216 tag, and the Talking Sasquatch “Bone Pile” variants are cut for a physical SS12F16-G3 slide switch. These are the kind of small integration choices that distinguish a finished HaleHound from a board on a desk.

2.10.2 What the platform hands to Volume 3

Everything in this volume is the stage the radios mount onto. The handful of facts that Volume 3 depends on, gathered in one place:

Table 13 — Everything in this volume is the stage the radios mount onto. The handful of facts that Volume 3 depends on, gathered in one place

Platform factConsequence for wiring (Vol 3)
VSPI on GPIO 18/19/23, shared with SDAll SPI radios share these three lines; CS pins differentiate
RGB-LED pins 4/16/17 repurposedNRF24 CSN/CE/IRQ and PN532 SS live here
GPIO 27 vs 21 swap (backlight)CC1101 CS is 27 on 2.8”, 21 on 3.5”
GPIO 4 reused for PA TX_EN on E32R28T/R35TNRF24 CSN moves to 26 on those boards
Input-only 34–39GPIO 35 only ever a receive line (CC1101 GDO2)
UART0 on GPIO 1/3GPS shares the USB-serial line; firmware detaches it
On-board LDO current ceilingAmplified Ebyte modules need the independent buck

With the platform understood — the silicon, the memory limit, the two display controllers, the shared bus, the repurposed pins, and the regulator ceiling — Volume 3 wires the CC1101, NRF24, PN532, and GPS onto it, pin by pin and board by board.

Comments (0)

  1. Loading…

Comments are held for moderation — nothing appears until approved.