M5Stack-Anfängerprojekt: Implementieren Sie eine Fernbedienungsfunktion

M5StickC Plus2 ist eine kleine Entwicklungsplatine basierend auf einem ESP32-Chip mit vielen leistungsstarken Funktionen, einschließlich Bluetooth, Wi-Fi, OLED-Display, Touchscreen und so weiter. Damit können wir ganz einfach die Fernsteuerungsfunktion realisieren, um andere Geräte oder Haushaltsgeräte zu steuern. Dieser Artikel zeigt Ihnen, wie Sie mit dem M5StickC Plus2 eine einfache Fernbedienung herstellen und stellt die Struktur sowie die Code-Implementierung des Projekts vor.
 

LED-Funktionen erklärt

Der M5StickC Plus2 ist mit einer programmierbaren Power-LED ausgestattet, die für einfache Ein-/Aus-Steuerung oder Blinkeffekte programmiert werden kann. Die LED kann verwendet werden, um den Stromstatus anzuzeigen und in Verbindung mit anderen Sensormodulen als Anzeige des Gerätestatus dienen. Die Programmierbarkeit dieser LED bietet eine Vielzahl von Anwendungsszenarien für intelligente Erinnerungen oder einfache Alarmsysteme.

Beispielanalyse

StickCP2.Power.setLed(1) wird verwendet, um die Power-LED des M5StickC Plus2 einzuschalten.
Dementsprechend wird StickCP2.Power.setLed(0) verwendet, um die LED auszuschalten. Diese Funktion wird häufig zur Statusanzeige verwendet, beispielsweise ob die Stromversorgung ein- oder ausgeschaltet ist, ob das Gerät ordnungsgemäß funktioniert, oder um eine einfache Signalisierung anzuzeigen.
        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(GRÜN);
            // 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.höhe() / 2);
        }
        
        void-Schleife() {
            // inside power red led control
            //Turns on the power LED.
            StickCP2.Power.setLed(1);
            // Waits 1 second.
            Verzögerung (1000);
            // Turns off the LED.
            StickCP2.Power.setLed(0);
            //Waits 1 second.
            Verzögerung (1000);
        }
  
✔ Kopiert!

Für eine Erklärung der Infrarotfunktion siehe: M5Stack Anfängerleitfaden: PLUS2 Infrarot-Fähigkeiten

Fernbedienungsfunktion Realisierung

Schritt 1: Infrarotsignal der Fernbedienung erkennen

In dieser Methode fungiert der M5Stack Plus2 als Fernbedienung und sendet Infrarotsignale an andere Geräte (z. B. Fernseher, Klimaanlagen usw.) über ein Infrarot-Sendemodul (IR-LED).
  1. Erforderliche Hardware:
  1. Hardwareverbindungen:
Arduino UNO ---> IR-Empfänger
5V ---> VCC
GPIO 11 ---> IN
Masse ---> Masse

 

  1. Installieren die Bibliothek
  • Sie können die IRremote-Bibliothek in der Arduino IDE installieren. Diese Bibliothek hilft Ihnen, standardkonforme IR-Signale zu erzeugen.
  • Öffnen Sie die Arduino IDE, wählen Sie Werkzeuge -> Bibliotheksverwalter, suchen Sie nach IRremote und installieren Sie es.
  • Empfangs-Infrarotcode schreiben
       

        // 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);
        }
  
✔ Kopiert!
  • Klicken Sie auf Werkzeuge -> Port, um zu brennen.

  • Klicken Sie auf Werkzeuge -> Serieller Monitor, um das IR-Signal zu überwachen.

Schritt 2: Erklärung des LED-Steuerungsprojekts

Nach dem Verständnis der Codefunktionen und dem Befolgen des Button-Tutorials können wir nun Button-Operationen mit LED-Steuerung kombinieren. Die Logik ist einfach:
  1. Drücken Sie Taste A (StickCP2.BtnA.wasPressed()): Schalten Sie die LED mit StickCP2.Power.setLed(1); ein.
  2. Drücken Sie Taste B (StickCP2.BtnB.wasPressed()): Schalten Sie die LED mit StickCP2.Power.setLed(0); aus.
Wir implementieren dies mit ifBedingungen, um zu erkennen, wann Taste A oder Taste B gedrückt wird. Dies bietet eine reaktionsschnelle Möglichkeit, die LED mit einfachen Tasteninteraktionen umzuschalten, was es zu einem einfachen Projekt für den Einstieg macht.

M5Stack Plus2 implementiert Fernsteuerungsfunktionen

Der Beispielcode sendet ein Infrarotsignal über die IR-LED, wenn die Taste des M5Stack Plus2 gedrückt wird, und simuliert so die Bedienung einer Fernbedienung. Sie können die Signalnummer ändern in IrSender.sendNEC() um verschiedene Geräte nach Bedarf zu steuern.
 
        #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(GRÜN);
        
            //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);  // Starten mit IR_SEND_PIN als Sendepin
            IrSender.setSendPin(IR_TX_PIN);//Infrarot-Signal-Sende-Pin-Einstellungen
        }
        
        void-Schleife() {
        
          wenn (StickCP2.BtnA.wurdeGedrückt()) {
            // Send IR code for power button
             IrSender.sendNEC(0x25AE7EE3, 32);  // Beispiel-NEC-Code für Fernseher (muss durch tatsächlichen Code ersetzt werden)
             StickCP2.Display.löschen();
             StickCP2.Display.drawString("Stromsignal gesendet", StickCP2.Display.width() / 2,
                                        StickCP2.Display.höhe() / 2 - 40);
             delay(5000);  // Wird alle 5 Sekunden gesendet
          }
          
          if (StickCP2.BtnB.wurdeGedrückt()) {
            // Send IR code for volume up button
            //IrSender.sendNEC(25AE7EE3, 32);  // Send volume up signal
            StickCP2.Display.löschen();
            StickCP2.Display.drawString("Lautstärke erhöht gesendet", StickCP2.Display.width() / 2,
                                        StickCP2.Display.höhe() / 2 - 40);
            delay(5000);  // Wird alle 5 Sekunden gesendet
          }
        
          StickCP2.update();  // Aktualisiere Button-Status
          
        }
  
✔ Kopiert!

 

 

Kommentar hinterlassen

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit einem * markiert.

Seitenleiste

Letzter Beitrag

Dieser Abschnitt enthält derzeit keinen Inhalt. Fügen Sie über die Seitenleiste Inhalte hinzu.

Für unseren Newsletter anmelden

Erhalten Sie die neuesten Informationen über unsere Produkte und Sonderangebote.