Aller au contenu

+49 1626571232

info@openelab.io

🚀 Livraison gratuite à partir de 50€ dans l'UE / 80€ dans le monde entier

FAQ

M5Stack Débutant : Capacités infrarouges PLUS2

16 Oct 2024 0 commentaires
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 et de communication intelligentes. Cette fonctionnalité permet à l'appareil d' envoyer des signaux IR.
 
Le M5StickC Plus2 n'a pas de 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, procédez comme suit :
  1. Sélectionnez un module IR : par exemple, le module Grove IR Receiver.
  2. Connexion matérielle : utilisez l'interface Grove ou des câbles de démarrage pour connecter le module IR aux broches GPIO appropriées du M5StickC Plus2.
  3. Support logiciel : écrivez du code dans 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, le protocole NEC).

Caractéristiques clés de la fonction infrarouge

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

  

Commentaires de code et descriptions de fonction

/**
 * @file ir_nec.ino
 * @auteur SeanKwok (shaoxiang@m5stack.com)
 * @brief Test IR NEC M5StickCPlus2
 * @version 0.1
 * @date 2023-12-09
 *
 *
 * @Matériels: M5StickCPlus2
 * Version @Platform : Arduino M5Stack Board Manager v2.0.9
 * @Bibliothèque Dépendante :
 * M5GFX : https://github.com/m5stack/M5GFX
 * M5Unifié : 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

#include "M5StickCPlus2.h"
#include   // inclure la bibliothèque

uint8_t sCommand = 0x34;
uint8_t sRepeats = 0;

vide configuration() {
    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);  // Commencez par IR_SEND_PIN comme code PIN d'envoi
    IrSender.setSendPin(IR_TX_PIN);//Paramètres de la broche de transmission du signal infrarouge
}

vide boucle() {
    Serial.println();//Imprime une ligne vierge 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);//Affichage au format hexadécimal.
    Serial.print(F(", Repeats="));//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 vierge 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("IR NEC ENVOYER", StickCP2.Display.width() / 2,
                                StickCP2.Display.height() / 2 - 40);

    StickCP2.Display.drawString("ADDR:0x1111", StickCP2.Display.width() / 2,
                                StickCP2.Affichage.hauteur() / 2);

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

    Serial.println(F("Envoyer NEC standard avec une adresse 16 bits"));

    StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Dessinez 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émente la valeur de la commande.
    retard(500);//Delay for 500 milliseconds.
    StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Dessinez un cercle rempli.
    delay(500);
}


✔ Copié !

 

1. IrSender.begin(DESACTIVER_RETROACTION_LED);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Commencez par IR_SEND_PIN comme code PIN 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 clignote lors de la transmission des signaux infrarouges.
Par défaut, IrSender utilisera une broche de transmission infrarouge prédéfinie (telle que 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);  // Commencez par IR_SEND_PIN comme code PIN 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 le code PIN de transmission infrarouge au lieu d'utiliser celui par défaut. Ceci 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 vierge 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);//Affichage au format hexadécimal.
                Serial.print(F(", Repeats="));//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 vierge pour rendre la sortie plus organisée.
        
  • Utilisez Serial.print() pour imprimer la chaîne "Envoyer maintenant : adresse=0x1111, command=0x". La macro F() est utilisée ici pour stocker la chaîne dans la mémoire Flash, aidant ainsi à 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);
        

Affichez "IR NEC SEND" à l'aide de la méthode drawString pour restituer la chaîne à une position spécifiée sur l'écran.

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

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

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

Affichez les informations de commande en rendant la chaîne "CMD:0x" ainsi que la représentation hexadécimale du 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'écran.

  • 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 une adresse 16 bits"));

                Serial.println(F("Envoyer NEC standard avec une adresse 16 bits"));

                StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Dessinez un cercle.
        
Utilisez Serial.println() pour imprimer des informations sur le **moniteur série**, en ajoutant une nouvelle ligne à la fin pour garantir que la sortie suivante commence sur une nouvelle ligne.
  • F("Envoyer NEC standard avec une adresse 16 bits") : La macro F() stocke la chaîne "Envoyer NEC standard avec une adresse 16 bits" dans la Mémoire Flash (stockage du programme) au lieu de la **RAM**, ce qui permet d'économiser la mémoire.
  • La sortie "Envoyer NEC standard avec une adresse 16 bits" indique qu'un signal infrarouge du protocole NEC standard est transmis avec une **adresse 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 de 16 bits utilisée pour identifier le périphérique cible ou destination de la commande.
sCommand : Il s'agit de la valeur de commande à envoyer. Il peut s'agir d'une valeur 8 bits ou 16 bits, spécifiant l'opération exacte que le périphérique cible doit effectuer.
sRépétitions : indique le nombre de fois où 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ôler.
  
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, précisant l'opération à effectuer.
  • sRépétitions : représente le nombre de fois où le signal est répété, généralement pour garantir la fiabilité du signal ou répondre aux exigences de l'appareil cible.

  

Programmation Facile

La fonctionnalité IR est facilement accessible et programmée à l'aide du framework Arduino ou de 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 électroménagers 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 à distance universelle.
IoT et robotique : intégrez la communication IR pour des commandes sans fil simples entre appareils ou robots.

  

Pin infrarouge préconfiguré

Le M5StickC Plus2 est livré avec une broche de transmission IR pré-attribuée, généralement étiquetée IR_SEND_PIN. Cela facilite le déploiement de fonctions IR sans configuration matérielle compliquée.
    
Avec sa taille compacte et ses capacités infrarouges intégrées, le M5StickC Plus2 constitue une plate-forme pratique et polyvalente pour les développeurs travaillant sur des projets de contrôle à distance, de domotique ou de communication sans fil. Cette fonctionnalité transforme l'appareil d'un simple outil de développement en un outil puissant pour l'IoT et les applications embarquées.

 

Article précédent
Prochain article

laissez un commentaire

Tous les commentaires du blog sont vérifiés avant la publication

Quelqu'un a récemment acheté un

Merci pour votre subscription!

Cet email a été enregistré !

Achetez le look

Choisissez les options

Modifier l'option
Notification de retour en stock
this is just a warning
Se connecter
Panier
0 articles
RuffRuff App RuffRuff App by Tsun