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 | 2 if using 64 MBit PSRAM, 1 if using 32 MBit PSRAM (as VSPI is needed for this chip) |
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 |
UART | 2 on pins 1-23, 1 on pins 24-27 |
Signals | see module for more information |