CursosEmpresasBlogLiveConfPrecios

Servidor HTTP básico con ESP32

Clase 27 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

    12:27 min
  • 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

    Viendo ahora

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
    Marcela Dueñas

    Marcela Dueñas

    student•
    hace 3 años

    no olvidar agregar al cmakelist de este nuevo proyecto set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)

    Mario Ruben Hernandez Carmona

    Mario Ruben Hernandez Carmona

    student•
    hace 2 años

    Hola :)

    Aquí mi resultado

    Resultado.jpg
    Mariana Valencia Gallego

    Mariana Valencia Gallego

    student•
    hace 2 años

    No voy a mentir, me emocioné un montón al ver ese Hola Mundo. Llevo muchos años desarrollando web pero hacer un servidor en algo tan pequeño, algo iot me generó mucha felicidad.

    Gran clase!

    Julio Cardenas

    Julio Cardenas

    student•
    hace 2 años

    Este es mi ejercicio . .

    prueba_http.png
    . .

    ************************************************************ IP : 192.168.197.252 Net mask : 255.255.255.0 Gateway : 192.168.197.222 I (10944) main_task: Returned from app_main() I (11054) wifi:<ba-add>idx:1 (ifx:0, 36:4f:fc:11:3f:28), tid:6, ssn:2, winSize:64

    . Este es el codigo del programa: .

    #include <stdio.h> #include "string.h" #include "esp_wifi.h" #include "nvs_flash.h" #include "protocol_examples_common.h" #include "esp_http_server.h" #include "pagina.h" esp_netif_ip_info_t ip_info; esp_netif_t* netif = NULL; static esp_err_t home_get_handler(httpd_req_t *req) { httpd_resp_send(req, resp, HTTPD_RESP_USE_STRLEN); return ESP_OK; }; static const httpd_uri_t home = { .uri = "/", .method = HTTP_GET, .handler = home_get_handler }; void web_server_init() { httpd_handle_t server = NULL; httpd_config_t config = HTTPD_DEFAULT_CONFIG(); if (httpd_start(&server, &config) == ESP_OK) { httpd_register_uri_handler(server, &home); return; } else { printf("Error al iniciar el servidor\n"); }; }; void app_main(void) { nvs_flash_init(); esp_netif_init(); esp_event_loop_create_default(); example_connect(); netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); if (netif == NULL) { printf("No hay interfaz\n"); } else { esp_netif_get_ip_info(netif, &ip_info); printf("************************************************************\n"); printf("IP : %d.%d.%d.%d\n ", IP2STR(&ip_info.ip)); printf("Net mask : %d.%d.%d.%d\n ", IP2STR(&ip_info.netmask)); printf("Gateway : %d.%d.%d.%d\n ", IP2STR(&ip_info.gw)); web_server_init(); }; }
    Julio Cardenas

    Julio Cardenas

    student•
    hace 2 años

    Hay que hacer dos cosas para este nuevo proyecto .

    1. agregar en el CMakeLists.txt del directorio raiz de proyecto:

    set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common) . 2. correr el comando

    idf.py menuconfig

    y modificar en Example Connection Configuration el valor del SSID y el de password.

      Javier Bornia

      Javier Bornia

      student•
      hace 2 años

      Sigh....como siempre se le olvida mencionar esas cosas a la profesora

    Gabriel Obregón

    Gabriel Obregón

    student•
    hace 9 meses

    CODIGO COMENTADO:

    1. Inclusión de bibliotecas necesarias

    #include <stdio.h>

    #include "string.h"

    #include "esp_wifi.h"

    #include "nvs_flash.h"

    #include "protocol_examples_common.h"

    #include "esp_http_server.h"

    • #include <stdio.h>: Biblioteca estándar de C para funciones de entrada/salida como printf().
    • #include "string.h": Biblioteca estándar para manejo de cadenas de caracteres.
    • #include "esp_wifi.h": Proporciona funciones para manejar Wi-Fi en ESP32.
    • #include "nvs_flash.h": Biblioteca para manejar la memoria No Volátil (NVS), usada para almacenar configuraciones.
    • #include "protocol_examples_common.h": Proporciona configuraciones y funciones de red predefinidas.
    • #include "esp_http_server.h": Biblioteca principal para configurar y manejar un servidor HTTP en el ESP32.

    2. Definición del manejador de solicitudes HTTP GET

    static esp_err_t api_get_handler(httpd_req_t *req) {

      httpd_resp_send(req, "Hola mundo!", HTTPD_RESP_USE_STRLEN);

      return ESP_OK;

    }

    • static esp_err_t api_get_handler(httpd_req_t *req): Esta es la función que maneja las solicitudes HTTP GET en la ruta /api.
    • httpd_resp_send(req, "Hola mundo!", HTTPD_RESP_USE_STRLEN);: Responde con el mensaje "Hola mundo!" al cliente que hizo la solicitud.
    • return ESP_OK;: Indica que la operación fue exitosa.

    3. Configuración de la estructura URI

    static const httpd_uri_t api = {

      .uri = "/api",

      .method = HTTP_GET,

      .handler = api_get_handler

    };

    • Se crea una estructura httpd_uri_t llamada api, que define cómo el servidor manejará la ruta /api.
    • .uri = "/api": Especifica la ruta que este manejador atenderá.
    • .method = HTTP_GET: Especifica que este manejador responderá a solicitudes GET.
    • .handler = api_get_handler: Asigna la función que maneja la solicitud (definida anteriormente).

    4. Función para iniciar el servidor web

    void web_server_init() {

      httpd_handle_t server = NULL;

      httpd_config_t config = HTTPD_DEFAULT_CONFIG();

    • httpd_handle_t server = NULL;: Declara un identificador para el servidor HTTP.
    • httpd_config_t config = HTTPD_DEFAULT_CONFIG();: Se inicializa la configuración del servidor con valores predeterminados.

     if (httpd_start(&server, &config) == ESP_OK) {

        httpd_register_uri_handler(server, &api);

        return;

      }

    • httpd_start(&server, &config): Intenta iniciar el servidor con la configuración especificada.
    • if (httpd_start(&server, &config) == ESP_OK): Verifica si el servidor se inició correctamente.
    • httpd_register_uri_handler(server, &api);: Registra la ruta /api en el servidor web.

     printf("Error al iniciar servidor\n");

    }

    • Si el servidor no se inicia correctamente, imprime un mensaje de error.

    5. Función app_main() - Punto de entrada del programa

    void app_main(void)

    {

    • app_main() es la función principal en aplicaciones ESP-IDF (similar a main() en C estándar).

     nvs_flash_init();

      esp_netif_init();

      esp_event_loop_create_default();

    • nvs_flash_init();: Inicializa la memoria No Volátil (NVS).
    • esp_netif_init();: Inicializa la interfaz de red del ESP32.
    • esp_event_loop_create_default();: Crea el bucle de eventos predeterminado del ESP32.

     example_connect();

    • example_connect();: Función predefinida que conecta el ESP32 a una red Wi-Fi usando la configuración de protocol_examples_common.h.

    6. Obtener la dirección IP del ESP32

     esp_netif_ip_info_t ip_info;

      esp_netif_t* netif = NULL;

      netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF");

    • esp_netif_ip_info_t ip_info;: Declara una estructura para almacenar información de la IP.
    • esp_netif_t* netif = NULL;: Puntero para manejar la interfaz de red.
    • netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF");: Obtiene el identificador de la interfaz Wi-Fi configurada.

     if (netif == NULL) {

        printf("No hay interfaz\n");

      } else {

    • Si netif es NULL, significa que no hay una interfaz Wi-Fi disponible y se imprime un mensaje de error.

       esp_netif_get_ip_info(netif, &ip_info);

        printf("IP: %d.%d.%d.%d\n", IP2STR(&ip_info.ip));

    • esp_netif_get_ip_info(netif, &ip_info);: Obtiene la información de la dirección IP asignada al ESP32.
    • printf("IP: %d.%d.%d.%d\n", IP2STR(&ip_info.ip));: Imprime la dirección IP en formato legible.

       web_server_init();

      }

    }

    • web_server_init();: Llama a la función para iniciar el servidor web.
    Carlos Andres Betancourt Perez

    Carlos Andres Betancourt Perez

    student•
    hace 2 años

    Aquí les comparto mi código y una imagen de la respuesta del web server:

    //incluimos las librerias necesarias #include <stdio.h> #include <string.h> #include "esp_wifi.h" #include "nvs_flash.h" #include "protocol_examples_common.h" #include "esp_http_server.h" #include "esp_log.h" //prototipos de funciones static void esp_logs(esp_err_t* err, char* msg); static void web_server_init(void); static esp_err_t api_get_handler(httpd_req_t* req); //declaramos las variables globales static const char* TAG = "ESP32"; esp_err_t err; static const httpd_uri_t api = { .uri = "/api", .method = HTTP_GET, .handler = api_get_handler }; void app_main(void) { ESP_LOGI(TAG, "Start Application!"); //inicializamos el driver de NVS err = nvs_flash_init(); esp_logs(&err, "NVS driver initialization"); esp_netif_init(); esp_event_loop_create_default(); example_connect(); esp_netif_ip_info_t ip_info; esp_netif_t* netif = NULL; netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); if (netif != NULL) { esp_netif_get_ip_info(netif, &ip_info); ESP_LOGI(TAG, "IP info: %d.%d.%d.%d", IP2STR(&ip_info.ip)); web_server_init(); } else { ESP_LOGE(TAG, "No exist WiFi interface"); } } //------------------------- static void esp_logs(esp_err_t* err, char* msg) { if (*err == ESP_OK) ESP_LOGI(TAG, "%s done.", msg); else ESP_LOGE(TAG, "%s fail!!", msg); } //------------------------- static void web_server_init(void) { httpd_handle_t server = NULL; httpd_config_t config = HTTPD_DEFAULT_CONFIG(); //inicializamos el servidor err = httpd_start(&server, &config); esp_logs(&err, "HTTP Server start"); if (err == ESP_OK) { httpd_register_uri_handler(server, &api); } } //------------------------- static esp_err_t api_get_handler(httpd_req_t* req) { char resp[100] = ""; sprintf(resp, "%s%s", "<h2> CURSO PLATZI IOT CON ESP32 </h2>", "<p> Hola Mundo desde ESP32 Server </p>"); httpd_resp_send(req, resp, HTTPD_RESP_USE_STRLEN); return ESP_OK; } //-------------------------
    Edwin Agudelo

    Edwin Agudelo

    student•
    hace 3 años

    Gracias Diana por tu respuesta. Ya realicé las instrucciones que mencionaste pero aún persiste el mismo error. Estos son algunos detalles adicionales:

    Hasta este punto del curso, todos los ejercicios me han funcionado correctamente, inclusive el ejercicio de wifi: yo obtengo la dirección IP. adjunto captura de pantalla del error. CMake Error at CMakeLists.txt:2: Parse error. Expected “(”, got newline with text "

    ".

    – Configuring incomplete, errors occurred! cmake failed with exit code 1

    El código que escribo en el visual studio lo copio de los archivos de la clase, desde el apartado recursos. Yo únicamente copio el texto del archivo http.c de la carpeta main. El resto de archivos que aparecen en el apartado recursos yo no los copio y pego en vs (hasta el ejercicio actual no he copiado este tipo de archivos). Yo estoy usando un ESP 32 Dev kit V1.

      Diana Martinez

      Diana Martinez

      student•
      hace 3 años

      Pues es en tu archivo CMakeLists.txt, línea 2, dice que te falta un paréntesis "("

    Edwin Agudelo

    Edwin Agudelo

    student•
    hace 3 años

    Hola, ¿Qué debo hacer para solucionar este error?

    error: rebuilding 'build.ninja': subcommand failed ninja failed with exit code 1

      Diana Martinez

      Diana Martinez

      student•
      hace 3 años

      Creo que necesitaría más detalles, pero podrías intentar haciendo fullclean del build con idf.py fullclean y luego volver a compilar y subir. También asegúrate de que el cable USB sea de buena calidad y no esté fallando.

      Edwin Agudelo

      Edwin Agudelo

      student•
      hace 3 años

      Gracias Diana por tu respuesta. Ya realicé las instrucciones que mencionaste pero aún persiste el mismo error. Estos son algunos detalles adicionales:

      • Hasta este punto del curso, todos los ejercicios me han funcionado correctamente, inclusive el ejercicio de wifi: yo obtengo la dirección IP.
      • adjunto captura de pantalla del error.

      CMake Error at CMakeLists.txt:2: Parse error. Expected "(", got newline with text "

      ".

      -- Configuring incomplete, errors occurred! cmake failed with exit code 1

      • El código que escribo en el visual studio lo copio de los archivos de la clase, desde el apartado recursos. Yo únicamente copio el texto del archivo http.c de la carpeta main. El resto de archivos que aparecen en el apartado recursos yo no los copio y pego en vs (hasta el ejercicio actual no he copiado este tipo de archivos).
      • Yo estoy usando un ESP 32 Dev kit V1.
    Manuel Méndez

    Manuel Méndez

    student•
    hace 2 años

    pregunta es sobre servidores y mi cuestión era donde usar http y donde usar mqtt lo que pasa que estuve viendo sobre el protocolo mqtt para la domótica y de verdad no entiendo en que casos usar cada uno

    Julio Cardenas

    Julio Cardenas

    student•
    hace 2 años

    . . este es el codigo que implementa el html de la pagina web. . utilizo para incluir el html en una variable tipo char algo llamado raw string: . .

    Basically a raw string literal is a string in which the escape characters (like \n \t or \" ) of C++ are not processed. A raw string literal which starts with R"( and ends in )" ,introduced in C++11

    . aqui esta el codigo de pagina .

    pagina_codigopng.png

    utilizo el SVG para incluir el logo de platzi

      Julio Cardenas

      Julio Cardenas

      student•
      hace 2 años

      Me toco colocar una imagen del codigo, ya que cuando lo incluia como codigo, me decia que tenia enlaces a sitios no seguros

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