Skip to main content
ESPBoards

Programación del ESP8266 Ejemplos de código Hello World para principiantes y usuarios avanzados

Este artículo proporciona ejemplos de código Hello World para comenzar con la programación del ESP8266. Aprende cómo empezar a programar las placas ESP8266 y ESP32.


Introduction #

ESP8266 Placa de Desarrollo

Mirando el precio del ESP8266, uno podría pensar que se trata de un microcontrolador barato que no tiene potencia, desperdicia energía y no proporciona periféricos útiles, en comparación con los microcontroladores disponibles hoy en día. Sin embargo, tiene un módulo WiFi integrado y suficiente potencia de procesamiento para cualquier proyecto de nivel aficionado.

Hoy aprenderemos a comenzar a desarrollar con el ESP8266 y probablemente ya sepas que no hay mejor lugar para empezar que "Hello World".

Conceptos básicos de programación del ESP8266 #

Para comenzar con el desarrollo, esperamos que nuestro primer programa escriba el famoso "Hello World" en la consola. Sin embargo, el ESP8266 es un dispositivo separado de tu computadora y, además, ni siquiera tiene una pantalla, así que, ¿dónde imprimirá lo que queremos? La respuesta es la Comunicación Serial. Conectaremos el ESP8266 a nuestra computadora mediante un puerto USB, que se traduce como Universal Serial Bus. ¿Te diste cuenta de que incluye la palabra Serial en su nombre? Esto significa que nos comunicamos con los dispositivos conectados a los puertos USB utilizando la Comunicación Serial mencionada anteriormente.

El primer paso es configurar el ESP8266. Suponiendo que tienes configurado el IDE de Arduino, simplemente necesitaremos conectar la placa ESP8266 a nuestra computadora mediante el puerto USB.

Entonces, para comenzar con la programación, necesitamos configurar el puerto serie en la placa ESP8266. Podemos hacerlo utilizando la función Serial.begin(), que toma dos parámetros: la velocidad en baudios (la velocidad a la que se envían los datos a través del puerto serie) y los bits de datos (que determinan cuántos datos se enviarán a la vez).

Para este ejemplo, utilizaremos una velocidad en baudios de 9600 y 8 bits de datos.

Serial.begin(9600, SERIAL_8N1);

Escribiendo el Mensaje #

Una vez que el puerto serie esté configurado, podemos escribir el mensaje. Haremos esto utilizando la función Serial.print(), que toma una cadena proporcionada como parámetro y simplemente la imprime en el puerto serie.

Para este ejemplo, como puedes adivinar, imprimiremos el mensaje "Hello World!".

Serial.print("Hello World!");

Combinando setup y loop #

Ahora, para ver lo que hicimos en acción, necesitamos colocar el código en la función setup(), que se ejecutará una vez después de que el ESP8266 se inicie.

void setup() {
// Initialize serial port with baud rate of 9600 and 8N1 configuration
Serial.begin(9600, SERIAL_8N1);

// Print message to serial console
Serial.print("Hello World!");
}

void loop() {
// This program does not require any code in the loop function
}

Si subes este programa a la placa ESP8266 y abres un Monitor Serial, deberías ver el mensaje "¡Hola Mundo!" impreso en el Monitor Serial una vez que el ESP8266 se inicie.

Ejecutando el Programa #

Una vez que hayamos terminado con el código, podemos subir y ejecutar el programa. Simplemente presiona el botón "Subir" en el IDE en la esquina superior derecha. Deberías empezar a ver alguna salida en el terminal (no la confundas con el monitor serial), informándote sobre la compilación del código y su carga en el ESP8266. Una vez que el programa se haya subido, el ESP8266 se reiniciará y el programa comenzará a ejecutarse automáticamente.

Hola Mundo para Principiantes #

Hola Mundo es un ejercicio clásico de programación que se utiliza para introducir a los nuevos programadores en los conceptos básicos de la codificación. Es un programa simple que imprime la frase "Hola Mundo" en la consola. Ya lo hemos hecho, pero eso no es suficiente con los microcontroladores.

Parpadear el LED integrado #

Con los microcontroladores, la aplicación "Hola Mundo" por defecto es hacer parpadear un LED. Y tenemos suerte porque el ESP8266 tiene un LED integrado. Vamos directamente al código:

// Define the LED pin number
const int LED_PIN = 2;

void setup() {
// Set the LED pin as an output
pinMode(LED_PIN, OUTPUT);
}

void loop() {
// Turn the LED on
digitalWrite(LED_PIN, HIGH);

// Wait for 500ms
delay(500);

// Turn the LED off
digitalWrite(LED_PIN, LOW);

// Wait for 500ms
delay(500);
}

En este ejemplo, hemos definido el número de pin del LED integrado, que suele ser el pin 2 en las placas ESP8266. Luego, en la función setup(), configuramos el pin del LED como salida utilizando la función pinMode().

En la función loop(), encendemos el LED configurando el pin del LED a HIGH usando la función digitalWrite(). Luego, esperamos 500 ms usando la función delay(). Después de eso, apagamos el LED configurando el pin del LED a LOW, y esperamos otros 500 ms.

Si haces clic en el botón de subir en el IDE de Arduino y esperas a que termine de subir, la placa ESP8266 se reiniciará automáticamente y, después de iniciarse, deberías ver que el LED integrado en la placa comienza a parpadear. Para entender mejor el código, intenta ajustar los retardos entre los estados de encendido y apagado del LED.

Hola Mundo para Usuarios Intermedios #

Ahora que tenemos los conceptos básicos de programación de ESP8266, elevemos un poco el nivel jugando con otras funciones básicas antes de saltar a la programación real de ESP8266.

Agregando Entrada del Usuario #

Una vez que tengas funcionando el programa básico "Hola Mundo", podemos empezar a añadir características más avanzadas y emocionantes. Una de las características más comunes para añadir es la entrada del usuario, lo que permitirá al usuario ingresar un mensaje que se imprimirá. Aquí hay un ejemplo de un programa que añade entrada del usuario:

#include <ESP8266WiFi.h>

void setup() {
Serial.begin(115200);
Serial.println("Hello World!");
Serial.println("Please enter a message:");
}

void loop() {
if (Serial.available()) {
String message = Serial.readString();
Serial.println("You entered: " + message);
}
}

Este programa imprime el mensaje "¡Hola Mundo!" y luego solicita al usuario que ingrese un mensaje. Cuando el usuario ingresa un mensaje, se imprime en el puerto serie. Esta es una excelente manera de obtener entrada del usuario desde el ESP8266.

Hola Mundo para ESP8266 #

Una vez que has hecho parpadear el LED integrado en el ESP8266, puedes pasar a proyectos más avanzados. Ahora, así como el "Hola Mundo" al parpadear el LED integrado es el primer programa predeterminado para microcontroladores, el equivalente en ESP8266 de "Hola Mundo" es conectarlo a la red WiFi. Por lo tanto, a continuación, exploraremos el ejemplo de WiFi del esp8266.

Conéctate a tu red WiFi #

Una vez que estemos listos con la configuración del ESP8266, el siguiente paso es escribir el código de "Hola Mundo". Este código es ligeramente más complejo que el código para principiantes, pero aún es relativamente simple. Aquí está el ejemplo de WiFi del esp8266:

#include <ESP8266WiFi.h>

// Replace with your network credentials
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";

void setup() {
Serial.begin(9600);
delay(10);

// Connect to Wi-Fi network with SSID and password
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

void loop() {
// Do nothing here
}

Este código conectará tu placa ESP8266 a la red WiFi proporcionada en la configuración (SSID y contraseña) e imprimirá la dirección IP del dispositivo.

Crear un servidor WEB en ESP8266 #

Sin embargo, nuevamente solo estamos viendo algo impreso en el monitor serie. ¡Eso no es emocionante!

El siguiente paso que todos hemos estado esperando... Crearemos un servidor WEB en el ESP8266:

#include <ESP8266WiFi.h>

const char* ssid = "YourNetworkName";
const char* password = "YourNetworkPassword";

WiFiServer server(80);

void setup() {
Serial.begin(115200);
Serial.println();

WiFi.begin(ssid, password);
Serial.println("Connecting to WiFi network: " + String(ssid));

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: " + WiFi.localIP().toString());

server.begin();
Serial.println("Server started");
}

void loop() {
WiFiClient client = server.available();

if (client) {
Serial.println("New client");
String currentLine = "";

while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
client.println("<h1>Hello World!</h1>");
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
}
}

client.stop();
Serial.println("Client disconnected");
}
}

Este ejemplo de código conecta la placa ESP8266 a una red WiFi y la configura para actuar como un servidor web y responder a solicitudes HTTP de los clientes. La placa se conecta a una red WiFi utilizando el SSID y la contraseña proporcionados y luego inicia un servidor web en el puerto 80.

En la función loop(), el código verifica continuamente las conexiones de clientes entrantes utilizando la función server.available(). Si abres un navegador y te conectas al servidor web utilizando la dirección IP que se muestra en el monitor serie, te conectarás al servidor web que reside en el ESP8266, y el servidor leerá la solicitud HTTP entrante línea por línea, y esperará una línea vacía, que indicará el final de la solicitud.

Cuando se detecta el final de la solicitud, enviaremos una respuesta HTTP de vuelta al cliente con un código de estado HTTP de 200, lo que significa éxito, y el mensaje en el cuerpo es "¡Hola Mundo!". Después de enviar la respuesta, desconectaremos al cliente y esperaremos a que el siguiente usuario se conecte.

Conclusiones #

En general, hemos cubierto una amplia gama de temas relacionados con el desarrollo de ESP8266 para principiantes. Hemos creado una aplicación básica de Hello World que imprime las famosas palabras en la consola, pero en nuestro caso, en el monitor serie.

Hemos hecho parpadear el LED integrado, que es un mensaje equivalente de Hello World para los microcontroladores.

Nos hemos conectado a la red WiFi con la placa ESP8266, lo que representó el programa equivalente de Hello World para el ESP8266.

Además, fuimos más allá y creamos un simple servidor web HTTP que reside dentro del ESP8266.

Bibliotecas y Frameworks #

  • El Arduino Core es una colección de bibliotecas y herramientas para programar el Arduino, pero también se puede utilizar para ESP8266. Está incluido por defecto en el IDE de Arduino, que es un entorno de desarrollo para escribir código para el ESP8266.

  • El ESP8266 Arduino Core es otra colección de bibliotecas para el IDE de Arduino, pero incluye herramientas específicamente para ESP8266:

    • La biblioteca ESP8266WiFi proporciona una forma sencilla de conectarse a redes WiFi.
    • La biblioteca ESP8266WebServer proporciona una forma sencilla de crear un servidor web en el ESP8266.
    • La biblioteca ESP8266HTTPClient proporciona una forma sencilla de realizar solicitudes HTTP a servidores web.