Moonshine ESP-C3
DIY Meshtastic node variant based on the ESP32-C3 + E22-400M33S LoRa module.
Hardware
- MCU: ESP32-C3 with 4 MB external SPI flash
- LoRa: E22-400M33S (SX1268 + 33 dBm PA, 2 W, 433 MHz)
- USB CDC: enabled (
ARDUINO_USB_MODE=1,ARDUINO_USB_CDC_ON_BOOT=1) - serial console is exposed via the USB CDC port, no separate UART chip - Battery ADC: 0.5 voltage divider on GPIO1 (
ADC_MULTIPLIER = 2.0) - No screen, no GPS on this board
E22-400M33S power note
The E22-400M33S is a 33 dBm / 2 W module with ~25 dB PA gain. This variant
uses the firmware's default SX126x output power (22 dBm), which the E22's PA
amplifies to ~47 dBm. This will overdrive the PA, cause large current spikes,
and may reset the system at higher tx_power settings.
For safe operation on the E22-400M33S, add the following to variant.h:
#define SX126X_MAX_POWER 8 // SX1268 outputs 8 dBm -> PA -> ~33 dBm
#define TX_GAIN_LORA 25 // PA gain compensation
These are intentionally omitted here per the board designer's request; the
operator is responsible for setting an appropriate tx_power in app config
or patching the variant before flashing. See
variants/nrf52840/diy/moonshine_NRF52/variant.h for the same module wired
with the PA-safe power profile.
Pin map
| Function | GPIO | Notes |
|---|---|---|
| BUTTON | 9 | BOOT button |
| LED | 0 | Active high (LED_STATE_ON = 1) |
| BATTERY_ADC | 1 | 0.5 divider (ADC_MULTIPLIER = 2.0) |
| LORA_RXEN | 2 | RF switch RX enable |
| LORA_DIO1 | 3 | IRQ |
| LORA_BUSY | 4 | |
| LORA_RESET | 5 | |
| LORA_MISO | 6 | |
| LORA_MOSI | 7 | |
| LORA_CS | 8 | |
| LORA_SCK | 10 |
DIO2 drives the E22's TXEN pin internally (SX126X_DIO2_AS_RF_SWITCH), so
SX126X_TXEN is left as RADIOLIB_NC. SX126X_RXEN is driven by GPIO2.
Build & Flash
Build
pio run -e moonshine_ESP_C3
Uses PRIVATE_HW (HardwareModel 255) - no protobuf or architecture.h
changes required. Board level is extra (built only on full releases).
Flash
pio run -e moonshine_ESP_C3 -t upload --upload-port <port>
The board boots into USB CDC mode, so the serial console appears as a CDC
ACM port (/dev/ttyACM* on Linux/macOS, COMx on Windows) at 115200 baud.