When starting the NestNinja project, choosing the right hardware platform was crucial. After extensive research, we selected the ESP32-P4. Here’s why.

The Requirements

For a smart bird box camera, we needed:

  1. Hardware Video Encoding - H.264 encoding at 1080p 30fps
  2. Low Power Consumption - Deep sleep <5mA for battery operation
  3. Good Camera Interface - Native MIPI-CSI support
  4. Modern Connectivity - Wi-Fi 6 for better range
  5. Adequate Processing - Handle video + networking + storage
  6. Reasonable Cost - Keep the BOM affordable
  7. Good Ecosystem - Mature development tools and community

Why ESP32-P4?

Hardware H.264 Encoding ✅

The ESP32-P4 features a dedicated ISP (Image Signal Processor) and H.264 hardware encoder capable of 1080p @ 30fps. This is rare in affordable microcontrollers!

Without hardware encoding, we’d need:

  • A much more powerful (expensive) processor
  • Higher power consumption
  • Larger, more expensive SD cards for uncompressed video

MIPI-CSI Camera Interface ✅

Native MIPI-CSI support means we can use industry-standard camera modules like the OV5647 (used in Raspberry Pi Camera Module v1).

Benefits:

  • High-speed data transfer
  • Lower latency
  • Proven, well-documented cameras
  • Wide availability

Power Management ✅

The P4 supports deep sleep modes with ultra-low power consumption. Combined with PIR motion detection, the system can:

  • Sleep at <3mA (target)
  • Wake on GPIO interrupt (PIR sensor)
  • Start camera and streaming in seconds
  • Return to deep sleep when no activity

This enables battery and solar-powered installations - perfect for remote bird boxes!

Wi-Fi 6 via ESP32-C6 ✅

The Waveshare development board includes an ESP32-C6 as a co-processor, providing:

  • Wi-Fi 6 (802.11ax) at 2.4GHz
  • Better range and reliability outdoors
  • Bluetooth 5 / BLE for easy setup
  • Pre-flashed firmware (no extra development needed)

The C6 connects via SDIO and uses Espressif’s esp_wifi_remote component. It just works!

Adequate Performance ✅

400MHz dual-core RISC-V with:

  • 32MB PSRAM (stacked, fast access)
  • 32MB Flash
  • Sufficient for video encoding, networking, and file I/O

This is more than enough for our use case while staying in the microcontroller price range.

Development Ecosystem ✅

Espressif provides:

  • ESP-IDF - mature, well-documented framework
  • Excellent technical documentation
  • Active community support
  • Regular updates and bug fixes

Plus, the ESP32 family is incredibly popular, meaning abundant tutorials, examples, and community knowledge.

Alternatives Considered

Raspberry Pi Zero 2 W

Pros:

  • Familiar Linux environment
  • Mature camera stack (libcamera)
  • Easy web streaming

Cons:

  • Higher power consumption (~150mA idle)
  • No hardware H.264 on Zero line
  • More expensive (~£15 vs ~£30-40 for whole ESP32-P4 board)
  • Deep sleep not really practical

Verdict: Great for always-on applications, but power consumption is too high for battery operation.

ESP32-CAM

Pros:

  • Very cheap (~£5-10)
  • Proven for basic camera projects

Cons:

  • Limited processing power
  • No hardware H.264 encoding
  • Low RAM (4MB PSRAM)
  • Lower quality video (typically MJPEG)

Verdict: Perfect for simple projects, but can’t handle 1080p H.264.

STM32H7 Series

Pros:

  • Powerful ARM Cortex-M7
  • Good camera interfaces

Cons:

  • No built-in Wi-Fi (need external module)
  • No hardware H.264 encoding
  • More complex ecosystem
  • Higher cost for complete solution

Verdict: Great MCU, but lacks integrated video encoding and wireless.

The Waveshare ESP32-P4-WIFI6 Board

We specifically chose the Waveshare ESP32-P4-WIFI6 development board because it:

  • Combines P4 + C6 on one board
  • Includes MIPI-CSI camera connector
  • Has microSD slot (SDIO)
  • Exposes 40-pin GPIO header for expansion
  • Provides USB-C programming
  • Costs around £30-40

This gives us everything needed in one package - no additional modules required!

Architecture: P4 as Application Host

A key decision was to use the ESP32-P4 as the application host, with the C6 purely for connectivity.

Some alternatives considered:

  • C6 as wake controller (P4 deep sleep until camera needed)
  • Split processing between P4 and C6

We chose P4 as the host because:

  • Camera interface is on P4
  • H.264 encoder is on P4
  • PIR wake works fine with P4 LP cores
  • Simpler architecture (one main application)
  • Factory C6 firmware works perfectly via esp_wifi_remote

See ADR-002 for the full reasoning.

Conclusion

The ESP32-P4 is a perfect fit for NestNinja:

✅ Hardware H.264 encoding
✅ Native camera interface
✅ Low power deep sleep
✅ Wi-Fi 6 connectivity
✅ Sufficient performance
✅ Affordable
✅ Great ecosystem

We’re excited to be building on this platform and can’t wait to see what the community creates with it!

Want to Learn More?

Questions? Join the discussion on GitHub!