Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cómo empezar con el Espressif ESP32 - DevKit C y el ESP-WROVER-KIT
importante
Esta integración de referencia está alojada en el RTOS repositorio Amazon Free, que está en desuso. Recomendamos empezar por aquí al crear un nuevo proyecto. Si ya tienes un RTOS proyecto gratuito basado en el RTOS repositorio de Amazon Free, ahora obsoleto, consulta la. Guía de migración al repositorio RTOS Github gratuito de Amazon
nota
Para descubrir cómo integrar bibliotecas RTOS modulares gratuitas y demos en tu propio IDF proyecto de Espressif, consulta nuestra integración de referencia destacada
Sigue este tutorial para empezar con el Espressif ESP32 - DevKit C equipado con los módulos WROOM -32, ESP32 -1 o ESP32 - y el. SOLO ESP WROVER ESP-WROVER-KIT-VB Para comprar uno de nuestros socios en el catálogo de dispositivos AWS asociados, utilice los siguientes enlaces:
Estas versiones de placas de desarrollo son compatibles con FreeRTOS.
Para obtener más información sobre las versiones más recientes de estas placas, consulte ESP32DevKitC V4
nota
Actualmente, el RTOS puerto gratuito para ESP32 - WROVER - KIT y ESP DevKit C no admite la función de multiprocesamiento simétrico (). SMP
Información general
Este tutorial le guiará a través de los siguientes pasos:
-
Conexión de su placa a un equipo host.
-
Instalación de software en el equipo host para desarrollar y depurar las aplicaciones integradas de la placa de su microcontrolador.
-
Compilación cruzada de una aplicación de RTOS demostración gratuita con una imagen binaria.
-
Carga de la imagen binaria de la aplicación en su placa y, a continuación, ejecución de la aplicación.
-
Interacción con la aplicación que se ejecuta en la placa con una conexión serie para fines de monitorización y depuración.
Requisitos previos
Antes de empezar a usar Free RTOS en tu tarjeta Espressif, debes configurar tu cuenta y tus AWS permisos.
Inscríbase para obtener una Cuenta de AWS
Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.
Para suscribirse a una Cuenta de AWS
Abrir https://portal.aws.amazon.com/billing/registro
. Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.
Cuando te registras en un Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea un. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.
AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. En cualquier momento, puede ver la actividad de su cuenta actual y administrarla accediendo a https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.
Proteja su Usuario raíz de la cuenta de AWS
-
Inicie sesión AWS Management Console
como propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña. Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .
-
Activa la autenticación multifactorial (MFA) para tu usuario root.
Para obtener instrucciones, consulte Habilitar un MFA dispositivo virtual para el usuario Cuenta de AWS root (consola) en la Guía del IAM usuario.
Creación de un usuario con acceso administrativo
-
Habilite IAM Identity Center.
Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center .
-
En IAM Identity Center, conceda acceso administrativo a un usuario.
Para ver un tutorial sobre cómo usar el Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.
Iniciar sesión como usuario con acceso de administrador
-
Para iniciar sesión con su usuario de IAM Identity Center, utilice el inicio de sesión URL que se envió a su dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.
Concesión de acceso a usuarios adicionales
-
En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos con privilegios mínimos.
Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center .
-
Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.
Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center .
Para dar acceso, agregue permisos a los usuarios, grupos o roles:
-
Usuarios y grupos en AWS IAM Identity Center:
Cree un conjunto de permisos. Siga las instrucciones de Creación de un conjunto de permisos en la Guía del usuario de AWS IAM Identity Center .
-
Usuarios gestionados IAM a través de un proveedor de identidad:
Cree un rol para la federación de identidades. Siga las instrucciones de la Guía del IAM usuario sobre cómo crear un rol para un proveedor de identidades externo (federación).
-
IAMusuarios:
-
Cree un rol que el usuario pueda aceptar. Siga las instrucciones de la Guía del IAMusuario sobre cómo crear un rol para un IAM usuario.
-
(No recomendado) Adjunte una política directamente a un usuario o añada un usuario a un grupo de usuarios. Siga las instrucciones de Añadir permisos a un usuario (consola) de la Guía del IAM usuario.
-
Introducción
nota
Los comandos de Linux de este tutorial requieren que utilice el intérprete de comandos Bash.
-
Configure el hardware de Espressif.
-
Para obtener información sobre cómo configurar el hardware de la placa de desarrollo ESP32 - DevKit C, consulte la Guía de introducción a ESP32 - DevKit C V4
. -
Para obtener información sobre cómo configurar el hardware de la placa de ESP-WROVER-KIT desarrollo, consulte la Guía de ESP-WROVER-KIT introducción a la versión 4.1
.
importante
Cuando llegue a la sección Introducción de las guías de Espressif, deténgase y vuelva a las instrucciones en esta página.
-
-
Descarga Amazon gratis RTOS desde GitHub
. (Para obtener instrucciones, consulte el READMEarchivo.md) . -
Configure el entorno de desarrollo.
Debe instalar una cadena de herramientas para comunicarse con la placa. Espressif proporciona el ESP software necesario IDF para desarrollar software para sus placas. Como el ESP - IDF tiene su propia versión del RTOS kernel gratuito integrada como componente, Amazon Free RTOS incluye una versión personalizada del ESP - IDF v4.2 en la que se ha eliminado el RTOS kernel gratuito. Esto soluciona los problemas relacionados con los archivos duplicados al compilar. Para usar la versión personalizada de la ESP IDF versión 4.2 incluida en Amazon FreeRTOS, sigue las instrucciones que aparecen a continuación para el sistema operativo de tu máquina host.
Windows
-
Descargue ESP el IDF instalador universal en línea
para Windows. -
Ejecute el instalador en línea universal.
-
Cuando llegues al paso Descargar o usar ESP - IDF, selecciona Usar un IDF directorio existente ESP y establece Elegir IDF directorio existente ESP en
.freertos
/vendors/espressif/esp-idf -
Complete la instalación.
macOS
-
Siga las instrucciones de la configuración estándar de los requisitos previos de la cadena de herramientas (ESP- IDF v4.2) para macOS
. importante
Cuando llegue a las instrucciones «Obtener ESP -IDF» de la sección Pasos siguientes, deténgase y, a continuación, vuelva a las instrucciones de esta página.
-
Abra una ventana de línea de comandos.
-
Navegue hasta el directorio de RTOS descargas gratuitas y, a continuación, ejecute el siguiente script para descargar e instalar la cadena de herramientas espressif para su plataforma.
vendors/espressif/esp-idf/install.sh
-
Añada las herramientas de la IDF cadena de herramientas ESP - a la ruta de su terminal con el siguiente comando.
source vendors/espressif/esp-idf/export.sh
Linux
-
Siga las instrucciones de la configuración estándar de los requisitos previos de la cadena de herramientas (ESP- IDF v4.2
) para Linux. importante
Cuando llegue a las instrucciones «Obtener ESP -IDF» de la sección Próximos pasos, deténgase y, a continuación, vuelva a las instrucciones de esta página.
-
Abra una ventana de línea de comandos.
-
Navegue hasta el directorio de RTOS descargas gratuitas y ejecute el siguiente script para descargar e instalar la cadena de herramientas de Espressif para su plataforma.
vendors/espressif/esp-idf/install.sh
-
Añada las herramientas de la IDF cadena de herramientas ESP - a la ruta de su terminal con el siguiente comando.
source vendors/espressif/esp-idf/export.sh
-
-
Establezca una conexión serie.
-
Para establecer una conexión en serie entre su máquina host y el ESP32 - DevKit C, debe instalar los controladores CP21 0x USB to UART BridgeVCP. Puede descargar estos controladores de Silicon Labs
. Para establecer una conexión en serie entre la máquina host y el ESP32 - WROVER -KIT, debe instalar el controlador del COM puerto FTDI virtual. Puede descargar este controlador desde FTDI
. -
Siga los pasos para establecer una conexión en serie con ESP32
. -
Después de establecer una conexión serie, anote el puerto serie de la conexión de la placa. Lo necesita para instalar la demostración.
-
Configure las aplicaciones de RTOS demostración gratuitas
Para este tutorial, el archivo RTOS de configuración gratuito se encuentra en
. (Por ejemplo, si se elige freertos
/vendors/espressif/boards/board-name
/aws_demos/config_files/FreeRTOSConfig.hAFR_BOARD espressif.esp32_devkitc
, el archivo de configuración se encuentra en
). freertos
/vendors/espressif/boards/esp32/aws_demos/config_files/FreeRTOSConfig.h
-
Si ejecuta macOS o Linux, abra un símbolo del terminal. Si utiliza Windows, abra la aplicación "ESP- IDF 4.xCMD" (si incluyó esta opción al instalar la IDF cadena de herramientas ESP -) o la aplicación «Command Prompt» en caso contrario.
-
Para verificar que tiene instalado Python3, ejecute
python --version
Se muestra la versión instalada. Si no tiene instalado Python 3.0.1 o una versión posterior, puede instalarlo desde el sitio web de Python
. -
Necesita la interfaz de línea de AWS comandos (CLI) para ejecutar AWS IoT los comandos. Si utilizas Windows, usa el
easy_install awscli
comando para instalarlo AWS CLI en la aplicación «Command» o «ESP- IDF 4.xCMD».Si utilizas macOS o Linux, consulta Instalación del AWS CLI.
-
Ejecute
aws configure
y AWS CLI configúrelo con su AWS ID de clave de acceso, clave de acceso secreta y AWS región predeterminada. Para obtener más información, consulte Configuración de AWS CLI.
-
Utilice el siguiente comando para instalar AWS SDK para Python (boto3):
-
En Windows, en la aplicación «Command» o «ESP- IDF 4.xCMD», ejecute
pip install boto3 --user
nota
Consulte la Documentación de Boto3
para obtener más detalles. -
En macOS o Linux, ejecute
pip install tornado nose --user
y, a continuación, ejecute
pip install boto3 --user
La RTOS versión gratuita incluye el
SetupAWS.py
script para facilitar la configuración de la placa Espressif a la que conectarse. AWS IoT Para configurar el script, abra
y defina los siguientes atributos:freertos
/tools/aws_config_quick_start/configure.jsonafr_source_dir
-
Ruta completa del directorio
de su equipo. Asegúrese de que utiliza barras diagonales para especificar esta ruta.freertos
thing_name
-
El nombre que quieres asignar a la AWS IoT cosa que representa tu pizarra.
wifi_ssid
-
La SSID de tu red wifi.
wifi_password
-
La contraseña para su red wifi.
wifi_security
-
El tipo de seguridad para su red wifi.
Los siguientes son tipos de seguridad válidos:
-
eWiFiSecurityOpen
(abierta, sin seguridad) -
eWiFiSecurityWEP
(WEPseguridad) -
eWiFiSecurityWPA
(WPAseguridad) -
eWiFiSecurityWPA2
(WPA2seguridad)
-
-
-
Ejecute el script de configuración.
-
Si ejecuta macOS o Linux, abra un símbolo del terminal. Si utilizas Windows, abre la aplicación "ESP- IDF 4.xCMD" o «Command».
-
Vaya al directorio
y ejecutefreertos
/tools/aws_config_quick_startpython SetupAWS.py setup
El script hace lo siguiente:
-
Crea un objeto de IoT, un certificado y una política.
-
Asocia la política de IoT al certificado y el certificado al objeto de AWS IoT .
-
Rellena el
aws_clientcredential.h
archivo con tu AWS IoT terminal, tu red Wi-Fi y tus SSID credenciales. -
Formatea el certificado y la clave privada y los escribe en el archivo de encabezado
aws_clientcredential_keys.h
.
nota
El certificado tiene codificación fija únicamente con fines ilustrativos. Las aplicaciones de producción deben almacenar estos archivos en un lugar seguro.
Para obtener más información sobre
SetupAWS.py
, consulte el archivoREADME.md
en el directorio
.freertos
/tools/aws_config_quick_start -
-
Supervisar MQTT los mensajes en la nube
Antes de ejecutar el proyecto de RTOS demostración gratuita, puede configurar el MQTT cliente en la AWS IoT consola para que supervise los mensajes que su dispositivo envía a la AWS nube.
Para suscribirse al MQTT tema con el AWS IoT MQTT cliente
-
Vaya a la consola de AWS IoT
. -
En el panel de navegación, selecciona Probar y, a continuación, selecciona MQTTTest Client.
-
En Tema de suscripción, escriba
y, a continuación, elija Suscribirse al tema.your-thing-name
/example/topic
Cuando el proyecto de demostración se ejecute correctamente en su dispositivo, verá el mensaje “¡Hola, mundo!” enviado varias veces al tema al que se ha suscrito.
Cree, actualice y ejecute el proyecto de RTOS demostración gratuita con el script idf.py
Puedes usar la IDF utilidad de Espressif (idf.py
) para crear el proyecto y guardar los archivos binarios en tu dispositivo.
nota
Algunas configuraciones pueden requerir que utilice la opción de puerto "-p port-name"
con idf.py
para especificar el puerto correcto, como en el siguiente ejemplo.
idf.py -p /dev/cu.usbserial-00101301B flash
Compila y RTOS flashea gratis en Windows, Linux y macOS (ESP- IDF v4.2)
-
Navega hasta la raíz de tu directorio de RTOS descargas gratuitas.
-
En una ventana de línea de comandos, introduce el siguiente comando para añadir las IDF herramientas ESP - a la de tu terminalPATH.
- Windows (aplicación “Comando”)
-
vendors\espressif\esp-idf\export.bat
- Windows (aplicación «ESP- IDF 4.xCMD»)
-
(Esto ya se hizo cuando abrió aplicación).
- Linux/macOS
-
source vendors/espressif/esp-idf/export.sh
-
Configure cmake en el directorio
build
y cree la imagen del firmware con el siguiente comando.idf.py -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 build
Debería ver un resultado como el siguiente.
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'
Si no hay errores, la creación generará los archivos .bin binarios del firmware.
-
Borre la memoria flash de la placa de desarrollo con el siguiente comando.
idf.py erase_flash
-
Utilice el script
idf.py
para instalar el archivo binario de la aplicación en la placa.idf.py flash
-
Supervise la salida del puerto serie de la placa con el siguiente comando.
idf.py monitor
nota
Puede combinar estos comandos como se muestra en el siguiente ejemplo.
idf.py erase_flash flash monitor
Para determinadas configuraciones de máquinas host, debe especificar el puerto en el que se va a instalar la placa, como en el siguiente ejemplo.
idf.py erase_flash flash monitor -p /dev/ttyUSB1
Compila y flashea gratis con RTOS CMake
Además del idf.py
script proporcionado por el para IDF SDK compilar y ejecutar tu código, también puedes compilar el proyecto con élCMake. Actualmente es compatible con Unix Makefiles y el sistema de creación Ninja.
Creación e instalación del proyecto
-
En una ventana de línea de comandos, navega hasta la raíz de tu directorio de RTOS descargas gratuitas.
-
Ejecuta el siguiente script para añadir las IDF herramientas ESP - a tu shellPATH.
- Windows
-
vendors\espressif\esp-idf\export.bat
- Linux/macOS
-
source vendors/espressif/esp-idf/export.sh
-
Utilice el siguiente comando para generar los archivos de creación.
- Con Unix Makefiles
-
cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0
- Con Ninja
-
cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 -GNinja
-
Compilar el proyecto.
- Con Unix Makefiles
-
make -C ./YOUR_BUILD_DIRECTORY -j8
- Con Ninja
-
ninja -C ./YOUR_BUILD_DIRECTORY -j8
-
Borre la instalación y, a continuación, instale la placa.
- Con Unix Makefiles
-
make -C ./YOUR_BUILD_DIRECTORY erase_flash
make -C ./YOUR_BUILD_DIRECTORY flash
- Con Ninja
-
ninja -C ./YOUR_BUILD_DIRECTORY erase_flash
ninja -C ./YOUR_BUILD_DIRECTORY flash
Ejecución de las demostraciones de Bluetooth de bajo consumo
Free RTOS admite Biblioteca de Bluetooth de bajo consumo conectividad.
Para ejecutar el proyecto de RTOS demostración gratuita en Bluetooth Low Energy, debe ejecutar la aplicación de SDK demostración móvil gratuita RTOS Bluetooth Low Energy en un dispositivo móvil iOS o Android.
Para configurar la aplicación de SDK demostración móvil gratuita de RTOS Bluetooth Low Energy
-
Siga las instrucciones SDK para móviles para dispositivos Bluetooth de FreeRTOS para descargar e instalar la SDK plataforma móvil en su ordenador anfitrión.
-
Siga las instrucciones en Aplicación de demostración de SDK para móviles de Bluetooth de bajo consumo de FreeRTOS para configurar la aplicación móvil de demostración en su dispositivo móvil.
Para obtener instrucciones sobre cómo ejecutar la demostración MQTT con Bluetooth Low Energy en su placa, consulteMQTT a través de Bluetooth de bajo consumo.
Para obtener instrucciones sobre cómo ejecutar la demostración de aprovisionamiento wifi en la placa, consulte Aprovisionamiento Wi-Fi.
Usa Free RTOS en tu propio CMake proyecto para ESP32
Si quieres usar Free RTOS en tu propio CMake proyecto, puedes configurarlo como un subdirectorio y compilarlo junto con tu aplicación. Primero, obtén una copia de Free RTOS from GitHub
git submodule add -b release https://github.com/aws/amazon-freertos.git freertos
Si se publica una versión más reciente, puede actualizar su copia local con estos comandos.
# Pull the latest changes from the remote tracking branch. git submodule update --remote -- freertos
# Commit the submodule change because it is pointing to a different revision now. git add freertos
git commit -m "Update FreeRTOS to a new release"
Si el proyecto tiene la siguiente estructura de directorios:
- freertos (the copy that you obtained from GitHub or the AWS IoT console) - src - main.c (your application code) - CMakeLists.txt
Luego, el siguiente es un ejemplo del CMakeLists.txt
archivo de nivel superior que se puede usar para crear su aplicación junto con FreeRTOS.
cmake_minimum_required(VERSION 3.13) project(freertos_examples) # Tell IDF build to link against this target. set(IDF_EXECUTABLE_SRCS "<complete_path>/src/main.c") set(IDF_PROJECT_EXECUTABLE my_app) # Add FreeRTOS as a subdirectory. AFR_BOARD tells which board to target. set(AFR_BOARD espressif.esp32_devkitc CACHE INTERNAL "") add_subdirectory(freertos) # Link against the mqtt library so that we can use it. Dependencies are transitively # linked. target_link_libraries(my_app PRIVATE AFR::core_mqtt)
Para compilar el proyecto, ejecuta los siguientes CMake comandos. Asegúrese de que el ESP32 compilador esté en la variable de PATH entorno.
cmake -S . -B build-directory -DCMAKE_TOOLCHAIN_FILE=freertos/tools/cmake/toolchains/xtensa-esp32.cmake -GNinja
cmake --build build-directory
Para instalar la aplicación en su placa, ejecute el siguiente comando.
cmake --build build-directory --target flash
Uso de componentes de Free RTOS
Después de CMake ejecutarlo, puede encontrar todos los componentes disponibles en el resultado resumido. Debería parecerse al siguiente ejemplo.
====================Configuration for FreeRTOS==================== Version: 202107.00 Git version: 202107.00-g79ad6defb Target microcontroller: vendor: Espressif board: ESP32-DevKitC description: Development board produced by Espressif that comes in two variants either with ESP-WROOM-32 or ESP32-WROVER module family: ESP32 data ram size: 520KB program memory size: 4MB Host platform: OS: Linux-4.15.0-66-generic Toolchain: xtensa-esp32 Toolchain path: /opt/xtensa-esp32-elf CMake generator: Ninja FreeRTOS modules: Modules to build: backoff_algorithm, common, common_io, core_http, core_http_demo_dependencies, core_json, core_mqtt, core_mqtt_agent, core_mqtt_agent_demo_dependencies, core_mqtt_demo_dependencies, crypto, defender, dev_mode_key_ provisioning, device_defender, device_defender_demo_ dependencies, device_shadow, device_shadow_demo_dependencies, freertos_cli_plus_uart, freertos_plus_cli, greengrass, http_demo_helpers, https, jobs, jobs_demo_dependencies, kernel, logging, mqtt, mqtt_agent_interface, mqtt_demo_ helpers, mqtt_subscription_manager, ota, ota_demo_ dependencies, ota_demo_version, pkcs11, pkcs11_helpers, pkcs11_implementation, pkcs11_utils, platform, secure_sockets, serializer, shadow, tls, transport_interface_secure_sockets, wifi Enabled by user: common_io, core_http_demo_dependencies, core_json, core_mqtt_agent_demo_dependencies, core_mqtt_demo_ dependencies, defender, device_defender, device_defender_demo_ dependencies, device_shadow, device_shadow_demo_dependencies, freertos_cli_plus_uart, freertos_plus_cli, greengrass, https, jobs, jobs_demo_dependencies, logging, ota_demo_dependencies, pkcs11, pkcs11_helpers, pkcs11_implementation, pkcs11_utils, platform, secure_sockets, shadow, wifi Enabled by dependency: backoff_algorithm, common, core_http, core_mqtt, core_mqtt_agent, crypto, demo_base, dev_mode_key_provisioning, freertos, http_demo_helpers, kernel, mqtt, mqtt_agent_ interface, mqtt_demo_helpers, mqtt_subscription_manager, ota, ota_demo_version, pkcs11_mbedtls, serializer, tls, transport_interface_secure_sockets, utils 3rdparty dependencies: jsmn, mbedtls, pkcs11, tinycbor Available demos: demo_cli_uart, demo_core_http, demo_core_mqtt, demo_core_mqtt_ agent, demo_device_defender, demo_device_shadow, demo_greengrass_connectivity, demo_jobs, demo_ota_core_http, demo_ota_core_mqtt, demo_tcp Available tests: =========================================================================
Puede hacer referencia a cualquier componente de la lista Modules to build
. Para vincularlos a su aplicación, coloque el espacio de nombres AFR::
delante del nombre (por ejemplo, AFR::core_mqtt
, AFR::ota
, etc.).
Añada componentes personalizados mediante ESP - IDF
Puede añadir más componentes mientras usa ESP -IDF. Por ejemplo, suponiendo que desea añadir un componente llamado example_component
y su proyecto tiene el siguiente aspecto:
- freertos - components - example_component - include - example_component.h - src - example_component.c - CMakeLists.txt - src - main.c - CMakeLists.txt
A continuación, se muestra un ejemplo del archivo CMakeLists.txt
de su componente.
add_library(
example_component
src/example_component.c
) target_include_directories(example_component
PUBLIC include)
A continuación, en el archivo CMakeLists.txt
de nivel superior, añada el componente insertando la siguiente línea justo después de add_subdirectory(freertos)
.
add_subdirectory(
component/example_component
)
A continuación, modifique target_link_libraries
para incluir su componente.
target_link_libraries(my_app PRIVATE AFR::core_mqtt PRIVATE
example_component
)
Este componente ahora se vincula automáticamente al código de la aplicación de forma predeterminada. Ahora puede incluir sus archivos de encabezado y llamar a las funciones que define.
Anule las configuraciones de forma gratuita RTOS
Actualmente, no existe un enfoque bien definido para redefinir las configuraciones fuera del árbol de fuentes gratuitas. RTOS De forma predeterminada, CMake buscará los directorios y. freertos
/vendors/espressif/boards/esp32/aws_demos/config_files/
Sin embargo, puede usar una solución alternativa para indicar al compilador que busque primero en otros directorios. Por ejemplo, puede añadir otra carpeta para RTOS las configuraciones gratuitas.freertos
/demos/include/
- freertos - freertos-configs - aws_clientcredential.h - aws_clientcredential_keys.h - iot_mqtt_agent_config.h - iot_config.h - components - src - CMakeLists.txt
Los archivos de freertos-configs
se copian de los directorios
y freertos
/vendors/espressif/boards/esp32/aws_demos/config_files/
. A continuación, en el archivo de nivel superior freertos
/demos/include/CMakeLists.txt
, agregue esta línea delante de add_subdirectory(freertos)
para que el compilador busque primero en este directorio.
include_directories(BEFORE freertos-configs)
Proporcionar su propio sdkconfig para - ESP IDF
En caso de que quieras proporcionar la tuya propiasdkconfig.default
, puedes configurar la CMake variable IDF_SDKCONFIG_DEFAULTS
desde la línea de comandos:
cmake -S . -B build-directory -DIDF_SDKCONFIG_DEFAULTS=path_to_your_sdkconfig_defaults -DCMAKE_TOOLCHAIN_FILE=freertos/tools/cmake/toolchains/xtensa-esp32.cmake -GNinja
Si no especificas una ubicación para tu propio sdkconfig.default
archivo, Free RTOS utilizará el archivo predeterminado ubicado en
.freertos
/vendors/espressif/boards/esp32/aws_demos/sdkconfig.defaults
Para obtener más información, consulte Configuración del proyecto
Resumen
Si tiene un proyecto con un componente llamado example_component
y desea invalidar algunas configuraciones, aquí tiene un ejemplo completo del archivo CMakeLists.txt
de nivel superior.
cmake_minimum_required(VERSION 3.13) project(freertos_examples) set(IDF_PROJECT_EXECUTABLE my_app) set(IDF_EXECUTABLE_SRCS "src/main.c") # Tell IDF build to link against this target. set(IDF_PROJECT_EXECUTABLE my_app) # Add some extra components. IDF_EXTRA_COMPONENT_DIRS is a variable used by ESP-IDF # to collect extra components. get_filename_component( EXTRA_COMPONENT_DIRS "components/example_component" ABSOLUTE ) list(APPEND IDF_EXTRA_COMPONENT_DIRS ${EXTRA_COMPONENT_DIRS}) # Override the configurations for FreeRTOS. include_directories(BEFORE freertos-configs) # Add FreeRTOS as a subdirectory. AFR_BOARD tells which board to target. set(AFR_BOARD espressif.esp32_devkitc CACHE INTERNAL "") add_subdirectory(freertos) # Link against the mqtt library so that we can use it. Dependencies are transitively # linked. target_link_libraries(my_app PRIVATE AFR::core_mqtt)
Resolución de problemas
-
Si utilizas macOS y el sistema operativo no te reconoce ESP-WROVER-KIT, asegúrate de no tener instalados los controladores D2XX. Para desinstalarlos, sigue las instrucciones de la Guía de instalación de FTDI controladores para macOS X.
-
La utilidad de monitorización proporcionada por ESP - IDF (e invocada mediante make monitor) te ayuda a decodificar direcciones. Por este motivo, puede ayudarle a obtener algunos rastreos inversos significativos en caso de que se produzca el bloqueo de la aplicación. Para obtener más información, consulte Descodificación automática de direcciones
en el sitio web de Espressif. -
También es posible habilitar GDBstub la comunicación con gdb sin necesidad de ningún hardware especialJTAG. Para obtener más información, consulte Lanzar GDB con GDBStub
en el sitio web de Espressif. -
Si no es posible instalar
pyserial
utilizandopip
en macOS, descárguelo del sitio web de pyserial. -
Si la placa se restablece de forma continua, intente borrar la instalación escribiendo el siguiente comando en el terminal.
make erase_flash
-
Si ve errores al ejecutar
idf_monitor.py
, utilice Python 2.7. -
Las bibliotecas obligatorias de ESP - IDF están incluidas en la versión gratuitaRTOS, por lo que no es necesario descargarlas de forma externa. Si la variable de
IDF_PATH
entorno está configurada, le recomendamos que la borre antes de compilar FreeRTOS. -
En Windows, el proyecto puede tardar entre 3 y 4 minutos en compilarse. Para reducir el tiempo de creación, puede utilizar el conmutador
-j4
del comando make.make flash monitor -j4
-
Si su dispositivo tiene problemas para conectarse AWS IoT, abra el
aws_clientcredential.h
archivo y compruebe que las variables de configuración estén definidas correctamente en el archivo.clientcredentialMQTT_BROKER_ENDPOINT[]
debería tener este aspecto1234567890123-ats.iot.us-east-1.amazonaws.com
. -
Si sigue los pasos de Usa Free RTOS en tu propio CMake proyecto para ESP32 y ve errores de referencias no definidas del vinculador, generalmente se debe a que faltan bibliotecas o demostraciones dependientes. Para añadirlos, actualice el
CMakeLists.txt
archivo (en el directorio raíz) utilizando la CMake función estándartarget_link_libraries
. -
ESP- La IDF versión 4.2 admite el uso de la xtensa\ -esp32\ -elf\ -gcc 8\ .2\ .0\. cadena de herramientas. Si utiliza una versión anterior de la cadena de herramientas de Xtensa, descargue la versión necesaria.
-
Si ves un registro de errores como el siguiente sobre las dependencias de Python que no se cumplen en la versión 4.2ESP: IDF
The following Python requirements are not satisfied: click>=5.0 pyserial>=3.0 future>=0.15.2 pyparsing>=2.0.3,<2.4.0 pyelftools>=0.22 gdbgui==0.13.2.0 pygdbmi<=0.9.0.2 reedsolo>=1.5.3,<=1.5.4 bitstring>=3.1.6 ecdsa>=0.16.0 Please follow the instructions found in the "Set up the tools" section of ESP-IDF Getting Started Guide
Instale las dependencias de Python en su plataforma mediante el siguiente comando de Python:
root/vendors/espressif/esp-idf/requirements.txt
Para obtener más información sobre cómo solucionar problemas, consulte Introducción a solución de problemas.
Debugging
Código de depuración en Espressif ESP32 - C y (- v4.2) DevKit ESP-WROVER-KIT ESP IDF
En esta sección, se muestra cómo depurar el hardware de Espressif mediante - v4.2. ESP IDF Necesita un cable de alimentación. JTAG USB Usamos un MPSSE cable USB para dos (por ejemplo, el FTDIC232HM- DDHSL -0
- ESP- Configuración C DevKit JTAG
-
Para el cable FTDI C232HM- DDHSL -0, estas son las conexiones al DevKitC. ESP32
| C232HM-DDHSL-0 Wire Color | ESP32 GPIO Pin | JTAG Signal Name | | ------------------------- | -------------- | ---------------- | | Brown (pin 5) | IO14 | TMS | | Yellow (pin 3) | IO12 | TDI | | Black (pin 10) | GND | GND | | Orange (pin 2) | IO13 | TCK | | Green (pin 4) | IO15 | TDO |
- ESP-WROVER-KIT JTAGconfiguración
-
Para el cable FTDI C232HM- DDHSL -0, estas son las conexiones al - -. ESP32 WROVER KIT
| C232HM-DDHSL-0 Wire Color | ESP32 GPIO Pin | JTAG Signal Name | | ------------------------- | -------------- | ---------------- | | Brown (pin 5) | IO14 | TMS | | Yellow (pin 3) | IO12 | TDI | | Orange (pin 2) | IO13 | TCK | | Green (pin 4) | IO15 | TDO |
Estas tablas se desarrollaron a partir de la hoja de datos del FTDIC232HM
- -0. DDHSL Para obtener más información, consulte la sección «Conexión del MPSSE cable C232HM y detalles mecánicos» en la hoja de datos. Para JTAG activarla ESP-WROVER-KIT, coloque los puentes en los pinesTMS, TDO TDITCK, y S_ TDI como se muestra aquí.
- Depuración en Windows (- v4.2) ESP IDF
-
Configuración para la depuración en Windows
-
Conecte el USB lateral del FTDI C232HM- DDHSL -0 al ordenador y el otro lado como se describe en. Código de depuración en Espressif ESP32 - C y (- v4.2) DevKit ESP-WROVER-KIT ESP IDF El dispositivo FTDI C232HM- DDHSL -0 debería aparecer en el Administrador de dispositivos, en la sección Controladores de bus serie universales.
-
En la lista de dispositivos de bus serie universales, haga clic con el botón secundario en el dispositivo C232HM- DDHSL -0 y, a continuación, seleccione Propiedades.
nota
Es posible que el dispositivo aparezca como Puerto serie. USB
En la ventana de propiedades, elija la pestaña Detalles para ver las propiedades del dispositivo. Si el dispositivo no aparece en la lista, instale el controlador de Windows para el FTDI C232HM
- -0. DDHSL -
En la pestaña Detalles, elija Propiedad y, a continuación, Hardware. IDs Debería ver algo similar a lo siguiente en el campo Valor.
FTDIBUS\COMPORT&VID_0403&PID_6014
En este ejemplo, el ID de proveedor es 0403 y el ID de producto es 6014.
Compruebe que IDs coincidan con IDs la entrada
projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg
. IDsSe especifican en una línea que comienza porftdi_vid_pid
seguida de un identificador de proveedor y un identificador de producto.ftdi_vid_pid 0x0403 0x6014
-
Descarga Open OCD para Windows
. -
Descomprima el archivo en
C:\
y añadaC:\openocd-esp32\bin
a la ruta del sistema. -
Open OCD requiere libusb, que no viene instalado de forma predeterminada en Windows. Para instalar libusb:
-
Descargue zadig.exe
. -
Ejecute
zadig.exe
. Desde el menú Options (Opciones), seleccione List All Devices (Lista de todos los dispositivos). -
En el menú desplegable, selecciona C232HM - -0. DDHSL
-
En el campo del conductor objetivo, a la derecha de la flecha verde, selecciona Ganar. USB
-
En la lista que hay bajo el campo del controlador de destino, elija la flecha y, a continuación, haga elija Instalar controlador. Elija Replace Driver (Reemplazar controlador).
-
-
Abre una línea de comandos, navega hasta la raíz del directorio de RTOS descargas gratuitas y ejecuta el siguiente comando.
idf.py openocd
Deje este símbolo del sistema abierto.
-
Abre una nueva línea de comandos, navega hasta la raíz de tu directorio de RTOS descargas gratuitas y ejecuta
idf.py flash monitor
-
Abre otra línea de comandos, navega hasta la raíz de tu directorio de RTOS descargas gratuitas y espera a que la demo comience a ejecutarse en tu placa. Cuando esto suceda, ejecute
idf.py gdb
El programa debe detenerse en la función
main
.nota
ESP32Soporta un máximo de dos puntos de rotura.
-
- Depuración en macOS (ESP- IDF v4.2)
-
-
Descarga el FTDIcontrolador para macOS
. -
Descarga Open OCD
. -
Extraiga el archivo.tar descargado y establezca la ruta de
.bash_profile
enOCD_INSTALL_DIR/openocd-esp32/bin
. -
Utilice el siguiente comando para instalar
libusb
en macOS.brew install libusb
-
Utilice el siguiente comando para descargar el controlador de puerto serie.
sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
-
Utilice el siguiente comando para descargar el controlador de puerto serie.
sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
-
Si utilizas una versión de macOS posterior a la 10.9, usa el siguiente comando para descargar el controlador de AppleFTDI.
sudo kextunload -b com.apple.driver.AppleUSBFTDI
-
Usa el siguiente comando para obtener el identificador de producto y el identificador de proveedor del FTDI cable. Enumera los USB dispositivos conectados.
system_profiler SPUSBDataType
La salida de
system_profiler
debería ser similar a la siguiente.DEVICE: Product ID: product-ID Vendor ID: vendor-ID (Future Technology Devices International Limited)
-
Abra el archivo
projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg
. El ID del proveedor y el ID del producto de su dispositivo se especifican en una línea que comienza porftdi_vid_pid
. Cambie el IDs valor para que IDs coincida con elsystem_profiler
resultado del paso anterior. -
Abre una ventana de terminal, navega hasta la raíz de tu directorio de RTOS descargas gratuitas y usa el siguiente comando para ejecutar OpenOCD.
idf.py openocd
Deje abierta esta ventana de terminal.
-
Abre una nueva terminal y usa el siguiente comando para cargar el controlador del puerto FTDI serie.
sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
-
Navegue hasta la raíz de su directorio de RTOS descargas gratuitas y ejecute
idf.py flash monitor
-
Abre otro terminal nuevo, navega hasta la raíz de tu directorio de RTOS descargas gratuitas y ejecuta
idf.py gdb
El programa debe detenerse en
main
.
-
- Depuración en Linux (ESP- IDF v4.2)
-
-
Descarga Open. OCD
Extraiga el archivo tarball y siga las instrucciones de instalación en el archivo readme. -
Para instalar libusb en Linux, use el siguiente comando.
sudo apt-get install libusb-1.0
-
Abre un terminal e ingresa ls -l /dev/ttyUSB* para ver una lista de todos los USB dispositivos conectados a tu computadora. Esto le ayuda a comprobar si el sistema operativo reconoce USB los puertos de la placa. Debería ver un resultado como el siguiente.
$ls -l /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 Jul 10 19:04 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 Jul 10 19:04 /dev/ttyUSB1
-
Cierre la sesión y, a continuación, inicie sesión y realice un ciclo de encendido y apagado para la placa para que los cambios surtan efecto. En un indicador de terminal, enumere los USB dispositivos. Asegúrese de que el responsable del grupo ha cambiado de
dialout
aplugdev
.$ls -l /dev/ttyUSB* crw-rw---- 1 root plugdev 188, 0 Jul 10 19:04 /dev/ttyUSB0 crw-rw---- 1 root plugdev 188, 1 Jul 10 19:04 /dev/ttyUSB1
La
/dev/ttyUSBn
interfaz con el número inferior se utiliza para la JTAG comunicación. La otra interfaz se enruta al puerto serie ESP32 del dispositivo (UART) y se utiliza para cargar el código en la memoria flash ESP32 del dispositivo. -
En una ventana de terminal, navega hasta la raíz de tu directorio de RTOS descargas gratuitas y usa el siguiente comando para ejecutar Open. OCD
idf.py openocd
-
Abre otro terminal, navega hasta la raíz de tu directorio de RTOS descargas gratuitas y ejecuta el siguiente comando.
idf.py flash monitor
-
Abre otra terminal, navega hasta la raíz de tu directorio de RTOS descargas gratuitas y ejecuta el siguiente comando:
idf.py gdb
El programa debe detenerse en
main()
.
-