Projekt pro začátečníky M5Stack: implementace funkce dálkového ovládání

M5StickC Plus2 je malá vývojová deska založená na čipu ESP32 s mnoha výkonnými funkcemi, včetně Bluetooth, Wi-Fi, OLED displeje, dotykové obrazovky a dalších. Díky ní můžeme snadno realizovat funkci dálkového ovládání pro ovládání jiných zařízení nebo domácích spotřebičů. Tento článek vám ukáže, jak vyrobit jednoduché dálkové ovládání pomocí M5StickC Plus2 a představí strukturu a implementaci kódu projektu.
 

Vysvětlení funkcí LED

M5StickC Plus2 je vybaven programovatelnou napájecí LED, kterou lze naprogramovat pro jednoduché zapnutí/vypnutí nebo blikající efekty. LED může být použita k indikaci stavu napájení a ve spojení s dalšími senzory jako indikace stavu zařízení. Programovatelnost této LED poskytuje širokou škálu aplikačních scénářů pro chytré připomínky nebo jednoduché alarmové systémy.

Příklad analýzy

StickCP2.Power.setLed(1) se používá k zapnutí kontrolky napájení M5StickC Plus2.
Podle toho se používá StickCP2.Power.setLed(0) k vypnutí LED. Tato funkce se často používá pro indikaci stavu, například zda je napájení zapnuto nebo vypnuto, zda zařízení funguje správně, nebo k jednoduché signalizaci.
        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(ZELENÁ);
            // centers the text
            StickCP2.Display.setTextDatum(střed_střed);
            // 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("Kontrolka napájení", 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.
            zpoždění(1000);
            // Turns off the LED.
            StickCP2.Power.setLed(0);
            //Waits 1 second.
            zpoždění(1000);
        }
  
✔ Zkopírováno!


Realizace funkce dálkového ovládání

Krok 1: Rozpoznání infračerveného signálu dálkového ovládání

V této metodě funguje M5Stack Plus2 jako dálkový ovladač, který pomocí infračerveného vysílacího modulu (IR LED) odesílá infračervené signály do jiných zařízení (např. televizorů, klimatizací atd.).
  1. Požadovaný hardware:
  1. Hardwarová připojení:
Arduino UNO ---> IR přijímač
5V ---> Virtuální obchodní centrum
GPIO 11 ---> V
Zem ---> Zem

 

  1. Instalovat knihovna
  • Můžete pokračovat a nainstalovat knihovnu IRremote v Arduino IDE. Tato knihovna vám pomůže generovat IR signály v souladu se standardy.
  • Otevřete Arduino IDE, vyberte Nástroje -> Správce knihoven, vyhledejte IRremote a nainstalujte jej.
  • Napište kód pro příjem infračerveného signálu
       

        // 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);
        }
  
✔ Zkopírováno!
  • Klikněte na Nástroje -> Port pro vypálení.

  • Klikněte na Nástroje -> Sériový monitor pro sledování IR signálu.

Krok 2: Vysvětlení projektu řízení LED

Po pochopení funkcí kódu a sledování tutoriálu tlačítka nyní můžeme kombinovat operace tlačítek s ovládáním LED. Logika je jednoduchá:
  1. Stiskněte tlačítko A (StickCP2.BtnA.wasPressed()): Zapněte LED pomocí StickCP2.Power.setLed(1);.
  2. Stiskněte tlačítko B (StickCP2.BtnB.wasPressed()): Vypněte LED pomocí StickCP2.Power.setLed(0);.
Toto implementujeme pomocí if podmínek k detekci, kdy je stisknuto tlačítko A nebo tlačítko B. To poskytuje citlivý způsob, jak přepínat LED pomocí jednoduchých interakcí s tlačítky, což z něj činí snadný projekt pro začátečníky.

M5Stack Plus2 implementuje funkce dálkového ovládání

Ukázkový kód vysílá infračervený signál přes IR LED, když je stisknuto tlačítko M5Stack Plus2, čímž simuluje ovládání dálkového ovladače. Číslo signálu můžete změnit v IrSender.sendNEC() ovládat různé zařízení podle potřeby.
 
        #define VYPNOUT_KOD_PRO_PŘIJÍMAČ 
        #define SEND_PWM_POMOCÍ_TIMERU
        #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(ZELENÁ);
        
            //Text alignment middle_center means aligning the center of the text to the specified coordinate position.
            StickCP2.Display.setTextDatum(střed_střed);
        
            //Font Styles
            StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);
        
            //Font size
            StickCP2.Display.setTextSize(1);
        
            IrSender.begin(DISABLE_LED_FEEDBACK);  // Začít s IR_SEND_PIN jako vysílacím pinem
            IrSender.setSendPin(IR_TX_PIN);//Nastavení pinu pro vysílání infračerveného signálu
        }
        
        void loop() {
        
          if (StickCP2.BtnA.wasPressed()) {
            // Send IR code for power button
             IrSender.sendNEC(0x25AE7EE3, 32);  // Příklad kódu NEC pro TV (je třeba nahradit skutečným kódem)
             StickCP2.Display.clear();
             StickCP2.Display.drawString("Signál napájení odeslán", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
             delay(5000);  // Odesíláno každých 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("Hlasitost nahoru odeslána", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
            delay(5000);  // Odesíláno každých 5 sekund
          }
        
          StickCP2.update();  // Aktualizovat stav tlačítka
          
        }
  
✔ Zkopírováno!

 

 

Zanechte komentář

Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena *

Přihlaste se k odběru našeho newsletteru

Získejte nejnovější informace o našich produktech a speciálních nabídkách.