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

Waveshare ESP32-S3-Pico

ESP32-S3-DevKitM-1

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]:

ESP32-S3-Pico.jpg

Pins

ESP32-S3-Pico-pins.gif

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:

DevKitS3.jpg

Pins

ESP32-S3-DevKitM-1Pins.gif

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).


  1. ^ ESP32-S3-Pico on Waveshare.com.
  2. ^ ESP-S3-DevKitM-1 on Adafruit.