Hello World with ESP-IDF in VS Code

Updated on 22 September 2022
dev board ESP32-S3-DevKitC-1
chip ESP32-S3-WROOM-1-N8R2
features esp-idf serial esp32s3 vscode
This tutorial is more than 1 year old. If the steps below do not work, then please check the latest versions and the documentations of the individual tools used.

Before starting

Dependancies

Ensure the following dependancies are downloaded and available:

Buy the components

Code

Download code hello_world/main/hello_world_main.c
/* 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();
}

Prototype

A photo of the actual setup.

Hello World with ESP-IDF in VS Code prototype

Serial console

Serial output from the firmware.

Hello World with ESP-IDF in VS Code serial console

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.

References