Autor: Ger

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

  • Conectar dos placas ESP32 con Bluetooth

    Creado:: 22 de marzo de 2023

    Ultima actualización: 7/5/2025

    Primeros pasos con ESP32 Bluetooth Low Energy (BLE) en Arduino IDE – Bluetooth de Bajo Consumo de Energía

    El ESP32 cuenta con con Bluetooth Clásico y Bluetooth Low Energy (BLE)

    Esta publicación es una introducción a BLE con el ESP32.

    En esta sección: ¿Qué es BLE y para qué se puede usar?

    También algunos ejemplos con el ESP32 usando Arduino IDE.

    ¿Qué es Bluetooth de baja energía?


    Bluetooth Low Energy, BLE para abreviar, es una variante de ahorro de energía de Bluetooth. La aplicación principal de BLE es la transmisión a corta distancia de pequeñas cantidades de datos (bajo ancho de banda).

    A diferencia de Bluetooth Clásico, que siempre está activado, BLE permanece en modo de suspensión constantemente, excepto cuando se inicia una conexión.

    Comparado con Bluetooth clásico, Bluetooth Low Energy está diseñado para proporcionar un bajo consumo de energía, manteniendo un rango de alcance de comunicación similar.

    Esto hace que consuma muy poca energía. BLE consume aproximadamente 100 veces menos energía que Bluetooth (según el caso de uso).

    Además, BLE admite no solo la comunicación punto a punto, sino también el modo de transmisión y la red de malla.

    Servidor y cliente BLE

    Con Bluetooth Low Energy, hay dos tipos de dispositivos: el servidor y el cliente.

    El ESP32 puede actuar como cliente o como servidor. El servidor anuncia su existencia, por lo que otros dispositivos pueden encontrarlo y contiene datos que el cliente puede leer. El cliente escanea los dispositivos cercanos y, cuando encuentra el servidor que está buscando, establece una conexión y escucha los datos entrantes. Esto se llama comunicación punto a punto.

    Hay otros modos de comunicación posibles, como el modo de transmisión y la red de malla.

    GATT

    GATT significa Atributos Genéricos y define una estructura de datos jerárquica que está expuesta a los dispositivos BLE conectados. Esto significa que GATT define la forma en que dos dispositivos BLE envían y reciben mensajes estándar. Comprender esta jerarquía es importante porque facilitará la comprensión de cómo usar BLE con el ESP32.

    Perfil: colección estándar de servicios para un caso de uso específico;

    Servicio: recopilación de información relacionada, como lecturas de sensores, nivel de batería, frecuencia cardíaca, etc.;

    Característica: es donde se guardan los datos reales en la jerarquía (valor);

    Descriptor: metadatos sobre los datos;

    Propiedades: describe cómo se puede interactuar con el valor característico. Por ejemplo: leer, escribir, notificar, difundir, indicar, etc.

    En nuestro ejemplo, crearemos un servicio con dos características.

    Uno para la temperatura y otro para la humedad.

    Las lecturas reales de temperatura y humedad se guardan en el valor bajo sus características. Cada característica tiene la propiedad de notificación, de modo que notifique al cliente cada vez que cambien los valores.

    UUI

    Cada servicio, característica y descriptor tiene un UUID (Universally Unique Identifier). Un UUID es un número único de 128 bits (16 bytes).

    Por ejemplo:

    55072829-bc9e-4c53-938a-74a6d4c78776

    Hay UUID abreviados para todos los tipos, servicios y perfiles especificados en el SIG (Bluetooth Special Interest Group).

    Si su aplicación necesita su propio UUID, puede generarlo utilizando este sitio web generador de UUID.

    En resumen, el UUID se utiliza para identificar información de manera única. Por ejemplo, puede identificar un servicio particular proporcionado por un dispositivo Bluetooth.

    Conectando el ESP32

    Este ejemplo funcionaría para cualquier placa de desarrollo actual con ESP-32. En este caco se utilizaron las siguientes placas:

    Heltec ESP32 Lora V2, LolinD32, NodeMCU ESP32S

    Sketch para Servidor BLE

    #define LED_BUILTIN 2
    #include <BLEDevice.h>
    #include <BLEServer.h>
    #include <BLEUtils.h>
    #include <BLE2902.h>
    
    #define temperatureCelsius
    #define BLE_server "ESP32_Server"
    
    #define SERVICE_UUID "huecat23-6d3c-4a17-a71f-ece2e6075f9b"
    
    BLECharacteristic dhtTemperatureCelsiusCharacteristics("huecat23-c85e-4596-9bd9-015e2eaa4888", BLECharacteristic::PROPERTY_NOTIFY);
    BLEDescriptor dhtTemperatureCelsiusDescriptor(BLEUUID((uint16_t)0x2902));
    
    BLECharacteristic dhtHumidityCharacteristics("huecat23-4a2f-4cf3-96e6-38b79be71a61", BLECharacteristic::PROPERTY_NOTIFY);
    BLEDescriptor dhtHumidityDescriptor(BLEUUID((uint16_t)0x2903));
    
    
    bool device_connected = false;
    
    class MyServerCallbacks: public BLEServerCallbacks {
        void onConnect(BLEServer* pServer) {
          device_connected = true;
        };
    
        void onDisconnect(BLEServer* pServer) {
          device_connected = false;
        }
    };
    
    void setup() {
    
      Serial.begin(115200);
    
      BLEDevice::init(BLE_server);
      BLEServer *pServer = BLEDevice::createServer();
      pServer->setCallbacks(new MyServerCallbacks());
      BLEService *dhtService = pServer->createService(SERVICE_UUID);
    
    
      dhtService->addCharacteristic(&dhtTemperatureCelsiusCharacteristics);
      dhtTemperatureCelsiusDescriptor.setValue("DHT Temperature (Celsius)");
      dhtTemperatureCelsiusCharacteristics.addDescriptor(new BLE2902());
    
      dhtService->addCharacteristic(&dhtHumidityCharacteristics);
      dhtHumidityDescriptor.setValue("DHT humidity");
      dhtHumidityCharacteristics.addDescriptor(new BLE2902());
      dhtService->start();
      pServer->getAdvertising()->start();
      Serial.println("Esperando a Cliente Bluetooth");
    }
    void loop() {
    
    
      //Timer cada 5 segundos: envía la info por bluetooth
      static unsigned long enviaDato;
      if (millis() > enviaDato + 5000) {
        enviaDato = millis();
    
        ///////////////////////////////// 
          if (device_connected) {
    
        //Datos de prueba
        float temp = 25;
        float hum = 88;
        
        static char temperature_celsius[7];
        dtostrf(temp, 6, 2, temperature_celsius);
        dhtTemperatureCelsiusCharacteristics.setValue(temperature_celsius);
        dhtTemperatureCelsiusCharacteristics.notify();
        Serial.print("Temperatura: ");
        Serial.print(temp);
        Serial.print(" *C");
    
        static char humidity[7];
        dtostrf(hum, 6, 2, humidity);
        dhtHumidityCharacteristics.setValue(humidity);
        dhtHumidityCharacteristics.notify();
        Serial.print("  Humedad: ");
        Serial.print(hum);
        Serial.println(" %");
      }
    
    
    
        
      }
    
      
    
      //Parpadeo del LED
      static unsigned long parpadeo;
      if (millis() > parpadeo + 80) {
        digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
        parpadeo = millis();
      }
    
    }
    

    Sketch para el Cliente BLE

    #include "BLEDevice.h"
    #include "heltec.h"
    #include "Arduino.h"
    
    
    SSD1306Wire display(0x3c, SDA_OLED, SCL_OLED, RST_OLED); //128_64
    
    #define SCREEN_WIDTH 128
    #define SCREEN_HEIGHT 64
    
    #define temperatureCelsius
    #define BLE_server "ESP32_Server"
    
    
    // Generador de UUIDs:
    // https://www.uuidgenerator.net/
    
    //***********************************
    //BLE ID UNICO PARA SERVICIO
    static BLEUUID                dhtServiceUUID("huecat23-6d3c-4a17-a71f-ece2e6075f9b");
    //***********************************
    
    //BLE ID UNICO PARA CARACTERÍSTICA (TEMPERATURA)
    static BLEUUID temperatureCharacteristicUUID("huecat23-c85e-4596-9bd9-015e2eaa4888");
    
    //BLE ID UNICO PARA CARACTERÍSTICA (HUMEDAD)
    static BLEUUID    humidityCharacteristicUUID("huecat23-4a2f-4cf3-96e6-38b79be71a61");
    
    
    /*
    
      //***********************************
      //BLE ID UNICO PARA SERVICIO
      static BLEUUID dhtServiceUUID("d29181ad-6d3c-4a17-a71f-ece2e6075f9b");
      //***********************************
    
      //BLE ID UNICO PARA CARACTERÍSTICA (TEMPERATURA)
      static BLEUUID temperatureCharacteristicUUID("ea4963df-c85e-4596-9bd9-015e2eaa4888");
    
      //BLE ID UNICO PARA CARACTERÍSTICA (HUMEDAD)
      static BLEUUID humidityCharacteristicUUID("b61decbb-4a2f-4cf3-96e6-38b79be71a61");
    
    
    */
    static boolean bleConectado = false;
    static boolean connected = false;
    
    static BLEAddress *pServerAddress;
    static BLERemoteCharacteristic* temperatureCharacteristic;
    static BLERemoteCharacteristic* humidityCharacteristic;
    
    const uint8_t notificationOn[] = {0x1, 0x0};
    const uint8_t notificationOff[] = {0x0, 0x0};
    
    
    bool conectarAServidor(BLEAddress pAddress) {
      BLEClient* pClient = BLEDevice::createClient();
    
      pClient->connect(pAddress);
      Serial.println("Conectado al Servidor");
    
      BLERemoteService* pRemoteService = pClient->getService(dhtServiceUUID);
    
      if (pRemoteService == nullptr) {
        Serial.print("Failed to find our service UUID: ");
        Serial.println(dhtServiceUUID.toString().c_str());
        return (false);
      }
    
      temperatureCharacteristic = pRemoteService->getCharacteristic(temperatureCharacteristicUUID);
      humidityCharacteristic = pRemoteService->getCharacteristic(humidityCharacteristicUUID);
    
      if (temperatureCharacteristic == nullptr || humidityCharacteristic == nullptr) {
        Serial.print("Failed to find our characteristic UUID");
        return false;
      }
      Serial.println(" Characteristics Found!");
    
      temperatureCharacteristic->registerForNotify(temperatureNotifyCallback);
      humidityCharacteristic->registerForNotify(humidityNotifyCallback);
    }
    
    class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
        void onResult(BLEAdvertisedDevice advertisedDevice) {
          if (advertisedDevice.getName() == BLE_server) {
            advertisedDevice.getScan()->stop();
            pServerAddress = new BLEAddress(advertisedDevice.getAddress());
            bleConectado = true;
            Serial.println("Dispositivo encontrado. Conectando...");
          }
        }
    };
    
    static void temperatureNotifyCallback(BLERemoteCharacteristic*pBLERemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify)
    {
    
      String informarTemperatura = "";
      informarTemperatura = "Temperatura: ";
      informarTemperatura += (char*)pData;
      informarTemperatura += " *C";
    
      imprimirConAltura(informarTemperatura, 20); ////// IMPRIME OLED Y SERIAL //////
    
    }
    
    static void humidityNotifyCallback(BLERemoteCharacteristic* pBLERemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify) {
    
      String informarHumedad = "Humedad: ";
      informarHumedad += (char*)pData;
      informarHumedad += " %";
    
      //imprimirConAltura(informarHumedad, 28); ////// IMPRIME OLED Y SERIAL //////
    
      Serial.println(informarHumedad);
    }
    
    void setup()
    {
      Serial.begin(115200);
      Serial.println("\nESP-32--B-BLE-CLIENTE");
    
      ///////////////////////////////////////// PARA PANTALLA OLED
      initHeltecEsp32(); //Inicializaciones correspondientes a modelo Pantalla OLED elegido.
    
      imprimirConAltura("Comenzando conexión BLE ( Cliente)", 0); ////// IMPRIME OLED Y SERIAL //////
    
      BLEDevice::init("");
    
      BLEScan* pBLEScan = BLEDevice::getScan();
      pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
      pBLEScan->setActiveScan(true);
      pBLEScan->start(30);
    
    
    }
    void loop() {
    
      if (bleConectado == true) {
    
        if (conectarAServidor(*pServerAddress)) {
    
          String conectando = "Conectado servidor BLE.";
          imprimirConAltura(conectando, 8); ////// IMPRIME OLED Y SERIAL //////
    
          temperatureCharacteristic->getDescriptor(BLEUUID((uint16_t)0x2902))->writeValue((uint8_t*)notificationOn, 2, true);
          humidityCharacteristic->getDescriptor(BLEUUID((uint16_t)0x2902))->writeValue((uint8_t*)notificationOn, 2, true);
          connected = true;
        } else {
          String conectando_error = "Falló conexión Servidor BLE";
          imprimirConAltura(conectando_error, 8); ////// IMPRIME OLED Y SERIAL //////
        }
        bleConectado = false;
      }
      delay(1000);
    }
    
    
    
    //Basado en ejemplo Heltec OLED_rotate.ino
    void VextON(void)
    {
      pinMode(Vext, OUTPUT);
      digitalWrite(Vext, LOW);
    }
    
    void VextOFF(void) //Vext default OFF
    {
      pinMode(Vext, OUTPUT);
      digitalWrite(Vext, HIGH);
    }
    
    void initHeltecEsp32() {
    
      VextON();
      delay(100);
    
      display.init();
      display.clear();
      display.display();
    
      display.setContrast(1);
    
      display.setTextAlignment(TEXT_ALIGN_CENTER);
      display.clear();
      display.display();
      display.screenRotate(ANGLE_0_DEGREE);
      display.setFont(ArialMT_Plain_16);
      display.drawString(64, 32 - 16 / 2, "HUE CAT"); //ROTATE_0
      display.display();
      delay(400);
    
      display.clear();
      display.display();
      display.screenRotate(ANGLE_90_DEGREE);
      display.setFont(ArialMT_Plain_10);
      display.drawString(32, 64 - 10 / 2, "HUE CAT"); //ROTATE_90
      display.display();
      delay(400);
    
      display.clear();
      display.display();
      display.screenRotate(ANGLE_180_DEGREE);
      display.setFont(ArialMT_Plain_16);
      display.drawString(64, 32 - 16 / 2, "HUE CAT"); //ROTATE_180
      display.display();
      delay(400);
    
      display.clear();
      display.display();
      display.screenRotate(ANGLE_270_DEGREE);
      display.setFont(ArialMT_Plain_10);
      display.drawString(32, 64 - 10 / 2, "HUE CAT"); //ROTATE_270
      display.display();
      delay(400);
    
      display.clear();
      display.display();
      display.screenRotate(ANGLE_0_DEGREE);
      display.setFont(ArialMT_Plain_16);
      display.drawString(64, 32 - 16 / 2, "HUE CAT"); //ROTATE_0
      display.display();
      delay(500);
    
      display.clear();
      display.display();
    
      display.setTextAlignment(TEXT_ALIGN_LEFT);
      display.setFont(ArialMT_Plain_10);
    
    }
    
    
    void imprimirConAltura(String stringToPrint, int alturaAImprimir) {
      //Imprime en monitor serie y display
      Serial.print("OLED->" + stringToPrint);
      display.drawString(0, alturaAImprimir, stringToPrint);
      display.display();
    }
    

  • El Driver Led

    En la iluminación LED, al contrarío que pasa con la iluminación fluorescente o incandescente, las luminarias no se conectan directamente a la corriente eléctrica, si no que lo hacen a través de un driver que se ocupa de transformar la tensión adaptándola a las necesidades del sistema.

  • SIM900: Enviar datos a ThingSpeak

    ThingSpeak es un plataforma Broker MQTT que permite recoger y almacenar datos de sensores en la nube y desarrollar aplicaciones IoT

    ThingSpeak también ofrece aplicaciones que permiten analizar y visualizar tus datos en MATLAB y actuar sobre los mismos

  • La Internet de las Cosas (IoT)

    Internet de las cosas es un concepto que se refiere a la interconexión digital de objetos cotidianos con Internet

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

  • Instalar Base de Datos MySQL en NodeRED + Raspberry Pi

    cd ~/.node-red
    
    npm install node-red-node-mysql
    
    node-red-stop && node-red-start
    
  • 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);
    }
    
  • 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.