Hardware Selection Guide
This guide helps you pick the right ESP32 chip, development board, and FastBee firmware environment. Release environments share one feature baseline, with hardware-dependent compile overrides and runtime activation from the Web Feature Config page. Selection is based on the real chip, Flash, and PSRAM specification rather than the old Lite / Standard / Full labels.
1. Chip Quick Reference
| Chip | Flash | RAM | UART | Typical Use Case | Flash Env |
|---|---|---|---|---|---|
| ESP32 (classic) | 4MB | 520KB | 3 | General node, Modbus, basic peripherals | esp32-F4R0 |
| ESP32 (classic) | 8MB | 520KB | 3 | OTA node without PSRAM | esp32-F8R0 |
| ESP32 (classic) | 8MB + 8MB PSRAM | 520KB | 3 | WROVER gateway/cache | esp32-F8R8 |
| ESP32-C3 | 4MB | 400KB | 2 | Low-cost sensor node | esp32c3-F4R0 |
| ESP32-C6 | 4MB | 512KB | 3 | Low-cost WiFi 6 node | esp32c6-F4R0 |
| ESP32-C6 | 8MB | 512KB | 3 | WiFi 6 OTA node | esp32c6-F8R0 |
| ESP32-S3 | 8MB | 512KB+ | 3 | S3 OTA node without PSRAM | esp32s3-F8R0 |
| ESP32-S3 | 8MB + 8MB PSRAM | 512KB+ | 3 | Recommended display/rule controller | esp32s3-F8R8 |
| ESP32-S3 | 16MB + 8MB PSRAM | 512KB+ | 3 | High-capacity gateway/controller | esp32s3-F16R8 |
Selection Principle
The decision is mainly driven by flash size and PSRAM availability:
- 4MB flash -> the 2.94MB app partition is a hard cap and OTA is unavailable; the runtime budget still protects internal DRAM
- 8MB/16MB flash → OTA upgrade supported, more filesystem space
- PSRAM -> large displays, TLS, and large JSON buffers are easier to run reliably; never flash an
R8image onto anR0board
2. Unified Firmware Model
All factory environments share one model:
| Aspect | Description |
|---|---|
| Common baseline | Core Web, MQTT, Modbus, peripheral, and automation code follows one release model; hardware features may be excluded per environment |
| Disabled by default | Optional features stay off until needed, reducing active tasks and buffers |
| Enable via Web | Feature Config exposes compiled features; the startup budget rejects combinations the hardware cannot afford |
Not sure which one?
Run the smart recommender script in the repository — it can auto-detect the chip and flash size from a connected device:
powershell
# From the FastBee-Arduino repo root
powershell -File scripts/recommend-env.ps1 -DetectPort COM5
powershell -File scripts/recommend-env.ps1 -All # full recommendation table3. Board Recommendations
Beginner / Education
| Board | Chip | Notes |
|---|---|---|
| PZ ESP32 board | ESP32 | Rich peripherals (OLED/buttons/IR), see test case docs |
| ESP32-C3 SuperMini | ESP32-C3 | Tiny and cheap, ideal for sensor nodes |
| ESP32-C6 DevKit | ESP32-C6 | WiFi6, LED quickstart example |
Production / Industrial
| Board | Chip | Notes |
|---|---|---|
| WaveShare ESP32-S3 | ESP32-S3 | Industrial relay board |
| ECM50-A terminal | ESP32-S3 | 4G + Ethernet W5500 + WiFi tri-network switching |
| ESP32 + RS485 module | ESP32 | Modbus RTU industrial acquisition |
4. Peripheral Hardware Notes
- USB-serial chips: prefer CP2102 / CH340 / CP2104 for driver compatibility (drivers available in the Downloads Center); FT232 also works. The batch flashing script
deploy-all.ps1auto-detects all three. - Power: WiFi connection peaks can reach 500mA — unstable supply causes reboots. Add a 100µF+ capacitor near the power input.
- UART and cellular: C3/C6 release environments do not compile cellular support. ESP32/S3 builds that include it still require a free UART, correct pins, and stable power.
- S3 USB-CDC: some S3 boards need the BOOT button held during first power-on to enter download mode.
5. Next Steps
- Flashing Tutorial — online / PlatformIO / batch flashing
- Network Best Practices — WiFi/MQTT/AP fallback and self-healing
- Hardware and Environments — complete release matrix, partitions, and OTA rules

