M5StickC Plus2 är ett litet utvecklingskort baserat på en ESP32-chip med många kraftfulla funktioner, inklusive Bluetooth, Wi-Fi, OLED-display, pekskärm och så vidare. Med det kan vi enkelt realisera fjärrkontrollfunktionen för att styra andra enheter eller hushållsapparater. Denna artikel visar hur man gör en enkel fjärrkontroll med M5StickC Plus2 och introducerar projektets struktur och kodimplementering.
Förklaring av LED-funktioner
M5StickC Plus2 är utrustad med en programmerbar ström-LED som kan kodas för enkel av/på-kontroll eller blinkande effekter. LED-lampan kan användas för att indikera strömstatus och, tillsammans med andra sensormoduler, som en indikation på enhetens status. LED:ns programmerbarhet ger ett brett spektrum av användningsområden för smarta påminnelser eller enkla alarmsystem.
Exempelanalys
StickCP2.Power.setLed(1) används för att tända ström-LED:n på M5StickC Plus2.
Därför används StickCP2.Power.setLed(0) för att stänga av LED-lampan. Denna funktion används ofta för statusindikering, såsom om strömförsörjningen är på eller av, om enheten fungerar korrekt, eller för att göra en enkel signalering.

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); }
✔ Kopierat!
För en förklaring av den infraröda funktionen, se: M5Stack Nybörjarguide: PLUS2 Infraröda Funktioner
Funktion för fjärrkontroll realiserad
Steg 1: Infraröd signaligenkänning för fjärrkontroll
I denna metod fungerar M5Stack Plus2 som en fjärrkontroll och skickar infraröda signaler till andra enheter (t.ex. TV-apparater, luftkonditioneringar osv.) via en infraröd sändarmodul (IR-LED).
-
Nödvändig hårdvara:
-
Hårdvaruanslutningar:
Arduino UNO | ---> | IR-mottagare |
5V | ---> | VCC |
GPIO 11 | ---> | IN |
GND | ---> | GND |
-
Installera biblioteket
-
Du kan gå vidare och installera IRremote-biblioteket i Arduino IDE. Detta bibliotek hjälper dig att generera standardkompatibla IR-signaler.
-
Öppna Arduino IDE, välj Verktyg -> Bibliotekshanteraren, sök efter IRremote och installera det.
-
Skriv mottagen infraröd kod
// 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); }
✔ Kopierat!
-
Klicka på Verktyg -> Port för att bränna.
-
Klicka på Verktyg -> Seriell monitor för att övervaka IR-signalen.
Steg 2: Förklaring av LED-kontrollprojektet
Efter att ha förstått kodfunktionerna och följt knapphandledningen kan vi nu kombinera knappfunktioner med LED-kontroll. Logiken är enkel:
-
Tryck på knapp A (StickCP2.BtnA.wasPressed()): Tänd LED-lampan med
StickCP2.Power.setLed(1);
. -
Tryck på knapp B (StickCP2.BtnB.wasPressed()): Stäng av LED-lampan med
StickCP2.Power.setLed(0);
.
Vi implementerar detta med
if
-satser för att upptäcka när knapp A eller knapp B trycks. Detta ger ett responsivt sätt att växla LED-lampan med enkla knapptryckningar, vilket gör det till ett enkelt projekt att komma igång med.M5Stack Plus2 implementerar fjärrkontrollsfunktioner
Exempelkoden sänder en infraröd signal genom IR-LED:n när knappen på M5Stack Plus2 trycks, vilket simulerar en fjärrkontrolls funktion. Du kan ändra signalnumret i
IrSender.sendNEC()
för att styra olika enheter 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); // Starta med IR_SEND_PIN som sändningspinne IrSender.setSendPin(IR_TX_PIN);//Inställningar för infraröd signal sändningspinne } void loop() { if (StickCP2.BtnA.wasPressed()) { // Send IR code for power button IrSender.sendNEC(0x25AE7EE3, 32); // Exempel på NEC-kod för TV (behöver ersättas med faktisk kod) StickCP2.Display.clear(); StickCP2.Display.drawString("Strömsignal skickad", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); delay(5000); // Skickas var 5:e 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("Volym upp skickad", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); delay(5000); // Skickas var 5:e sekund } StickCP2.update(); // Uppdatera knappstatus }
✔ Kopierat!