Skip to the content
PCBKitNew board
2 layers176.9 × 104 mmESP32-P4 Display 7.0 inch V1.0, the printed circuit board in 3D

ESP32-P4 Display 7.0 inch V1.0

hellosamblack/CrowPanelProp

Cassette-futurism communicator/scanner prop for the CrowPanel Advance ESP32-P4 (hardware V1.0). Custom ESP-IDF firmware structured as a generic prop engine: stable firmware whose behavior is driven live over WiFi, so…

Size
176.9 × 104 mm
Copper layers
2
Thickness
1.6 mm
Parts
544
Nets
306
Pads
1,513
Tracks, vias
4,700, 1,219
Pours
9,908
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
19 Jun 2026
Updated
21 Aug 2026

Overview

ESP32-P4 Display 7.0 inch V1.0 is an open-source printed circuit board by hellosamblack, from the hellosamblack/CrowPanelProp repository on GitHub. It is a 2-layer board of 176.9 × 104 mm with 544 parts on 306 nets, routed with 4,700 tracks and 1,219 vias.

It is built around the NS4168, ME6211C33M5G-N and LMBR140ET1G, with the 1N5817WS, DSS34 and NCE20P45Q among its other parts. Its parts include 172 resistors, 150 capacitors, 102 connectors, 12 diodes and 9 transistors. It belongs with the lEDs and displays boards and the ESP32 and RISC-V boards of this library.

Main components

6

README

README.md

Communicator / Scanner Prop Firmware

Cassette-futurism communicator/scanner prop for the CrowPanel Advance ESP32-P4 (hardware V1.0). Custom ESP-IDF firmware structured as a generic prop engine: stable firmware whose behavior is driven live over WiFi, so scenes/LEDs/screen text can be cued and iterated without reflashing.

Forked from example/V1.0/idf-code/Lesson09-LVGL_Lighting_Control.

Architecture

ModuleRole
components/bsp_display, bsp_illuminate, bsp_i2cDisplay + touch + backlight bring-up (reused from Lesson09)
components/bsp_ioDiscrete on/off LEDs + debounced buttons (espressif/button)
main/prop_engineThe brain. Scene state machine + 10 Hz animation task; single source of truth, fans state out to observers
main/prop_netWiFi AP+STA via the onboard ESP32-C6 (esp_hosted); STA credentials in NVS
main/prop_apiHTTP server: operator web console, REST /cmd, WebSocket /ws, OTA /ota
main/prop_uiLVGL amber-on-black retro readout — a pure view of engine state

Inputs (physical buttons, remote commands) all funnel through prop_engine, which drives both the LEDs and the screen, so they never drift out of sync.

Scenes

IDLE, SCANNING, SIGNAL_ACQUIRED, COMMS, ALERT — each defines status text + an animated LED pattern.

Build & flash

Requires ESP-IDF ≥ 5.4.2 (v6.0.1 recommended).

Windows: Use the VS Code ESP-IDF extension terminal, or export.ps1 from your IDF install:

powershell
idf.py set-target esp32p4
idf.py build
idf.py -p <PORT> flash monitor     # first flash over USB (UART0)

Or run the helper: pwsh tools/dev.ps1 bf -Port COM7

Linux / Debian: Source your export.sh script to activate the environment:

bash
. ~/.local/esp/esp-idf/export.sh
idf.py set-target esp32p4
idf.py build
idf.py -p /dev/ttyUSB0 flash monitor

Or run the helper: ./tools/dev.sh bf -Port /dev/ttyUSB0

The espressif/button, display, and WiFi components download automatically on first build (declared in the idf_component.yml files).

Live control (no reflash)

Find the device IP from the serial log (or use the AP PROP-COMMS / pass scanner99, then 192.168.4.1).

bash
# REST
curl -X POST http://<ip>/cmd -d '{"cmd":"scene","value":"SCANNING"}'
curl -X POST http://<ip>/cmd -d '{"cmd":"led","name":"alert","on":true}'
curl -X POST http://<ip>/cmd -d '{"cmd":"channel","value":"CH 04 / 147.55 MHz"}'
curl      http://<ip>/state

# Operator cue board (scene buttons, live state): open http://<ip>/ in a browser
# WebSocket: ws://<ip>/ws  — send the same JSON commands, receive state broadcasts

Command schema: see the top of main/include/prop_api.h.

WiFi OTA (code changes, still no USB)

CLI (recommended) — build + push in one command:

Windows (PowerShell):

powershell
pwsh tools/dev.ps1 ota                          # defaults to comm-unit-7.local
pwsh tools/dev.ps1 ota -DeviceHost 172.17.2.167 # explicit IP fallback

Linux / Debian (Bash):

bash
./tools/dev.sh ota                              # defaults to comm-unit-7.local
./tools/dev.sh ota -DeviceHost 172.17.2.167     # explicit IP fallback

Browser — open http://comm-unit-7.local/, scroll to FIRMWARE UPDATE, pick the .bin (usually build/communicator.bin), click UPLOAD. A progress percentage appears and the page reports "done — rebooting…" when the device is switching over.

Raw curl (if you prefer):

bash
idf.py build
curl -X POST "http://<ip>/ota?token=prop-ota-2024" --data-binary @build/communicator.bin

Rollback safety: the bootloader is configured with CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE. A freshly-OTA'd image boots as PENDING_VERIFY; app_main calls esp_ota_mark_app_valid_cancel_rollback() after the full stack is up. If the new image crashes before reaching that point the bootloader automatically reverts to the previous partition on the next reset — no USB reflash required.

Confirm the update landed: GET /state includes a "version" field (from git describe), and the web console state line shows v<version>.

Change PROP_OTA_TOKEN in main/include/prop_api.h and the AP password in main/include/prop_net.h before any real deployment.

Wiring — IMPORTANT

GPIO assignments are placeholders in components/bsp_io/bsp_io.c. Only GPIO48 (the UART1-RX header pin) is confirmed broken-out and free. Verify every other pin against the V1.0 schematic in Eagle_SCH&PCB/1.0/ and the connector silkscreen before wiring. Defaults used:

  • LEDs: power=GPIO48, signal=GPIO47 (UART1-TX), alert=GPIO20
  • Buttons (active-low, internal pull-up): mode=GPIO33 (UART3-IN), action=GPIO11

Buttons: mode cycles scenes, action jumps to SCANNING (edit on_button() in main/main.c).

ESP-IDF version

Builds clean on ESP-IDF v6.0.1 (target esp32p4). The Lesson09/17 examples were written for 5.4.2; this project was migrated to 6.0. Changes required for 6.0 (all already applied):

  • cJSON moved out of IDF core → added espressif/cjson dependency; REQUIRES cjson (not json).
  • WiFi stack: esp_wifi_remote bumped to 1.x (0.x referenced the removed esp_interface.h); paired with esp_hosted 2.12.9.
  • driver component split → BSP components now require esp_driver_i2c / esp_driver_gpio / esp_driver_ledc.
  • esp_lcd DPI API: lcd_color_rgb_pixel_format_t→lcd_color_format_t, LCD_COLOR_PIXEL_FORMAT_*→LCD_COLOR_FMT_*, .pixel_format→.in_color_format/.out_color_format, .flags.use_dma2d removed, RGB666 enum gone.
  • Stricter warnings-as-errors: fixed a header-guard typo in bsp_i2c.h.
  • sdkconfig.defaults: 16 MB flash + CONFIG_LV_FONT_MONTSERRAT_24.

Status

Compiles successfully (communicator.bin builds). Not yet flashed/run on hardware — pending the CH341 USB-serial driver + the board appearing on a COM port. Then work through the verification checklist in the project plan.

Parts

544
QtyValueFootprintReferences
88TEST_PADPAD-1.5MMTEST_PAD-1.5MMP1, P2, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23 +72
300RR0402R12, R19, R20, R36, R37, R38, R100, R102, R105, R109, R127, R162, R190, R216, R217, R332 +14
240RR0603R10, R13, R24, R48, R103, R112, R113, R114, R115, R118, R119, R129, R149, R184, R188, R189 +8
24100nF0603C11, C15, C19, C20, C21, C35, C37, C52, C53, C144, C150, C151, C152, C155, C156, C159 +8
2310KR0603R1, R5, R15, R18, R27, R28, R29, R30, R53, R54, R61, R106, R116, R160, R180, R181 +7
221uF_NCC0402C117, C118, C119, C120, C121, C122, C123, C124, C125, C126, C127, C128, C129, C131, C133, C137 +6
18100nFC0402C5, C7, C36, C40, C41, C43, C45, C46, C50, C60, C61, C63, C72, C108, C113, C115 +2
164.7KR0603R22, R45, R46, R51, R52, R56, R57, R58, R59, R62, R74, R78, R93, R94, R97, R98
130R_NCR0402R107, R110, R111, R124, R125, R126, R128, R130, R146, R148, R161, R170, R177
1310uFC0402C6, C8, C42, C44, C47, C48, C49, C56, C71, C107, C112, C114, C116
12TPTP08RTP08R_385TP1, TP2, TP3, TP4, TP5, TP6, TP7, TP8, TP9, TP10, TP11, TP12
1110uF0603C14, C16, C38, C74, C78, C79, C83, C136, C149, C153, C157
91uF0603C1, C2, C3, C10, C17, C22, C69, C86, C102
81uFC0402C51, C55, C57, C58, C59, C64, C65, C66
85.1KR0603R3, R4, R17, R26, R47, R50, R96, R101
851KR0603R81, R82, R83, R84, R85, R86, R173, R175
7BSS138W_SOT323MOS_SOT323Q1, Q2, Q4, Q6, Q7, Q8, Q9
6100KR0402R63, R64, R68, R108, R122, R123
6100RR0402R152, R153, R154, R155, R156, R157
61nF0603C67, C68, C85, C105, C106, C158
6LMBR140ET1GLMBR140ET1GD005, D012, D013, D015, D017, D018
40R/800mAL0603FB17, FB18, FB19, FB20
4100KR0603R2, R117, R139, R165
4100nF_NCC0402C39, C130, C132, C145
410uF/10V+0603C12, C27, C28, C32
41K/磁珠L0603FB2, FB3, FB10, FB11
41K/磁珠_NCL0603FB7, FB8, FB9, FB12
447uF0603C23, C24, C103, C104
4OR_NCR0402R141, R142, R144, R145
4THO-M3.25MM-HOLETHO-M3.2_5MM-HOLEJ12, J14, J15, J18
30R/800mA_NCL0402FB4, FB5, FB13
3100nF/50V0603C91, C100, C111
3100nF_NC0603C135, C147, C154
310KR0402R65_NC0, R131, R171
310uF/25V0603C90, C99, C110
31N5817WSD_SOD323D4, D008, D11
32KR0603-SPR16, R31, R32
3DSS34D_SOD123FLD2, D007, D10
3OR_NCR0603-SPR79, R147, R185
3PH2.0WT-2PINPH2.0WT-2PINJ3, J4, J6
2H7-2.54-18.28X2.5X5MMJ9, J11
20R/800mA_NCL0603FB15, FB16
210K_NCR0402R72, R73
212pFC0402C29, C30
215pFC0402C33, C34
21uF/25V0603C96, C97
21uF/50V0603C98, C109
22.2μH_C51794461008(2520)L1, L6
220K_NCR0603R178, R179
2220RR0603R172, R174
222pF0603C26, C31
222pF_NCC0402C89, C101
222uFC0805C13, C18
24.02KR0402R104, R158
24.7uH_C45385206_2.4A1008(2520)L2, L5
247uF_NC0603C134, C148
25.1K_NCR0603R120, R121
2HY2.0-4P-SMTCONNECTOR_4P-SMD-2.0J2, J13
2KEY-4.5X4.5KEY-4.5X4.5-SMDK3, K4
2ME6211C33M5G-NSOT95P282X145-5NIC7, IC8
2MT3406_C22462728SOT95P280X145-5NU9, U10
2NC/499KR0603R14, R21
2NCE20P45QPDFN3333Q3, Q5
2NS4168NS4168-ESOP-8U3, U13
2ORR0402R132, R134
2TYPEC-3.0-16P-SMDUSB-3.0TYPEC-SMDJ1, J16
1P4-LCD-7.0-BK3U$113
19P-SMD-W_-RINGJ5
10RL0805R182
10RR0603-SPR25
10RC0402R23
10R/800mAL0805FB21
10R/800mAL0402FB6
10R/800mA_NCR0402FB14
11.1RR0603-SPR159
11.91KR0402R168
1100kR0603R186
1100nF/50VC0402C95
110K_NCR0603R33
110UF0603C70

The 490 most common of 544 parts.

Questions

How big is the ESP32-P4 Display 7.0 inch V1.0 PCB?

It measures 176.9 × 104 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ESP32-P4 Display 7.0 inch V1.0 use?

544 parts, built around the NS4168, ME6211C33M5G-N, LMBR140ET1G and 1N5817WS. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the ESP32-P4 Display 7.0 inch V1.0 KiCad files?

From the hellosamblack/CrowPanelProp repository on GitHub, at the commit this page was made from: the board is docs/hardware/schematic/ESP32-P4 Display 7.0 inch V1.0.kicad_pcb and its schematic docs/hardware/schematic/ESP32-P4 Display 7.0 inch V1.0.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the ESP32-P4 Display 7.0 inch V1.0 design in my own project?

Its repository states no licence, so its author keeps all rights: ask hellosamblack before reusing the design.

Similar boards

  • 4 layers21 × 51 mmMetalclaw pico rp2, the printed circuit board in 3D

    Metalclaw pico rp2

    renzbagaporo/metalclaw-pico-rp2

    An RP2354B board for testing firmware on a Raspberry Pi Pico or Pico 2. Metalclaw firmware provides Python-controlled peripheral emulation and a USB debug probe.

    132 partsCC-BY-SA-4.0
  • 4 layers50 × 50 mmHSCanT, the printed circuit board in 3D

    HSCanT

    cherry-embedded/HSCanT-hardware

    HSCanT is a USB to 4-channel CAN FD tool designed based on the HPM5321 chip.

    130 parts52Apache-2.0
  • 4 layers68.6 × 53.3 mmSFduino UNO S2, the printed circuit board in 3D

    SFduino UNO S2

    HalfSweet/SFduino-UNO-S2

    SF32LB52 Devkit

    133 parts2
  • 2 layers68 × 40 mmStm32-io extend, the printed circuit board in 3D

    Stm32-io extend

    hardenedlinux/cheap-pcb

    Cheap PCB: Better understanding the current status of hardware supply chain

    44 parts170CC0-1.0
  • 4 layers41 × 34 mmTdc tdt kicad, the printed circuit board in 3D

    Tdc tdt kicad

    akionu/mameTDT

    $\theta=−5.3 × 10^{−2} + 2.92 × 10^{−2} \epsilon−5.5 × 10^{−4} \epsilon^2+ 4.3 × 10^{−6}\epsilon^3$ ただし、土の水分量$\theta [m^3/m^3]$、比誘電率$\epsilon$です。

    65 partsApache-2.0
  • 4 layers92 × 78 mmMathpad, the printed circuit board in 3D

    Mathpad

    mbayrao/YMC-Mathpad

    這款鍵盤靈感來自Summa-Congni/Mathpad,當我在2025年的某日給女朋友看到能夠方便輸入數學符號的Mathpad 她知道我喜歡也能製做出電路板,便鼓勵我著手製作此project而誕生。 此板為第一版設計,製作時有許多問題導致設計不斷變更直到最後。 主要思路為無線藍芽連接內置5V USB Type C充電電路並提供電量指示燈、有OLED螢幕可供視覺回饋挑選符號

    93 parts
  • 2 layers68.5 × 53.5 mmSteering wheel.kicad pcb 1lay, the printed circuit board in 3D

    Steering wheel.kicad pcb 1lay

    repmanga/steering_wheel

    This is PCB file of multisteering wheel for ECUmaster EMU black ECU

    60 parts1MIT