Arduino para programadores en 2023
Arduino para programadores en 2023
Finales del 2023, qué comprar para empezar a usar arduino. Porqué no usar arduino, al menos su controlador, si su entorno y una guía de compra para que programes sin necesidad de entender la electrónica, ya que realmente hay que saber muy pocos conceptos. En este post te cuento todo lo que necesitas, con mi experiencia desde 2018. A mis espaldas cuento con una lista larga de errores cometidos, te escribo para tú no los cometas y consigas que tus proyectos se hagan realidad y no se queden en tu cabeza, o en la mesa cogiendo polvo.
¿Qué es Arduino?
Arduino es una plataforma de hardware y software de código abierto que facilita la creación de prototipos electrónicos interactivos. Desde su introducción, ha ganado popularidad gracias a su simplicidad y accesibilidad para principiantes.
Arduino ha revolucionado el mundo de la electrónica y el desarrollo DIY (Do It Yourself) desde su introducción en 2005. Con su enfoque centrado en la facilidad de uso, ha logrado democratizar el acceso a la creación de proyectos electrónicos, permitiendo a principiantes y aficionados de todas las edades y habilidades sumergirse en este fascinante universo.
Características clave de Arduino
- Software Amigable: El IDE (Entorno de Desarrollo Integrado) de Arduino es intuitivo y fácil de usar, haciendo que la programación sea accesible para todos. Su simplicidad permite a los usuarios concentrarse en la lógica del proyecto sin la necesidad de comprender detalles complejos del hardware.
- Hardware Abierto: Las especificaciones de hardware de Arduino son de código abierto, lo que significa que cualquier persona puede crear y vender su propia versión de una placa Arduino, siempre y cuando respete la licencia.
- Comunidad Activa: Arduino cuenta con una comunidad global activa que comparte proyectos, bibliotecas y soluciones. Esta red de colaboradores ha sido fundamental para el crecimiento y éxito de la plataforma.
La entrada en el mercado de otros microcontroladores
Arduino ha creado un ecosistema que va más allá de sus propias placas y microcontroladores. Su plataforma ha establecido un estándar en la comunidad DIY, y su influencia es evidente en la cantidad de hardware y software que se ha desarrollado inspirado en o para ser compatible con Arduino.
Ha sentado un precedente en el mundo de la electrónica, y su plataforma ha sido adaptada y adoptada por varios otros microcontroladores para aprovechar su entorno y las vastas librerías disponibles. A continuación, te presento una lista de algunos de los microcontroladores más populares que pueden ser programados con el entorno Arduino, ordenados desde los más populares:
-
ESP8266 y ESP32 (Espressif Systems):
- ESP8266 (2014): Un microcontrolador con capacidades WiFi.
- ESP32 (2016): Una evolución del ESP8266 con un procesador más potente, WiFi, y Bluetooth.
-
STM32 (STMicroelectronics) (2007):
- Los microcontroladores STM32 son una familia de 32 bits ARM Cortex-M. STM32duino permite usar el IDE de Arduino para programar estos microcontroladores.
-
Teensy (PJRC):
- Teensy ha tenido múltiples versiones desde su lanzamiento. La primera versión fue lanzada alrededor de 2008. Teensy 4.0, por ejemplo, se lanzó en 2019. Estos microcontroladores basados en ARM ofrecen capacidades avanzadas y son compatibles con el Arduino IDE mediante un addon.
-
ATtiny (Microchip, anteriormente Atmel):
- Los ATtiny han estado en el mercado durante mucho tiempo, con variantes como el ATtiny85 siendo populares en proyectos de Arduino de menor escala. Su lanzamiento data de la década de 1990.
-
SAMD21 y SAMD51 (Microchip):
- SAMD21 (alrededor de 2015): Utilizado en placas como Arduino Zero.
- SAMD51: Una evolución más potente del SAMD21.
-
nRF52 Series (Nordic Semiconductor) (2016):
- Estos chips son conocidos por sus capacidades BLE (Bluetooth Low Energy).
-
Intel Galileo y Edison (Intel):
- Intel Galileo (2013) y Intel Edison (2014): Aunque fueron discontinuados, adaptaron el entorno de Arduino.
Esp32 vs Arduino
Aquí te presento una lista de beneficios al elegir el ESP32 frente a un Arduino tradicional:
-
Conectividad Integrada:
- WiFi: El ESP32 tiene WiFi integrado, lo que permite una fácil conexión a redes y desarrollo de aplicaciones IoT sin hardware adicional.
- Bluetooth y BLE (Bluetooth Low Energy): El ESP32 también incorpora capacidades de Bluetooth y BLE, facilitando la conexión con dispositivos móviles y otros dispositivos Bluetooth.
-
Mayor Potencia de Procesamiento:
- El ESP32 cuenta con un procesador de doble núcleo basado en el diseño Tensilica Xtensa LX6, con una frecuencia de hasta 240 MHz, lo que le da una capacidad de procesamiento mucho mayor en comparación con las placas Arduino tradicionales.
-
Mayor Memoria:
- El ESP32 tiene más RAM y memoria flash que un Arduino, lo que permite manejar aplicaciones más grandes y complejas.
-
Entrada/Salida Versátil:
- El ESP32 proporciona una gama más amplia de periféricos, como ADCs de mayor resolución, DACs, touch sensors, entre otros.
-
Seguridad:
- Funciones avanzadas como encriptación por hardware, arranque seguro y almacenamiento seguro de claves.
-
Soporte para Deep Sleep:
- Permite un consumo muy bajo de energía durante los períodos de inactividad, ideal para aplicaciones alimentadas por batería.
-
Precio:
- A pesar de todas sus características avanzadas, el ESP32 suele ser competitivo en precio, a menudo siendo más económico que las placas Arduino con capacidades de conectividad similares.
-
Compatibilidad con Arduino IDE:
- Es posible programar el ESP32 utilizando el entorno Arduino, permitiendo a los desarrolladores aprovechar las librerías y herramientas ya familiares.
-
Desarrollo Activo y Comunidad de Soporte:
- Dado que el ESP32 ha ganado tanta popularidad, cuenta con una comunidad activa, lo que se traduce en un mayor soporte en foros, tutoriales y librerías actualizadas.
- Form Factor Compacto:
- Aunque depende de la placa específica, muchos módulos ESP32 son compactos y adecuados para proyectos donde el espacio es una preocupación.
Si bien el ESP32 ofrece muchos beneficios, es esencial considerar las necesidades específicas de tu proyecto. En algunos casos, un Arduino tradicional podría ser más que suficiente, y en otros, el ESP32 podría ser la elección clara debido a sus capacidades avanzadas.
Esp32, IDEs, y lenguajes de programación
El ESP32 es una plataforma versátil que admite varios lenguajes de programación. Aquí te detallo algunos de los lenguajes más populares y los IDEs o herramientas asociadas que puedes usar para desarrollar con ellos:
-
C/C++:
- Arduino IDE: Permite programar el ESP32 utilizando el framework de Arduino, que está basado en C/C++. Solo tienes que cargar una dirección de json en su configuración, y ya puedes usar esp32.
- PlatformIO con VSCode: Soporta desarrollo en C/C++ para el ESP32 con o sin el framework de Arduino. Es el elegido por la mayoría de los programadores.
- Eclipse: Puedes configurarlo para el desarrollo en C/C++ para ESP32, especialmente con el plugin Sloeber para soporte de Arduino.
- Espressif IoT Development Framework (ESP-IDF): Es el framework oficial de Espressif para el ESP32 y utiliza C/C++.
-
MicroPython:
- Thonny: Un IDE ligero de Python que tiene soporte específico para MicroPython en ESP32.
- uPyCraft: Un IDE diseñado específicamente para MicroPython y su uso en microcontroladores como ESP32.
- Mu Editor: Otro IDE que soporta MicroPython y su desarrollo en ESP32.
-
JavaScript (con Espruino):
- Espruino Web IDE: Es un entorno basado en navegador diseñado específicamente para programar con Espruino, una implementación de JavaScript para microcontroladores.
-
Lua (con NodeMCU):
- ESPlorer: Un IDE basado en Java para el desarrollo de scripts Lua para ESP32 (y ESP8266) usando el firmware NodeMCU.
-
Rust:
- Aunque no es tan común como otros lenguajes, ha habido esfuerzos para llevar Rust al ESP32.
- VSCode o cualquier editor de texto: Junto con las herramientas de línea de comandos y las bibliotecas adecuadas, puedes desarrollar para ESP32 en Rust.
Y es aquí cuando te dijo, ¿Qué lenguaje es el que más te gusta? . Para los amantes de python decirte que no todo se puede hacer con él, no dispone de todas las librerías para su uso, por ejemplo el manejo de la cámara para hacer fotos y videos. Pero para una gran cantidad de proyectos es ideal.
Mi consejo es Usar Platformio (plugin de vscode), con c++ (arduino).
Esp32 desde PlatformioIO y VsCode
Usar un ESP32 con Arduino en PlatformIO es una excelente opción para aprovechar las capacidades de este microcontrolador con una interfaz amigable y poderosa. Aquí te guiaré paso a paso en la configuración y primeros pasos para trabajar con un ESP32 en PlatformIO:
-
Instalación de Visual Studio Code (VSCode):
- Primero, si aún no lo has hecho, descarga e instala VSCode.
-
Instalación de PlatformIO en VSCode:
- Abre VSCode.
- Ve a la sección de extensiones (ícono de bloques en el panel lateral o presiona
Ctrl+Shift+X
). - Busca "PlatformIO" y selecciona "PlatformIO IDE" de la lista, luego haz clic en "Install".
-
Crear un nuevo proyecto:
- Una vez instalado PlatformIO, en la página de inicio de PlatformIO (la deberías ver al abrir VSCode o al hacer clic en el ícono de PlatformIO en la barra lateral), selecciona "New Project".
- Introduce un nombre para tu proyecto.
- En "Board", escribe "ESP32" y selecciona tu modelo específico de ESP32 (por ejemplo, "Espressif ESP32 Dev Module").
- En "Framework", elige "Arduino".
- Haz clic en "Finish".
-
Estructura del Proyecto:
- En el explorador de archivos de VSCode, verás varias carpetas y archivos. Los más importantes son:
-
src
: Aquí es donde colocarás tu código principal (por defecto, tendrás un archivomain.cpp
). -
lib
: Es donde puedes colocar bibliotecas adicionales o tus propias bibliotecas. -
platformio.ini
: Es el archivo de configuración de tu proyecto. Aquí puedes especificar versiones de frameworks, bibliotecas, flags de compilación y más.
-
- En el explorador de archivos de VSCode, verás varias carpetas y archivos. Los más importantes son:
-
Escribir y Cargar un Programa:
- Ve al archivo
src/main.cpp
. - Borra cualquier código existente y escribe un simple programa "Blink". Aquí tienes un ejemplo:
#include <Arduino.h> void setup() { pinMode(2, OUTPUT); // El pin 2 suele ser el LED integrado en la mayoría de los módulos ESP32. otros no tienen, conecta uno junto con una resistencia de 220ohm } void loop() { digitalWrite(2, HIGH); // Enciende el LED. delay(1000); // Espera un segundo. digitalWrite(2, LOW); // Apaga el LED. delay(1000); }
- Conecta tu ESP32 al pc.
- Haz clic en el ícono de "Upload" (una flecha hacia la derecha) en la barra inferior de PlatformIO para compilar y cargar el código en tu ESP32.
- Ve al archivo
-
Monitor Serial:
- Una vez cargado el programa, si deseas ver salidas seriales o interactuar con tu ESP32, haz clic en el ícono de "Plug" en la barra inferior de PlatformIO para abrir el Monitor Serial.
-
Bibliotecas y Dependencias:
- PlatformIO facilita la gestión de bibliotecas. En la página de inicio de PlatformIO, puedes buscar bibliotecas y agregarlas a tu proyecto fácilmente.
Es un resumen breve, debes aprender a usar el archivo platformio.ini, y cosas que en un simple post no puedo explicarte, pero hay muchos videos de youtube.
Delay vs Millis
La función delay()
es una función proporcionada por el framework de Arduino para pausar la ejecución del programa durante un número especificado de milisegundos. Por ejemplo, delay(1000) pausará la ejecución durante 1 segundo. 1 segundo todo el programa, absolutamente todo. ¿Eso es lo que quieres?
Limitaciones de delay()
:
- Bloqueo: Durante el tiempo que delay() está en ejecución, el microcontrolador no hace nada más. Esto significa que tu programa no puede responder a entradas externas ni realizar otras tareas en paralelo.
- Ineficiencia: El uso de delay() en aplicaciones que requieren multitarea puede hacer que tu código sea ineficiente o que funcione de manera errática.
- Inflexibilidad: Si utilizas delay() en múltiples partes de tu código, cambiar el tiempo de pausa puede ser complicado y podría afectar otras funcionalidades.
Solución con millis()
: La función millis() devuelve el número de milisegundos desde que el programa Arduino comenzó a ejecutarse. Esto puede usarse para crear intervalos de tiempo no bloqueantes.
Ejemplo práctico con millis(): Supongamos que quieres hacer parpadear un LED cada segundo, pero al mismo tiempo, deseas verificar constantemente un botón para encender o apagar otro LED.
Sin millis(), podrías tener tentación de usar delay() para el parpadeo, pero eso bloquearía la capacidad de detectar el botón. Con millis(), puedes hacer ambas cosas simultáneamente:
const int ledPin = 13; // Pin del LED parpadeante.
const int buttonPin = 2; // Pin del botón.
const int otherLedPin = 12; // Pin del otro LED.
unsigned long previousMillis = 0;
const long interval = 1000; // Intervalo para parpadear (1 segundo).
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(otherLedPin, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
// Parpadeo del LED sin bloquear:
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (digitalRead(ledPin) == LOW) {
digitalWrite(ledPin, HIGH); // Enciende el LED.
} else {
digitalWrite(ledPin, LOW); // Apaga el LED.
}
}
// Comprobación del botón:
if (digitalRead(buttonPin) == HIGH) {
digitalWrite(otherLedPin, HIGH); // Enciende el otro LED.
} else {
digitalWrite(otherLedPin, LOW); // Apaga el otro LED.
}
}
¿Qué comprar?
A la hora de ponerte a buscar que comprar, te inquieta ver la cantidad de dispositivos, con sus respectivas configuraciones, esp32 si, pero con pantalla, sin pantalla, con gps, con sonido, con batería, con usb tipo c o no, …
Los kits como Freenove, TTGO, LilyGO y M5Stack, ofrecen beneficios adicionales, como pantallas integradas, altavoces, fácil acceso a pines para sensores y protecciones adicionales contra cortocircuitos. Estos componentes adicionales pueden hacer que la experiencia de desarrollo sea más intuitiva y segura, especialmente para aquellos que no tienen mucha experiencia en electrónica. Sin embargo, es importante investigar las especificaciones y características de cada kit para asegurarte de que se ajuste a tus necesidades.
Si estás indeciso, y no te importa mucho el dinero apuesta por M5stack. No solo son sus dispositivos. Han creado una linea de librerías, todas comentadas en GitHub que te llevarán la electrónica a otro mundo. Su precio es elevado pero su calidad es suprema.
El resto tiene precios razonables, que pueden triplicar el precio de un esp32, pero que aún así merece la pena, ya que cuentan casi siempre de más memoria, y mejor calidad.
Ten en cuenta que muchas tiendas de Aliexpress si compras esp32 normales te los pueden vender sin soldar, si no cuentas con soldador te puede generar un impedimento extra.
Ten cuidado que ponga esp32 y no esp8266, ya que esta es una vs anterior, y no cuenta con todo lo que tiene esp32, aunque en muchas cosas es compatible, no todo. Si tiras por lo barato, todos los caminos te llebarán a él.
Todos los que he mencionado cuentan con cuenta GitHub, con una lista muy grande de ejemplos de ejecutar directamente.
Evita comprar kits de arduino, o raspberry, estos no son 100% compatibles, ya que funcionana a 5v, y esp32 solo su conexión, el resto de los pines para conectar sensores funcionan a 3.3v. Ten por seguro que a tu esp32 le saldría humo y a tirar.
No te lances a comprar como loco todo lo que ves. Compra lo justo, junto con unos sensores que te vendan esas empresas, para usar sus ejemplos.
Programar en Vue, React, Angular con esp32 (websockets y bluetooth)
-
Si bien no puedes ejecutar Angular, React o Vue directamente en un ESP32, puedes construir una aplicación web con cualquiera de estos frameworks que se comunique con el ESP32.
-
Por ejemplo, podrías tener una aplicación web en Angular que utiliza WebSockets para comunicarse con un servidor que, a su vez, se comunica con el ESP32. O podrías tener una aplicación que se conecta directamente al ESP32 a través de Bluetooth utilizando alguna API de navegadores web modernos.
-
El ESP32 tiene capacidad Bluetooth y BLE (Bluetooth de baja energía). Con el SDK adecuado, puedes programar el ESP32 para que actúe como un dispositivo Bluetooth que pueda comunicarse con otras plataformas, incluidos navegadores web que admitan API de Bluetooth.
-
WebSockets permite una comunicación bidireccional entre un cliente web y un servidor. Podrías programar el ESP32 para que actúe como un servidor WebSocket y permita que las aplicaciones web se comuniquen con él en tiempo real.
-
En el Arduino o ESP32, programarás la lógica que necesitas para interactuar con la interfaz web. Por ejemplo, si desde la interfaz decides encender un LED, el microcontrolador recibirá ese comando y encenderá el LED.
Consejos de electrónica
- Etiqueta qué es , mételo en una bolsa, no lo pegues, solo dejaló ahí, para indicar el nombre del sensor, el voltaje que usa.
- Lee los datasheet, no todos valen, deberás buscar
- Si te lanzas a crear pcbs, aprende kicad: es gratis y profesional. Para imprimir, por 4 euros 5 tarjetas en jlcpcb o pcway
- Si sale humo blanco, u otro color, desconecta y a la basura, no intentes hacer nada por revivirlo, te puedes cargar tu pc.
- No sobrecargues de sensores tu proyecto, hazlo fácil. Además, recuerda que tienes que contar los amperios que introduces, sino habrá daños irreparables.
- No dejes tus proyectos en protoboard, aprende a soldar, no hace falta comprarte muchas cosas, yo empecé con un soldador de amazon de 20 euros. ahora tengo el ts101.
- Si sueldas compra un aspirador (ventilador al revés), estaño sin plomo (tu vida cuesta más, págalo). Usa gafas de protección, no dejes mucho tiempo encendido el soldador y apágalo si no lo usas.
- No te metas directamente con baterías. hay muchas constantes que aún no entiendes.
- compra varios maletines de herramientas, con cada departamento una hojita de qué es, voltaje. Información que sepas.
- compra en aliexpress. Las esperas son largas, si, pero a mitad de precio. No todas las tiendas son fiables, mira las de mayor número de venta, las oficiales, las que les escribes preguntando por su datasheet y te contestan bien.
- Empieza a soldar y desoldar pin header, leds, cosas baratas.
- Cada sensor, componente cuenta con un módulo que ocupa más, es más feo, pero te ayuda a no saber electrónica, te da todo lo que necesita, como puedría ser condensadores, resistencias, mosfet.
- Compra un multímetro digital, nada de analógico, automático.
Libros recomendados
Electrónica:
-
Electrónica para makers - guía completa. De paolo Aliverti
-
Learn Electronics with Arduino An Illustrated Beginner's Guide to Physical Computing - Jody Culkin, Eric Hagan
Arduino-esp32:
- Todos los tutoriales de Rui Santos y Sara Santos. (tienen muchísimos, de todo). También tienen de micropython.
webs
- https://www.luisllamas.es/
- https://randomnerdtutorials.com/
- https://docs.arduino.cc/learn
escríbe algo en comentarios
😉 Gracias.