M5Stack Aloittelijan Opas: PLUS2 Infrapunaominaisuudet

M5StickC Plus2 on kompakti, monipuolinen kehitysmoduuli, joka integroi tehokkaan infrapunalähettimen, avaten uusia mahdollisuuksia älykkäisiin ohjaus- ja viestintäsovelluksiin. Tämä ominaisuus mahdollistaa laitteen lähettää IR-signaaleja.
 
M5StickC Plus2:ssa ei ole sisäänrakennettua infrapuna(IR)-vastaanotinta, mutta se voi vastaanottaa IR-signaaleja liittämällä ulkoinen IR-moduuli. M5Stackin ekosysteemi tarjoaa useita yhteensopivia IR-moduuleja, kuten Grove IR Receiver -moduulin, joka voidaan liittää M5StickC Plus2:een Grove-liitännän kautta.
Ota IR-vastaanotto käyttöön seuraavasti:
  1. Valitse IR-moduuli: Esimerkiksi Grove IR Receiver -moduuli.
  2. Laitteistoyhteys: Käytä Grove-liitäntää tai hyppylankoja yhdistääksesi IR-moduulin sopiviin GPIO-nastohin M5StickC Plus2:ssa.
  3. Ohjelmistotuki: Kirjoita koodi Arduinolla tai MicroPythonilla lukeaksesi IR-signaaleja. Arduino-kirjastot, kuten IRremote, voivat helposti dekoodata yleisiä IR-protokollia (esim. NEC-protokolla).

Infrapunaominaisuuden keskeiset piirteet

IR-lähetys ja vastaanotto
Sisäänrakennetun IR-lähettimen avulla M5StickC Plus2 voi matkia perinteisten kaukosäätimien toimintoja lähettämällä signaaleja televisioiden, ilmastointilaitteiden ja muiden IR-yhteensopivien laitteiden ohjaamiseksi.
IR-vastaanotin mahdollistaa moduulin oppia ja dekoodata signaaleja muista kaukosäätimistä, tehden siitä soveltuvan moniin ohjaustilanteisiin.

  

/**
 * @file ir_nec.ino
 * @tekijä SeanKwok (shaoxiang@m5stack.com)
 * @tiivistelmä M5StickCPlus2 IR NEC -testi
 * @version 0.1
 * @date 2023-12-09
 *
 *
 * @Laitteistot: M5StickCPlus2
 * @Alustan versio: Arduino M5Stack Board Manager v2.0.9
 * @Riippuva kirjasto:
 * 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  // Estää vastaanottimen uudelleenkäynnistyksen jokaisen jälkeen
                                   // 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 sKomento = 0x34;
uint8_t sToistot = 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(GREEN);

    //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);  // Aloita käyttämällä IR_SEND_PIN lähetyspinninä
    IrSender.setSendPin(IR_TX_PIN);//Infrapunasignaalin lähetyspinnin asetukset
}

void loop() {
    Serial.println();//Tulosta tyhjä rivi muotoillaksesi tulosteen ja selkeyttääksesi seuraavia tietoja.
    Serial.print(F('Send now: address=0x1111, command=0x'));//Tulosta merkkijono.
    Serial.print(sCommand, HEX);//Näytä heksadesimaalimuodossa.
    Serial.print(F(', repeats='));//Ilmaisee toistettujen lähetyskertojen määrän.
    Serial.print(sRepeats);//Komentojen lähetyskertojen määrä.
    Serial.println();//Tulosta toinen tyhjä rivi, jotta tuloste on järjestelmällisempi.

    StickCP2.Display.clear();//Päivitä näytön näyttö.

    //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('Send standard NEC with 16 bit address'));

    StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Piirrä ympyrä.
    
    IrSender.sendNEC(0x1111, sCommand, sRepeats);//Lähetä infrapunasignaali NEC-protokollan mukaisesti.
    // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
    /*
     * Lähetä arvot kasvavina
     */
    sCommand += 1;//Lisää komentoa yhdellä.
    delay(500);//Viive 500 millisekuntia.
    StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Piirrä täytetty ympyrä.
    delay(500);
}
  
✔ Kopioitu!

 

 

1. IrSender.begin(DISABLE_LED_FEEDBACK);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Aloita käyttämällä IR_SEND_PIN lähetyspinninä
        
Kutsu begin-metodia IrSender-oliosta alustamaan infrapunalähetyksen toiminto.
  • DISABLE_LED_FEEDBACK: Tämä on parametri, jota käytetään LED-palauteen poistamiseen käytöstä. Jos palaute on käytössä, LED vilkkuu infrapunasignaalien lähetyksen aikana.
Oletuksena IrSender käyttää ennalta määriteltyä infrapunalähetyspinniä (kuten IR_SEND_PIN) infrapunasignaalien lähettämiseen. Tämä koodirivi aktivoi infrapunalähettimen ja valmistaa sen lähettämään infrapunasignaaleja.

2. IrSender.setSendPin(IR_TX_PIN);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Aloita käyttämällä IR_SEND_PIN lähetyspinninä
        

Kutsu setSendPin-metodia IrSender-oliosta asettaaksesi infrapunasignaalin lähetyspinnin arvoksi IR_TX_PIN.

  • IR_TX_PIN on määritelty pinninumero, joka määrittää tarkasti sen pinnin, jota käytetään infrapunasignaalien lähettämiseen.

Käyttämällä tätä koodiriviä voit mukauttaa infrapunalähetyksen pinnin sen sijaan, että käyttäisit oletuspinniä. Tämä on erityisen hyödyllistä, kun laitteistoyhteydet tai pinnien kartoitus muuttuvat.

3. Serial.print(F('Lähetä nyt: osoite=0x1111, komento=0x'));

                Serial.println();//Tulosta tyhjä rivi muotoillaksesi tulosteen ja selkeyttääksesi seuraavia tietoja.
                Serial.print(F('Send now: address=0x1111, command=0x'));//Tulosta merkkijono.
                Serial.print(sCommand, HEX);//Näytä heksadesimaalimuodossa.
                Serial.print(F(', repeats='));//Ilmaisee toistettujen lähetyskertojen määrän.
                Serial.print(sRepeats);//Komentojen lähetyskertojen määrä.
                Serial.println();//Tulosta toinen tyhjä rivi, jotta tuloste on järjestelmällisempi.
        
  • Käytä Serial.print()-funktiota tulostaaksesi merkkijonon 'Send now: address=0x1111, command=0x'. Tässä käytetään F()-makroa tallentamaan merkkijono Flash-muistiin, mikä auttaa säästämään RAM-muistia.
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);
        

Näytä 'IR NEC SEND' käyttäen drawString-metodia merkkijonon renderöimiseksi määritettyyn kohtaan näytöllä.

  • StickCP2.Display.width() / 2: Tämä varmistaa, että merkkijono on keskitetty vaakasuunnassa näytölle.

  • StickCP2.Display.height() / 2 - 40: Tämä asettaa merkkijonon 40 pikseliä pystysuoran keskikohdan yläpuolelle näytöllä.

Näytä 'ADDR:0x1111' käyttäen drawString-metodia osoitetietojen näyttämiseen.
  • StickCP2.Display.width() / 2: Keskittää tekstin vaakasuunnassa näytölle.
  • StickCP2.Display.height() / 2: Keskittää tekstin pystysuunnassa, asettaen sen näytön keskelle.

Näytä komentotiedot renderöimällä merkkijono 'CMD:0x' yhdessä sCommand-muuttujan heksadesimaalisen esityksen kanssa.

  • String(sCommand, HEX): Muuntaa sCommand-muuttujan heksadesimaalimuotoiseksi merkkijonoksi.

  • StickCP2.Display.width() / 2: Keskittää tekstin vaakasuunnassa näytölle.

  • StickCP2.Display.height() / 2 + 40: Asettaa tekstin 40 pikseliä pystysuoran keskikohdan alapuolelle näytöllä.

5. Serial.println(F('Send standard NEC with 16 bit address'));

                Serial.println(F('Send standard NEC with 16 bit address'));

                StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Piirrä ympyrä.
        
Käytä Serial.println()-funktiota tulostaaksesi tietoa **sarjamonitoriin**, lisäten rivinvaihdon lopuksi varmistaaksesi, että seuraava tuloste alkaa uudelta riviltä.

  • F('Send standard NEC with 16 bit address'): F()-makro tallentaa merkkijonon 'Lähetä standardi NEC 16-bittisellä osoitteella' Flash-muistiin (ohjelman tallennustilaan) RAM-muistin sijaan, mikä auttaa säästämään muistia.
  • Tuloste 'Lähetä standardi NEC 16-bittisellä osoitteella' tarkoittaa, että lähetetään standardin NEC-protokollan infrapunasignaali **16-bittisellä osoitteella**.

6. IrSender.sendNEC()

                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Lähetä infrapunasignaali NEC-protokollan mukaisesti.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
                /*
                 * Lähetä arvot kasvavina
                 */
        
0x1111: Tämä on infrapunasignaalin osoite, joka edustaa 16-bittistä osoitearvoa kohdelaitteen tai komennon kohteen tunnistamiseen.
sCommand: Tämä on lähetettävä komentoa arvo. Se voi olla 8-bittinen tai 16-bittinen arvo, joka määrittää tarkasti, mitä toimintoa kohdelaitteen tulee suorittaa.
sRepeats: Ilmaisee kuinka monta kertaa signaali toistetaan, yleensä parantamaan signaalin luotettavuutta tai täyttämään ohjattavan laitteen erityisvaatimukset.
  
7. IrSender.sendOnkyo()
                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Lähetä infrapunasignaali NEC-protokollan mukaisesti.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
                /*
                 * Lähetä arvot kasvavina
                 */
        
  • 0x1111: Tämä on infrapunasignaalin laitteen osoite, jota käytetään tietyn laitteen tunnistamiseen.
  • 0x2223: Tämä on komentokoodi, joka lähetetään laitteelle ja määrittää suoritettavan toiminnon.
  • sRepeats: Edustaa signaalin toistokertojen määrää, yleensä varmistamaan signaalin luotettavuus tai täyttämään kohdelaitteen vaatimukset.

  

Helppo ohjelmointi

IR-toimintoihin pääsee helposti käsiksi ja niitä voi ohjelmoida Arduino-kehyksen tai M5Stackin visuaalisen ohjelmointiympäristön UIFlown avulla. Kehittäjät voivat kutsua IrSender.begin()-funktiota alustamaan IR-lähetysominaisuuden ja määrittämään parametreja, kuten DISABLE_LED_FEEDBACK, joka poistaa vilkkuvan LED-ilmaisimen lähetyksen aikana.

 

Joustavat sovellustilanteet

Älykäs kodinohjaus: Automatisoi kodinkoneita lähettämällä IR-komentoja suoraan M5StickC Plus2:lta.
Oppiva kaukosäädin: Tallenna signaaleja olemassa olevista kaukosäätimistä luodaksesi universaalin kaukosäätöratkaisun.
IoT ja robotiikka: Integroi IR-viestintä yksinkertaisia langattomia komentoja varten laitteiden tai robottien välillä.

  

Esikonfiguroitu infrapunapinni

M5StickC Plus2:ssa on valmiiksi määritetty IR-lähetyspinni, joka on tyypillisesti merkitty nimellä IR_SEND_PIN. Tämä helpottaa IR-toimintojen käyttöönottoa ilman monimutkaisia laitteistokokoonpanoja.

    

Kompaktin kokonsa ja integroitujen infrapunaominaisuuksiensa ansiosta M5StickC Plus2 tarjoaa kätevän ja monipuolisen alustan kehittäjille, jotka työskentelevät kauko-ohjauksen, kodin automaation tai langattomien viestintäprojektien parissa. Tämä ominaisuus muuttaa laitteen yksinkertaisesta kehitystyökalusta tehokkaaksi työkaluksi IoT- ja sulautettuihin sovelluksiin.

 

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Sivupalkki

Uusin julkaisu

Tässä osiossa ei ole tällä hetkellä sisältöä. Lisää sisältöä tähän osioon käyttämällä sivupalkkia.

Rekisteröidy uutiskirjeeseemme

Hanki viimeisimmät tiedot tuotteistamme ja erikoistarjouksistamme.