ESP32-S3 DevKit

This is the new board from Espressif, ESP32-S3 DevKit. ESP32-S3 is a dual-core XTensa LX7 MCU, capable of running at 240 MHz. Apart from its 512 KB of internal SRAM, it also comes with integrated 2.4 GHz, 802.11 b/g/n Wi-Fi and Bluetooth 5 (LE) connectivity that provides long-range support. It has 45 programmable GPIOs and supports a rich set of peripherals.

You can work with different software as you can read under Microcontrollers>Software for microcontollers in this web as for example using the Ukrainian software PlatformIO for this board.

Copy and paste the link below into the Additional Boards Manager URLs option in the Arduino IDE preferences. You can follow this videotutorial:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

The next step is to actually install the Board Support Package. Go to the Tools > Board > Board Manager submenu. A dialog should come up with various boards. Search for ESP32.

Click the Install button and wait for it to finish. Once it is finished, you can close the dialog.

In the Tools > Board submenu you should see ESP32 Arduino and in that dropdown it should contain the ESP32 boards along with all the latest ESP32, including ESP-32 S3 Dev Module board.

In the Tools >Boards menu you should see the ESP32 Arduino menu. In the expanded menu, look for the menu option for our board, and click on it to choose it.

Drivers

Below is the list of USB to serial converter chips installed on most of the ESP32 boards produced by Espressif together with links to the drivers:

CP210x: CP210x USB to UART Bridge VCP Drivers

FTDI: FTDI Virtual COM Port Drivers

Please check the board user guide for specific USB-to-UART bridge chip used. The drivers above are primarily for reference. Under normal circumstances, the drivers should be bundled with an operating system and automatically installed upon connecting the board to the PC.

Choose the board, COM port, hold down the BOOT button, click upload and keep your finger on the BOOT button pressed. When the Arduino IDE starts sending the code, you can release the button and wait for the flashing process to be completed. Now, the ESP32 is flashed with the new firmware.

Open the Arduino serial monitor from the icon on the top right or from the tools menu and select Tools > Serial Monitor

Along with the library you will find many examples included to test your ESP32-S3 capabilities.

Remember to check ESP32-S3 in the menu, under Tools>Boards>ESP32S3 Dev Module (a check point must be visible to be sure it is chosen)

Remember to check port under Tools>Port , in Windows COMx, being X a number (in this example COM6 containing a tick symbol).

Hello word example


void setup() {
Serial.begin(115200); // Initialize serial communications with the PC
while (!Serial);
}
void loop() {
Serial.println("Hello World");
delay(1000);
}

Remember to choose a speed of 155200 both in the code and in the Serial monitor.

What would happen if you change the serial instruction from the void loop function to the void setup function?
What would happen if you delete the while instruction?
What would happen if you change the delay instruction argument or parameter from 1000 to 10000?

Testing the connection with a counter variable:

int Counter = 0;
void setup(){
Serial.begin(115200);
}
void loop(){
Serial.print("Counter Value = ");
Serial.println(Counter++);
delay(1000);
}

Testing serial plotter


int Sine_LUT[32] = {128,152,176,198,218,234,245,253,255,253,245,234,218,198,176,152,128,103,79,57,37,21,10,2,0,2,10,21,37,57,79,103};
int i = 0;
void setup(){
  Serial.begin(115200);
} 
void loop(){
  Serial.println(Sine_LUT[i++]);
  if(i == 32)
  {
    i = 0;
  }
  delay(10);
}

Testing the built-in RGB

/* Simple Arduino LED blink example sketch for built-inĀ  RGB 5050 LED on the ESP-S3*/

#define led_r_pin 5
#define led_g_pin 6
#define led_b_pin 7

void setup() {
Serial.begin(115200);

pinMode(led_r_pin, OUTPUT);
pinMode(led_g_pin, OUTPUT);
pinMode(led_b_pin, OUTPUT);
}
void loop() {
for (uint8_t i = 1; i < 8; i++) {
/* Get the rgb bits shifting the counter variable
to the right and then masking with AND 0x1 */
bool r = (i >> 2) & 1;
bool g = (i >> 1) & 1;
bool b = (i >> 0) & 1; //shift 0, I know. Aesthetics and symmetry ;)

Serial.printf("i= %d | rgb bits = r:%d, g:%d, b:%d,\n", i, r, g, b);

digitalWrite(led_r_pin, r);
digitalWrite(led_g_pin, g);
digitalWrite(led_b_pin, b);
delay(1000);
digitalWrite(led_r_pin, LOW);
digitalWrite(led_g_pin, LOW);
digitalWrite(led_b_pin, LOW);
delay(1000);
}
}

Blinking LED

int led = LED_BUILTIN;

void setup() {
// Some boards work best if we also make a serial connection
Serial.begin(115200);

// set LED to be an output pin
pinMode(led, OUTPUT);
}

void loop() {
// Say hi!
Serial.println(“Hello!”);

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a half second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a half second
}



From 16/09/2022 it is possible to use cloud Arduino IDE.