Categoría: Arduino

  • Funciones y métodos integrados en Arduino IDE

    Cuando se trata de desarrollar proyectos electrónicos, Arduino IDE se ha convertido en una plataforma popular gracias a sus características únicas y su versatilidad. Además de su similitud con la sintaxis de C y C++, Arduino ofrece una serie de funciones y métodos específicos que permiten interactuar de manera eficiente con los componentes electrónicos. En este artículo, destacaremos algunas de las particularidades de Arduino y cómo aprovechar al máximo su potencial en tus proyectos.

    Una de las grandes ventajas de Arduino IDE es la amplia variedad de bibliotecas predefinidas disponibles. Estas bibliotecas contienen funciones listas para usar que simplifican la interacción con dispositivos y módulos comunes. Al importar una biblioteca específica, se obtiene acceso instantáneo a métodos que facilitan tareas como leer sensores, controlar motores, comunicarse con pantallas y mucho más. La biblioteca estándar de Arduino es solo el comienzo; existen innumerables bibliotecas de terceros creadas por la comunidad Arduino que ofrecen aún más funcionalidades especializadas.

    Además de las bibliotecas, Arduino también ofrece una serie de funciones y métodos integrados que son fundamentales para el desarrollo de proyectos electrónicos. Algunos ejemplos destacados son:

    1. digitalRead() y digitalWrite(): Estas funciones permiten leer y escribir valores digitales en los pines de Arduino. Son esenciales para interactuar con botones, interruptores y otros dispositivos que funcionan con señales digitales.
    2. analogRead() y analogWrite(): Arduino también cuenta con pines analógicos, y estas funciones permiten leer y escribir valores analógicos. Son especialmente útiles para trabajar con sensores de luz, temperatura y otros dispositivos que generan señales analógicas.
    3. Serial: Arduino tiene soporte para la comunicación serial, lo que permite establecer una conexión con otros dispositivos, como una computadora. La clase Serial ofrece métodos para enviar y recibir datos a través del puerto serie, lo que es esencial para la depuración y la interacción con otros sistemas.
    4. Wire: Esta biblioteca permite la comunicación I2C, un protocolo ampliamente utilizado para conectar múltiples dispositivos en un bus de dos hilos. Con los métodos proporcionados por la biblioteca Wire, es posible enviar y recibir datos entre Arduino y otros dispositivos compatibles con I2C.

    Estas son solo algunas de las particularidades de Arduino que te permitirán aprovechar al máximo su potencial en tus proyectos. Explorar las bibliotecas, funciones y métodos específicos de Arduino te brindará un mayor control sobre tus componentes electrónicos y te permitirá crear proyectos más sofisticados. Además, no olvides que la comunidad Arduino es muy activa, por lo que siempre puedes buscar ejemplos, tutoriales y proyectos similares para inspirarte y aprender nuevas formas de utilizar Arduino en tus creaciones.

    En conclusión, al destacar las particularidades de Arduino, como sus funciones y métodos específicos, los lectores podrán comprender mejor cómo aprovechar al máximo el potencial de Arduino en sus proyectos electrónicos. Explorar las bibliotecas predefinidas, aprender sobre las funciones integradas y estar al tanto de la comunidad Arduino te abrir

  • Sintaxis de código Arduino IDE

    Arduino IDE utiliza un lenguaje de programación basado en el estándar de C++, aunque proporciona una serie de funciones y bibliotecas específicas para facilitar la interacción con los componentes electrónicos. Aunque existen algunas diferencias y limitaciones en comparación con el C++ estándar, los principios básicos de la sintaxis son los mismos.

    La sintaxis general para escribir el programa Arduino es casi similar a la del C y C++ ordinario. Aquellos que estén familiarizados con el C y C++ básico podrán comenzar a utilizarlo fácilmente.

    Un programa Arduino se estructura principalmente en dos funciones: setup() y loop(). La función setup() se ejecuta una sola vez al inicio del programa y se utiliza para realizar la configuración inicial, como la inicialización de pines y la configuración de la comunicación serial. La función loop() es la parte principal del programa y se ejecuta continuamente en un ciclo infinito después de que setup() ha finalizado. Aquí es donde se colocan las instrucciones que se deben repetir una y otra vez, como leer sensores, tomar decisiones y controlar los actuadores.

    La mayoría de las instrucciones en Arduino IDE siguen la estructura de la programación en C y C++. Por ejemplo, para asignar un valor a una variable, se utiliza el operador de asignación (=). Los operadores aritméticos como suma (+), resta (-), multiplicación (*), división (/) y módulo (%) también se utilizan de la misma manera.

    Las estructuras de control como las condicionales (if, else if, else) y los bucles (for, while, do-while) se utilizan para tomar decisiones y repetir bloques de código, al igual que en C y C++. Estas estructuras permiten controlar el flujo del programa en función de ciertas condiciones o realizar iteraciones hasta que se cumpla una condición específica.

    Además de la sintaxis básica, Arduino proporciona una amplia gama de bibliotecas predefinidas que contienen funciones listas para usar. Estas bibliotecas simplifican la interacción con dispositivos y módulos comunes, como sensores, pantallas LCD, motores, comunicación inalámbrica, entre otros. Al incluir una biblioteca específica, puedes aprovechar las funciones y métodos que ofrece para facilitar el desarrollo de tu proyecto.

    En resumen, la sintaxis de código Arduino se basa en el lenguaje de programación C++ estándar, pero con algunas diferencias y bibliotecas adicionales. Aquellos familiarizados con C y C++ básico encontrarán que Arduino es fácil de aprender y utilizar. Con su sintaxis intuitiva y bibliotecas convenientes, Arduino se ha convertido en una plataforma popular para el desarrollo de proyectos electrónicos, desde simples experimentos hasta complejas aplicaciones embebidas.

  • Brazo robótico

    📍Barcelona 2022

    Proyecto de programación de acciones e iteraciones en Software para ubicar las esferas en diferentes posiciones.

    Un brazo robótico es un dispositivo mecánico controlado por computadora que se utiliza para manipular objetos de manera similar a un brazo humano. Estos brazos robóticos se pueden programar para realizar una variedad de tareas, desde simples movimientos hasta operaciones más complejas. La programación de acciones e iteraciones en software es fundamental para controlar y coordinar los movimientos del brazo robótico.

    Arduino es una plataforma electrónica de código abierto que se utiliza ampliamente en proyectos de robótica, incluidos los brazos robóticos. Proporciona una forma fácil de controlar y programar componentes electrónicos, lo que permite a los ingenieros y aficionados crear sus propios sistemas robóticos.

    La ingeniería mecatrónica es una disciplina que combina elementos de ingeniería mecánica, electrónica y de control para diseñar y construir sistemas automatizados. Los brazos robóticos son un ejemplo común de aplicación de la ingeniería mecatrónica, ya que requieren conocimientos en estas áreas para su diseño y programación.

  • Diferenciación entre Arduino y Arduino IDE

    Explorando alternativas y su papel en los proyectos electrónicos

    Introducción:

    En el emocionante mundo de la electrónica y la programación, Arduino y Arduino IDE son términos que suelen estar interconectados. Sin embargo, es importante comprender que Arduino y Arduino IDE son entidades diferentes, cada una con su propio propósito y función. En este artículo, exploraremos en detalle las diferencias entre Arduino y Arduino IDE, así como algunas alternativas más económicas y populares, como el ESP32 y el ESP8266.

    Arduino:

    Arduino es una plataforma de hardware de código abierto que ha ganado una enorme popularidad en la comunidad de proyectos electrónicos. Consiste en una placa programable que permite la interacción con una amplia gama de componentes electrónicos. La flexibilidad y la simplicidad de Arduino hacen que sea una opción accesible tanto para principiantes como para expertos en electrónica. Su comunidad activa y el soporte de una amplia variedad de bibliotecas hacen de Arduino una opción versátil para desarrollar proyectos electrónicos.

    Arduino IDE:

    Arduino IDE (Integrated Development Environment) es un entorno de desarrollo integrado diseñado específicamente para programar y cargar código en las placas Arduino. Es una herramienta de software que proporciona una interfaz amigable para escribir, compilar y cargar programas en las placas Arduino. El IDE simplifica el proceso de desarrollo al ofrecer funciones de gestión de bibliotecas, depuración y comunicación con la placa. Aunque Arduino IDE es la opción más comúnmente utilizada, existen alternativas populares como PlatformIO y Visual Studio Code con extensiones específicas para Arduino.

    Diferencias clave:

    La principal diferencia entre Arduino y Arduino IDE radica en su función y propósito. Mientras que Arduino es la plataforma de hardware en sí misma, Arduino IDE es el software utilizado para programarla. Arduino IDE es solo una de las opciones disponibles para programar las placas Arduino, y su popularidad se debe en parte a su facilidad de uso y a la comunidad de usuarios activa que proporciona soporte y recursos.

    Alternativas económicas: ESP32 y ESP8266

    Además de Arduino, existen alternativas más económicas y poderosas que ofrecen funcionalidades similares, como el ESP32 y el ESP8266. Estos microcontroladores Wi-Fi y Bluetooth de bajo costo son ampliamente utilizados en proyectos de IoT (Internet de las cosas) y tienen una gran base de usuarios y una comunidad activa.

    El ESP32, por ejemplo, ofrece una mayor potencia de procesamiento y más opciones de conectividad que Arduino, con soporte incorporado para Wi-Fi y Bluetooth. Además, tiene una amplia variedad de pines de entrada/salida (GPIO) que permiten la conexión y el control de una amplia gama de sensores y actuadores.

    Por su parte, el ESP8266 es una opción más económica y también cuenta con soporte para Wi-Fi, lo que lo convierte en una opción popular para proyectos que requieren conectividad inalámbrica.

    Conclusión:

    En conclusión, Arduino y Arduino IDE son elementos clave en el mundo de los proyectos electrónicos. Arduino es una plataforma de hardware de código abierto que permite la interacción con componentes electrónicos, mientras que Arduino IDE es el software utilizado para programar las placas Arduino. Ambos desempeñan un papel fundamental en la creación de proyectos electrónicos de manera accesible y versátil.

  • Arduino IDE: Compilar código para ESP32/ESP8266

    Arduino IDE es un compilador que hace que insertar lógica en lenguaje C sea muy fácil, sobre todo si la placa que compras es marca Arduino pues viene con el “CORE” pre-instalado.

    Cuando utilizamos placas de otros fabricante o incluso microcontroladores que no se encuentran en estas placas marca Arduino, tenemos muchas veces a disposición Frameworks de diversos fabricantes, como es el caso de los microcontroladores ESPRESSIF: ESP8266 y ESP32

    Luego de tener instalado el driver del FTDI en nuestro ordenador, se procede a decirle al “Arduino IDE” desde qué dirección cargar placas adicionales.

    Archivo > Preferencias

    Puedes compilar este código con Arduino IDE

    ESP8266 Core

    https://arduino.esp8266.com/stable/package_esp8266com_index.json

    ESP32 Core

    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

    Si quieres tener instalados los firmwares de ambos microcontroladores, puedes separar los link con una “,”

    https://arduino.esp8266.com/stable/package_esp8266com_index.json, https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

    Ver https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md para más detalles.

    ¿Cómo verificar si el microcontrolador se instaló correctamente?


    Ahora que ha instalado ESP32 en su “Arduino IDE”, si desea saber si desea instalar ESP32/8266 en Arduino IDE correctamente o no. Puede verificarlo usando un ejemplo simple ya disponible en Arduino IDE para la placa de desarrollo ESP32 para Internet de las cosas. Cuando instala la biblioteca ESP32 en Arduino IDE, estos ejemplos también se instalan.

    Se pueden seguir estos pasos:

    1. conectar tu placa con una computadora a través de un cable USB.

    2. Conectar la placa con una computadora, seleccione la placa que está utilizando.

    Hay muchos tipos de placas ESP32/8266 disponibles en el mercado. Suelo preferir la versión de ALIExpress Wemos D32 que incluye AUTOFLASH. Pero puedes usar cualquier tablero que quieras. Para seleccionar la placa, ir a herramientas>Placas, clic en el módulo de Desarrollo. Imagen a continuación:

    Ahora selección del puerto:

    Ahora subir el Sketch (Control+U)

  • ¿Cómo funciona el wifiManager? para ESP32/ESP8266

    La librería WiFiManager simplifica el proceso de configuración y gestión de conexiones WiFi en los módulos ESP32 y ESP8266. Proporciona una forma fácil de configurar y almacenar las credenciales de red WiFi, permitiendo que los dispositivos se conecten a las redes de manera autónoma y se recuperen de forma automática en caso de desconexiones.

    El “WiFiManager” es una biblioteca diseñada para facilitar la configuración y administración del Wi-Fi en dispositivos IoT basados en los microcontroladores ESP32 y ESP8266. Esta biblioteca ofrece una forma conveniente de crear un portal de configuración basado en la web, lo que permite a los usuarios ingresar las credenciales de Wi-Fi sin necesidad de cargar un nuevo código en el dispositivo.

    El proceso de funcionamiento del WiFiManager se puede describir en los siguientes pasos:

    1. Inclusión de la biblioteca: En primer lugar, es necesario incluir la biblioteca WiFiManager en el proyecto. Esto se puede realizar descargando e instalando la biblioteca desde el administrador de bibliotecas de Arduino IDE o mediante el uso de un gestor de paquetes como PlatformIO.
    2. Creación de una instancia del WiFiManager: Se crea una instancia del objeto WiFiManager en el código del proyecto.
    #include <WiFiManager.h>
    
    WiFiManager wifiManager;
    
    

    Inicialización y conexión:

    Antes de utilizar el WiFiManager, es necesario inicializarlo y conectarlo al punto de acceso Wi-Fi existente. Si se encuentran credenciales de Wi-Fi almacenadas previamente, el dispositivo se conectará automáticamente. En caso contrario, se iniciará el portal de configuración.

    void setup() {
      // Inicializar el WiFiManager
      wifiManager.autoConnect("MiDispositivo");
    
      // Resto del código de configuración o funcionalidad
    }
    

    En el ejemplo anterior, “MiDispositivo” es el nombre del punto de acceso que se creará si no se encuentran credenciales de Wi-Fi almacenadas. Este nombre puede modificarse según las preferencias del usuario.

    Portal de configuración:

    Si no se encuentran credenciales de Wi-Fi almacenadas, el WiFiManager iniciará un portal de configuración. Esto implica que el ESP32/ESP8266 actuará como un punto de acceso Wi-Fi al cual es posible conectarse desde un dispositivo móvil o una computadora.

    Al conectarse a este punto de acceso, se abrirá automáticamente una página de configuración basada en la web, donde los usuarios pueden ingresar las credenciales de su red Wi-Fi. Una vez que las credenciales se ingresen y envíen, el ESP32/ESP8266 se conectará a la red Wi-Fi especificada y recordará estas credenciales para futuros usos.

    Almacenamiento de la configuración:

    Después de que el WiFiManager se conecte exitosamente a la red Wi-Fi especificada, almacenará las credenciales en la memoria no volátil del dispositivo (por ejemplo, en el ESP32/ESP8266). Esto permite que las credenciales se utilicen en las próximas ejecuciones, sin necesidad de ingresarlas nuevamente cada vez que se reinicie el dispositivo.

  • Timers o Temporizadores Arduino

    ¿Qué es TIMER en Electrónica Embebida?

    El temporizador es una especie de interrupción. Es como un reloj simple que puede medir el intervalo de tiempo de un evento. Cada microcontrolador tiene un reloj (oscilador), digamos que en Arduino Uno es de 16Mhz. Este es el responsable de la velocidad. Cuanto mayor sea la frecuencia de reloj, mayor será la velocidad de procesamiento. Un temporizador utiliza un contador que cuenta a cierta velocidad dependiendo de la frecuencia del reloj. En Arduino Uno se necesitan 1/16000000 segundos o 62 nanosegundos para hacer un solo conteo. Lo que significa que Arduino se mueve de una instrucción a otra instrucción por cada 62 nanosegundos.

    En esta página se buscan establecer nuestros bits de registro del temporizador para usar la interrupción de desbordamiento del temporizador para alternar un LED cada vez que ocurra una interrupción.

    El valor del precargador del bit del temporizador también se puede ajustar usando botones para controlar la duración en la que ocurre la interrupción.

    Timers / Temporizadores en Arduino UNO

    En Arduino UNO hay tres temporizadores que se utilizan para diferentes funciones.

    Timer0 / Temporizador0:

    Es un temporizador de 8 bits y se utiliza en funciones de temporizador como delay(), millis().

    Timer1 / Temporizador1:

    Es un temporizador de 16 bits y se usa en la biblioteca de servos.

    Timer2/Temporizador2:

    Es un temporizador de 8 bits y se utiliza en la función tone().

    Registros de Timer de Arduino

    Para cambiar la configuración de los temporizadores, se utilizan registros de temporizador.

    A) TIMER1: Registros de control de temporizador / Timer (TCCRnA/B):

    Este registro contiene los bits de control principales del temporizador y se utiliza para controlar los preescaladores del temporizador. También permite controlar el modo de temporizador usando los bits WGM.

    TCCR1A76543210
     COM1A1COM1A0COM1B1COM1B0COM1C1COM1C0WGM11WGM10
    TCCR1B76543210
     ICNC1ICES1WGM13WGM12CS12CS11CS10

    Prescaler / Preescalador

    Los bits CS12, CS11, CS10 en TCCR1B establecen el valor del preescalador. Se utiliza un preescalador para configurar la velocidad del reloj del temporizador. Arduino Uno tiene preescaladores de 1, 8, 64, 256, 1024.

    CS12CS11CS10Uso
    000No Clock Timer STOP
    001CLCK i/o /1 No Prescaling
    010CLK i/o /8 (From Prescaler)
    011CLK i/o /64 (From Prescaler)
    100CLK i/o /256 (From Prescaler)
    101CLK i/o /1024 (From Prescaler)
    110External clock source on T1 Pin. Clock on falling edge  
    111External Clock source on T1 pin. Clock on rising edge.

    B) TIMER 2: Registro de temporizador/contador (TCNTn)

    Este registro se utiliza para controlar el valor del contador y establecer un valor de precarga. Fórmula para el valor del precargador para el tiempo requerido en segundos: TCNTn = 65535 – (16x1010xTiempo en segundos / Valor del preescalador) Para calcular el valor del precargador para el temporizador 1 durante un tiempo de 2 segundos:

    TCNT1  = 65535 – (16×106x2 / 1024) = 34285

    Interrupciones del temporizador de Arduino


    Hay varias interrupciones de temporizador en Arduino:


    a) Interrupción de desbordamiento del temporizador:

    Cada vez que el temporizador alcanza su valor máximo, por ejemplo (16 Bit-65535), se produce la interrupción de desbordamiento del temporizador. Por lo tanto, se llama a una rutina de servicio de interrupción ISR cuando el bit de interrupción de desbordamiento del temporizador está habilitado en el TOIEx presente en el registro de máscara de interrupción del temporizador TIMSKx.

    Formato de la función ISR:

    ISR(TIMER1_COMPA_vect)
    {
    }

    Registro de comparación de salida (OCRnA/B):

    Aquí, cuando se produce la interrupción de coincidencia de comparación de salida, se llama al servicio de interrupción ISR (TIMERx_COMPy_vect) y también se establecerá el bit indicador OCFxy en el registro TIFRx. Este ISR se habilita configurando el bit de habilitación en OCIExy presente en el registro TIMSKx. Donde TIMSKx es Registro de máscara de interrupción de temporizador.

    Captura de entrada de temporizador:

    A continuación, cuando se produce la interrupción de captura de entrada del temporizador, se llama al servicio de interrupción ISR (TIMERx_CAPT_vect) y también se establece el bit indicador ICFx en TIFRx (registro de indicador de interrupción del temporizador). Este ISR se habilita configurando el bit de habilitación en ICIEx presente en el registro TIMSKx.

  • ¿Cómo instalar la librería LiquidCrystal_I2C?

    //Usamos la de Marco Schwartz

    1. En el programa Arduino IDE, abre el menú “Herramientas” (Tools).
    2. En el menú “Herramientas”, selecciona “Gestor de bibliotecas” (Library Manager).
    3. En la ventana del “Gestor de bibliotecas”, en el campo de búsqueda, escribir “LiquidCrystal_I2C” y presiona Enter.
    4. Debería verse la biblioteca “LiquidCrystal I2C” en los resultados de la búsqueda. Haz clic en el botón “Instalar” (Install) que se encuentra junto a la biblioteca.
    5. El Arduino IDE descargará e instalará la biblioteca automáticamente.
    6. Una vez que la instalación esté completa, se verá un mensaje que indica que la biblioteca se ha instalado con éxito.

  • Cabina de desinfección con control de temperatura infrarojo | Sistema de acceso de personal

    Cabina de desinfección con control de temperatura infrarojo | Sistema de acceso de personal

    📍 Pérgamo, Italia

    Cuando comenzó la pandemia, trabajamos a contra-reloj con uno de los países más afectados. Un sistema de control de personal con detección de temperatura.

    (más…)

  • ESP32 / ESP8266 Escribir en una Base de datos MySQL usando PHP y Arduino IDE

    Este artículo pretende explicar cómo conectar un módulo con un ESP32/ESP8266 a un servidor WEB que reciba los datos.

    El microcontrolador será el cliente de una “página WEB”, accederá con información a un vínculo para insertar información en una Base de Datos

    Actualizado: 2/7/2025

    CONTEXTO

    Insertar datos directamente en una base MySQL desde un microcontrolador resulta sencillo, pero puede presentar riesgos de seguridad y escalabilidad. Como alternativa, se puede usar una API REST o un broker MQTT. Este artículo muestra un enfoque con PHP y HTTP, con medidas básicas de protección.