Table of Contents
Instalación
Para la instalación y configuración, tenemos que estar conectados a internet.
Descargamos arduino ide:
https://www.arduino.cc/en/software
En mi caso Linux 64 bits. Descargo el fichero arduino-1.8.19-linux64.tar.xz
Lo descomprimimos:
tar -xf arduino-1.8.19-linux64.tar.xz
Lo ejecutamos:
cd arduino-1.8.19/ ./arduino
Configuración ESP32
Tenemos que descargas los plugins de ESP32.
Web oficial: https://docs.espressif.com/projects/arduino-esp32
y luego First Steps > How to install > Installing using Arduino IDE y copiamos la URL de Stable release link
La url es:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Ahora vamos a Arduino IDE, y en File > Preferences:
Copiamos la URL de antes en Additional Boards Manager URLs y pulsamos OK:
Tenemos que añadir el tipo de placa ESP32. Vamos a Tools > Board > Boards Manager
Buscamos esp32 y pulsamos install:
En mi caso es una de AZ-Delivery
Seleccionamos la placa en **Tools > Board > ESP32 Arduino > ESP32 DEV Module ** (puede que dependiendo veriones etc… los nombres puedan cambiar)
Conectamos la placa con el cable USB y seleccionamos el puerto:
Copiamos este código que lo único que hace es escribir “Hola EKO” internamente en el “Serial Monitor”:
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("Hola EKO");
delay(2000);
}
Y pulsamos el botón upload para subir el código, puede que nos pida grabar el fichero, porque siempre que hacemos upload, lo graba.
Esto compila el código y lo sube a la placa por el cable USB. En la parte de abajo apareceran unas letras naranjas con un % e indica que lo ha compilado y subido todo:
Para ver la salida, pulsamos el botón “Serial Monitor”
Nos abre una pantalla de comunicación entre nuestro ordenador y la placa ESP32. Puede que salgan escriba ⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮ tenemos que seleccionar la velocidad de conexión a 115200 baud
Ahora nos irá escribiendo el texto que hemos puesto “Hola EKO” (podemos marcar la casilla Show timestamp si queremos ver la fecha)
Arduino ejecuta constantemente lo que pongamos en “void loop”. En este caso escribe “Hola EKO” y luego hace una pausa de 2000 milisegundos (2 segundos) y vuelve a empezar.
Conexión WIFI
Conexión con contraseña. Si es una red abierta ponemos NULL (lo indico mas abajo):
#include <WiFi.h>
const char* ssid = "mi_red_wifi";
const char* password = "mi_contraseña_wifi";
void setup() {
Serial.begin(115200);
delay(10);
Serial.println('\n');
WiFi.begin(ssid, password);
Serial.print("Conectando a ");
Serial.print(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print('.');
}
Serial.println('\n');
Serial.println("Conectado correctamente");
Serial.print("IP:\t");
Serial.println(WiFi.localIP());
}
void loop() {
}
Si la red es abierta ponemos estas líneas. NULL va sin comillas:
const char* ssid = "mi_red_wifi_abierta"; const char* password = NULL;
Esto nos escribe que se conecta y que IP tiene:
10:12:01.294 -> Conectando a mi_red_wifi_abierta..... 10:12:03.816 -> 10:12:03.816 -> Conectado correctamente 10:12:03.816 -> IP: 192.168.1.97
Una vez conectado ejecuta la void loop, que en este caso no hay nada.
Conexión con IP fija
Para poder administrar mejor los dispositivos, les pondremos ip fija.
En mi caso la red es la clásica 192.168.1.1/24 pero puede cambiar (OJO QUE LAS IP VAN CON COMAS Y NO CON PUNTOS)
#include <WiFi.h>
const char* ssid = "mi_red_wifi";
const char* password = "mi_contraseña_wifi";
IPAddress ip(192,168,1,69);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
IPAddress dns(8,8,8,8);
void setup() {
Serial.begin(115200);
delay(10);
Serial.println('\n');
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet, dns);
Serial.print("Conectando a ");
Serial.print(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print('.');
}
Serial.println('\n');
Serial.println("Conectado correctamente");
Serial.print("IP:\t");
Serial.println(WiFi.localIP());
}
void loop() {
}
Vemos que ahora tiene la ip que le hemos puesto:
10:23:30.083 -> Conectando a mi_red_wifi. 10:23:30.581 -> 10:23:30.581 -> Conectado correctamente 10:23:30.614 -> IP: 192.168.1.69
OTA
Para poder administrarlo remotamente sin necesidad de cable, instalamos OTA.
Para instalar las bibliotecas (que no librerías) se puede hacer con el manager como las placas (board) pero es mas fácil bajando el código en el directorio que toca.
Nombre: ESPAsyncWebServer
Repositorio: https://github.com/me-no-dev/ESPAsyncWebServer
https://github.com/ayushsharma82/AsyncElegantOTA
Vamos al directorio donde tenemos Arduino IDE y lo descargamos.
cd arduino-1.8.19/libraries
arduino-1.8.19/libraries$ git clone https://github.com/me-no-dev/ESPAsyncWebServer Cloning into 'ESPAsyncWebServer'... remote: Enumerating objects: 1515, done. remote: Counting objects: 100% (13/13), done. remote: Compressing objects: 100% (11/11), done. remote: Total 1515 (delta 2), reused 7 (delta 1), pack-reused 1502 Receiving objects: 100% (1515/1515), 867.67 KiB | 604.00 KiB/s, done. Resolving deltas: 100% (981/981), done. git clone https://github.com/me-no-dev/AsyncTCP/ git clone https://github.com/ayushsharma82/AsyncElegantOTA
Copiamos el siguiente código:
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <AsyncElegantOTA.h>
const char* ssid = "mi_red_wifi";
const char* password = "mi_contraseña_wifi";
IPAddress ip(192,168,1,69);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
IPAddress dns(8,8,8,8);
AsyncWebServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
Serial.println('\n');
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet, dns);
Serial.print("Conectando a ");
Serial.print(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print('.');
}
Serial.println('\n');
Serial.println("Conectado correctamente");
Serial.print("IP:\t");
Serial.println(WiFi.localIP());
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(200, "text/plain", "V1.0 Primer OTA");
});
AsyncElegantOTA.begin(&server); // Start AsyncElegantOTA
server.begin();
Serial.println("HTTP server started");
delay(1000);
}
void loop() {
}
Si accedemos desde un navegador a la ip que hemos puesto (192.168.1.69) veremos el texto que hemos definido en el código:
Ahora ya podemos desconectar la placa ESP32 del ordenador y conectar a una powerbank o un cargador, porque podemos acceder por la IP.
Si queremos subir código remotamente accedemos a la IP seguido de /update, en este caso: http://192.168.1.69/update
Primero tenemos que compilar el código, por ejemplo cambiamos el texto de la línea 37 y ponemos V2.0:
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(200, "text/plain", "V2.0 Prueba de subir codigo remotamente");
});
Compilamos el código en un fichero, vamos a sketch > Export compiled binary
Esto nos crea un fichero .ino en el mismo directorio que estemos grabando nuestro código.
Ahora vamos a la web del update del dispositivo y subimos el fichero pulsando en browse:
Seleccionamos el fichero .ino y empieza a subirlo:
Cuando acaba indica **OTA Success **
Ahora si vamos a la URL del dispositivo veremos que el texto ha cambiado:
V2.0 Prueba de subir codigo remotamente


















