saltar al contenido

+49 1626571232

info@openelab.io

🚀 Envío gratuito a partir de 50€ en la UE / 80€ en todo el mundo

Guía para principiantes de M5Stack: capacidades de infrarrojos PLUS2

16 Oct 2024 0 Comentarios
El M5StickC Plus2 es un módulo de desarrollo compacto y versátil que integra un potente transmisor de infrarrojos (IR), lo que abre nuevas posibilidades para aplicaciones de comunicación y control inteligente. Esta característica permite que el dispositivo envíe señales IR.
 
El M5StickC Plus2 no tiene un receptor de infrarrojos (IR) incorporado, pero puede recibir señales de IR conectando un módulo de IR externo. El ecosistemaM5Stack ofrece varios módulos IR compatibles, como el módulo receptor IR Grove, que se puede conectar al M5StickC Plus2 a través de la interfaz Grove. .
Para habilitar la recepción de infrarrojos, siga estos pasos:
  1. Seleccione un módulo IR: por ejemplo, el módulo receptor de infrarrojos Grove.
  2. Conexión de hardware: utilice la interfaz Grove o cables de puente para conectar el módulo de infrarrojos a los pines GPIO apropiados en el M5StickC Plus2.
  3. Soporte de software: escriba código en Arduino o MicroPython para leer las señales IR. Las bibliotecas Arduino, como IRremote, pueden decodificar fácilmente protocolos IR comunes (por ejemplo, el protocolo NEC).

Características clave de la función infrarroja

Transmisión y Recepción IR
Con el transmisor de infrarrojos incorporado, el M5StickC Plus2 puede imitar las funciones de los controles remotos tradicionales, enviando señales para controlar televisores, aires acondicionados y otros dispositivos compatibles con infrarrojos.
El receptor de infrarrojos permite que el módulo aprenda y decodifique señales de otros controles remotos, lo que lo hace adaptable a múltiples escenarios de control.

  

Comentarios de código y descripciones de funciones

/**
 * @file ir_nec.ino
 * @autor SeanKwok (shaoxiang@m5stack.com)
 * @brief Prueba IR NEC de M5StickCPlus2
 * @version 0.1
 * @date 2023-12-09
 *
 *
 * @Hardwares: M5StickCPlus2
 * Versión @Platform: Arduino M5Stack Board Manager v2.0.9
 * @Biblioteca Dependiente:
 * M5GFX: https://github.com/m5stack/M5GFX
 * M5Unificado: https://github.com/m5stack/M5Unified
 * M5StickCPlus2: https://github.com/m5stack/M5StickCPlus2
 * IRremoto: https://github.com/Arduino-IRremote/Arduino-IRremote
 */

#define DISABLE_CODE_FOR_RECEIVER // Desactiva el reinicio del receptor después de cada
                                   // send. Saves 450 bytes program memory and
                                   // 269 bytes RAM if receiving functions are
                                   // not used.
#define ENVIAR_PWM_POR_TEMPORIZADOR
#define IR_TX_PIN 19




uint8_t sCommand = 0x34;
uint8_t sRepeats = 0;

void setup() {
    auto cfg = M5.config();
    
    //To understand the underlying logic of the initialization with begin(), you can refer to the Dependent Library.
    StickCP2.iniciar(cfg);

    //Display rotation directions
    StickCP2.Display.setRotation(1);

    //  The color of the text displayed on the screen.
    StickCP2.Display.setTextColor(VERDE);

    //Text alignment middle_center means aligning the center of the text to the specified coordinate position.
    StickCP2.Display.setTextDatum(middle_center);

    //Font Styles
    StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);

    //Font size
    StickCP2.Display.setTextSize(1);

    IrSender.begin(DISABLE_LED_FEEDBACK);  // Comience con IR_SEND_PIN como pin de envío
    IrSender.setSendPin(IR_TX_PIN);//Configuración del pin de transmisión de señal infrarroja
}

void loop() {
    Serial.println();//Imprime una línea en blanco para formatear la salida y aclarar la siguiente información.
    Serial.print(F('Enviar ahora: dirección=0x1111, comando=0x'));//Imprimir una cadena.
    Serial.print(sCommand, HEX);//Mostrar en formato hexadecimal.
    Serial.print(F(', repetidos='));//Indica el número de transmisiones repetidas.
    Serial.print(sRepeats);//El número de veces que se envía el comando.
    Serial.println();//Imprime otra línea en blanco para que la salida esté más organizada.

    StickCP2.Display.clear();//Actualiza la visualización de la pantalla.

    //drawString A method used to draw a string at a specified position.
    StickCP2.Display.drawString('ENVÍO IR NEC', StickCP2.Display.width() / 2,
                                StickCP2.Display.height() / 2 - 40);

    StickCP2.Display.drawString('ADDR:0x1111', StickCP2.Display.width() / 2,
                                StickCP2.Display.height() / 2);

    StickCP2.Display.drawString('CMD:0x' + String(sCommand, HEX),
                                StickCP2.Display.width() / 2,
                                StickCP2.Display.height() / 2 + 40);

    Serial.println(F('Enviar NEC estándar con dirección de 16 bits'));

    StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Dibuja un círculo.
    
    IrSender.sendNEC(0x1111, sCommand, sRepeats);//Envía una señal infrarroja siguiendo el protocolo NEC.
    // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
    /*
     * Incrementar valores de envío
     */
    sCommand += 1;//Incrementa el valor del comando.
    delay(500);//Retraso de 500 milisegundos.
    StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Dibuja un círculo relleno.
    delay(500);
}


✔ ¡Copiado!

 

1. IrSender.begin(DISABLE_LED_FEEDBACK);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Comience con IR_SEND_PIN como pin de envío
        
Llame al método begin del objeto IrSender para inicializar la función de transmisión de infrarrojos.
  • DISABLE_LED_FEEDBACK: este es un parámetro utilizado para desactivar la retroalimentación LED. Si la retroalimentación está habilitada, el LED parpadeará mientras transmite señales infrarrojas.
De forma predeterminada, IrSender utilizará un pin de transmisión de infrarrojos preestablecido (como IR_SEND_PIN) para enviar señales de infrarrojos. Esta línea de código activa el transmisor de infrarrojos y lo prepara para enviar señales de infrarrojos.

2. IrSender.setSendPin(IR_TX_PIN);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Comience con IR_SEND_PIN como pin de envío
        

Llame al método setSendPin del objeto IrSender para configurar el pin de transmisión de señal infrarroja en IR_TX_PIN.

  • IR_TX_PIN es un número de pin definido que especifica el pin exacto utilizado para transmitir señales infrarrojas.

Al utilizar esta línea de código, puede personalizar el pin de transmisión de infrarrojos en lugar de utilizar el predeterminado. Esto es especialmente útil cuando hay cambios en las conexiones de hardware o asignación de pines.

3. Serial.print(F('Enviar ahora: dirección=0x1111, comando=0x'));

                Serial.println();//Imprime una línea en blanco para formatear la salida y aclarar la siguiente información.
                Serial.print(F('Enviar ahora: dirección=0x1111, comando=0x'));//Imprimir una cadena.
                Serial.print(sCommand, HEX);//Mostrar en formato hexadecimal.
                Serial.print(F(', repetidos='));//Indica el número de transmisiones repetidas.
                Serial.print(sRepeats);//El número de veces que se envía el comando.
                Serial.println();//Imprime otra línea en blanco para que la salida esté más organizada.
        
  • Utilice Serial.print() para imprimir la cadena 'Enviar ahora: dirección=0x1111, comando=0x'. La macro F() se utiliza aquí para almacenar la cadena en la memoria flash, lo que ayuda a conservar la RAM.
4. StickCP2.Display.drawString(' ', , );
  
                //drawString A method used to draw a string at a specified position.
                StickCP2.Display.drawString('IR NEC SEND', StickCP2.Display.width() / 2,
                                            StickCP2.Display.height() / 2 - 40);
            
                StickCP2.Display.drawString('ADDR:0x1111', StickCP2.Display.width() / 2,
                                            StickCP2.Display.height() / 2);
            
                StickCP2.Display.drawString('CMD:0x' + String(sCommand, HEX),
                                            StickCP2.Display.width() / 2,
                                            StickCP2.Display.height() / 2 + 40);
        

Muestre 'IR NEC SEND' usando el método drawString para representar la cadena en una posición específica en la pantalla.

  • StickCP2.Display.width() / 2: esto garantiza que la cadena esté centrada horizontalmente en la pantalla.

  • StickCP2.Display.height() / 2 - 40: esto coloca la cadena 40 píxeles por encima del centro vertical de la pantalla.

Muestre 'ADDR:0x1111' usando el método drawString para mostrar la información de la dirección.
  • StickCP2.Display.width() / 2: Centra el texto horizontalmente en la pantalla.
  • StickCP2.Display.height() / 2: centra el texto verticalmente, colocándolo justo en el medio de la pantalla.

Muestra información del comando representando la cadena 'CMD:0x' junto con la representación hexadecimal del Variable sCommand.

  • String(sCommand, HEX): convierte la variable sCommand en una cadena hexadecimal.

  • StickCP2.Display.width() / 2: centra el texto horizontalmente en la pantalla.

  • StickCP2.Display.height() / 2 + 40: coloca el texto 40 píxeles debajo del centro vertical de la pantalla.

5. Serial.println(F('Enviar NEC estándar con dirección de 16 bits'));

                Serial.println(F('Enviar NEC estándar con dirección de 16 bits'));

                StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Dibuja un círculo.
        
Utilice Serial.println() para imprimir información en el **monitor serie**, agregando una nueva línea al final para garantizar que la siguiente salida comience en una nueva línea.
  • F('Enviar NEC estándar con dirección de 16 bits'): la macro F() almacena la cadena ' Envía NEC estándar con dirección de 16 bits en memoria flash (almacenamiento de programas) en lugar de **RAM**, lo que ayuda a conservar la memoria.
  • La salida 'Enviar NEC estándar con dirección de 16 bits' indica que se está transmitiendo una señal infrarroja del protocolo NEC estándar con una **dirección de 16 bits**.

6. IrSender.sendNEC()

                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Envía una señal infrarroja siguiendo el protocolo NEC.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
                /*
                 * Incrementar valores de envío
                 */
        
0x1111: esta es la dirección de la señal infrarroja, que representa un valor de dirección de 16 bits utilizado para identificar el dispositivo de destino o destino de comando.
sCommand: este es el valor del comando que se enviará. Puede ser un valor de 8 bits o 16 bits, que especifica la operación exacta que debe realizar el dispositivo de destino.
sRepeats: Indica el número de veces que se repite la señal, normalmente para mejorar la fiabilidad de la señal o cumplir requisitos específicos de el dispositivo que se está controlando.
  
7. IrSender.sendOnkyo()
                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Envía una señal infrarroja siguiendo el protocolo NEC.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
                /*
                 * Incrementar valores de envío
                 */
        
  • 0x1111: Esta es la dirección del dispositivo de la señal infrarroja, utilizada para identificar un dispositivo específico.
  • 0x2223: Este es el código de comando enviado al dispositivo, especificando la operación a realizar.
  • sRepeats: representa el número de veces que se repite la señal, generalmente para garantizar la confiabilidad de la señal o cumplir con el >requisitos del dispositivo de destino.

  

Programación Fácil

Se puede acceder y programar fácilmente la funcionalidad IR utilizando el marco Arduino o UIFlow, el entorno de programación visual de M5Stack. Los desarrolladores pueden llamar a IrSender.begin() para inicializar la función de envío de IR y configurar parámetros como DISABLE_LED_FEEDBACK, que desactiva el indicador LED parpadeante durante la transmisión.

 

Escenarios de Aplicación Flexibles

Control del hogar inteligente: Automatice los electrodomésticos enviando comandos IR directamente desde el M5StickC Plus2.
Aprendizaje remoto: grabe señales de controles remotos existentes para crear una solución remota universal.
IoT y robótica: integre la comunicación por infrarrojos para comandos inalámbricos simples entre dispositivos o robots.

  

Pin Infrarrojo Preconfigurado

El M5StickC Plus2 viene con un pin de transmisión de infrarrojos preasignado, normalmente etiquetado como IR_SEND_PIN. Esto facilita la implementación de funciones de IR sin configuraciones de hardware complicadas.
    
Con su tamaño compacto y capacidades de infrarrojos integradas, el M5StickC Plus2 proporciona una plataforma conveniente y versátil para desarrolladores que trabajan en proyectos de control remoto, automatización del hogar o comunicación inalámbrica. Esta característica transforma el dispositivo de una simple herramienta de desarrollo a una poderosa herramienta para IoT y aplicaciones integradas.

 

Publicación anterior
Siguiente publicación

Deja un comentario

Todos los comentarios del blog se revisan antes de publicarlos.

Alguien compró recientemente un

¡Gracias por suscribirte!

¡Este correo electrónico ha sido registrado!

Compra el look

Elija opciones

Editar opción
Notificación de nuevo disponible
this is just a warning
Acceso
Carro de la compra
0 elementos
RuffRuff App RuffRuff App by Tsun