Hace tiempo que tengo un ESP32 en casa, pero lo compré más por la curiosidad que por tener algo en mente con el que usarlo. Igualmente, siempre es divertido aprender cosas de IoT y electrónica, como programador es una forma de pasar de la abstracción del código a algo tangible y aun más incromprensible como lo es el mundo real. AHHH, el mundo real.
Como es de esperar, no tengo ni idea de estas cosas, pero os quiero transmitir un poco de lo que he aprendido por si os es útil.
El ESP32
¿Qué es el ESP32?
El ESP32 es una serie de microcontroladores SoC (system-on-chip) de bajo coste y bajo consumo energético con WIFI y Bluetooth modo dual integrados. Actualmente son creados y desarrollados por la empresa china Expressif Systems.
Un SoC es un circuito integrado que integra (valga a redundancia), la mayor parte de los componentes de un ordenador (CPU, memoria, GPU…). Además, pueden enviar y recibir señales digitales y analógicas, incluso señales de radio. La famosa serie de chips Apple Silicon son SoC basados (en su mayoría) en la arquitectura ARM.
Esta seria es la sucesora del ESP8266. Es mejor en todo y viene con Bluetooth integrado. El ESP32 cuesta un poco más, pero sigue siendo barato.
Este chip se ha vuelto famoso por su bajo costo (he encontrado estos chips hasta por un 1€ en AliexPress), gran potencia (superando al Arduino UNO), ser (en su mayoría) Dual-core y tener WIFI y Bluetooth integrados. Además, es compatible con Arduino IDE.
Algunas especificaciones del ESP32
Por si quereis detelles muy técnicos, os dejoe el datasheet oficial: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf. Aquí simplemente voy a nombrar las cosas que entiendo:
- ADCs (Conversores analógio-digital)
- DACs (Conversores digital-analógio)
- Bluetooth (clásico) y BLE (Bluetooth Low Energy)
- Memoria:
- ROM: 449 KB (para el arranque y las funciones básicas)
- SRAM: 520 KB (para datos e instrucciones)
La serie ESP32
El ESP32 es solo el chip, pero también hace referencia a toda la serie (o familia) de placas de desarrollo que implementan el chip ESP32. Programar directamente en el chip ESP32 es poco práctico para aprender, testear o prototipar. Por eso se utilizan las placas de desarrollo, que vienen con toda la circutería necesaria para usar el chip, como pines para conectar periféricos, un puerto para conectarlo al ordenador, una antena WIFI y etc etc. Además, otras placas pueden venir con cámaras y otro tipos de sensores integrados.
Debido a que hay muchas placas, es normal abrumarse un poco. La recomendable para principiantes es DOIT Esp32 DevKit v1 (ESP-WROOM-32). Aunque, seguramente os valga cualquiera que se parezca a esto:
¿Cómo programar en el ESP32?
Como ya mencioné antes, el ESP32 se puede programar con el Arduino IDE usando C++ o Micropython. También se puede usar VSCode, pero me parece que lo más fácil es usar Arduino IDE tengas o no experiencia con Arduino.
Yo uso la distribución Linux Pop!_OS (no por nada, simplemente porque quería probar algo diferente a Ubuntu). Los pasos deberían ser los mismos para otras distribuciones basadas en Debian, pero si usas otro sistema operativo, te recomiendo ojear otros tutoriales, aunque aquí comento un error que solucioné y creo es común.
Instalar Arduino IDE
Arduino IDE necesita JAVA y pyserial
, así que lo primero es descargar ambos:
Ahora añade export PATH="/home/imangelo/.local/bin:$PATH"
al archivo ~/.bashrc
y ejecuta source ~/.bashrc
para aplicar los cambios.
Comprueba que todo haya funcionado correctamente:
Desde aquí puedes instalar Arduino IDE en formato ZIP o AppImage: https://www.arduino.cc/en/software.
Yo prefiero AppImage. Descargando un icono del IDE y usando un paquete de npm que creé, configuro rápidamente un desktop shortcut:
Instalando el ESP32 en Arduino IDE
Ahora sigue estos pasos para instalar el ESP32 en Arduino IDE:
- Ve te a Files > Preferences o ejecuta el comando
Ctrl + Comma
. - Copia y pega el siguiente URL en Additional Boards Manager URLs:
- Ahora haz click en el icono Boards Manager en el panel de navegación izquierdo, busca esp32 e instala esp32 by Expressif Systems:
- Después de instalarlo, reinicia Arduno IDE.
Ahora, ve a Tools > Boards y comprueba que tengas disponible esp32.
Comprobar la instalación
Para comprobar que todo ha ido bien, hay que subir un programa al ESP32. Para eso, lo primero es conectarlo por un cable USB (asegúrate de que este pueda transmitir datos). Ahora sigue estos pasos:
- Selecciona tu placa en el menu desplegable, al lado del check y la flecha, y haz click en Select other board and port…
- En BOARDS, busca el modelo de tu placa ESP32, en mi caso es ESP32 DEV MODULE. También hay que seleccionar el puerto:
Dale a OK y pega el siguiente código en el editor:
Dale al botón Upload para compilar programa y enviarlo al ESP32:
Si al intentar subir el programa te salta el error:
es porque no tienes permisos de lectura/escritura del puerto /dev/ttyUSB0
.
Una forma de arreglarlo, aunque suene sorprendente, es darte esos mismos permisos necesarios:
Pero esa no es realmente una solución, pues lo tienes que hacer cada vez que vuelvas a encender el ordenador. La verdadera solución es añadir tu usuario al grupo dialout
:
Ahora deberías ver cómo el LED integrado de tu placa se enciende y se apaga en intervalos de 1 segundo.
¡Y ya estaría! Ahora ya puedes empezar a desarrollar proyectos de IoT. En mi caso, voy a intentar crear un coche a control remoto por Bluetooth.