Blog Contact Us

Pin layout on low.js devices

1. Pin Layout

The pin layout of the ESP32-WROVER is messy, which is why we cleaned it up with the neonious one. Because of this the pin numbering of the neonious one is different to the pin numbering of a generic ESP32-WROVER board.

Generic ESP32-WROVER Board

# Notes
0 connected to UART/USB adapter chip as DTR, do not pull low during boot
1 TX, connected to UART/USB adapter chip
2 do not pull high while flashing/installing low.js
3 RX, connected to UART/USB adapter chip
4
5
6 not usable by user program, connected to flash/PSRAM
7 not usable by user program, connected to flash/PSRAM
8 not usable by user program, connected to flash/PSRAM
9 not usable by user program, connected to flash/PSRAM
10 not usable by user program, connected to flash/PSRAM
11 not usable by user program, connected to flash/PSRAM
12 do not drive during boot (sets flash voltage)
13
14
15
16 not usable by user program, connected to flash/PSRAM
17 not usable by user program, connected to flash/PSRAM
18
19
20 pin does not exist
21
22
23
24 pin does not exist
25
26
27
28 pin does not exist
29 pin does not exist
30 pin does not exist
31 pin does not exist
32 supports ADC (inaccurate*)
33 supports ADC (inaccurate*)
34 supports ADC (inaccurate*), only supports input
35 supports ADC (inaccurate*), only supports input
36 supports ADC (inaccurate*), only supports input
37 pin does not exist
38 pin does not exist
39 supports ADC (inaccurate*), only supports input
= 24 pins usable by user program

* ADC on ESP32 is non-linear. This is fixed on the neonious one by letting the LPC822 co-processor handle ADC.

neonious one

# Notes
1 connected to red LED
2 connected to green LED
3
4 5 V tolerant, cannot be pulled high (only open drain)
5 5 V tolerant, cannot be pulled high (only open drain)
6
7
8 supports ADC
9 supports ADC
10 supports ADC
11 supports ADC
12 supports ADC
13 supports ADC
14 supports ADC
15 supports ADC
16 supports ADC
17 supports ADC
18 supports ADC
19
20
21
22
23
24*
25*
26* only supports input
27* only supports input, connected to user button
= 27 pins usable by user program

* Pins 1 - 23 are provided by the LPC822 co-processor. The user program can use these pins just like the ESP32-WROVER pins as the communication with the co-processor is handled automatically by low.js.

2. Peripherials

Generic ESP32-WROVER Board

Generally speaking, any peripherial can use any pin, however always check for restrictions on the pins in the table above.

Type Notes
GPIO any pin, see restrictions above
PWM 8, only on pins noted above
ADC 6 (because only 1 of 2 peripherials are available with Wifi on)
I2C 2
SPI 1 (as VSPI is already used as both RAM and Flash run at 80 Mhz)
UART 3
SD Card 4 line, 1 line and SPI mode possible

For more specifications, see the ESP32 datasheet and manual.

neonious one

Generally speaking, any peripherial can use any pin, however a peripherial cannot use pins both from the range 1-23 (LPC822) and from the range 24-27 (ESP32). Also always check for restrictions on the pins in the table above.

# Notes
GPIO any pin, see restrictions above
PWM 6 on pins 1-23, also pins 24 and 25
ADC 11, only on pins noted above
I2C 3 on pins 1-23, up to 400.000 Hz. However, up to 1 Mhz if SDA = pin 4, SCL = pin 5. Also 1 on pins 24-27
SPI 1 on pins 1-23, 1 on pins 24-27
UART 2 on pins 1-23, 1 on pins 24-27
SD Card only SPI mode possible
Signals see module for more information