Doorgaan naar artikel

+49 1626571232

info@openelab.io

🚀Gratis verzending vanaf 50€ in de EU / 80€ wereldwijd

M5Stack Beginnersgids: PLUS2 infraroodmogelijkheden

16 Oct 2024 0 Opmerkingen
De M5StickC Plus2 is een compacte, veelzijdige ontwikkelmodule die een krachtige infrarood (IR) zender integreert, wat nieuwe mogelijkheden opent voor slimme besturings- en communicatietoepassingen. Deze functie stelt het apparaat in staat om IR-signalen te verzenden.
 
De M5StickC Plus2 heeft geen ingebouwde infrarood (IR) ontvanger, maar kan IR-signalen ontvangen door een externe IR-module aan te sluiten. Het M5Stack ecosysteem biedt verschillende compatibele IR-modules, zoals de Grove IR-ontvangermodule, die via de Grove-interface op de M5StickC Plus2 kan worden aangesloten .
Om IR-ontvangst in te schakelen, volgt u deze stappen:
  1. Selecteer een IR module: bijvoorbeeld de Grove IR Receiver module.
  2. Hardwareverbinding: Gebruik de Grove-interface of jumperdraden om de IR-module aan te sluiten op de juiste GPIO pinnen op de M5StickC Plus2.
  3. Softwareondersteuning: schrijf code in Arduino of MicroPython om de IR-signalen te lezen. Arduino-bibliotheken, zoals IRremote, kunnen eenvoudig algemene IR-protocollen decoderen (bijvoorbeeld het NEC-protocol).

Belangrijkste Kenmerken van de Infraroodfunctie

IR-transmissie en -ontvangst
Met de ingebouwde IR-zender kan de M5StickC Plus2 de functies van traditionele afstandsbedieningen nabootsen en signalen verzenden om tv's, airconditioners en andere IR-compatibele apparaten te bedienen.
Dankzij de IR-ontvanger kan de module signalen van andere afstandsbedieningen leren en decoderen, waardoor deze aanpasbaar is voor meerdere bedieningsscenario's.

  

Codecommentaar en functiebeschrijvingen

/**
 * @file ir_nec.ino
 * @auteur SeanKwok (shaoxiang@m5stack.com)
 * @brief M5StickCPlus2 IR NEC test
 * @version 0.1
 * @date 2023-12-09
 *
 *
 * @Hardwares: M5StickCPlus2
 * @Platformversie: Arduino M5Stack Board Manager v2.0.9
 * @Afhankelijke Bibliotheek:
 * 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 // Schakelt het herstarten van de ontvanger na elke keer uit
                                   // send. Saves 450 bytes program memory and
                                   // 269 bytes RAM if receiving functions are
                                   // not used.
#define SEND_PWM_BY_TIMER
#define IR_TX_PIN 19




uint8_t sCommand = 0x34;
uint8_t sHerhalingen = 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(GROEN);

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

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

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

    IrSender.begin(DISABLE_LED_FEEDBACK);  // Begin met IR_SEND_PIN als verzendpincode
    IrSender.setSendPin(IR_TX_PIN);//Infrarood signaal verzenden pin-instellingen
}

lege lus() {
    Serial.println();//Druk een lege regel af om de uitvoer op te maken en de volgende informatie duidelijker te maken.
    Serial.print(F('Nu verzenden: adres=0x1111, opdracht=0x'));//Een tekenreeks afdrukken.
    Serial.print(sCommand, HEX);//Weergave in hexadecimaal formaat.
    Serial.print(F(', repeats='));//Geef het aantal herhaalde verzendingen aan.
    Serial.print(sRepeats);//Het aantal keren dat de opdracht wordt verzonden.
    Serial.println();//Druk nog een lege regel af om de uitvoer overzichtelijker te maken.

    StickCP2.Display.clear();//Update de schermweergave.

    //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);

    Serial.println(F('Stuur standaard NEC met 16-bits adres'));

    StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Teken een cirkel.
    
    IrSender.sendNEC(0x1111, sCommand, sRepeats);//Verzend een infraroodsignaal volgens het NEC-protocol.
    // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
    /*
     * Verhoog verzendwaarden
     */
    sCommand += 1;//Verhoog de opdrachtwaarde.
    vertraging(500);//Vertraging van 500 milliseconden.
    StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Teken een gevulde cirkel.
    delay(500);
}


✔ Gekopieerd!

 

1. IrSender.begin(DISABLE_LED_FEEDBACK);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Begin met IR_SEND_PIN als verzendpincode
        
Roep de methode begin van het object IrSender aan om de infraroodtransmissiefunctie te initialiseren.
  • DISABLE_LED_FEEDBACK: dit is een parameter die wordt gebruikt om LED-feedback uit te schakelen. Als feedback is ingeschakeld, knippert de LED tijdens het verzenden van infraroodsignalen.
Standaard gebruikt IrSender een vooraf ingestelde infraroodtransmissiepin (zoals IR_SEND_PIN) om infraroodsignalen te verzenden. Deze coderegel activeert de infraroodzender en bereidt deze voor op het verzenden van infraroodsignalen.

2. IrSender.setSendPin(IR_TX_PIN);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Begin met IR_SEND_PIN als verzendpincode
        

Roep de methode setSendPin van het object IrSender aan om de pin voor infraroodsignaaloverdracht in te stellen op IR_TX_PIN.

  • IR_TX_PIN is een gedefinieerd pincode die de exacte pincode specificeert die wordt gebruikt om infraroodsignalen te verzenden.

Door deze coderegel te gebruiken, kunt u de infraroodtransmissiepin aanpassen in plaats van de standaardpin te gebruiken. Dit is vooral handig als er wijzigingen zijn in hardwareverbindingen of pinmapping.

3. Serial.print(F('Nu verzenden: adres=0x1111, opdracht=0x'));

                Serial.println();//Druk een lege regel af om de uitvoer op te maken en de volgende informatie duidelijker te maken.
                Serial.print(F('Nu verzenden: adres=0x1111, opdracht=0x'));//Een tekenreeks afdrukken.
                Serial.print(sCommand, HEX);//Weergave in hexadecimaal formaat.
                Serial.print(F(', repeats='));//Geef het aantal herhaalde verzendingen aan.
                Serial.print(sRepeats);//Het aantal keren dat de opdracht wordt verzonden.
                Serial.println();//Druk nog een lege regel af om de uitvoer overzichtelijker te maken.
        
  • Gebruik Serial.print() om de tekenreeks 'Nu verzenden: adres=0x1111, opdracht=0x' af te drukken. De macro F() wordt hier gebruikt om de tekenreeks op te slaan in Flash-geheugen, waardoor RAM wordt bespaard.
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);
        

Geef 'IR NEC SEND' weer met behulp van de drawString methode om de string op een gespecificeerde positie op het scherm weer te geven.

  • StickCP2.Display.width() / 2: Dit zorgt ervoor dat de tekenreeks horizontaal op het scherm wordt gecentreerd.

  • StickCP2.Display.height() / 2 - 40: hierdoor wordt de tekenreeks 40 pixels boven het verticale midden van het scherm geplaatst.

Geef 'ADDR:0x1111' weer met de methode drawString om de adresgegevens weer te geven.
  • StickCP2.Display.width() / 2: Centreert de tekst horizontaal op het scherm.
  • StickCP2.Display.height() / 2: Centreert de tekst verticaal en plaatst deze precies in het midden van het scherm.

Geef opdrachtinformatie weer door de tekenreeks 'CMD:0x' weer te geven, samen met de hexadecimale weergave van de sCommand variabele.

  • String(sCommand, HEX): Converteert de sCommand variabele naar een hexadecimale tekenreeks.

  • StickCP2.Display.width() / 2: Centreert de tekst horizontaal op het scherm.

  • StickCP2.Display.height() / 2 + 40: Plaatst de tekst 40 pixels onder het verticale midden van het scherm.

5. Serial.println(F('Stuur standaard NEC met 16-bits adres'));

                Serial.println(F('Stuur standaard NEC met 16-bits adres'));

                StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Teken een cirkel.
        
Gebruik Serial.println() om informatie af te drukken naar de **seriële monitor**, waarbij u aan het einde een nieuwe regel toevoegt om ervoor te zorgen dat de volgende uitvoer op een nieuwe regel begint.
  • F('Stuur standaard NEC met 16-bits adres'): de macro F() slaat de tekenreeks ' op Stuur standaard NEC met 16-bits adres' naar Flash-geheugen (programma-opslag) in plaats van **RAM**, waardoor geheugen wordt bespaard.
  • De uitvoer 'Stuur standaard NEC met 16-bits adres' geeft aan dat een standaard NEC-protocol infraroodsignaal wordt verzonden met een **16-bits adres**.

6. IrSender.sendNEC()

                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Verzend een infraroodsignaal volgens het NEC-protocol.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
                /*
                 * Verhoog verzendwaarden
                 */
        
0x1111: dit is het adres van het infraroodsignaal, dat een 16-bits adreswaarde vertegenwoordigt die wordt gebruikt om het doelapparaat of opdrachtbestemming.
sCommand: dit is de opdrachtwaarde die moet worden verzonden. Het kan een 8-bits of 16-bits waarde zijn, die de exacte bewerking specificeert die het doelapparaat moet uitvoeren.
sRepeats: geeft het aantal keren aan dat het signaal wordt herhaald, meestal om de signaalbetrouwbaarheid te verbeteren of te voldoen aan specifieke eisen van het apparaat dat wordt bestuurd.
  
7. IrSender.sendOnkyo()
                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Verzend een infraroodsignaal volgens het NEC-protocol.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
                /*
                 * Verhoog verzendwaarden
                 */
        
  • 0x1111: dit is het apparaatadres van het infraroodsignaal, dat wordt gebruikt om een specifiek apparaat te identificeren.
  • 0x2223: dit is de opdrachtcode die naar het apparaat wordt verzonden en waarin de uit te voeren bewerking wordt gespecificeerd.
  • sRepeats: vertegenwoordigt het aantal keren dat het signaal wordt herhaald, meestal om de signaalbetrouwbaarheid te garanderen of te voldoen aan de >vereisten van het doelapparaat.

  

Eenvoudig Programmeren

De IR-functionaliteit kan eenvoudig worden benaderd en geprogrammeerd met behulp van het Arduino-framework of UIFlow, de visuele programmeeromgeving van M5Stack. Ontwikkelaars kunnen IrSender.begin() aanroepen om de IR-verzendfunctie te initialiseren en parameters zoals DISABLE_LED_FEEDBACK te configureren, waardoor de knipperende LED-indicator tijdens verzending wordt uitgeschakeld.

 

Flexibele Toepassingsscenario's

Smart Home Control: Automatiseer huishoudelijke apparaten door IR-opdrachten rechtstreeks vanaf de M5StickC Plus2 te verzenden.
Leren op afstand: Neem signalen op van bestaande afstandsbedieningen om een ​​universele oplossing op afstand te creëren.
IoT en robotica: integreer IR-communicatie voor eenvoudige draadloze opdrachten tussen apparaten of robots.

  

Voorgeconfigureerde Infrarood Pin

De M5StickC Plus2 wordt geleverd met een vooraf toegewezen IR-transmissiepin, doorgaans aangeduid als IR_SEND_PIN. Dit maakt het eenvoudig om IR-functies te implementeren zonder ingewikkelde hardware-instellingen.
    
Met zijn compacte formaat en geïntegreerde infraroodmogelijkheden biedt de M5StickC Plus2 een handig en veelzijdig platform voor ontwikkelaars die werken aan projecten op het gebied van afstandsbediening, huisautomatisering of draadloze communicatie. Deze functie transformeert het apparaat van een eenvoudig ontwikkelingshulpmiddel in een krachtig hulpmiddel voor IoT en ingebedde toepassingen.

 

Vorig bericht
Volgende bericht

laat een reactie achter

Alle blogreacties worden vóór publicatie gecontroleerd

Iemand heeft onlangs een gekocht

Bedankt voor het abonneren!

Deze e-mail is geregistreerd!

Shop de look

Kies opties

Bewerk optie
Terug op voorraad melding
this is just a warning
Log in
Winkelmand
0 artikelen
RuffRuff App RuffRuff App by Tsun