This project features a soft-robotics controller built around an ESP32 with an onboard camera, driver stages for multiple electromagnets, photoresistor sensing, SPI breakouts, and a UART header for easy flashing all developed for bio-inspired robotics at ELXIR LAB.
- ESP32 (WROOM or WROVER) with camera module (OV2640 or similar)
- 4–8 electromagnet channels with protected low-side MOSFET drivers (PWM capable)
- Photoresistor (LDR) inputs with RC dividers → ADC
- SPI header (3.3V) for add-ons (external ADCs, sensors, or LED drivers)
- Dedicated UART header for flashing (RTS/DTR optional) + USB-C or JST-PH power
- Reverse-polarity & transient protection, per-channel flyback/snubbers
- Buck Regulation for 2S LiPos
- Mounting + cable-reliefs sized for soft-robotics rigs
- Full Codebase containing all peripheral test code
- Open ArduinoIDE
- Set Baud Rate: 115200
- Set COM to whatever appears on device manager
- Set board to ESP32S3-Dev Board.
- The serial monitor must read at 115200 Baud.
- Enter Bootloader
- Ensure IO46 is pulled down.
- Pull boot low (Switch ON), Pull Enable Up and Down to reset the ESP32 (Switch On -> Switch Off). During this time firmware can be uploaded.
- Boot from uploaded code
- Pull boot high (Switch OFF), Pull Enable Up and Down to reset the ESP32 (Switch On -> Switch Off).
- CAMERA: PINS 4 to 14, 21.
- CAM_SDA: IO20
- CAM_SCL: IO3
- S_PWM: IO1, ADC1_CH0
- SDA: IO42
- SCL: IO41
- XSHUT: IO40
- nFault_A: I039
- nFault_B: IO4
- I_SENSE_A: IO14, ADC_CH3
- I_SENSE_B: IO2, ADC1_CH0
- IN1_A: IO38
- IN2_A: IO48
- IN1_B: IO47
- IN2_B: IO21
- LDR1: IO19
- LDR2: IO5
I_TRIP = V_REF / (R_IPROPI × A_IPROPI)
= 3.3 / (2350 × 455 × 10^-6)
≈ 3.09 A
I_IPROPI = I_TRIP × A_IPROPI
= V_REF / R_IPROPI
= 3.3 / 2350
≈ 1.40 mA
V_IPROPI = I_IPROPI × R_IPROPI
= 3.3 V