M5Stack begynderprojekt: implementer en fjernbetjeningsfunktion

M5StickC Plus2 er et lille udviklingskort baseret på en ESP32-chip med mange kraftfulde funktioner, herunder Bluetooth, Wi-Fi, OLED-display, touchskærm og så videre. Gennem det kan vi nemt realisere fjernbetjeningsfunktionen til at styre andre enheder eller husholdningsapparater. Denne artikel vil vise dig, hvordan du laver en simpel fjernbetjening med M5StickC Plus2 og introducere strukturen og kodeimplementeringen af projektet.
 

Forklaring af LED-funktioner

M5StickC Plus2 er udstyret med en programmerbar strøm-LED, der kan kodes til simpel tænd/sluk-kontrol eller blinkeeffekter. LED'en kan bruges til at indikere strømstatus og, i kombination med andre sensormoduler, som en indikation af enhedens status. Programmérbarheden af denne LED giver et bredt udvalg af anvendelsesscenarier til smarte påmindelser eller simple alarmsystemer.

Eksempelanalyse

StickCP2.Power.setLed(1) bruges til at tænde strøm-LED'en på M5StickC Plus2.
Derfor bruges StickCP2.Power.setLed(0) til at slukke LED'en. Denne funktion bruges ofte til statusindikering, såsom om strømforsyningen er tændt eller slukket, om enheden fungerer korrekt, eller til at lave en simpel signalindikering.
        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);
        }
  
✔ Kopieret!

For en forklaring af den infrarøde funktion se: M5Stack Begyndervejledning: PLUS2 Infrarøde Funktioner

Realisation af fjernbetjeningsfunktion

Trin 1: Genkendelse af fjernbetjeningens infrarøde signal

I denne metode fungerer M5Stack Plus2 som en fjernbetjening, der sender infrarøde signaler til andre enheder (f.eks. TV, klimaanlæg osv.) via en infrarød udsendelsesmodul (IR LED).
  1. Nødvendigt hardware:
  1. Hardwareforbindelser:
Arduino UNO ---> IR-modtager
5V ---> VCC
GPIO 11 ---> IND
GND ---> GND

 

  1. Installer biblioteket
  • Du kan gå videre og installere IRremote-biblioteket i Arduino IDE. Dette bibliotek hjælper dig med at generere standardkompatible IR-signaler.
  • Åbn Arduino IDE, vælg Værktøjer -> Biblioteksadministrator, søg efter IRremote, og installer det.
  • Skriv modtagende infrarød kode
       

        // 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);
        }
  
✔ Kopieret!
  • Klik på Værktøjer -> Port for at brænde.

  • Klik på Værktøjer -> Seriel Monitor for at overvåge IR-signalet.

Trin 2: Forklaring af LED-kontrolprojektet

Efter at have forstået kodefunktionerne og fulgt knaptutorialen, kan vi nu kombinere knapoperationer med LED-kontrol. Logikken er ligetil:
  1. Tryk på knap A (StickCP2.BtnA.wasPressed()): Tænd LED'en ved at bruge StickCP2.Power.setLed(1);.
  2. Tryk på Knap B (StickCP2.BtnB.wasPressed()): Sluk LED'en ved hjælp af StickCP2.Power.setLed(0);.
Vi implementerer dette ved hjælp af if betingelser for at registrere, når Knap A eller Knap B trykkes. Dette giver en responsiv måde at skifte LED'en til eller fra ved hjælp af simple knapinteraktioner, hvilket gør det til et nemt projekt at komme i gang med.

M5Stack Plus2 implementerer fjernbetjeningsfunktioner

Eksempelkoden udsender et infrarødt signal gennem IR-LED'en, når knappen på M5Stack Plus2 trykkes, hvilket simulerer en fjernbetjenings funktion. Du kan ændre signalnummeret i IrSender.sendNEC() til at styre forskellige enheder efter behov.
 
        #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);  // Start med IR_SEND_PIN som sendepin
            IrSender.setSendPin(IR_TX_PIN);//Indstillinger for infrarød signaludgangspin
        }
        
        void loop() {
        
          if (StickCP2.BtnA.wasPressed()) {
            // Send IR code for power button
             IrSender.sendNEC(0x25AE7EE3, 32);  // Eksempel på NEC-kode til TV (skal erstattes med faktisk kode)
             StickCP2.Display.clear();
             StickCP2.Display.drawString("Strømsignal sendt", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
             delay(5000);  // Sendt hvert 5. sekund
          }
          
          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("Lydstyrke op sendt", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
            delay(5000);  // Sendt hvert 5. sekund
          }
        
          StickCP2.update();  // Opdater knapstatus
          
        }
  
✔ Kopieret!

 

 

Efterlad en kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

Sidebjælke

Seneste indlæg

Denne sektion indeholder i øjeblikket ikke noget indhold. Tilføj indhold til denne sektion ved hjælp af sidepanelet.

Tilmeld dig vores nyhedsbrev

Få de seneste oplysninger om vores produkter og særlige tilbud.