Wi-Fi HaLow e-paper node · rev A · 915 MHz

HaLow Ink

A pocket node for Heltec's HT-HC01 Wi-Fi HaLow module: an ESP32-S3 drives the radio and a 2.9-inch e-paper screen, and a LiPo charged over USB-C runs it for months between reports. It speaks ordinary IP to a HaLow access point a kilometre or more away. Everything on this page was generated from one design file and checked by KiCad; none of it has been built yet.

Designed and rule-checked · not yet fabricated
RadioHT-HC01 · MM6108 · 21 dBm
HostESP32-S3-WROOM-1 N16R8
Display2.9″ e-paper · 296 × 128
PowerLiPo · USB-C · 1 A LDO
Board85 × 40 mm · 4 layers
Case99.6 × 45.5 × 18 mm · 3 prints
ChecksERC 0 · DRC 0 errors · 0 unrouted
Drawn2026-11-13
HaLow Ink standing on its USB edge: a graphite 3D-printed case with an e-paper screen showing HaLow Ink, SSID HT-H7608-halow, IP 192.168.100.123, RSSI −67 dBm, MQTT sent, and a black 915 MHz antenna leaning back from the top edge beside two orange buttons
Cycles render, assembled. The screen shows the firmware's own status page, drawn by its code.
Sheet 01Renders

Renders

Blender Cycles, 3840 × 2160. The board comes straight out of KiCad. The HT-HC01, the display, the cell, the screws and the antenna were modelled from their datasheets, and the case from its OpenSCAD source. Click any picture for the full size.

Sheet 023D model

Walk around it

The same assembly as the renders, slimmed down for a browser. Drag to turn it, scroll or pinch to zoom, and pull the slider to take it apart. Print parts switches to the three STL files as they sit on the printer's bed.

Loading the model…
1Front bezel, printed22.9″ e-paper, SSD16803Display flex, 24 pin 4HaLow Ink PCB5HT-HC01 HaLow module6ESP32-S3-WROOM-1 7USB-C8LiPo cell, 8034509Back shell, printed 10M2.5 × 10 screws (4)11Button caps (2)12SMA bulkhead + antenna
Sheet 03Circuit

How it is wired

The HT-HC01 is a radio only, so the ESP32-S3 runs it over SPI at up to 40 MHz through the module's SDIO pads. The pins match Heltec's own HT-HC32 board, so their Arduino core and Morse Micro's ESP-IDF component need no changes to find the radio.

FunctionESP32-S3Notes
HaLow SPI CS / MOSI / SCK / MISOIO2 / 3 / 4 / 5HC01 pads 22 / 21 / 18 / 17
HaLow interruptIO6pad 16, active low
HaLow BUSY / RESET_N / WAKEIO7 / 8 / 9RESET_N and WAKE pulled low: the radio waits for firmware
E-paper CS / MOSI / SCK / DC / RST / BUSYIO10 / 11 / 12 / 13 / 14 / 21its own SPI bus
Battery voltageIO11M / 1M divider
Buttons A / BIO0 / IO15both wake it from deep sleep
Qwiic SDA / SCLIO41 / IO424.7k pull-ups on the switched rail
DHT data · sensor rail · LEDIO40 · IO38 · IO48rail on when IO38 is low
Spare padsIO16 / 17 / 18 / 47GPS, buzzer, anything
USBIO19 / IO20native USB, no serial chip

Power path

USB feeds the regulator through a Schottky diode and charges the cell through an MCP73831 at 500 mA. Unplugged, a P-channel FET connects the cell instead. The slide switch drives the regulator's enable pin, so the cell still charges with the unit off.

Radio supply

The HT-HC01's three supply pads each get their own 10 µF and 100 nF, the amplifier's pad another 22 µF, and a 100 µF tantalum sits on the 3.3 V rail for transmit bursts of about 220 mA.

Schematic

KiCad schematic of HaLow Ink: USB-C input, LiPo charger and power path, 3.3 V regulator, ESP32-S3 host, HT-HC01 HaLow radio, e-paper connector with its boost circuit, and the sensor connectors
Drag to pan. KiCad ERC: 0 violations; 320 pins checked against the design source.
Sheet 04Board

Four layers, 85 × 40 mm

Front copper carries the parts and short hook-ups. Inner 1 is solid ground. Inner 2 takes east–west signals and a 3.3 V pour, and the back takes north–south signals and a second 3.3 V pour. Nothing runs on top under either radio module, and the ESP32's antenna end has no copper at all. Turn layers on and off below.

Tracks · vias611 · 216
Smallest track · gap0.15 mm · 0.15 mm
Vias0.6 / 0.3 mm, tented
Antenna feed0.35 mm over ground, pi match
KiCad DRC0 errors · 0 unconnected
Stack-upJLC04161H-7628, 1.6 mm
Sheet 05Power

Where the battery goes

HaLow draws real current only while it is awake. The radio's own figures, from Heltec's HT-HC01 datasheet at 3.3 V (VBAT plus the amplifier rail, 1 MHz channel), on a log scale:

10 nA 100 nA 1 µA 10 µA 100 µA 1 mA 10 mA 100 mA 1 A Transmit, 21 dBm, MCS0 209 mA Listening (receive) 30.5 mA Associated, power save, DTIM3 442 µA Associated, power save, DTIM10 170 µA Deep sleep, timer on 1 µA Hibernate 50 nA
How it is used (whole board, estimated, not measured)Average2000 mAh lasts
Asleep between reports: ESP32 deep sleep, regulator, divider, leakage20–30 µAyears, if it never woke
Sensor node, one report every 10 minutes≈ 12 mAh / day≈ 5 months
Always reachable: radio in power save, ESP32 in light sleep≈ 1 mA2–3 months
Radio held awake, listening≈ 40 mA≈ 2 days
Sheet 06Parts

Bill of materials

36 different parts and 91 placements for JLCPCB to fit: 18 basic parts and 18 extended. All were in stock on 2026-11-13, and they come to about $10.22 a board at single-unit prices. The HT-HC01 is yours to solder by hand.

QtyRefsValuePart numberLCSCFitted byStockEach
8C1 C3 C4 C6 C11 C13 C16 C2210uFCL10A106KP8NNNCC19702JLCPCB basic11,710,215$0.0233
6C2 C10 C29 C30 C31 C321uFCL05A105KA5NQNCC52923JLCPCB basic10,438,873$0.0057
5C5 C9 C12 C14 C17100nFCL05B104KO5NNNCC1525JLCPCB basic31,892,084$0.0024
3C7 C8 C1522uFCL21A226MAQNNNEC45783JLCPCB basic4,182,833$0.1084
1C18470pF0402B471K500NTC1537JLCPCB extended344,742$0.0027
2C19 C20DNP (tune)not fitted
1C214.7uF/50VCL21A475KBQNNNEC98192JLCPCB extended132,202$0.0447
6C23 C24 C25 C26 C27 C281uF/50VCL10A105KB8NNNCC15849JLCPCB basic13,422,278$0.0083
1C50100uF/6.3VTAJB107K006RNJC16133JLCPCB basic574,952$0.2515
1D1B5819WB5819WC8598JLCPCB basic359,341$0.0262
3D2 D3 D4MBR0530MBR0530T1GC82046JLCPCB extended202,017$0.0629
1D5RED (charging)KT-0603RC2286JLCPCB basic5,864,318$0.0077
1D6GREEN (user)19-217/GHC-YR1S2/6TC2986059JLCPCB extended406,269$0.0171
1J1USB-CTYPE-C-31-M-12C165948JLCPCB extended536,848$0.1869
1J2LiPo JST-PHB2B-PH-SM4-TB(LF)(SN)C160352JLCPCB extended68,428$0.2050
1J3E-paper FPC 24P 0.5mm (top contact)FH12A-24S-0.5SH(55)C506794JLCPCB extended1,602$0.8262
1J4U.FL 915MHzU.FL-R-SMT-1(80)C88374JLCPCB extended294,824$0.1092
1J5Qwiic / STEMMA QTSM04B-SRSS-TB(LF)(SN)C160404JLCPCB extended6,501$0.2147
1J6DHT11/DHT22not fitted
1J7Expansionnot fitted
1J8E-paper module (alt)not fitted
1L168uHFNR3015S680MTC167769JLCPCB extended10,030$0.0460
2Q1 Q3AO3401AAO3401AC15127JLCPCB basic1,548,364$0.0814
1Q2Si1308EDLSI1308EDL-T1-GE3C469327JLCPCB extended39,647$0.2602
2R1 R25.1k0402WGF5101TCEC25905JLCPCB basic3,963,119$0.0014
1R32k0402WGF2001TCEC4109JLCPCB basic10,048,426$0.0019
2R4 R91k0402WGF1001TCEC11702JLCPCB basic31,561,762$0.0013
23R5 R8 R10 R11 R12 R13 R14 R15 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R30 R31 R34 R3810k0402WGF1002TCEC25744JLCPCB basic21,210,598$0.0010
2R6 R71M0402WGF1004TCEC26083JLCPCB basic2,359,423$0.0012
3R16 R17 R35100k0402WGF1003TCEC25741JLCPCB basic8,491,230$0.0011
1R2210k0402WGF1002TCEnot fitted
1R320R0402WGF0000TCEC17168JLCPCB basic15,740,652$0.0012
1R333R0603WAF300KT5EC23157JLCPCB extended26,483$0.0033
2R36 R374.7k0402WGF4701TCEC25900JLCPCB basic14,323,762$0.0017
1SW1ON/OFFMSK12C02C431540JLCPCB extended172,338$0.0544
1SW2RESETTS-1088-AR02016C720477JLCPCB basic916,144$0.0516
1SW3BOOT / ASKRTLAE010C110293JLCPCB extended43,632$0.1435
1SW4USER / BSKRTLAE010C110293JLCPCB extended43,632$0.1435
1U1ESP32-S3-WROOM-1-N16R8ESP32-S3-WROOM-1-N16R8C2913202JLCPCB extended21,983$5.3481
1U2MCP73831T-2ACI/OTMCP73831T-2ACI/OTC424093JLCPCB extended8,835$0.7902
1U3XC6220B331MR-GXC6220B331MR-GC86534JLCPCB extended10,464$0.4761
1U4USBLC6-2SC6USBLC6-2SC6C7519JLCPCB extended42,522$0.1569
1U5HT-HC01HT-HC01you, by hand

Not on the board order

  • HT-HC01 (V1, 21 dBm), hand-soldered.
  • 2.9″ 296 × 128 e-paper with the SSD1680 24-pin flex (Waveshare 2.9″ V2 raw panel, Good Display GDEY029T94).
  • LiPo with a JST-PH lead, 34 × 50 mm, 6 to 10 mm thick. Check its polarity first.
  • 915 MHz antenna and a U.FL-to-SMA bulkhead pigtail.
  • Four M2.5 × 10 screws.
Sheet 07Build

Putting one together

  1. Order the board.Upload the Gerbers to JLCPCB: 4 layers, 1.6 mm, stack-up JLC04161H-7628. Turn on top-side assembly with the BOM and placement files, then check every polarised part in their placement preview.
  2. Solder the HT-HC01.There is about 1 mm of bare board beside every pad for the iron. Check that the antenna pad has not bridged to the ground pads on either side.
  3. Bring it up on USB.No battery and no display yet. Check for 3.3 V, then flash the firmware over the USB-C port.
  4. Fit the display.Tape the glass to the back of the board inside the corner marks. Fold the flex round the board's end and into the connector, contacts away from the board. The silkscreen marks pin 1.
  5. Connect the cell.Meter the plug against the board's + and − marks first. There is no reverse-polarity protection.
  6. Close the case.The board drops into the bezel display-first. Put the cell on foam tape over the two modules, fit the SMA bulkhead and clip the pigtail to the U.FL. Drop in the button caps and fit the four screws.
Exploded line drawing of HaLow Ink with numbered parts
Sheet 01's exploded drawing, numbered as the parts list in the 3D viewer.
Sheet 08Firmware

What it does when it wakes

An ESP-IDF project using Morse Micro's HaLow component. It builds; it has never run on hardware.

  1. Wake.Timer, button A, button B or power-on. It reads the battery before the radio draws current.
  2. Boot the radio.Morse Micro's library loads the MM6108's firmware and the HT-HC01's board configuration file over SPI.
  3. Join.It associates with the access point (an HT-H7608 here) and waits for a DHCP lease, 30 s at most.
  4. Report.It publishes one JSON status message over MQTT at QoS 1 and waits for the broker's acknowledgement.
  5. Draw.It shuts the radio down, then redraws the screen: SSID, address, RSSI, MQTT result, battery and wake reason.
  6. Sleep.Deep sleep for 10 minutes, with the radio held in reset. A watchdog forces sleep if anything hangs.
The e-paper status screen: HaLow Ink, 78 percent battery, SSID HT-H7608-halow, IP 192.168.100.123, RSSI −67 dBm, MQTT sent, 3.92 V, boot 12, timer, next 10 min
The status screen at 3×, drawn by the firmware's own code on a PC.
Sheet 09Explainer

Wi-Fi HaLow, briefly

Ninety seconds on what Wi-Fi HaLow is, how far it reaches, what it costs in data rate and power, and where HaLow Ink fits. Narrated by a cartoon of me in my cloned voice; every figure on screen names its source.

Sheet 10Status · files

Before you order