ESP32-S3 boards
The ESP32-S3 boards use Espressif's ESP32-S3 Wi-Fi microcontroller module, which is based on a Tensilica LX7 32-bit dual-core processor running at 240 MHz, with 512 Kb RAM, up to 16 MB flash, and the option of PSRAM. It supports Wi-Fi 4 and BLE 5.0.
USB CDC
The ESP32-S3 has a USB CDC (Communications Device Class) that can emulate a serial port over USB. This allows the ESP32-S3 to communicate with a PC or other host device via USB without needing a separate USB-to-serial converter.
However, the current implementation of the USB CDC has a problem that causes it to hang up when transferring long messages, such as a uLisp program. Boards that rely on the USB CDC are therefore unsuitable for use with uLisp.
The following boards provide a separate USB-to-serial converter, such as the CP2102N or CH340, and so avoid this problem. These are therefore the only ESP32-S3 boards recommended for use with uLisp.
Boards
Installing uLisp from the Arduino IDE
Install the ESP32 Arduino core
- Add the following URL to the Additional Boards Manager URLs list in the Arduino IDE Preferences dialog box:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
- In the Arduino IDE search for the ESP32 Arduino core in Boards Manager and install it.
I tested this with core version 3.2.0.
- Select ESP32 Arduino from the Board menu, and ESP32S3 Dev Module from the submenu.
For the Waveshare ESP32-S3-Pico set the options as follows:
USB Mode: "Hardware CDC and JTAG"
Flash Size: "16MB (128Mb)"
Partition Scheme: "Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)"
PSRAM: "Disabled"
or, if you want to use PSRAM (more workspace but slightly slower):
PSRAM: "Enabled" (or PSRAM: "QSPI PSRAM")
For the ESP32-S3-DevKitM-1 set the options as follows:
USB Mode: "Hardware CDC and JTAG"
Flash Size: "8MB (64Mb)"
Partition Scheme: "Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)"
PSRAM: "Disabled"
You can leave all the other options at their defaults.
Upload uLisp
- Download release 4.8d or later of the ESP version of uLisp from the Download uLisp page.
- Select the board's USB port from the Port menu.
For the Waveshare ESP32-S3-Pico board there will be two options. Select either for uploading.
- Upload uLisp to the board.
Using uLisp
- On the Waveshare ESP32-S3-Pico board select the option corresponding to the USB-to-serial chip, containing wchusbserial.
- Select Serial Monitor from the Tools menu.
- Enter Lisp commands.
General features
LittleFS and save-image
The ESP32 version of uLisp now uses LittleFS to allow you to save the entire workspace on all ESP32 boards using (save-image).
The first time you call save-image LittleFS allocates the file system, and an error may be displayed such as:
./components/esp_littlefs/src/littlefs/lfs.c:1071:error: Corrupted dir pair at {0x0, 0x1}
E (62578) esp_littlefs: mount failed, (-84)
E (62579) esp_littlefs: Failed to initialize LittleFS
It should subsequently work without error.
Wi-Fi
All these boards support Wi-Fi. For examples of using the Wi-Fi features see Wi-Fi examples, and for reference information see Wi-Fi extensions.
Waveshare ESP32-S3-Pico
The Waveshare ESP32-S3-Pico has 512 KB SRAM, 384 KB ROM, 2 MB PSRAM, and 16 MB Flash memory. It includes a Qinheng CH343 USB-to-serial chip and a CH334 USB hub to provide access to two USB ports from the single USB-C connector. Power is provided by an on-board MP28164 high-efficiency DC-DC buck-boost chip, supplying 3.3 V at up to 2 A [1]:
Pins
For more information see ESP32-S3-Pico on the Waveshare Wiki.
NeoPixel
The ESP32-S3-Pico has a NeoPixel connected to digital pin 21.
Analogue inputs
The ESP32-S3-Pico has analogue inputs on pins 1, 2, and 4 to 18.
Analogue outputs
You can generate an analogue output using PWM on any of the digital pins. The precision is 8 bits.
Serial
The ESP32-S3-Pico has one serial port on pin numbers 44 (RX) and 43 (TX), but these are not accessible on the edge connector.
SPI
The ESP32-S3-Pico has one SPI port on pin numbers 10 (SS), 11 (MOSI), 12 (SCK), and 13 (MISO).
I2C
The ESP32-S3-Pico has one I2C port on pin numbers 8 (SDA) and 9 (SCL).
ESP32-S3-DevKitM-1
This is Espressif's official DevKit board for the ESP32-S3 based on the ESP32-S3-MINI-1 module [2]. It provides 8 Mbytes of flash, 512 KB SRAM, and no PSRAM. A variety of other S3 boards are also available with the options of 32 Mbytes of flash, and 2 Mbytes or 8 Mbytes of PSRAM.
The DevKit S3 boards have two USB connections: the one labelled UART uses a CP2102 USB-to-Serial chip for the serial interface, and the one labelled USB connects to the ESP32-S3's built-in USB CDC interface:
Pins
For more information see ESP32-S3-DevKitM-1 on the Espressif Wiki.
NeoPixel
The ESP32-S3-DevKitM-1 has a NeoPixel connected to digital pin 48.
The Arduino Core lets you use this like a conventional white LED with digitalwrite, so you can blink it with the following program:
(defun blink (&optional x) (digitalwrite :led-builtin x) (delay 1000) (blink (not x)))
Run it by typing:
(blink)
Exit by entering ~.
Analogue inputs
The ESP32-S3-DevKitM-1 has analogue inputs on pins 1 to 20.
Analogue outputs
You can generate an analogue output using PWM on any of the digital pins. The precision is 8 bits.
Serial
The ESP32-S3-DevKitM-1 has one serial port on pin numbers 44 (RX) and 43 (TX).
SPI
The ESP32-S3-DevKitM-1 has one SPI port on pin numbers 10 (SS), 11 (MOSI), 12 (SCK), and 13 (MISO).
I2C
The ESP32-S3-DevKitM-1 has one I2C port on pin numbers 8 (SDA) and 9 (SCL).
- ^ ESP32-S3-Pico on Waveshare.com.
- ^ ESP-S3-DevKitM-1 on Adafruit.