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).
-
Nødvendigt hardware:
-
Hardwareforbindelser:
Arduino UNO | ---> | IR-modtager |
5V | ---> | VCC |
GPIO 11 | ---> | IND |
GND | ---> | GND |
-
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:
-
Tryk på knap A (StickCP2.BtnA.wasPressed()): Tænd LED'en ved at bruge
StickCP2.Power.setLed(1);
. -
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" #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(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!