CursosEmpresasBlogLiveConfPrecios

Hola mundo con ESP-IDF

Clase 13 de 30 • Curso de IoT: Programación de Microcontroladores ESP32

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    Introducción a los microcontroladores

    Introducción a los microcontroladores

    10:48 min
  • 2
    La importancia de la industria IoT

    La importancia de la industria IoT

    16:08 min
  • 3
    Tipos de computadoras

    Tipos de computadoras

    12:50 min
  • 4
    Cómo escoger un microcontrolador

    Cómo escoger un microcontrolador

    14:59 min

Hardware

  • 5
    Características del ESP32

    Características del ESP32

    16:15 min

ESP-IDF

  • 6
    Documentación oficial del ESP-IDF

    Documentación oficial del ESP-IDF

    08:43 min
  • 7
    Instalación del ESP-IDF en Windows

    Instalación del ESP-IDF en Windows

    11:06 min
  • 8

    Instalación de ESP-IDF en macOS Ventura con M1 y Python 3.10

    03:46 min
  • 9

    Instalación de ESP-IDF en Ubuntu 22.04 con Python 3.10

    03:42 min
  • 10
    Lista de materiales

    Lista de materiales

    11:50 min
  • 11
    Proyectos con ESP-IDF

    Proyectos con ESP-IDF

    17:12 min
  • 12
    Primer proyecto

    Primer proyecto

    12:28 min

API Core

  • 13
    Hola mundo con ESP-IDF

    Hola mundo con ESP-IDF

    Viendo ahora
  • 14
    Sistemas Operativos en Tiempo Real

    Sistemas Operativos en Tiempo Real

    08:28 min
  • 15
    FreeRTOS con ESP32

    FreeRTOS con ESP32

    14:48 min
  • 16
    Ciclo de vida de las tareas con FreeRTOS

    Ciclo de vida de las tareas con FreeRTOS

    08:56 min
  • 17
    Almacenamiento con ESP32

    Almacenamiento con ESP32

    20:42 min

Peripherals API

  • 18
    Salida Digital con ESP32

    Salida Digital con ESP32

    14:37 min
  • 19
    Entrada Digital con ESP32

    Entrada Digital con ESP32

    13:24 min
  • 20
    Entrada Analógica con ESP32

    Entrada Analógica con ESP32

    19:44 min
  • 21
    Modulación de Ancho de Pulsos

    Modulación de Ancho de Pulsos

    09:20 min
  • 22
    Control PWM con ESP32 y LEDC

    Control PWM con ESP32 y LEDC

    19:47 min

Servidor Web

  • 23
    Redes y protocolos de Internet

    Redes y protocolos de Internet

    18:16 min
  • 24
    Redes WiFi

    Redes WiFi

    07:07 min
  • 25
    Loop de eventos

    Loop de eventos

    05:02 min
  • 26
    Conexión WiFi con ESP32

    Conexión WiFi con ESP32

    18:58 min
  • 27
    Servidor HTTP básico con ESP32

    Servidor HTTP básico con ESP32

    16:36 min

Smart Light

  • 28
    Dimmer LED via HTTP con ESP32

    Dimmer LED via HTTP con ESP32

    28:00 min
  • 29
    Aplicación Web con ESP32

    Aplicación Web con ESP32

    20:02 min

Despedida

  • 30
    Tu primer proyecto de IoT con ESP32

    Tu primer proyecto de IoT con ESP32

    01:23 min
Tomar examen
    Irvyn Cornejo

    Irvyn Cornejo

    student•
    hace 3 años

    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
    Gregorio Emmanuel Rivas Burgos

    Gregorio Emmanuel Rivas Burgos

    student•
    hace 3 años

    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.

    Jose Gabriel Argüello

    Jose Gabriel Argüello

    student•
    hace 3 años

    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

    Claudio Palmieri

    Claudio Palmieri

    student•
    hace 3 años

    Hola Diana. He encontrado dificultad para usar la simulación con Wokwi. ¿Cómo hago para subir el código escrito en IDF y sea bien interpretado por el simulador? ¿Estoy haciendo la pregunta correcta?

      Diana Martinez

      Diana Martinez

      student•
      hace 3 años

      Últimamente he notado que el compilador de Wokwi para ESP-IDF está usando alguna versión anterior, porque da errores con el código de las versiones recientes, lo que te recomendaría es probar directamente con el ESP-IDF y el hardware, pues wokwi todavía es un proyecto muy nuevo.

    Luis Alberto Vargas Méndez

    Luis Alberto Vargas Méndez

    student•
    hace 2 años

    Hola Me aparece este error, estoy en macOS

    A fatal error occurred: This chip is ESP32-S3 not ESP32. Wrong --chip argument?

      Luis Alberto Vargas Méndez

      Luis Alberto Vargas Méndez

      student•
      hace 2 años

      para resolverlo encontre esto

      idf.py set-target esp32s2

      luego me surgio otro error pero parece que tenía que instalar CH34X USB to Serial macOS driver

    Julio Cardenas

    Julio Cardenas

    student•
    hace 2 años

    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); */ }
      Jose Fernando Peréz

      Jose Fernando Peréz

      student•
      hace 10 meses

      Precioso ese código en C.

    Cesar Alfonso Pallares Trespalacios

    Cesar Alfonso Pallares Trespalacios

    student•
    hace 3 años

    como se crea una carpeta?

      Diana Martinez

      Diana Martinez

      student•
      hace 2 años

      Creo que te ayudaría más realizar el curso de terminal de comandos, es muy útil para estas cosas.

      https://platzi.com/cursos/terminal/

      Luis Ariel Torres

      Luis Ariel Torres

      student•
      hace 2 años

      Con mkdir creas la carpeta.

    Gabriel Obregón

    Gabriel Obregón

    student•
    hace 10 meses

    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.

    Deiby Alejandro Triana Archila

    Deiby Alejandro Triana Archila

    student•
    hace 10 meses

    Excelente curso

    Daniel Fernando Murcia Perdomo

    Daniel Fernando Murcia Perdomo

    student•
    hace 2 años

    Sugiero estas dos lecturas si manejan la version s2 mini:

    Daniel Fernando Murcia Perdomo

    Daniel Fernando Murcia Perdomo

    student•
    hace 2 años

    Para aquellos que tienen la version s2 mini, les recomiendo estas lecturas

    Gabriel Palma

    Gabriel Palma

    student•
    hace 2 años

    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

    Fabián Albarracín

    Fabián Albarracín

    student•
    hace 2 años

    To exit from IDF monitor please use "Ctrl+]". Alternatively, you can use Ctrl-T Ctrl-X to exit.

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads