M5Stack nybörjarprojekt: implementera en fjärrkontrollfunktion

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).
  1. Nödvändig hårdvara:
  1. Hårdvaruanslutningar:
Arduino UNO ---> IR-mottagare
5V ---> VCC
GPIO 11 ---> IN
GND ---> GND

 

  1. 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:
  1. Tryck på knapp A (StickCP2.BtnA.wasPressed()): Tänd LED-lampan med StickCP2.Power.setLed(1);.
  2. 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"
        #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);  // 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!

 

 

Lämna en kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade *

Sidopanel

Senaste inlägg

Denna sektion innehåller för närvarande inget innehåll. Lägg till innehåll i denna sektion med hjälp av sidofältet.

Registrera dig för vårt nyhetsbrev

Få den senaste informationen om våra produkter och specialerbjudanden.