Etiqueta: Programación

  • Proyecto con Módulo WT32-SC01 Plus (ESP32-S3) con LVGL y funciones WiFi+Telegram

    Proyecto con Módulo WT32-SC01 Plus (ESP32-S3) con LVGL y funciones WiFi+Telegram

    1. Interfaz Gráfica con LVGL y LovyanGFX

    La interfaz gráfica se desarrolla utilizando LVGL y LovyanGFX, aprovechando la pantalla táctil IPS 480×320 del WT32-SC01 Plus.

    • Widgets como botones, sliders, gráficos, gauges, arcos, tablas, calendarios y teclados numéricos.
    • Navegación sencilla entre pantallas usando botones.
    • Estética consistente y moderna.

    Ejemplo de creación de un botón en LVGL:

    lv_obj_t *btn = lv_btn_create(screen_main);
    lv_obj_set_size(btn, 100, 50);
    lv_obj_align(btn, LV_ALIGN_CENTER, 0, 0);
    lv_obj_t *label = lv_label_create(btn);
    lv_label_set_text(label, "Enviar");
    lv_obj_center(label);
    lv_obj_add_event_cb(btn, sendBtn_event_cb, LV_EVENT_CLICKED, NULL);
      
    

    2. Conectividad WiFi y Bot de Telegram

    El ESP32-S3 gestiona WiFi en paralelo con LVGL sin interrumpir la interfaz gráfica. Ejemplo de envío de mensajes a Telegram al pulsar un botón:

    #include <WiFiClientSecure.h>
    WiFiClientSecure client;
    client.setInsecure();
    if(client.connect("api.telegram.org", 443)) {
      String url = String("/bot") + BOT_TOKEN + "/sendMessage?chat_id=" + CHAT_ID + "&text=Botón+presionado";
      client.println(String("GET ") + url + " HTTP/1.1");
      client.println("Host: api.telegram.org");
      client.println("Connection: close");
      client.println();
    }
      
    

    3. Información útil del Hardware WT32-SC01 Plus

    Función / Bus GPIO(s) Uso en WT32-SC01 Plus
    GPIO Expansión 10, 11, 12, 13, 14, 21 Libres para usuario
    BOOT0 0 Strapping pin, evitar uso general
    I²C Touch 5 (SCL), 6 (SDA) Reservados FT6336U
    SPI SD 39, 38, 40, 41 MicroSD opcional
    UART0 43 (TX0), 44 (RX0) Programación/Serial
    Internos 45 (LCD_BL), 4 (LCD_RST), 7 (TP_INT) Pantalla y touch internos

    4. Organización del Código del Proyecto

    El código se organiza en:

    • main.cpp: Control de alto nivel, setup, loop, callbacks eventos.
    • sc01.cpp/.h: Inicialización de hardware/UI y funciones específicas del WT32-SC01 Plus.

    Ejemplo simplificado del loop principal:

    void loop() {
        lv_timer_handler();
        if(current_screen != prev_screen) {
            switch(current_screen) {
                case SCREEN_MAIN: lv_scr_load(screen_main); break;
                case SCREEN_DEMO: lv_scr_load(screen_demo); break;
                case SCREEN_INFO: lv_scr_load(screen_info); break;
            }
            prev_screen = current_screen;
        }
        delay(5);
    }
      
    

    5. Explicación Detallada del Proyecto y Recomendaciones

    La estructura modular facilita expansión, mantenibilidad y claridad. Se recomienda:

    • Dividir tareas intensivas usando ambos núcleos del ESP32.
    • Evitar bloqueos largos en el loop principal.
    • Monitorear el uso de memoria.
    • Asegurar que cualquier acceso concurrente a LVGL sea seguro.

    Referencias útiles:

  • Bicicleta que hace los cambios automáticamente

    Bicicleta que hace los cambios automáticamente

    Desarrollo de un sistema de transmisión automatizada para bicicletas, diseñado para optimizar la experiencia de pedaleo sin necesidad de intervención manual. El núcleo de la propuesta reside en la capacidad del sistema para interpretar el ritmo del ciclista y ajustar los cambios de marcha de forma autónoma, permitiendo una conducción más fluida y eficiente, especialmente en terrenos variables donde la gestión constante de la cadencia es crucial.

    📍 Barcelona

    Trabajo realizado por Alumno de Tutoría

    Incluye Sensor PAS, Placa Arduino Uno, Módulo de LCD OLED, Switch, Bicicleta.

    A nivel técnico, la solución integra ingeniería mecatrónica avanzada utilizando una placa Arduino Uno como cerebro del sistema. La lectura del entorno se realiza mediante un sensor PAS (Pedal Assist Sensor), que monitorea la velocidad de pedaleo en tiempo real. Esta información es procesada algorítmicamente para determinar el momento exacto del cambio, mientras que un módulo de pantalla OLED proporciona al usuario una interfaz visual clara del estado del sistema y la marcha activa.

    Más allá de su funcionalidad mecánica, este desarrollo destaca como una aplicación práctica de habilidades STEM (Ciencia, Tecnología, Ingeniería y Matemáticas), demostrando cómo componentes accesibles pueden modernizar mecanismos de transporte tradicionales. El resultado es un prototipo funcional que no solo resuelve el problema de la gestión de marchas para ciclistas novatos o distraídos, sino que también sirve como una base sólida para futuras implementaciones en movilidad eléctrica y sistemas de asistencia inteligente.

  • Cómo programar dispositivos electrónicos

    Como técnico, programar dispositivos electrónicos es una habilidad crucial para trabajar con dispositivos inteligentes. Ya sea un microcontrolador como el ESP8266 o un dispositivo como la Raspberry Pi, la programación es esencial para crear dispositivos funcionales y eficientes.

    En este artículo, exploraremos los pasos necesarios para programar dispositivos electrónicos y conectarlos a otros sistemas. También hablaremos de cómo programar utilizando el lenguaje de programación C, así como del software recomendado para las tareas de programación. Sumerjámonos en el mundo de la programación y descubramos cómo crear asombrosos dispositivos inteligentes.

    Conexiones electrónicas

    La ingeniería electrónica es una habilidad esencial para un técnico, y las conexiones adecuadas son la columna vertebral del éxito de los sistemas. El kit Elegoo proporciona un completo conjunto de herramientas y componentes para construir y programar aparatos electrónicos, incluidos cables y conectores, que deben ser de alta calidad y compatibles con el aparato. Con las conexiones adecuadas, el programa puede cargarse y ejecutarse correctamente, lo que permite controlar el aparato.

    Programar aparatos electrónicos requiere saber cómo conectarlos al microcontrolador. ESP8266, Raspberry Pi y Arduino son candidatos potenciales para esta tarea. Para programar el comportamiento del dispositivo, se suele emplear software y lenguaje de programación C. Además, es esencial depurar el código para asegurarse de que el dispositivo funciona correctamente. Se recomiendan KiCAD, ProfiCAD, AutoCAD Electrical 2020 y NI Multisim para la programación, incluida la depuración.

    Programar dispositivos electrónicos es un esfuerzo de colaboración que implica múltiples recursos. En el proceso intervienen doce recursos, una presentación, cinco valoraciones y diez asistentes. Trabajar con otros es necesario para garantizar que el dispositivo funciona como se espera y cumple sus especificaciones. Además, con las conexiones adecuadas, es posible integrar aparatos electrónicos con otras tecnologías, como Google Home, para conseguir una experiencia de usuario intuitiva.

    Programación en C

    Como técnico interesado en codificar componentes electrónicos, es esencial tener un conocimiento profundo de la programación en C. Este lenguaje de programación se utiliza habitualmente para crear firmware para microcontroladores y otro hardware. Una de sus principales ventajas es que otorga a los usuarios un acceso de bajo nivel al hardware, lo que permite un mayor control sobre los dispositivos. Dominando el lenguaje C, puedes programar dispositivos electrónicos con mayor precisión y eficacia.

    Si piensas programar dispositivos electrónicos en C, debes obtener un programador compatible con el dispositivo. Un programador es un dispositivo que te permite transferir código a un microcontrolador o a otro hardware. Existe una amplia gama de programadores, cada uno con sus propias ventajas e inconvenientes. Elegir el mejor programador para tu proyecto es esencial para que sea un éxito.

    Para iniciarse en la programación en C, es importante dedicar tiempo a aprender los fundamentos del lenguaje. Hay varios recursos disponibles en Internet, como tutoriales, vídeos y foros, que pueden ayudarte con esto. Además, tener acceso a herramientas de software como compiladores y depuradores puede ayudarte a escribir y probar tu código. Con los recursos y herramientas adecuados, puedes convertirte en un experto en codificación de dispositivos electrónicos utilizando el lenguaje C.

    Mecatrónica y diseño industrial

    La mecatrónica y el diseño industrial han revolucionado la forma en que interactuamos con los aparatos electrónicos. Para tener éxito en este campo, los técnicos deben ser expertos en lenguajes de codificación, ingeniería electrónica e ingeniería mecánica. Con la ayuda de microcontroladores como Arduino y Raspberry Pi, pueden crear dispositivos electrónicos únicos que cumplan las especificaciones deseadas. Es esencial que estos artilugios electrónicos estén correctamente programados para realizar las tareas previstas, lo que requiere comprender su comportamiento y programarlos en consecuencia.

    Para destacar en mecatrónica y diseño industrial, es esencial dominar el lenguaje de programación. El lenguaje de programación C es uno de los lenguajes de codificación más utilizados en este campo. Es un lenguaje de alto nivel sencillo de aprender y aplicar. Los programadores lo utilizan para desarrollar programas complejos que se comunican con aparatos electrónicos y sensores.

    El diseño de aparatos electrónicos también requiere un gran conocimiento del aspecto mecánico del aparato. Los técnicos tienen que asegurarse de que el aparato sea estéticamente agradable y eficiente. Para conseguirlo, tienen que conocer los principios del diseño mecánico y las prácticas de producción. Se utiliza software como KiCAD, ProfiCAD, AutoCAD Electrical 2020 y NI Multisim para generar modelos 3D del aparato. Además, se emplea software CAD para construir los componentes electrónicos y los circuitos del dispositivo.

    A medida que avanza la tecnología, los diseñadores mecatrónicos e industriales deben mantenerse al día de las nuevas tendencias y tecnologías. Se les anima a asistir a conferencias y talleres para conocer los últimos lenguajes y técnicas de codificación. Es aconsejable establecer contactos con otros profesionales del sector para intercambiar información y experiencias. A medida que siga aumentando la demanda de aparatos electrónicos personalizados, los técnicos en mecatrónica y diseño industrial tendrán un papel más importante en la industria electrónica.

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

  • Driver LED: BARRA con tecnología INDEXABLE

    Driver LED: BARRA con tecnología INDEXABLE

    Este prototipo diseñado en Barcelona cuenta con sensoor de movimiento y control por ENCODER/DIAL retroiluminado

    Ofrece respuesta interactiva y conexión con las de su tipo.

    Deja una pregunta abierta ¿Por qué no?

    No todo lo que es oro brilla. Y es que las lámparas en general parecieran brillar más que la calidad de su luz.

    CHEBA fue diseñada para brillar por lo que tiene adentro.

  • Cómo medir temperatura y humedad con Arduino y los sensores DHT11-DHT22

    Cómo medir temperatura y humedad con Arduino y los sensores DHT11-DHT22

    Medir la temperatura y la humedad es una tarea común en muchos proyectos de electrónica y automatización del hogar. En este tutorial, te mostraré cómo utilizar Arduino en combinación con los sensores de temperatura y humedad DHT11 y DHT22 para obtener lecturas precisas de estos parámetros ambientales. Estos sensores son ampliamente utilizados debido a su costo asequible, su facilidad de uso y su precisión razonable.

    Materiales necesarios:

    • Placa de desarrollo tipo (por ejemplo, Arduino UNO)
    • Sensor DHT11 o DHT22
    • Resistencia de 10k ohmios
    • Protoboard o breadboard
    • Cables de conexión

    Paso 1: Conexiones eléctricas Conecta el sensor DHT11 o DHT22 a la placa Arduino según el siguiente esquema:

    • Conecta el pin de datos del sensor (generalmente marcado como “out” o “data”) al pin digital 2 de Arduino.
    • Conecta la alimentación del sensor (VCC) al pin de 5V de la placa de desarrollo.
    • Conecta el pin de tierra del sensor (GND) al pin GND del circuito.
    • Si se está utilizando el sensor DHT22, conectar una resistencia de 10k ohmios entre el pin de datos y el pin de alimentación (VCC).

    Paso 2: Código de programación Abre el entorno de desarrollo de Arduino IDE y crea un nuevo proyecto. Asegúrate de tener instalada la biblioteca “DHT” en tu entorno. Luego, copia y pega el siguiente código:

    #include <DHT.h>
    
    #define DHTPIN 2 // Pin digital al que está conectado el sensor
    #define DHTTYPE DHT11 // Si utilizas el DHT22, cambia esta línea por DHT22
    
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup() {
      Serial.begin(9600);
      dht.begin();
    }
    
    void loop() {
      float humidity = dht.readHumidity();
      float temperature = dht.readTemperature();
    
      if (isnan(humidity) || isnan(temperature)) {
        Serial.println("Error al leer el sensor DHT!");
        return;
      }
    
      Serial.print("Humedad: ");
      Serial.print(humidity);
      Serial.print("% - Temperatura: ");
      Serial.print(temperature);
      Serial.println("°C");
    
      delay(2000); // Espera 2 segundos antes de tomar la siguiente lectura
    }
    
    

    Paso 3: Compilar y cargar el programa Verifica que la placa Arduino esté conectada correctamente a tu computadora y selecciona el tipo de placa y puerto en el entorno de Arduino. Luego, compila y carga el programa en la placa.

    Paso 4: Verificación y lecturas Una vez cargado el programa, abre el monitor serial en el entorno de Arduino. Deberías comenzar a ver las lecturas de temperatura y humedad que se actualizan cada 2 segundos.

    Conclusión: En este tutorial, aprendiste cómo utilizar Arduino y los sensores DHT11 y DHT22 para medir la temperatura y la humedad ambiental. Puedes utilizar esta información para una amplia gama de proyectos, como sistemas de monitoreo climático, control de invernaderos, etc.