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).
-
Erforderliche Hardware:
-
Hardwareverbindungen:
Arduino UNO | ---> | IR-Empfänger |
5V | ---> | VCC |
GPIO 11 | ---> | IN |
Masse | ---> | Masse |
-
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:
-
Drücken Sie Taste A (StickCP2.BtnA.wasPressed()): Schalten Sie die LED mit
StickCP2.Power.setLed(1);
ein. -
Drücken Sie Taste B (StickCP2.BtnB.wasPressed()): Schalten Sie die LED mit
StickCP2.Power.setLed(0);
aus.
Wir implementieren dies mit
if
Bedingungen, 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" #includevoid 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!