Design files
MEAP 4c hardware description
MEAP's circuit board was designed using the fantastic open source softwareKicad. If you really want to know what is going on in the hardware world of MEAP, the best way is to open the design files in Kicad, however this page will provide a surface level summary.
important chips used:
- ESP32-S3-WROOM-1-N16R8: the microcontroller
- SGTL5000: the audio codec
- PAM8302: the speaker amp
Schematic

PCB Pads

Hackable bits
Auxiliary multiplexer
MEAP has one built-in multiplexer you can use to connect more analog (continuously variable like a potentiometer) or digital (on/off like a button) signals without adding any extra circuitry. All you need to do is solder the data signal of whatever device you are connecting to the 2x4 grid of pins to the right of your MEAP's DIP switches as shown below. The output of this multiplexer is connected to GPIO pin 11.
._ ._|0|/1\
|_|\_/
._ ._
/3\/2\
\_/\_/
._ ._
/6\/4\
\_/\_/
._ ._
/5\/7\
\_/\_/
Secret bonus multiplexer pads
The back side of the MEAP board contains pads for an extra multiplexer (74LV4051D in SOIC16 3.9mmx9.9mm package). It is connected to the same address pins as all other multiplexers on the board. If it is used, it is recommended to add strain relief(eg. hot glue) to any wires soldered to the surface mount pads.
GPIO Pins
Several unused GPIO pins are broken out for analog/digital input or output.
| Pin number | Notes |
|---|---|
| GPIO 1 | touch, adc |
| GPIO 2 | touch, adc |
| GPIO 3 | touch, adc |
| GPIO 4 | touch, adc |
| GPIO 5 | touch, adc |
| GPIO 6 | touch, adc |
| GPIO 7 | touch, adc |
| GPIO 13 | touch, adc, CV1 |
| GPIO 15 | adc |
| GPIO 16 | adc |
| GPIO 18 | adc, CV2 |
| GPIO 42 | LED |
- All GPIO pins can be used to read or write digital voltages (0v or 3.3v) using arduino's digitalRead and digitalWrite functions. ESP32 also allows most pins to be used for any peripheral functionality such as SPI or I2C.
- Pins marked adc are connected to the ESP32's ADC and can be used to read analog input voltages between 0v and 3.3v. The easiest way to use these it to use arduino's analogRead function; for example, to read a voltage on pin 4
int my_reading = analogRead(4). This will return a result between 0 and 4095.
- Pins marked touch are connected to the ESP32's capacitive touch sensor. These can be connected to any conductive material which can then be used as a button similar to the touch keyboard. Examples can be found here.
- CV1 and CV2 pins can be connected to MEAP's Control Voltage output circuitry. To use these, solder across the CV1_EN or CV2_EN jumpers on the circuit board. Then you can use arduino's analogWrite function to write numbers 0-255 to these pins. This will send a PWM signal through lowpass filters, giving you an analog voltage between 0 and 3.3v at the CV1 or CV2 output pads. If these jumpers are left unsoldered, these pins can be used as regular GPIO pins.
- GPIO42 is connected to MEAP's built-in LED, which can be toggled on or off using arduino's digitalWrite() function. If you want to use pin 42 for GPIO purposes, it is recommended to remove the LED, however in some use cases, it may still work with the LED attached.
I2C Pins
GPIO pins 21 (SDA) and 14 (SCL) are configured as an I2C port which is used to configure the audio codec. Other I2C devices can be added to the same data and clock lines. You could mayyyybe use these pins for other purposes so long as they are still able to send messages to the audio codec on boot.
Adding additional multiplexers
The multiplexer address pins A, B and C are broken out on the board. These can be connected to any other 8-channel multiplexers wired on auxilliary circuit boards for additional inputs.
External power
If you have an external 5v power supply you want to use to power your MEAP, you can solder the power lead to the 5V_IN pin and the ground lead to the GROUND pads. An external 3.3v power supply can be soldered directly to the 3.3V and GROUND pads. In either of these cases, it is recommended to desolder the USB_PWR solder jumper so the MEAP is only being powered by one source.
SGTL5000 Bonus I/O
The audio codec chip used has two separate outputs whose volume can be controlled independently.
- Headphone out: sent to the 3.5mm jack labelled "line out". Technically it is not a line level signal, its voltage is a little low, but it can be connected to most mixers without too much trouble.
- Line out: sent to the internal speaker. If you wanted a true line out from your MEAP, you may be able to hook into the Line Out pads on the board. This is currently untested, and there is a chance the output levels/impedance would be wrong because this output is also connected to the speaker amp.
The audio codec chip also has two inputs, but only one can be active at a time.
- Line in: default input, connected to the 3.5mm jack labelled "Line In".
- Mic: condenser capsule input, with bias voltage. A sample circuit can be found in the SGTL5000 datasheet pg. 60