Getting started with the Espressif ESP32-WROOM-32SE
Important
This reference integration is hosted on the Amazon-FreeRTOS repository which is deprecated. We recommend that you start here when you create a new project. If you already have an existing FreeRTOS project based on the now deprecated Amazon-FreeRTOS repository, see the Amazon-FreeRTOS Github Repository Migration Guide.
Note
-
To explore how to integrate FreeRTOS modular libraries and demos within your own Espressif IDF project, see our featured reference integration for ESP32-C3 platform
. -
Currently, the FreeRTOS port for ESP32-WROOM-32SE doesn't support the symmetric multiprocessing (SMP) feature.
This tutorial shows you how to get started with the Espressif ESP32-WROOM-32SE. To purchase one from our partner
on the Amazon Partner Device catalog, see ESP32-WROOM-32SE
Overview
This tutorial guides you through the following steps:
-
Connect your board to a host machine.
-
Install software on your host machine to develop and debug embedded applications for your microcontroller board.
-
Cross compile a FreeRTOS demo application to a binary image.
-
Load the application binary image to your board, and then run the application.
-
Monitor and debug the running application by using a serial connection.
Prerequisites
Before you get started with FreeRTOS on your Espressif board, you must set up your Amazon account and permissions.
Sign up for an Amazon Web Services account
If you do not have an Amazon Web Services account, use the following procedure to create one.
To sign up for Amazon Web Services
Open http://www.amazonaws.cn/
and choose Sign Up. Follow the on-screen instructions.
Amazon sends you a confirmation email after the sign-up process is
complete. At any time, you can view your current account activity and manage your account by
going to http://www.amazonaws.cn/
Secure IAM users
After you sign up for an Amazon Web Services account, safeguard your administrative user by turning on multi-factor authentication (MFA). For instructions, see Enable a virtual MFA device for an IAM user (console) in the IAM User Guide.
To give other users access to your Amazon Web Services account resources, create IAM users. To secure your IAM users, turn on MFA and only give the IAM users the permissions needed to perform their tasks.
For more information about creating and securing IAM users, see the following topics in the IAM User Guide:
To provide access, add permissions to your users, groups, or roles:
-
Users managed in IAM through an identity provider:
Create a role for identity federation. Follow the instructions in Create a role for a third-party identity provider (federation) in the IAM User Guide.
-
IAM users:
-
Create a role that your user can assume. Follow the instructions in Create a role for an IAM user in the IAM User Guide.
-
(Not recommended) Attach a policy directly to a user or add a user to a user group. Follow the instructions in Adding permissions to a user (console) in the IAM User Guide.
-
Get started
Note
The Linux commands in this tutorial require that you use the Bash shell.
-
Set up the Espressif hardware.
For information about setting up the ESP32-WROOM-32SE development board hardware, see the ESP32-DevKitC V4 Getting Started Guide
. Important
When you reach the Installation Step by Step section of the guide, follow till you complete Step 4 (Set up the environment variables). Stop after you complete Step 4 and follow the remaining steps here.
-
Download Amazon FreeRTOS from GitHub
. (For instructions, see the README.md file.) -
Set up your development environment.
To communicate with your board, you must install a toolchain. Espressif provides the ESP-IDF to develop software for their boards. Since the ESP-IDF has its own version of the FreeRTOS Kernel integrated as a component, Amazon FreeRTOS includes a custom version of the ESP-IDF v4.2 that has the FreeRTOS Kernel removed. This fixes problems with duplicate files when you compile. To use the custom version of the ESP-IDF v4.2 included with Amazon FreeRTOS, follow the instructions below for your host machine's operating system.
Windows
-
Download ESP-IDF's Universal Online Installer
for Windows. -
Run the Universal Online Installer.
-
When you get to the step Download or use ESP-IDF, select Use an existing ESP-IDF directory and set Choose existing ESP-IDF directory to
.freertos
/vendors/espressif/esp-idf -
Complete the installation.
macOS
-
Follow the instructions in the Standard Setup of Toolchain prerequisites (ESP-IDF v4.2) for macOS
. Important
When you reach the "Get ESP-IDF" instructions under Next Steps, stop, and then return to the instructions on this page.
-
Open a command line window.
-
Navigate to the FreeRTOS download directory, and then run the following script to download and install the espressif toolchain for your platform.
vendors/espressif/esp-idf/install.sh
-
Add the ESP-IDF toolchain tools to your terminal's path with the following command.
source vendors/espressif/esp-idf/export.sh
Linux
-
Follow the instructions in the Standard Setup of Toolchain prerequisites (ESP-IDF v4.2) for Linux
. Important
When you reach the "Get ESP-IDF" instructions under Next Steps, stop, and then return to the instructions on this page.
-
Open a command line window.
-
Navigate to the FreeRTOS download directory, and then run the following script to download and install the Espressif toolchain for your platform.
vendors/espressif/esp-idf/install.sh
-
Add the ESP-IDF toolchain tools to your terminal's path with the following command.
source vendors/espressif/esp-idf/export.sh
-
-
Establish a serial connection.
-
To establish a serial connection between your host machine and the ESP32-WROOM-32SE, install the CP210x USB to UART Bridge VCP drivers. You can download these drivers from Silicon Labs
. -
Follow the steps to Establish a Serial Connection with ESP32
. -
After you establish a serial connection, make a note of the serial port for your board's connection. You need it to flash the demo.
-
Configure the FreeRTOS demo applications
For this tutorial, the FreeRTOS configuration file is located at
.
(For example, if freertos
/vendors/espressif/boards/board-name
/aws_demos/config_files/FreeRTOSConfig.hAFR_BOARD espressif.esp32_devkitc
is chosen, the configuration file is
located at
.)
freertos
/vendors/espressif/boards/esp32/aws_demos/config_files/FreeRTOSConfig.h
Important
The ATECC608A device has a one-time initialization that is locked onto the device the first time
a project is run (during the call to C_InitToken
). However, the FreeRTOS demo project
and test project have different configurations. If the device is locked during the demo project
configurations, not all tests in the test project will succeed.
-
Configure the FreeRTOS Demo Project by following the steps in Configuring the FreeRTOS demos. When you get to the last step To format your Amazon IoT credentials, stop, and perform the following steps.
-
Microchip has provided several scripting tools to help with the setup of the ATECC608A parts. Navigate to the
directory, and open thefreertos
/vendors/microchip/example_trust_chain_toolREADME.md
file. -
To provision your device, follow the instructions in the
README.md
file. The steps include the following:-
Create and register a certificate authority with Amazon.
-
Generate your keys on the ATECC608A and export the public key and device serial number.
-
Generate a certificate for the device and register that certificate with Amazon.
-
-
Load the CA certificate and device certificate onto the device by following the instructions for Developer-mode key provisioning.
Monitoring MQTT messages on the Amazon Cloud
Before you run the FreeRTOS demo project, you can set up the MQTT client in the Amazon IoT console to monitor the messages that your device sends to the Amazon Cloud.
To subscribe to the MQTT topic with the Amazon IoT MQTT client
-
Sign in to the Amazon IoT console
. -
In the navigation pane, choose Test, then choose MQTT Test Client.
-
In Subscription topic, enter
and then choose Subscribe to topic.your-thing-name
/example/topic
Build, flash, and run the FreeRTOS demo project using the idf.py script
You can use Espressif's IDF utility (idf.py
) to generate the build files, build the
application binary, and flash the binaries onto your device.
Note
Some setups might require that you use the port option "-p port-name
" with
idf.py
to specify the correct port, as in the following example.
idf.py -p /dev/cu.usbserial-00101301B flash
Build and flash FreeRTOS on Windows, Linux, and macOS (ESP-IDF v4.2)
-
Navigate to the root of your FreeRTOS download directory.
-
In a command line window, enter the following command to add the ESP-IDF tools to your terminal's PATH:
- Windows ("Command" app)
-
vendors\espressif\esp-idf\export.bat
- Windows ("ESP-IDF 4.x CMD" app)
-
(This has already been done when you opened the app.)
- Linux / macOS
-
source vendors/espressif/esp-idf/export.sh
-
Configure cmake in the
build
directory and build the firmware image with the following command.idf.py -DVENDOR=espressif -DBOARD=esp32_ecc608a_devkitc -DCOMPILER=xtensa-esp32 build
You should see output like this following example.
Running cmake in directory /path/to/hello_world/build Executing "cmake -G Ninja --warn-uninitialized /path/to/hello_world"... Warn about uninitialized values. -- Found Git: /usr/bin/git (found version "2.17.0") -- Building empty aws_iot component due to configuration -- Component names: ... -- Component paths: ... ... (more lines of build system output) [527/527] Generating hello-world.bin esptool.py v2.3.1 Project build complete. To flash, run this command: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x10000 build/hello-world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin or run 'idf.py -p PORT flash'
If there are no errors, the build will generate the firmware binary .bin files.
-
Erase your development board's flash memory with the following command.
idf.py erase_flash
-
Use the
idf.py
script to flash the application binary to your board.idf.py flash
-
Monitor the output from your board's serial port with the following command.
idf.py monitor
Note
-
You can combine these commands as in the following example.
idf.py erase_flash flash monitor
-
For certain host machine setups, you must specify the port when you flash the board as in the following example.
idf.py erase_flash flash monitor -p /dev/ttyUSB1
-
Build and Flash FreeRTOS with CMake
Besides using the idf.py
script provided by the IDF SDK to build and run your code,
you can also build the project with CMake. Currently it supports Unix Makefile and the Ninja build
system.
To build and flash the project
-
In a command line window, navigate to the root of your FreeRTOS download directory.
-
Run the following script to add the ESP-IDF tools to your shell's PATH.
- Windows
-
vendors\espressif\esp-idf\export.bat
- Linux / macOS
-
source vendors/espressif/esp-idf/export.sh
-
Enter the following command to generate the build files.
- With Unix Makefiles
-
cmake -DVENDOR=espressif -DBOARD=esp32_plus_ecc608a_devkitc -DCOMPILER=xtensa-esp32 -S . -B ./
YOUR_BUILD_DIRECTORY
-DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 - With Ninja
-
cmake -DVENDOR=espressif -DBOARD=esp32_plus_ecc608a_devkitc -DCOMPILER=xtensa-esp32 -S . -B ./
YOUR_BUILD_DIRECTORY
-DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 -GNinja
-
Erase the flash and then flash the board.
- With Unix Makefiles
-
make -C ./
YOUR_BUILD_DIRECTORY
erase_flashmake -C ./
YOUR_BUILD_DIRECTORY
flash - With Ninja
-
ninja -C ./
YOUR_BUILD_DIRECTORY
erase_flashninja -C ./
YOUR_BUILD_DIRECTORY
flash
Additional information
For more information about using and troubleshooting Espressif ESP32 boards, see the following topics: