Categoría: Sistemas Embebidos

  • Sistema de gestión de batería avanzado Analogico + SBS

    Sistema de gestión de batería avanzado Analogico + SBS

    A veces, en ingeniería, el reto no es solo crear algo nuevo, sino hacer que conviva con lo que ya existe. Hace poco estuve trabajando en un proyecto muy interesante que resume perfectamente esta idea: un sistema de gestión y registro de baterías (Datalogger) capaz de hablar dos “idiomas” distintos.

    El problema: Lo viejo vs. Lo nuevo

    En el mundo de las baterías hay, básicamente, dos grandes grupos conviviendo:

    1. Las baterías “inteligentes” (SBS): Son las modernas. Ellas mismas te dicen “estoy al 80%”, “tengo esta temperatura” o “me quedan tantos ciclos de vida”. Se comunican digitalmente.
    2. Las baterías “tradicionales” (Analógicas): Son las de toda la vida. No “hablan”, así que para saber cómo están tienes que medir físicamente su voltaje, la corriente que entra y sale, y usar sondas externas para vigilar que no se calienten.

    El objetivo era crear un cerebro único que pudiera manejar ambas situaciones sin despeinarse.

    La solución: Un sistema híbrido

    Desarrollé un firmware capaz de trabajar en dos modos. Si el sistema detecta una batería moderna, se comporta como un “host” digital: lee directamente los datos internos (voltaje, amperaje, salud de la batería) a través de protocolos de comunicación estándar. Es limpio y preciso.

    Pero, si conectamos una batería analógica, el sistema cambia el chip. Pasa a usar sensores físicos para leer la corriente y el voltaje, y gestiona sondas de temperatura externas para asegurarse de que todo opera dentro de los márgenes de seguridad.

    ¿Por qué es útil esto?

    Lo bonito de este desarrollo es la versatilidad. El dispositivo no solo gestiona la carga, sino que actúa como una “caja negra”:

    • Registro de datos: Guarda un historial diario en una tarjeta SD con todo lo que pasa (ciclos de carga, temperaturas, potencias…).
    • Seguridad: Tiene alarmas programadas. Si una batería se calienta demasiado o baja de cierto nivel, el sistema avisa y corta para prevenir daños, da igual si la batería es digital o analógica.
    • Visualización: Toda la info se muestra sencilla en una pantalla OLED para que el usuario sepa qué pasa de un vistazo.

    Al final, este proyecto ha sido un buen ejercicio de adaptación. La electrónica sirve para hacer de puente entre tecnologías distintas, alargando la vida útil de los equipos y mejorando la seguridad, sea cual sea la batería que se use.

  • Sensor de humedad de suelo con control de alimentación (moisture-sensor-for-plants)

    Sensor de humedad de suelo con control de alimentación (moisture-sensor-for-plants)

    moisture-sensor-for-plants

    Este proyecto implementa un sistema básico para medir la humedad del suelo mediante un microcontrolador, optimizando el consumo de energía de la sonda gracias a un pin de alimentación controlado por software. Está diseñado para facilitar la integración en entornos de bajo consumo o alimentados por baterías.

    Ver repositorio en Github

    Objetivo

    Obtener lecturas confiables del nivel de humedad del suelo mientras se evita la corrosión y el consumo innecesario de corriente de la sonda, encendiéndola solo durante el tiempo mínimo necesario para la medición.

    Estructura del proyecto

    El código está organizado en tres partes principales:

    1. Encabezado (moisture.h)

    Define la interfaz de uso:

    • moistureInit(): inicializa los pines para alimentar la sonda y leer la señal analógica.
    • moistureSetWarmup(): permite configurar el tiempo de precalentamiento antes de la medición.
    • moistureRead(): realiza la lectura del valor crudo del ADC.

    2. Implementación (moisture.cpp)

    Contiene la lógica de funcionamiento:

    • Al inicializar, configura el pin de alimentación como salida y lo apaga por defecto.
    • Durante la lectura, habilita la alimentación, espera el tiempo de calentamiento configurado (300 ms por defecto) y luego toma la muestra analógica.
    • Apaga la alimentación inmediatamente después de la lectura para reducir la corrosión y el consumo.

    3. Sketch principal (moisture1.ino)

    Ejemplo de uso que inicializa el sensor con pines definidos, configura el precalentamiento si es necesario y lee los valores de humedad periódicamente, mostrando los resultados por el puerto serial.

    Características destacadas

    • Control programático de la alimentación de la sonda.
    • Configuración flexible del tiempo de precalentamiento.
    • Lectura directa del valor analógico en formato crudo (0–1023).
    • Diseño modular para facilitar la reutilización en otros proyectos.

    Aplicaciones

    El sistema está pensado para proyectos de riego automático, monitoreo de jardines o cultivos, y cualquier implementación que requiera reducir el consumo y prolongar la vida útil de sondas de humedad

  • ESP32 y Node-RED + MQTT (Publicar/Subscribir o Susbribir)

    Utilización de Node-RED para controlar las entradas/salidas del ESP8266/ESP32 y mostrar los datos de sensores en su interfaz.

    El software Node-RED se ejecuta en una Raspberry Pi y la comunicación entre el ESP8266 y el software Node-RED se realiza a través del protocolo de comunicación MQTT.

    Se programará el ESP32 usando Arduino IDE

    Requisitos:

    Primeros pasos con NodeRed y Raspberry Pi

    La comunicación entre Arduino IDE y Node-RED a través del protocolo MQTT permite intercambiar datos y comandos entre un dispositivo basado en ESP8266 o ESP32 (programado con Arduino IDE) y un servidor Node-RED que se ejecuta en otra máquina, como una Raspberry Pi.

    1. Preparación del entorno:
      • Asegurarse que Node-RED esté instalado y en funcionamiento en la máquina que actuará como servidor.
      • Configurar un servidor MQTT y verifica que esté en funcionamiento en la misma máquina que Node-RED.
      • Conecta tu ESP8266 o ESP32 a la red Wi-Fi para que pueda acceder al servidor MQTT.
    2. Uso de la librería PubSubClient en Arduino IDE:
      • En Arduino IDE, instalar la librería PubSubClient para facilitar la comunicación MQTT.
      • Configura tu dispositivo ESP8266 o ESP32 para conectarse a la red Wi-Fi y establecer una conexión con el servidor MQTT utilizando la dirección IP y el puerto correspondientes.
    3. Envío* de mensajes MQTT desde Arduino IDE:
      • Una vez establecida la conexión MQTT, utilizar la función client.publish() para enviar mensajes al servidor Node-RED.
      • Define un “topic” específico para cada tipo de mensaje que desees enviar. Esto permitirá que el servidor Node-RED identifique y procese la información adecuadamente.
    4. Opcional: Recepción de mensajes MQTT en Arduino IDE*:
      • Para recibir mensajes del servidor Node-RED, puedes utilizar la función client.subscribe() para suscribirte a ciertos “topics” MQTT desde tu código de Arduino. De esta manera, tu dispositivo puede recibir comandos o información desde el servidor.
    5. Configuración de Node-RED:
      • En Node-RED, configurar el nodo MQTT para que se conecte al servidor MQTT que está en funcionamiento en la Raspberry Pi u otra máquina.
      • Utiliza el nodo MQTT para escuchar los “topics” a los que tu ESP8266/ESP32 está publicando y/o suscrito.
    6. Procesamiento de mensajes en Node-RED:
      • Una vez que Node-RED reciba los mensajes de un dispositivo ESP8266/ESP32, puedes procesarlos utilizando diferentes nodos para la lógica y la visualización. Esto te permitirá realizar acciones o presentar los datos recibidos según tus necesidades.
    7. Prueba y Depuración.
  • 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

  • Prototipo Mecatrónica: Máquina Encapsuladora de Café

    Prototipo Mecatrónica: Máquina Encapsuladora de Café

    Electrónica y programación para prototipo con ESP32, LCD, Controladoras de Motor paso a paso y transistor para motor DC y resistencia de sellado.

  • Sistema de luminarias y ambientador por IoT

    Sistema de luminarias y ambientador por IoT

    Conexión a base de datos MySQL, sensor de movimiento, sensor de nivel de líquido por ultrasonido (SR-04), conexión por WiFi, LCD1602

  • ¿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.

  • La placa de desarrollo

    Son PCB con componentes electrónicos que ayudan a hacer circuitos, prototipos, inventos o experimentos.

    Incluso productos vendidos comercialmente tienen una placa de desarrollo dentro, pues es más económico así que desarrollar una placa propia con componentes tan pequeños.

    Placa de desarollo con (derecha a izquierda) Microcontrolador ESP32, resistencias, controladores de tensión, interfaz FTDI (pata comunicarse por USB), botones y conector USB-mini

    En los Sistemas Embebidos, las placas de desarrollo incorporan un Microcontrolador y su objetivo es ayudar a programarlo e interconectarlo. Tiene elementos necesarios (usb, conectores, reguladores, botones) que permiten en muchos casos comenzar a utilizar estos chip en tan solo unos instantes.

    Existen muchas versiones de estas placas. De diferentes tamaños, con distintos microcontroladores que tienen más o menos entradas y salidas digitales o analógicas.

    Con procesadores más o menos potentes y con dispositivos como Bluetooth, Wi-Fi, sensores y más

    Arduino es un proyecto de Hardware libre que diseña y produce estas placas de desarrollo. Ha inspirado y ayudado a la democratización de muchísimo conocimiento de la ingeniería electrónica, pero tanto o más importante aún, creó Arduino IDE que es un proyecto de Software libre que creó una aplicación para programar microcontroladores (propios y de terceros) de manera accesible con uno de los lenguajes de programación más extendidos en el mundo: C*

    Esp8266 en Módulo D1-Mini
    Módulo de desarrollo ESP32 en Protoboard con LCD y controladoras de motor paso a paso DRV8825

    Si bien conceptualmente las placas de desarrollo son una pieza de “laboratorio” hoy en día son tan pequeñas y económicas que se puede pensar en crear todo tipo de objetos interactivos o sistemas IoT

  • ¿Cómo programar CHIPS?

    ¿Cómo programar CHIPS?

    “Arduino IDE” es un programa de código abierto que se utiliza como herramienta para la programación de microcontroladores

  • 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.