M5Stack-aloittelijaprojekti: toteuta kauko-ohjaustoiminto

M5StickC Plus2 on ESP32-siruun perustuva pieni kehityskortti, jossa on monia tehokkaita toimintoja, kuten Bluetooth, Wi-Fi, OLED-näyttö, kosketusnäyttö ja paljon muuta. Sen avulla voimme helposti toteuttaa kaukosäädintoiminnon muiden laitteiden tai kodinkoneiden ohjaamiseen. Tässä artikkelissa näytetään, kuinka M5StickC Plus2:lla tehdään yksinkertainen kaukosäädin, ja esitellään projektin rakenne sekä koodin toteutus.
 

LED-toimintojen selitys

M5StickC Plus2:ssa on ohjelmoitava virran LED-merkkivalo, jota voidaan ohjata koodilla yksinkertaisesti päälle ja pois päältä tai vilkkumaan. LED-valoa voidaan käyttää virran tilan ilmaisemiseen sekä yhdessä muiden anturimoduulien kanssa laitteen tilan osoittamiseen. LED-valon ohjelmoitavuus mahdollistaa monenlaisia käyttökohteita älykkäistä muistutuksista yksinkertaisiin hälytysjärjestelmiin.

Esimerkin analyysi

StickCP2.Power.setLed(1) sytyttää M5StickC Plus2:n virran LED-merkkivalon.
Vastaavasti StickCP2.Power.setLed(0) sammuttaa LED-valon. Tätä toimintoa käytetään usein tilan ilmaisemiseen, esimerkiksi siihen, onko virransyöttö päällä vai pois päältä, toimiiko laite oikein tai halutaanko antaa yksinkertainen merkkivalosignaali.
        void setup() {
            // Hakee laitteen määritykset.
            auto cfg = M5.config();
            // Alustaa M5StickC Plus2:n.
            StickCP2.begin(cfg);
            // Kääntää näytön
            StickCP2.Display.setRotation(1);
            // määrittää tekstin väriksi vihreän
            StickCP2.Display.setTextColor(GREEN);
            // keskittää tekstin
            StickCP2.Display.setTextDatum(middle_center);
            // käyttää "Orbitron_Light_24"-fonttia
            StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);
            StickCP2.Display.setTextSize(1);
            // Näyttää viestin "Power LED" näytön keskellä.
            StickCP2.Display.drawString("Power LED", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2);
        }
        
        void loop() {
            // virran punaisen LED-merkkivalon ohjaus
            // Sytyttää virran LED-merkkivalon.
            StickCP2.Power.setLed(1);
            // Odottaa 1 sekunnin.
            delay(1000);
            // Sammuttaa LED-valon.
            StickCP2.Power.setLed(0);
            // Odottaa 1 sekunnin.
            delay(1000);
        }
  
✔ Kopioitu!


Kaukosäätimen toiminnon toteuttaminen

Vaihe 1: Kaukosäätimen infrapunasignaalin tunnistus

Tässä menetelmässä M5Stack Plus2 toimii kaukosäätimenä ja lähettää infrapunasignaaleja muihin laitteisiin, kuten televisioihin ja ilmastointilaitteisiin, infrapunalähetysmoduulin (IR-LED) kautta.
  1. Tarvittavat laitteet:
  1. Laitteiston kytkennät:
Arduino UNO ---> Infrapunavastaanotin
5V ---> VCC
GPIO 11 ---> IN
GND ---> GND

 

  1. Asenna kirjasto
  • Voit asentaa IRremote-kirjaston Arduino IDE:ssä. Tämä kirjasto auttaa tuottamaan standardien mukaisia infrapunasignaaleja.
  • Avaa Arduino IDE, valitse Tools -> Library Manager, etsi IRremote ja asenna se.
  • Kirjoita infrapunavastaanottimen koodi
       

        // Määrittää nastan, johon infrapunavastaanottimen anturi on kytketty
        const int RECV_PIN = 11; 
        //Luodaan infrapunavastaanotto-objektit
        IRrecv irrecv(RECV_PIN); 
        // Luo dekoodauksen tulosobjektin
        decode_results results; 
        
        void setup() {
          // Alusta sarjaliikenne
          Serial.begin(115200); 
          // Aloita infrapunasignaalien vastaanotto
          irrecv.enableIRIn(); 
          Serial.println("Infrapunavastaanotin valmis");
        }
        
        void loop() {
          if (irrecv.decode(&results)) { 
            // Infrapunasignaali havaittu
            Serial.print("Vastaanotettu infrapunakoodi: ");
            // Tulosta vastaanotettu infrapunasignaali
            Serial.println(results.value, HEX); 
            // Vastaanota seuraava signaali
            irrecv.resume(); 
          }
          delay(100);
        }
  
✔ Kopioitu!
  • Valitse Tools -> Port ohjelmoitavaksi.

  • Valitse Tools -> Serial Monitor seurataksesi infrapunasignaalia.

Vaihe 2: LED-ohjausprojektin selitys

Kun olet tutustunut koodin toimintoihin ja painikeohjeeseen, voimme yhdistää painikkeiden käytön LED-valon ohjaukseen. Logiikka on yksinkertainen:
  1. Paina painiketta A (StickCP2.BtnA.wasPressed()): Sytytä LED käyttämällä koodia StickCP2.Power.setLed(1);.
  2. Paina painiketta B (StickCP2.BtnB.wasPressed()): Sammuta LED käyttämällä koodia StickCP2.Power.setLed(0);.
Toteutamme tämän käyttämällä if-ehtoja havaitsemaan, milloin painiketta A tai B painetaan. Näin LED-valoa voidaan vaihtaa helposti painikkeilla, mikä tekee projektista helpon aloituskohdan.

M5Stack Plus2 tukee kaukosäädintoimintoja

Esimerkkikoodi lähettää infrapunasignaalin infrapunaledin kautta, kun M5Stack Plus2:n painiketta painetaan, ja simuloi kaukosäätimen käyttöä. Voit vaihtaa signaalin numeron kohdassa IrSender.sendNEC() eri laitteiden ohjaamiseksi tarpeen mukaan.
 
        #define DISABLE_CODE_FOR_RECEIVER 
        #define SEND_PWM_BY_TIMER
        #define IR_TX_PIN 19
        #include "M5StickCPlus2.h"
        #include  
        
        void setup() {
        
            auto cfg = M5.config();
            
            //Voit tutustua begin()-alustuksen taustalla olevaan logiikkaan riippuvaisesta kirjastosta.
            StickCP2.begin(cfg);
        
              //Näytön kiertosuunnat
            StickCP2.Display.setRotation(1);
        
            //  Näytöllä näkyvän tekstin väri.
            StickCP2.Display.setTextColor(GREEN);
        
            //Tekstin kohdistus: middle_center kohdistaa tekstin keskipisteen määritettyihin koordinaatteihin.
            StickCP2.Display.setTextDatum(middle_center);
        
            //Fontin tyylit
            StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);
        
            //Fontin koko
            StickCP2.Display.setTextSize(1);
        
            IrSender.begin(DISABLE_LED_FEEDBACK);  // Aloita käyttäen lähetysnastana IR_SEND_PIN-nastaa
            IrSender.setSendPin(IR_TX_PIN);//Infrapunasignaalin lähetysnastan asetukset
        }
        
        void loop() {
        
          if (StickCP2.BtnA.wasPressed()) {
            // Lähetä infrapunakoodi virtapainikkeelle
             IrSender.sendNEC(0x25AE7EE3, 32);  // Esimerkki television NEC-koodista (korvaa oikealla koodilla)
             StickCP2.Display.clear();
             StickCP2.Display.drawString("Virtasignaali lähetetty", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
             delay(5000);  // Lähetetään 5 sekunnin välein
          }
          
          if (StickCP2.BtnB.wasPressed()) {
            // Lähetä infrapunakoodi äänenvoimakkuuden lisäyspainikkeelle
            //IrSender.sendNEC(25AE7EE3, 32);  // Lähetä äänenvoimakkuuden lisäyssignaali
            StickCP2.Display.clear();
            StickCP2.Display.drawString("Äänenvoimakkuuden lisäys lähetetty", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
            delay(5000);  // Lähetetään 5 sekunnin välein
          }
        
          StickCP2.update();  // Päivitä painikkeen tila
          
        }
  
✔ Kopioitu!

 

 

Jätä kommentti

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

Register for our newsletter

Get the latest information about our products and special offers.

Website Feedback

Help us improve OpenELAB

Found a website issue or have an idea? Tell us what would make your experience better.