You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
3 Hrs
25 Min
14 Seg

Hola mundo con ESP-IDF

13/30
Resources

Contributions 10

Questions 3

Sort by:

Want to see more contributions, questions and answers from the community?

Si les da un error al cargar nuevamente el programa y la placa está conectada. En mi caso funcionó presionar el botón “BOOT” después de aplicar el comando:

idf.py -p (COM) flash

Linux

Para identificar el puerto usado use:

 $ ll /dev/ttyU*

Me marcaba el siguiente error cuando intenté flashear el ESP32:

A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn’t exist

Lo solucioné con:

$ sudo adduser <username> dialout
$ sudo chmod a+rw /dev/ttyUSB0

En donde <username> es el usuario actual de Linux y ttyUSB0 es el puerto que le asignó a mi placa.

pongo el codigo el ejercicio:

#include <stdio.h>
#include "esp_chip_info.h"

void app_main(void)
{   esp_chip_info_t chip_info;
    esp_chip_info(&chip_info);
    printf("Este es un chip tipo %s, y tiene %d cores!\n",
    CONFIG_IDF_TARGET,
    chip_info.cores
    );

}

vuelvo a aclarar que en mi caso ( ESP32 nodemcu) para poder poner el modulo en mode download, tuve que desenergizar la placa y conectarla al usb teniendo presionado el boton 100 en serigrafia, poder poder ver el print: idf.py -p /dev/ttyUSB0 monitor

Utilice toda la definicion en la libreria: miscellaneous system apis

#include <stdio.h>
#include "esp_chip_info.h"

esp_chip_info_t chip_info;

char* model_chip;
long features_chip;

char* get_model_name(int model)
{
    char* model_name;
    switch (model)
    {
        case CHIP_ESP32: 
            model_name = "ESP32";
            break;
        case CHIP_ESP32S2: 
            model_name = "ESP32-S2";
            break;
        case CHIP_ESP32S3: 
            model_name = "ESP32-S3";
            break;  
        case CHIP_ESP32C2: 
            model_name = "ESP32-C2";
            break;
        case CHIP_ESP32C3: 
            model_name = "ESP32-C3";
            break;
        case CHIP_ESP32C6: 
            model_name = "ESP32-C6";
            break; 
        case CHIP_ESP32H2: 
            model_name = "ESP32-H2";
            break;
        //case CHIP_ESP32P4:  El compilador no lo reconoce
        case 18: 
            model_name = "ESP32-P4";
            break;
        case CHIP_POSIX_LINUX: 
            model_name = "The code is running on POSIX/Linux simulator";
            break;                             
        default:
            model_name = "?????";   
    }

    return model_name;
}

void app_main(void)
{
   esp_chip_info(&chip_info);
   model_chip = get_model_name(chip_info.model);
   features_chip = chip_info.features;

   printf("Hola mundo desde isp-idf\n");


   printf("model %s revision %d cores %d \n", 
       model_chip,
       chip_info.revision,
       chip_info.cores
   );

   printf("Features:");
   if (features_chip & CHIP_FEATURE_EMB_FLASH) printf("Chip has embedded flash memory\n");
   if (features_chip & CHIP_FEATURE_WIFI_BGN) printf("Chip has 2.4GHz WiFi\n");
   if (features_chip & CHIP_FEATURE_BLE) printf("Chip has Bluetooth LE\n");
   if (features_chip & CHIP_FEATURE_BT) printf("Chip has Bluettoth Classic\n");
   if (features_chip & CHIP_FEATURE_IEEE802154) printf("Chip has IEEE802154\n");
   if (features_chip &  CHIP_FEATURE_EMB_PSRAM) printf("Chip has embedded psram\n");

   /*
   //Esto Aparece en los miscellaneous system apis
   
   //features
   printf("%ld Chip has embedded flash memory\n", CHIP_FEATURE_EMB_FLASH);
   printf("%ld Chip has 2.4GHz WiFi\n",           CHIP_FEATURE_WIFI_BGN);
   printf("%ld Chip has Bluetooth LE\n",          CHIP_FEATURE_BLE);
   printf("%ld Chip has Bluettoth Classic\n",     CHIP_FEATURE_BT);
   printf("%ld Chip has IEEE802154\n",            CHIP_FEATURE_IEEE802154);
   printf("%ld Chip has embedded psram\n",        CHIP_FEATURE_EMB_PSRAM);

   //models
   printf("%d ESP32\n",                                        CHIP_ESP32);
   printf("%d ESP32-S2\n",                                     CHIP_ESP32S2);
   printf("%d ESP32-S3\n",                                     CHIP_ESP32S3);
   printf("%d ESP32-C3\n",                                     CHIP_ESP32C3);
   printf("%d ESP32-C2\n",                                     CHIP_ESP32C2);
   printf("%d ESP32-C6\n",                                     CHIP_ESP32C6);
   printf("%d ESP32-H2\n",                                     CHIP_ESP32H2);
   //printf("%d ESP32-P4\n",                                     CHIP_ESP32P4);
   //cuando compilo con esta constante no la reconoce
   printf("%d The code is running on POSIX/Linux simulator\n", CHIP_POSIX_LINUX);
   */


}

# **Creación de nuestro primer programa con ESP-IDF** En esta clase, aprenderemos a crear nuestro primer programa utilizando el **ESP-IDF**, comenzando con un clásico **"Hola, mundo"**. Además, exploraremos los pasos necesarios para la creación, compilación y carga del programa en nuestra placa ESP32. ## **1. Preparación del entorno** Para comenzar, abrimos la **terminal de comandos** con el entorno ESP-IDF configurado. Es recomendable tener una carpeta de trabajo organizada para nuestros proyectos. En este caso, yo he creado una carpeta llamada **ESP32**, pero puedes crear una en cualquier ubicación y navegar hasta ella desde la terminal. **Nota:** Asegúrate de estar usando la terminal del **ESP-IDF**. ## **2. Creación del proyecto** Ejecutamos el siguiente comando para crear un nuevo proyecto: idf.py create-project \<nombre\_del\_proyecto> En este caso, nombraremos el proyecto **chip-info**: idf.py create-project chip-info La terminal mostrará un mensaje confirmando la creación del proyecto: The project was created in C:\Users\diana\Documents\work\platzi\cursos\latest\esp32\chip-info Este comando genera una carpeta con el nombre del proyecto y los archivos básicos para su funcionamiento. ## **3. Exploración de los archivos del proyecto** Dentro de la carpeta del proyecto encontraremos: * **CMakeLists.txt**: Archivo de configuración del proyecto. * **main.c**: Archivo donde escribiremos nuestro código. Ahora podemos empezar a programar. ## **4. Edición del código en Visual Studio Code** Para abrir el editor desde la terminal, ejecutamos: code . Dentro del archivo main.c, escribimos el siguiente código para imprimir "Hola, mundo": \#include \<stdio.h> void app\_main() {     printf("Hola, mundo!\n"); } **Importante:** Siempre incluir \n en printf para asegurar la correcta visualización en la terminal. ## **5. Lectura de información del chip ESP32** Para hacer nuestro programa más interesante, leeremos información del chip como su modelo y número de **cores** utilizando la librería **esp\_chip\_info.h**. \#include \<stdio.h> \#include "esp\_chip\_info.h" void app\_main() {     esp\_chip\_info\_t chip\_info;     esp\_chip\_info(\&chip\_info);     printf("Este es un chip tipo %s, y tiene %d cores!\n",            CONFIG\_IDF\_TARGET,            chip\_info.cores); } ### **Explicación del código:** * esp\_chip\_info\_t chip\_info; -> Se crea una variable para almacenar la información del chip. * esp\_chip\_info(\&chip\_info); -> Se llena la variable con los datos del chip. * chip\_info.cores -> Obtiene el número de cores. * CONFIG\_IDF\_TARGET -> Indica el modelo del chip. ## **6. Compilación y carga del programa** Para compilar el código, ejecutamos: idf.py build Si ya hemos compilado antes, esta segunda vez será más rápida. Luego, para subir el programa a la placa ESP32: idf.py -p COM3 flash Este comando sube el binario a la tarjeta de desarrollo. Una vez finalizado, el sistema indicará Done. ## **7. Monitoreo del resultado** Para ver la información impresa por el programa, usamos el modo monitor: idf.py -p COM3 monitor La terminal mostrará la información del chip y el mensaje: Este es un chip tipo esp32, y tiene 2 cores! # **Uso de la protoboard** En las siguientes prácticas, utilizaremos una **protoboard** para conectar componentes de manera sencilla. ### **Características de la protoboard:** ✅ Tiene **filas y columnas** organizadas con números y letras. ✅ Incluye **carriles de alimentación** marcados con azul (negativo) y rojo (positivo). ✅ Sus conexiones internas permiten conectar componentes sin soldadura. ### **Conexiones internas:** * **Carriles de alimentación:** Todas las conexiones en la misma línea están unidas internamente. * **Zona central:** Filas conectadas en bloques (A-E y F-J). * **Ranura central:** Divide la protoboard en dos partes sin conexión directa. ### **Ejemplo: Conectar un LED correctamente** 1️⃣ **Patita positiva del LED** en la fila 4. 2️⃣ **Patita negativa** en la fila 5, con una resistencia al negativo. 3️⃣ **Conectar la terminal positiva** con un cable a la línea roja (+). De este modo, la corriente fluye correctamente y el LED se enciende.
Excelente curso
Sugiero estas dos lecturas si manejan la version s2 mini: <https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32s2/api-guides/usb-console.html> <https://github.com/espressif/esp-idf/issues/11035#>
Para aquellos que tienen la version s2 mini, les recomiendo estas lecturas <https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32s2/api-guides/usb-console.html> <https://github.com/espressif/esp-idf/issues/11035>
Hola buenas tardes! realice todos los pasos sin problema, pero cuando le doy a idf.py monitor no logro ver lo planteado en el printf. Cabe descatar que hice el build sin problema, y al momento de flash tampoco hubo novedad ![]()![]()
To exit from IDF monitor please use "Ctrl+]". Alternatively, you can use Ctrl-T Ctrl-X to exit.