Future board bench (ESP32-S3 + ESP32)
The bench prototypes the future all-in-one board (robine_board v1.1) on a
breadboard, with Dupont wires. GPIO numbers and net names are those of the
board, so firmware written on the bench runs unchanged on it — except the
amplifier driver (the InnoMaker uses an MA12070P, the board a TAS5825M).
| Part | Role |
|---|---|
| ESP32-S3-DevKitC-1 (N16R8) — S3 | master: AirPlay, I²S master, LoRa, LED |
| ESP32-DevKitC (WROOM-32E) — ESP32 | Bluetooth A2DP receiver, I²S slave |
| InnoMaker HiFi AMP Pro Mini (MA12070P) — HAT | I²S slave, I²C 0x20, 9–24 V |
| RFM95W | LoRa 868 MHz, 3.3 V only, antenna mandatory |
| SK6812 | one LED, 5 V through a diode |
| Small parts | 2 × 4.7 kΩ, 1 × 330 Ω, 1N4148, 100 nF, 10 µF |
| Amplifier supply | regulated 19–20 V, ≥ 4 A, 5.5 mm jack (never a 24 V adapter: see the Zero W power tolerances) |
| Speakers | 4–8 Ω, bridged (BTL) |
Where to start
Section titled “Where to start”Do the figures in this order, powering up and checking after each one: 1 S3 ↔ ESP32, 2 S3 ↔ amplifier, 3 LoRa, 4 LED, 5 power and speakers.
1. S3 ↔ ESP32 (Bluetooth audio)
Section titled “1. S3 ↔ ESP32 (Bluetooth audio)”I2S_BCLK and I2S_LRCLK also go to the amplifier (next figure): run one wire from the S3 to a breadboard row, then one wire from that row to each destination.
2. S3 ↔ InnoMaker amplifier
Section titled “2. S3 ↔ InnoMaker amplifier”The HAT’s 40-pin connector keeps the Raspberry Pi pin numbers. Odd pins on the left (inner row), even pins on the right; pin 1 is the square pad.
3. S3 ↔ LoRa module (RFM95W)
Section titled “3. S3 ↔ LoRa module (RFM95W)”4. Status LED (SK6812)
Section titled “4. Status LED (SK6812)”5. Amplifier power and speakers
Section titled “5. Amplifier power and speakers”Checks before the first power-up
Section titled “Checks before the first power-up”- Amplifier alone, powered, measure pin 1 of its connector. About 3.3 V: the HAT makes its own 3.3 V, so do not join the S3’s 3V3 (leave the dashed wire out). Nothing there: join it.
- Still alone and powered, measure SDA and SCL (pins 3 and 5): 0 V or 3.3 V, never 5 V.
- Unpowered, with a continuity tester, check that pins 8, 10 and 16 go to the MA12070P’s enable, mute and error functions. If not, leave those wires out.
- Do not connect the HAT’s 5 V pins (2 and 4): it outputs 5 V (it normally feeds a Raspberry Pi) and would fight the devkits’ USB.
Power-up order
Section titled “Power-up order”- All wires in place, grounds first.
- Speakers connected (bridged).
- Antenna on the RFM95W.
- USB on both devkits.
- Amplifier jack plugged, then the mains adapter switched on.
Flashing the ESP32
Section titled “Flashing the ESP32”- From its own USB (daily use): unplug
BT_RXD0and leave the S3 idle, its IO47 and IO48 as inputs. - Through the S3 (to test the board’s mechanism): plug
BT_RXD0back and close any serial monitor on the ESP32. The S3 pulls IO0 low, resets it via EN and speaks the ROM bootloader protocol on its UART.
Reference table
Section titled “Reference table”| Net | From | To |
|---|---|---|
| BT_RXD0 | S3 IO15 (TX) | ESP32 RX (IO3) |
| BT_TXD0 | ESP32 TX (IO1) | S3 IO16 (RX) |
| BT_EN / BT_IO0 | S3 IO47 / IO48 | ESP32 EN / IO0 |
| I2S_BCLK | S3 IO6 | HAT pin 12 + ESP32 IO26 |
| I2S_LRCLK | S3 IO7 | HAT pin 35 + ESP32 IO25 |
| I2S_DOUT | S3 IO8 | HAT pin 40 |
| I2S_BT_DOUT | ESP32 IO22 | S3 IO40 |
| I2C_SDA / SCL | S3 IO17 / IO18 | HAT pins 3 / 5 (+ 4.7 kΩ to 3V3) |
| AMP_PDN | S3 IO21 | HAT pin 8 |
| AMP_MUTE | S3 IO41 | HAT pin 10 |
| AMP_FAULT | HAT pin 16 | S3 IO38 |
| SPI_SCK / MOSI / MISO | S3 IO12 / IO11 / IO13 | RFM95W SCK / MOSI / MISO |
| LORA_CS / RST / DIO0 | S3 IO10 / IO14 / IO39 | RFM95W NSS / RESET / DIO0 |
| STATUS_LED | S3 IO42 | 330 Ω → SK6812 DIN |
| LED_VDD | S3 5V | 1N4148 → SK6812 VDD |
| GND | common row | both devkits, HAT pin 6, RFM95W, LED |
Source of truth: hardware/dev_bench
and the mainboard README.