Hello World with ESP-IDF in VS Code

dev board ESP32-S3-DevKitC-1
chip ESP32-S3-WROOM-1-N8R2
features esp-idf serial esp32s3 vscode

Before starting

Dependancies

Ensure the following requirements are available:

Buy the components

Description

  1. Open VS Code in an empty folder where the hello world code will be created
  2. Access the command pallette in VS Code and type in ESP-IDF. Select Show Examples Projects.
  3. Choose the current ESP-IDF path
  4. Choose the hello_world project and click Click project using example hello_world
  5. Initial boilerplate of files and folders will be created with main/hello_world_main.c
  6. Configure 3 things at the bottom of the IDE’s green status bar
    • Port E.g. /dev/cu.usbmodel14101

    • Device target E.g esp32s3

    • Flash method UART

  7. Click the icon to Build, Flash and Monitor 🔥 And the console will come up after building, compiling and uploading the formware to the board.

Code

Download code
/* Hello World Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"

void app_main(void)
{
    printf("Hello world!\n");

    /* Print chip information */
    esp_chip_info_t chip_info;
    esp_chip_info(&chip_info);
    printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
            CONFIG_IDF_TARGET,
            chip_info.cores,
            (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
            (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

    printf("silicon revision %d, ", chip_info.revision);

    printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
            (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");

    printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size());

    for (int i = 10; i >= 0; i--) {
        printf("Restarting in %d seconds...\n", i);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
    printf("Restarting now.\n");
    fflush(stdout);
    esp_restart();
}

Serial console

Serial output from the firmware.

Hello World with ESP-IDF in VS Code serial console

Prototype

A photo of the actual setup.

Hello World with ESP-IDF in VS Code prototype

References