M5Stack Aloittelijan projekti: etäohjauksen toteutus

M5StickC Plus2 on pieni kehityskortti, joka perustuu ESP32-piiriin ja sisältää monia tehokkaita toimintoja, kuten Bluetoothin, Wi-Fin, OLED-näytön, kosketusnäytön ja muita. Sen avulla voimme helposti toteuttaa kaukosäätötoiminnon muiden laitteiden tai kodinkoneiden ohjaamiseen. Tässä artikkelissa näytetään, miten tehdä yksinkertainen kaukosäädin M5StickC Plus2:lla ja esitellään projektin rakenne ja koodin toteutus.
 

LED-toimintojen selitys

M5StickC Plus2:ssa on ohjelmoitava virtavalo, jota voidaan koodata yksinkertaiseen päälle/pois-kytkentään tai vilkkumistehosteisiin. LEDiä voidaan käyttää virran tilan osoittamiseen ja yhdessä muiden anturimoduulien kanssa laitteen tilan merkkinä. Tämän LEDin ohjelmoitavuus tarjoaa laajan valikoiman sovellusmahdollisuuksia älykkäisiin muistutuksiin tai yksinkertaisiin hälytysjärjestelmiin.

Esimerkin analyysi

StickCP2.Power.setLed(1) käytetään M5StickC Plus2:n virtavalon sytyttämiseen.
Vastaavasti StickCP2.Power.setLed(0) käytetään LEDin sammuttamiseen. Tätä toimintoa käytetään usein tilan osoittamiseen, kuten virransyötön päällä tai pois päältä oleminen, laitteen toimivuus tai yksinkertaisen signaalin antaminen.
        void setup() {
            // Retrieves device configuration.
            auto cfg = M5.config();
            // Initializes the M5StickC Plus2.
            StickCP2.begin(cfg);
            // Rotates the display
            StickCP2.Display.setRotation(1);
            // sets text color to green
            StickCP2.Display.setTextColor(GREEN);
            // centers the text
            StickCP2.Display.setTextDatum(middle_center);
            // uses the "Orbitron_Light_24" font
            StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);
            StickCP2.Display.setTextSize(1);
            // Displays the message "Power LED" at the screen’s center.
            StickCP2.Display.drawString("Power LED", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2);
        }
        
        void loop() {
            // inside power red led control
            //Turns on the power LED.
            StickCP2.Power.setLed(1);
            // Waits 1 second.
            delay(1000);
            // Turns off the LED.
            StickCP2.Power.setLed(0);
            //Waits 1 second.
            delay(1000);
        }
  
✔ Kopioitu!

Infrapunatoiminnon selitys löytyy täältä: M5Stack Aloittelijan Opas: PLUS2 Infrapunaominaisuudet

Kaukosäätimen toiminnon toteutus

Vaihe 1: Kaukosäätimen infrapunasignaalin tunnistus

Tässä menetelmässä M5Stack Plus2 toimii kaukosäätimenä, lähettäen infrapunasignaaleja muihin laitteisiin (esim. televisiot, ilmastointilaitteet jne.) infrapunasäteilymoduulin (IR-LED) kautta.
  1. Tarvittava laitteisto:
  1. Laitteistoyhteydet:
Arduino UNO ---> IR-vastaanotin
5V ---> VCC
GPIO 11 ---> IN
GND ---> GND

 

  1. Asenna kirjasto
  • Voit jatkaa ja asentaa IRremote-kirjaston Arduino IDE:ssä. Tämä kirjasto auttaa sinua luomaan standardin mukaisia IR-signaaleja.
  • Avaa Arduino IDE, valitse Työkalut -> Kirjaston hallinta, etsi IRremote ja asenna se.
  • Kirjoita vastaanottava infrapunakoodi
       

        // Defines the pins to which the IR receiver sensor is connected
        const int RECV_PIN = 11; 
        //Creating IR Receiving Objects
        IRrecv irrecv(RECV_PIN); 
        // Create the decoding result object
        decode_results results; 
        
        void setup() {
          // Initialize serial communications
          Serial.begin(115200); 
          // Start IR reception
          irrecv.enableIRIn(); 
          Serial.println("IR Receiver Ready");
        }
        
        void loop() {
          if (irrecv.decode(&results)) { 
            // IR signal detected
            Serial.print("IR Code Received: ");
            // Print the received IR signal
            Serial.println(results.value, HEX); 
            // Receive the next signal
            irrecv.resume(); 
          }
          delay(100);
        }
  
✔ Kopioitu!
  • Napsauta Työkalut -> Portti polttamista varten.

  • Napsauta Työkalut -> Sarjavalvonta seuratakseen IR-signaalia.

Vaihe 2: LED-ohjausprojektin selitys

Kun koodin toiminnot on ymmärretty ja painikeopas käyty läpi, voimme nyt yhdistää painikkeen toiminnot LED-ohjaukseen. Logiikka on yksinkertainen:
  1. Paina painiketta A (StickCP2.BtnA.wasPressed()): Kytke LED päälle käyttämällä StickCP2.Power.setLed(1);.
  2. Paina painiketta B (StickCP2.BtnB.wasPressed()): Sammuta LED käyttämällä StickCP2.Power.setLed(0);.
Toteutamme tämän käyttämällä if-ehtoja havaitaksemme, kun painiketta A tai B painetaan. Tämä tarjoaa reagoivan tavan vaihtaa LED päälle tai pois yksinkertaisilla painikkeen painalluksilla, tehden siitä helpon projektin aloittaa.

M5Stack Plus2 toteuttaa kaukosäätimen toiminnot

Esimerkkikoodi lähettää infrapunasignaalin IR-LEDin kautta, kun M5Stack Plus2:n painiketta painetaan, simuloiden kaukosäätimen toimintaa. Voit muuttaa signaalin numeroa kohdassa IrSender.sendNEC() ohjata eri laitteita 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();
            
            //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() {
        
          if (StickCP2.BtnA.wasPressed()) {
            // Send IR code for power button
             IrSender.sendNEC(0x25AE7EE3, 32);  // Esimerkkikoodi NEC:lle TV:lle (tarvii korvata oikealla koodilla)
             StickCP2.Display.clear();
             StickCP2.Display.drawString("Virta signaali lähetetty", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
             delay(5000);  // Lähetetään 5 sekunnin välein
          }
          
          if (StickCP2.BtnB.wasPressed()) {
            // Send IR code for volume up button
            //IrSender.sendNEC(25AE7EE3, 32);  // Send volume up signal
            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 *

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.