Guide du débutant M5Stack : capacités infrarouges PLUS2

Le M5StickC Plus2 est un module de développement compact et polyvalent qui intègre un puissant émetteur infrarouge (IR), ouvrant de nouvelles possibilités pour les applications de contrôle intelligent et de communication. Cette fonctionnalité permet à l'appareil de envoyer des signaux IR.
 
Le M5StickC Plus2 ne dispose pas d'un récepteur infrarouge (IR) intégré, mais il peut recevoir des signaux IR en connectant un module IR externe. L'écosystème M5Stack propose plusieurs modules IR compatibles, tels que le module récepteur IR Grove, qui peut être connecté au M5StickC Plus2 via l'interface Grove.
Pour activer la réception IR, suivez ces étapes :
  1. Sélectionnez un module IR : Par exemple, le module Grove IR Receiver.
  2. Connexion matérielle : Utilisez l'interface Grove ou des fils de connexion pour relier le module IR aux broches GPIO appropriées sur le M5StickC Plus2.
  3. Support logiciel : Écrivez du code en Arduino ou MicroPython pour lire les signaux IR. Les bibliothèques Arduino, telles que IRremote, peuvent facilement décoder les protocoles IR courants (par exemple, protocole NEC).

Caractéristiques clés de la fonction infrarouge

Transmission et réception IR
Avec l'émetteur IR intégré, le M5StickC Plus2 peut imiter les fonctions des télécommandes traditionnelles, envoyant des signaux pour contrôler les téléviseurs, les climatiseurs et d'autres appareils compatibles IR.
Le récepteur IR permet au module d'apprendre et de décoder les signaux d'autres télécommandes, le rendant adaptable à plusieurs scénarios de contrôle.

  

/**
 * @file ir_nec.ino
 * @author SeanKwok (shaoxiang@m5stack.com)
 * @brief Test IR NEC M5StickCPlus2
 * @version 0.1
 * @date 2023-12-09
 *
 *
 * @Hardwares : M5StickCPlus2
 * @Platform Version : Arduino M5Stack Board Manager v2.0.9
 * @Bibliothèque dépendante :
 * M5GFX : https://github.com/m5stack/M5GFX
 * M5Unified : https://github.com/m5stack/M5Unified
 * M5StickCPlus2 : https://github.com/m5stack/M5StickCPlus2
 * IRremote : https://github.com/Arduino-IRremote/Arduino-IRremote
 */

#define DISABLE_CODE_FOR_RECEIVER  // Désactive le redémarrage du récepteur après chaque
                                   // send. Saves 450 bytes program memory and
                                   // 269 bytes RAM if receiving functions are
                                   // not used.
#define ENVOYER_PWM_PAR_TIMER
#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.begin(cfg);

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

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

    //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);  // Démarrer avec IR_SEND_PIN comme broche d'envoi
    IrSender.setSendPin(IR_TX_PIN);//Paramètres de la broche d'émission du signal infrarouge
}

boucle vide() {
    Serial.println();//Imprime une ligne vide pour formater la sortie et rendre les informations suivantes plus claires.
    Serial.print(F('Envoyer maintenant : adresse=0x1111, commande=0x'));//Imprimer une chaîne.
    Serial.print(sCommand, HEX);//Afficher en format hexadécimal.
    Serial.print(F(', répétitions='));//Indique le nombre de transmissions répétées.
    Serial.print(sRepeats);//Le nombre de fois que la commande est envoyée.
    Serial.println();//Imprime une autre ligne vide pour rendre la sortie plus organisée.

    StickCP2.Display.clear();//Mettre à jour l'affichage de l'écran.

    //drawString A method used to draw a string at a specified position.
    StickCP2.Display.drawString('ENVOI 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.largeur() / 2,
                                StickCP2.Display.height() / 2 + 40);

    Serial.println(F('Envoyer NEC standard avec adresse 16 bits'))

    StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Dessiner un cercle.
    
    IrSender.sendNEC(0x1111, sCommand, sRepeats);//Envoyer un signal infrarouge suivant le protocole NEC.
    // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
    /*
     * Incrémenter les valeurs d'envoi
     */
    sCommand += 1;//Incrémenter la valeur de la commande.
    delay(500);//Délai de 500 millisecondes.
    StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Dessiner un cercle rempli.
    délai(500);
}
  
✔ Copié !

 

 

1. IrSender.begin(DÉSACTIVER_LE_RÉTROACTION_LED);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Démarrer avec IR_SEND_PIN comme broche d'envoi
        
Appelez la méthode begin de l'objet IrSender pour initialiser la fonction de transmission infrarouge.
  • DISABLE_LED_FEEDBACK : Il s'agit d'un paramètre utilisé pour désactiver le retour LED. Si le retour est activé, la LED clignotera lors de la transmission des signaux infrarouges.
Par défaut, IrSender utilisera une broche de transmission infrarouge prédéfinie (comme IR_SEND_PIN) pour envoyer des signaux infrarouges. Cette ligne de code active l'émetteur infrarouge et le prépare à envoyer des signaux infrarouges.

2. IrSender.setSendPin(IR_TX_PIN);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Démarrer avec IR_SEND_PIN comme broche d'envoi
        

Appelez la méthode setSendPin de l'objet IrSender pour définir la broche de transmission du signal infrarouge sur IR_TX_PIN.

  • IR_TX_PIN est un numéro de broche défini qui spécifie la broche exacte utilisée pour transmettre les signaux infrarouges.

En utilisant cette ligne de code, vous pouvez personnaliser la broche de transmission infrarouge au lieu d'utiliser celle par défaut. Cela est particulièrement utile lorsqu'il y a des changements dans les connexions matérielles ou le mappage des broches.

3. Serial.print(F('Envoyer maintenant : adresse=0x1111, commande=0x'));

                Serial.println();//Imprime une ligne vide pour formater la sortie et rendre les informations suivantes plus claires.
                Serial.print(F('Envoyer maintenant : adresse=0x1111, commande=0x'));//Imprimer une chaîne.
                Serial.print(sCommand, HEX);//Afficher en format hexadécimal.
                Serial.print(F(', répétitions='));//Indique le nombre de transmissions répétées.
                Serial.print(sRepeats);//Le nombre de fois que la commande est envoyée.
                Serial.println();//Imprime une autre ligne vide pour rendre la sortie plus organisée.
        
  • Utilisez Serial.print() pour afficher la chaîne 'Send now: address=0x1111, command=0x'. La macro F() est utilisée ici pour stocker la chaîne dans la mémoire Flash, ce qui aide à conserver 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);
        

Afficher 'IR NEC SEND' en utilisant la méthode drawString pour afficher la chaîne à une position spécifiée à l'écran.

  • StickCP2.Display.width() / 2 : Cela garantit que la chaîne est centrée horizontalement sur l'affichage.

  • StickCP2.Display.height() / 2 - 40 : Cela place la chaîne 40 pixels au-dessus du centre vertical de l'écran.

Afficher 'ADDR:0x1111' en utilisant la méthode drawString pour afficher les informations d'adresse.
  • StickCP2.Display.width() / 2 : Centre le texte horizontalement à l'écran.
  • StickCP2.Display.height() / 2 : Centre le texte verticalement, le plaçant exactement au milieu de l'affichage.

Afficher les informations de commande en affichant la chaîne 'CMD:0x' ainsi que la représentation hexadécimale de la variable sCommand.

  • String(sCommand, HEX) : Convertit la variable sCommand en une chaîne hexadécimale.

  • StickCP2.Display.width() / 2 : Centre le texte horizontalement sur l'affichage.

  • StickCP2.Display.height() / 2 + 40 : Place le texte 40 pixels en dessous du centre vertical de l'écran.

5. Serial.println(F('Envoyer NEC standard avec adresse 16 bits'))

                Serial.println(F('Envoyer NEC standard avec adresse 16 bits'))

                StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Dessiner un cercle.
        
Utilisez Serial.println() pour afficher des informations sur le **moniteur série**, en ajoutant un saut de ligne à la fin pour garantir que la sortie suivante commence sur une nouvelle ligne.

  • F('Envoyer NEC standard avec adresse 16 bits') : La macro F() stocke la chaîne 'Envoyer NEC standard avec adresse 16 bits' dans la mémoire Flash (stockage du programme) au lieu de la **RAM**, ce qui aide à économiser la mémoire.
  • La sortie 'Envoyer NEC standard avec adresse 16 bits' indique qu'un signal infrarouge au protocole NEC standard est transmis avec une **adresse de 16 bits**.

6. IrSender.sendNEC()

                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Envoyer un signal infrarouge suivant le protocole NEC.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
                /*
                 * Incrémenter les valeurs d'envoi
                 */
        
0x1111 : Il s'agit de l'adresse du signal infrarouge, représentant une valeur d'adresse sur 16 bits utilisée pour identifier l'appareil cible ou la destination de la commande.
sCommand : Il s'agit de la valeur de commande à envoyer. Cela peut être une valeur 8 bits ou 16 bits, spécifiant l'opération exacte que l'appareil cible doit effectuer.
sRepeats : Indique le nombre de fois que le signal est répété, généralement pour améliorer la fiabilité du signal ou répondre à des exigences spécifiques de l'appareil contrôlé.
  
7. IrSender.sendOnkyo()
                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Envoyer un signal infrarouge suivant le protocole NEC.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
                /*
                 * Incrémenter les valeurs d'envoi
                 */
        
  • 0x1111 : Il s'agit de l'adresse de l'appareil du signal infrarouge, utilisée pour identifier un appareil spécifique.
  • 0x2223 : Il s'agit du code de commande envoyé à l'appareil, spécifiant l'opération à effectuer.
  • sRepeats : Représente le nombre de fois que le signal est répété, généralement pour assurer la fiabilité du signal ou répondre aux exigences de l'appareil cible.

  

Programmation facile

La fonctionnalité IR peut être facilement accessible et programmée en utilisant le framework Arduino ou UIFlow, l'environnement de programmation visuelle de M5Stack. Les développeurs peuvent appeler IrSender.begin() pour initialiser la fonction d'envoi IR et configurer des paramètres tels que DISABLE_LED_FEEDBACK, qui désactive l'indicateur LED clignotant pendant la transmission.

 

Scénarios d'application flexibles

Contrôle de la maison intelligente : Automatisez les appareils domestiques en envoyant des commandes IR directement depuis le M5StickC Plus2.
Apprentissage à distance : Enregistrez les signaux des télécommandes existantes pour créer une solution de télécommande universelle.
IoT et robotique : Intégrez la communication IR pour des commandes sans fil simples entre appareils ou robots.

  

Broche infrarouge préconfigurée

Le M5StickC Plus2 est livré avec une broche de transmission IR préassignée, généralement étiquetée comme IR_SEND_PIN. Cela facilite le déploiement des fonctions IR sans configurations matérielles compliquées.

    

Avec sa taille compacte et ses capacités infrarouges intégrées, le M5StickC Plus2 offre une plateforme pratique et polyvalente pour les développeurs travaillant sur des projets de télécommande, d'automatisation domestique ou de communication sans fil. Cette fonctionnalité transforme l'appareil d'un simple outil de développement en un outil puissant pour les applications IoT et embarquées.

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués d'un *

Inscrivez-vous à notre newsletter

Obtenez les dernières informations sur nos produits et offres spéciales.