Categoría: Electrónica

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

  • Proyecto de Reproducción de MP3 con ESP32 y DFPlayer Mini

    Proyecto de Reproducción de MP3 con ESP32 y DFPlayer Mini

    Actualizado: 3/7/2025: Ahora es compatible con familia de uC Espressif ESP8266 y ESP32. Este proyecto detalla cómo utilizar un ESP32 y un módulo DFPlayer Mini para reproducir archivos MP3 de manera automática cada cierto tiempo. Se abordan los aspectos del módulo DFPlayer Mini, las conexiones necesarias y el código de programación, proporcionando una guía completa para la implementación de este sistema de reproducción de audio.

    El DFPlayer Mini es un módulo de reproducción de audio compacto y de bajo costo que puede reproducir archivos MP3 y WAV almacenados en una tarjeta microSD. Es ampliamente utilizado en proyectos de electrónica debido a su facilidad de uso y a su capacidad para manejar archivos de audio de manera autónoma, sin necesidad de una fuente de control compleja. El módulo cuenta con varias funciones, incluyendo el ajuste de volumen, control de reproducción, y la capacidad de seleccionar pistas mediante comandos simples.

    Conexiones del Proyecto

    Para conectar el DFPlayer Mini con el ESP32, es importante seguir las siguientes indicaciones:

    • VCC: Conectar a una fuente de alimentación de 5V. El ESP32 puede proporcionar esta salida.
    • GND: Conectar al pin de tierra (GND) del ESP32.
    • TX del DFPlayer Mini: Conectar al pin GPIO 16 del ESP32.
    • RX del DFPlayer Mini: Conectar al pin GPIO 17 del ESP32.
    • SPK1 y SPK2: Conectar a un altavoz pasivo, si se desea una salida de audio. Alternativamente, se puede usar un conector de auriculares para salida de línea.

    Es fundamental asegurarse de que las conexiones sean correctas para evitar daños en los componentes y garantizar un funcionamiento óptimo del sistema.

    3. Código de Programación

    El siguiente código muestra cómo configurar el ESP32 para comunicarse con el DFPlayer Mini y reproducir un archivo MP3 cada 10 segundos. Se utiliza el puerto Serial1 del ESP32/ESP8266 para la comunicación, aprovechando la capacidad del microcontrolador para manejar múltiples puertos UART de hardware.

    #include <Arduino.h>
    #include <DFPlayerMini_Fast.h>
    
    #if defined(ESP32)
      // En ESP32 podemos usar HardwareSerial en un segundo puerto
      HardwareSerial playerSerial(2);  // UART2: GPIO16=RX2, GPIO17=TX2 por defecto
      const int DF_RX = 16;  // al TX del DFPlayer
      const int DF_TX = 17;  // al RX del DFPlayer
    #elif defined(ESP8266)
      #include <SoftwareSerial.h>
      const int DF_RX = D5;  // ESP8266: conecta a TX del DFPlayer
      const int DF_TX = D6;  // ESP8266: conecta a RX del DFPlayer
      SoftwareSerial playerSerial(DF_RX, DF_TX);
    #else
      #error "Este código sólo es para ESP32 o ESP8266"
    #endif
    
    DFPlayerMini_Fast myDFPlayer;
    const unsigned long intervalReproduccion = 10000;  // 10 s
    unsigned long lastMillis = 0;
    
    void setup() {
      Serial.begin(115200);
      Serial.println();
      Serial.println("=== DFPlayer en ESP32/ESP8266 ===");
    
      // Inicializar puerto al módulo
      #if defined(ESP32)
        playerSerial.begin(9600, SERIAL_8N1, DF_RX, DF_TX);
      #elif defined(ESP8266)
        playerSerial.begin(9600);
      #endif
    
      if (! myDFPlayer.begin(playerSerial)) {
        Serial.println(F("ERROR: No se detectó DFPlayer Mini"));
        while (true) delay(100);
      }
    
      myDFPlayer.volume(20);   // 0–30
      myDFPlayer.play(1);      // empieza en pista 001
      lastMillis = millis();
    }
    
    void loop() {
      unsigned long now = millis();
    
      // Cada 10 s, reproducir siguiente pista
      if (now - lastMillis >= intervalReproduccion) {
        lastMillis = now;
        myDFPlayer.playNext();
      }
    
      // Procesar eventos del DFPlayer (fin de pista, errores…)
      if (myDFPlayer.available()) {
        DFPlayerEventType type = myDFPlayer.readType();
        int state = myDFPlayer.readState();
        Serial.print(F("Evento DFPlayer: "));
        Serial.print(type);
        Serial.print(F("  Estado interno: "));
        Serial.println(state);
      }
    
      // Aquí puedes gestionar botones u otras tareas no bloqueantes
    
      delay(20);
    }
    
    

    En este código, se utilizan las siguientes funciones y configuraciones:

    • mySerial.begin(9600, SERIAL_8N1, 16, 17); Esta línea configura el puerto Serial1 del ESP32 con una velocidad de comunicación de 9600 baudios y establece los pines GPIO 16 y 17 como RX y TX, respectivamente.
    • myDFPlayer.begin(mySerial); Esta función inicializa el DFPlayer Mini y lo prepara para recibir comandos.
    • myDFPlayer.volume(20); Se ajusta el volumen del reproductor a un nivel de 20 (en una escala de 0 a 30).
    • myDFPlayer.play(1); Este comando indica al DFPlayer Mini que reproduzca el archivo de audio numerado como 1 en la tarjeta microSD.
    • delay(10000); Introduce una pausa de 10 segundos antes de repetir el ciclo.

    Este código permite la reproducción continua de un archivo MP3, con una espera de 10 segundos entre reproducciones. Es posible modificar el tiempo de espera o cambiar el archivo a reproducir ajustando los parámetros del código según las necesidades del proyecto.

  • Sensor de Temperatura y Humedad SHT31: Precisión y Fiabilidad en tus Proyectos

    Sensor de Temperatura y Humedad SHT31: Precisión y Fiabilidad en tus Proyectos

    Estamos en busca de componentes que ofrezcan la mejor calidad y precisión para proyectos de electrónica y sistemas embebidos.

    Características del SHT31

    El sensor SHT31, desarrollado por Sensirion, es conocido por su alta precisión y fiabilidad en la medición de temperatura y humedad. Sus principales características incluyen:

    • Alta Precisión: Con una precisión de ±2% RH para la humedad y ±0.3°C para la temperatura, garantiza datos exactos para aplicaciones críticas.
    • Interfaz I2C: Facilita la integración con diversos microcontroladores y plataformas de desarrollo como Arduino y Raspberry Pi.
    • Rápida Respuesta: Su diseño avanzado permite obtener lecturas en tiempo real, ideal para sistemas de monitoreo continuo.
    • Compensación de Calor: Mejora la precisión en ambientes con fluctuaciones térmicas, asegurando mediciones consistentes.

    Aplicaciones del SHT31

    El SHT31 es versátil y se adapta a diversas aplicaciones, tales como:

    • Sistemas HVAC: Optimiza el control de climatización en edificios inteligentes.
    • Estaciones Meteorológicas: Proporciona datos precisos para el análisis del clima.
    • Agricultura de Precisión: Monitoriza las condiciones ambientales en invernaderos y cultivos.
    • Dispositivos IoT: Integra fácilmente en soluciones de hogar inteligente y monitoreo ambiental.

    Integración Sencilla

    Se valora la facilidad de uso y la versatilidad. El SHT31 se conecta mediante una interfaz I2C, simplificando su uso con cualquier microcontrolador compatible.

    Código para compilar en IDE Platformio

    #include <Wire.h>
    #include <Adafruit_SHT31.h>
    #include <FS.h>
    #include <SD_MMC.h>
    
    Adafruit_SHT31 sht31 = Adafruit_SHT31();
    
    void setup() {
      Serial.begin(115200);
      while (!Serial) delay(10);  // wait for serial port to open
      
      if (!sht31.begin(0x44)) {   // Set to 0x45 for alternate i2c addr
        Serial.println("Couldn't find SHT31");
        while (1) delay(1);
      }
    
      if (!SD_MMC.begin("/sdcard", true)) {
        Serial.println("SD Card Mount Failed");
        return;
      }
    
      uint8_t cardType = SD_MMC.cardType();
      if (cardType == CARD_NONE) {
        Serial.println("No SD card attached");
        return;
      }
    
      Serial.println("SD Card initialized.");
    }
    
    void loop() {
      float t = sht31.readTemperature();
      float h = sht31.readHumidity();
      
      if (!isnan(t)) {  // check if 'is not a number'
        Serial.print("Temp *C = "); Serial.println(t);
      } else {
        Serial.println("Failed to read temperature");
      }
    
      if (!isnan(h)) {  // check if 'is not a number'
        Serial.print("Hum. % = "); Serial.println(h);
      } else {
        Serial.println("Failed to read humidity");
      }
    
      // Open the file in write mode
      File dataFile = SD_MMC.open("/sdcard/data.txt", FILE_APPEND);
    
      // If the file opened successfully, write the temperature and humidity
      if (dataFile) {
        dataFile.print("Millis: ");
        dataFile.print(millis());
        dataFile.print(", Temp: ");
        dataFile.print(t);
        dataFile.print(" *C, Humidity: ");
        dataFile.print(h);
        dataFile.println(" %");
        dataFile.close();
        Serial.println("Data written to file");
      } else {
        // If the file didn't open, print an error
        Serial.println("Error opening data.txt");
      }
    
      // Wait for 2 seconds before reading again
      delay(2000);
    }
    
    
  • SENSOR FINGERPRINT 071405

    SENSOR FINGERPRINT 071405

    El FINGERPRINT 071405 es un sensor óptico de huella digital compacto y fácil de integrar en proyectos de seguridad y acceso biométrico. Ofrece detección rápida y un alto nivel de precisión, lo que lo convierte en una opción recomendada para cerraduras inteligentes, control de asistencia y aplicaciones IoT.


    Principio de funcionamiento

    1. Captura óptica: Una pequeña cámara CMOS interna ilumina el dedo con un LED infrarrojo y toma una imagen de la huella.
    2. Procesado interno: El propio módulo extrae los “minucias” (optimiza las crestas y valles) y genera un template digital.
    3. Comparación: El microcontrolador puede enviar patrones de huella almacenados para comprobación o pedir al sensor que registre un nuevo usuario.

    Especificaciones técnicas

    • Resolución: 500 dpi
    • Interface: UART TTL (3,3 V lógico)
    • Voltaje de alimentación: 3,6 V – 6 V
    • Corriente en reposo: ≈ 40 mA
    • Corriente en captura: ≈ 60 mA
    • Tiempo de verificación: < 1 s
    • Plantillas almacenables: hasta 2 000
    • Dimensiones: 35 × 20 × 16 mm

    Conexión al microcontrolador

    1. Alimentación: VIN a 5 V, GND a masa.
    2. Datos:
      • TX del sensor → RX del microcontrolador
      • RX del sensor → TX del microcontrolador
    3. Nivel lógico: Si se trabaja a 3,3 V, asegurar que VIN sea ≥ 3,6 V y usar un conversor de nivel para la señal RX.

    [Sensor] [Microcontrolador]
    VIN ──► 5 V
    GND ──► GND
    TX ──► RX (UART)
    RX ──► TX (UART)*

    • con conversor de nivel si MCU opera a 3,3 V

    Uso con librería Adafruit

    Se recomienda la biblioteca Adafruit Fingerprint para gestionar enrolamiento y verificación de forma sencilla:

    #include <Adafruit_Fingerprint.h>
    #include <HardwareSerial.h>
    
    // Usar Serial1 para ESP32, Serial para otros microcontroladores
    HardwareSerial uart(1);
    Adafruit_Fingerprint sensor(&uart);
    
    void setup() {
      uart.begin(57600, SERIAL_8N1, RX_PIN, TX_PIN);
      sensor.begin(57600);
      if (sensor.verifyPassword()) {
        Serial.println("Sensor listo");
      } else {
        Serial.println("Error de comunicación");
        while (1);
      }
    }
    
    uint8_t getFingerprintID() {
      if (sensor.getImage() != FINGERPRINT_OK) return FINGERPRINT_NOFINGER;
      sensor.image2Tz();
      return sensor.fingerFastSearch();
    }
    
    void loop() {
      uint8_t id = getFingerprintID();
      if (id == FINGERPRINT_NOFINGER) return;
      if (id == FINGERPRINT_OK) {
        Serial.print("Huella reconocida con ID: ");
        Serial.println(sensor.fingerID);
      } else {
        Serial.println("Huella no reconocida");
      }
      delay(1000);
    }
    
    

    Aplicaciones comunes

    • Control de acceso en cerraduras electrónicas
    • Registro de asistencia en oficinas o aulas
    • Autenticación en dispositivos IoT
    • Seguridad en proyectos de domótica y automatización

    Ventajas de el modelo:

    • Rápido y fiable: verificación en menos de 1 s.
    • Alto almacenamiento: hasta 2 000 plantillas.
    • Fácil integración: comunicación por puerto serie TTL.
    • Robustez: carcasa de resina protege el sensor óptico.

    Para maximizar la fiabilidad, se aconseja limpiar periódicamente la superficie y evitar la exposición directa a la luz solar intensa.

  • Configurar interrupciones en ESP8266

    Configuración de interrupciones ESP8266 en Arduino IDE

    La función attachInterrupt tiene 3 argumentos:

    attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)

    digitalPinToInterrupt(pin): Esta es una función que toma el pin GPIO de la placa ESP8266 como un parámetro dentro de ella. El pin denota el GPIO asociado con el pin que provocará que ocurra una interrupción. Por ejemplo, si configura GPIO2 como un pin de interrupción, la función se especificará como digitalPinToInterrupt(2). Puede usar cualquiera de los pines de interrupción ESP8266 que se muestran en el diagrama anterior, como un parámetro dentro de esta función.

    ISR: este es el segundo argumento utilizado para configurar una interrupción. Es un tipo especial de función conocida como Rutina de Servicio de Interrupción que no toma parámetros y tampoco devuelve nada. Cada vez que ocurra la interrupción, se llamará a esta función.

    mode: Esto denota la acción de activación para que ocurra la interrupción. Los cuatro parámetros siguientes se utilizan para especificar el modo:

    LOW (BAJO) Esto se usa para activar la interrupción cuando el pin está en un estado bajo.

    CHANGE (CAMBIO): Esto se usa para disparar la interrupción cuando el pin cambia su estado (HIGH-LOW o LOW-HIGH)

    RISING: Esto se usa para activar la interrupción cuando el pin pasa de BAJO a ALTO.+

    const int led_pin = LED_BUILTIN;
    const int sensor_pin = D1;
    
    unsigned long current_time = millis();
    unsigned long last_trigger = 0;
    //boolean timer_on = false;
    
    volatile long cuentaVuelta;
    
    ICACHE_RAM_ATTR void movement_detection() {
      //Serial.println("Motion was detected");
      cuentaVuelta++;
      last_trigger = millis();
    }
    
    void setup() {
    
      Serial.begin(115200);
    
      pinMode(sensor_pin, INPUT_PULLUP);
      attachInterrupt(digitalPinToInterrupt(sensor_pin), movement_detection, RISING);
      pinMode(led_pin, OUTPUT);
      digitalWrite(led_pin, LOW);
    }
    
    long cuentaVueltaAnterior;
    
    void loop() {
      static unsigned long lastTimer;
      if (millis() > lastTimer + 1000) { //Timer por 1 segundo
        
        lastTimer = millis();
    
        if (cuentaVuelta != cuentaVueltaAnterior) {
          Serial.print("Tacómetro: ");
          Serial.print(cuentaVuelta);
          Serial.println("por segundo");
          cuentaVuelta = 0;
        }
        else {
          Serial.println("No se han detectado vueltas");
        }
      }
    }
  • Interrupciones en un microcontrolador

    Interrupciones en un microcontrolador

    Las interrupciones se utilizan para manejar eventos que no ocurren durante la ejecución secuencial de un programa.

    Por ejemplo, queremos realizar ciertas tareas y estas tareas se ejecutan secuencialmente en su programa Arduino. En ocasiones, hay unas tareas que solo se ejecutarán cuando ocurre un evento especial, como una señal de activación externa al pin de entrada digital de un microcontrolador.

    Una interrupción externa o una “interrupción de hardware” es causada por el módulo de hardware externo. Por ejemplo, Un Sensor de efecto Hall que detecta la vuelta en un cigueñal, o un botón táctil que envía una señal con un toque. En este caso, una interrupción GPIO sucede cuando se realiza dicha acción.

    La idea es que interrupción se activará cuando se detecte el movimiento.

    Con la interrupción, no necesitamos verificar continuamente el estado del pin de entrada digital. Cuando ocurre esta interrupción (se detecta un cambio), el procesador detiene la ejecución del programa principal y llama a una función conocida como ISR o Rutina de Servicio de Interrupción (Interruption Service Routine en inglés).

    Luego, el procesador trabaja temporalmente en una tarea diferente (ISR) y luego regresa al programa principal después de que finaliza la rutina de con la que estaba trabajando (el loop).

    Configurar interrupciones con ESP8266

  • El transistor MOSFET IRLB3034

    El transistor MOSFET IRLB3034 es un componente de potencia ampliamente utilizado en aplicaciones electrónicas donde se requiere controlar cargas de alta potencia con una eficiencia y confiabilidad superiores. Con características eléctricas impresionantes y una amplia gama de aplicaciones, el IRLB3034 ha ganado popularidad entre los diseñadores y los entusiastas de la electrónica. En este artículo, exploraremos las características clave del IRLB3034 y sus aplicaciones más comunes.

    Características del IRLB3034:

    El IRLB3034 es un transistor de efecto de campo de metal-óxido-semiconductor (MOSFET) de canal N. Una de sus principales ventajas es su baja resistencia de encendido (Rds(on)), que permite un paso eficiente de la corriente cuando está activado. Esto se traduce en una menor disipación de potencia y una mayor eficiencia en comparación con otros dispositivos de potencia.

    Otra característica notable del IRLB3034 es su alta tensión de drenaje a fuente (Vds), que puede alcanzar hasta 40V, lo que lo hace adecuado para aplicaciones que requieren un manejo de voltajes más altos. Además, el IRLB3034 puede manejar corrientes de hasta 195 amperios, lo que lo convierte en una opción robusta para aplicaciones de alta potencia.

    Aplicaciones del IRLB3034:

    1. Control de motores: El IRLB3034 se utiliza comúnmente en aplicaciones de control de motores, como controladores de velocidad de motor, control de servomotores y sistemas de tracción eléctrica.
    2. Fuentes de alimentación conmutadas: Debido a su baja resistencia de encendido y alta eficiencia, el IRLB3034 es una opción popular en el diseño de fuentes de alimentación conmutadas, donde se requiere un control preciso y una alta eficiencia energética.
    3. Iluminación LED: El IRLB3034 se utiliza en circuitos de control de iluminación LED, permitiendo el ajuste de brillo y la conmutación rápida de tiras de LED, paneles o lámparas.
    4. Electrónica automotriz: Gracias a su capacidad para manejar altas corrientes y tensiones, el IRLB3034 es utilizado en aplicaciones automotrices, como sistemas de control de luces, controladores de motores y sistemas de gestión de energía.

    Consideraciones de diseño: Al utilizar el IRLB3034 en un diseño, es esencial tener en cuenta ciertos aspectos para garantizar un funcionamiento óptimo y seguro. Algunas consideraciones importantes incluyen:

    1. Disipación de calor: Dado que el IRLB3034 puede manejar altas corrientes, es fundamental proporcionar una adecuada disipación de calor mediante el uso de disipadores de calor o sistemas de enfriamiento activo para evitar el sobrecalentamiento.
    2. Protección de diodos de recuperación rápida: Para proteger el transistor de voltajes inversos y picos de tensión, se recomienda utilizar diodos de recuperación rápida (por ejemplo, diodos Schottky) en paralelo con la carga.
    3. Control de puerta: Para garantizar un adecuado encendido/apagado del transistor, se debe aplicar una tensión de compuerta (Vgs) adecuada y asegurar que la señal de control tenga una impedancia baja.

    El siguiente código fue hecho para probar una Tira de LED de alta potencia (aún sin disipador) por lo que se mantiene en valores PWM bajos.

    /*
      Prueba para Usar MOSFET IRF520como interruptor digital con Arduino IDE
    */
    
    
    int led = D0;           // the PWM pin the LED is attached to
    int brightness = 0;    // how bright the LED is
    int fadeAmount = 4;    // how many points to fade the LED by
    int maxFade = 25;
    
    // the setup routine runs once when you press reset:
    void setup() {
      // declare pin 9 to be an output:
      pinMode(led, OUTPUT);
      Serial.begin(115200);
    }
    
    // the loop routine runs over and over again forever:
    void loop() {
      // set the brightness of pin 9:
      analogWrite(led, brightness);
    
      // change the brightness for next time through the loop:
      brightness = brightness + fadeAmount;
    
      // reverse the direction of the fading at the ends of the fade:
      if (brightness <= 0 || brightness >= maxFade) {
        fadeAmount = -fadeAmount;
        if (fadeAmount>0) delay (5000);
      }
      Serial.print("brightness: ");
      Serial.println(brightness);
      delay(30);
    }
    
  • Tecnología 1-Wire

    1-Wire es un sistema de bus de comunicaciones de dispositivos que proporciona datos, señalización y alimentación a través de un solo conductor

    1-Wire es similar al I²C, excepto por la baja velocidad de datos aunque con mayor alcance. Por lo general, se usa para comunicarse con dispositivos pequeños y económicos, como termómetros digitales e instrumentos meteorológicos. Una red de dispositivos de 1 cable con un dispositivo maestro asociado se denomina MicroLAN.

  • El microcontrolador

    Un microcontrolador μC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.