Hardware¶
Detector¶
| Component | Notes |
|---|---|
| Heltec WiFi LoRa 32 V3 / V4 | ESP32-S3 + SX1262 on-board |
| ICS-43434 or INMP441 I2S MEMS microphone | 3.3 V, L/R → GND (left channel) |
Wiring (ICS-43434 / INMP441 → Heltec V3 / V4)¶
| Mic pin | GPIO | Function |
|---|---|---|
| VDD | 3.3V | Power |
| GND | GND | Ground |
| SCK | 4 | I2S bit clock (BCLK) |
| WS | 5 | I2S word select (LRCLK) |
| SD | 6 | I2S data input (DIN) |
| L/R | GND | Left channel select |
ICS-43434 vs INMP441
Both mics share the same pinout and I2S protocol, so they're drop-in interchangeable on this wiring. ICS-43434 is preferred for drone detection (higher sensitivity at −38 dBFS, 130 dB SPL AOP); INMP441 is cheaper and easier to source, but has lower sensitivity (−26 dBFS) and a 120 dB SPL AOP, which can clip on close, loud sources.
Battery monitoring (optional)¶
Heltec V3 / V4 ship with an on-board LiPo jack, charger, and a resistor divider that taps VBAT onto GPIO1 (ADC1_CH0), gated by GPIO37 (ADC_Ctrl, active low). The firmware drives the gate low only during a ~2 ms measurement window on every LoRa TX, so the divider's ~100 µA current drain is effectively eliminated between reads.
No extra wiring is required — plug a 1S LiPo into the JST connector and the detector reports battery_v (plus a low-battery flag below 3.4 V) in every telemetry packet. Boards without this divider can simply leave BOARD_HAS_VBAT at 0 in pin_config.h and the battery module compiles down to no-ops (readings are reported as 0 V).
Wired Detector (Ethernet/PoE)¶
| Component | Notes |
|---|---|
| LILYGO T-ETH-Lite S3 | ESP32-S3 + W5500 Ethernet on-board, optional PoE expansion |
| ICS-43434 or INMP441 I2S MEMS microphone | 3.3 V, L/R → GND (left channel) |
Wiring (ICS-43434 / INMP441 → T-ETH-Lite S3)¶
| Mic pin | GPIO | Function |
|---|---|---|
| VDD | 3.3V | Power |
| GND | GND | Ground |
| SCK | 38 | I2S bit clock (BCLK) |
| WS | 39 | I2S word select (LRCLK) |
| SD | 40 | I2S data input (DIN) |
| L/R | GND | Left channel select |
See the ICS-43434 vs INMP441 note above for sensitivity / AOP differences when choosing between the two mics.
Tip
GPIO 38/39/40 are on the extension headers of the T-ETH-Lite S3. These pins avoid conflicts with the on-board W5500 Ethernet (GPIO 9–14) and the SD card slot (GPIO 5/6/7/42, see below).
On-board microSD slot¶
The T-ETH-Lite S3 routes its TF slot to a 4-pin SPI footprint (not SDMMC), and the firmware drives it through the FATFS SDSPI driver on SPI3_HOST so it doesn't conflict with W5500 on SPI2_HOST.
| Slot pin | GPIO | Function |
|---|---|---|
| MISO | 5 | SDSPI MISO |
| MOSI | 6 | SDSPI MOSI |
| SCK | 7 | SDSPI clock |
| CS | 42 | SDSPI chip select (SD's D3 line in 4-bit mode) |
Use a FAT32-formatted card ≤ 32 GB (SDHC). SDXC cards are typically pre-formatted exFAT, which the IDF SDSPI mount won't accept — reformat to FAT32 first. Don't pull the card while a recording is in progress — wait for the REC stop: …_alarm.wav dur=…s log line on the serial console so the FATFS directory entry is committed.
BOOT button (push-to-talk)¶
The on-board BOOT button (GPIO 0, the small button beside the RST button) doubles as a push-to-talk capture trigger when BATEAR_TF_MANUAL_ENABLE=y. Press = start recording, release = stop. The button has internal pull-up enabled at runtime; the strap reading at next reset is unaffected so idf.py flash keeps working unattended.
The wired detector connects directly to your network via Ethernet (RJ45). If you use a PoE expansion board, power and data come through a single cable — ideal for permanent outdoor installations.
IP addressing
By default the wired detector uses DHCP. For fixed installations you can assign a static IP via the serial console (set eth_ip 192.168.1.50) or at build time in sdkconfig.wired_detector. See Configuration → Ethernet static IP for details.
OTA firmware updates
The wired detector includes a built-in REST API (port 8080) that supports over-the-air firmware updates with automatic rollback. Upload a new binary with curl -X POST --data-binary @firmware.bin http://<ip>:8080/api/ota. See the REST API reference for all endpoints.
Gateway¶
| Component | Notes |
|---|---|
| Heltec WiFi LoRa 32 V3 / V4 | Uses on-board SX1262, SSD1306 OLED, and LED |
No external wiring needed — everything is on-board.