This project turns an ESP32 DevkitC to a web terminal to Raspberry Pi via UART connection.
Add mDNS component
idf.py add-dependency "espressif/mdns^1.2.5"
Run menuconfig
idf.py menuconfig
Find Web Terminal menu and change values if necessary:
- mDNS Host Name
- Website deploy mode (semihosting VFS / external SD card / SPI Flash)
- Web source directory name
- WiFi SSID and passkey
- WiFi Scan auth mode threshold
In case you have chosen SPI Flash as Website deploy mode (default),
you have to set custom partitiion table. Confirm the content of partitions.csv.
Then select
Partition Table > Partition Table > Custom partion table CSV
Build web page:
cd www/frontend
npm install
npm run build
Flash the device
idf.py build flash
Hook up the device to the Raspberry Pi. You need to connect following signals:
| signal | Raspberry Pi J8 | ESP32 |
|---|---|---|
| UART | GPIO14(TxD) | GPIO13(RxD) |
| UART | GPIO15(RxD) | GPIO14(TxD) |
| WAKE | GPIO3(SCL) | GPIO16 |
| 5V | 5V | 5V |
| GND | GND | GND |
Note that the ESP32 device gets the power from the Raspberry pi. So you don't need to separate power for device.
Be sure that the serial terminal of the Raspberry Pi is enabled in the config.txt file.
enable_uart=1
After powered up, open up a browser and navigate to webterm.local or the mDNS host address of your choice.
- Current implementation does not handle full set of ANSI codes.
Add mDNS component as dependency
idf.py add-dependency espressif/mdns
Check if your WiFi network does not allow mDNS (modern routers support this by default). You can also get the debug messages using
idf.py monitor
after the flash.

