Projekt dla początkujących M5Stack: implementacja funkcji zdalnego sterowania

M5StickC Plus2 to mała płytka rozwojowa oparta na chipie ESP32 z wieloma potężnymi funkcjami, w tym Bluetooth, Wi-Fi, wyświetlaczem OLED, ekranem dotykowym i tak dalej. Dzięki niej możemy łatwo zrealizować funkcję zdalnego sterowania do kontrolowania innych urządzeń lub sprzętów domowych. Ten artykuł pokaże, jak zrobić prosty pilot zdalnego sterowania za pomocą M5StickC Plus2 oraz przedstawi strukturę i implementację kodu projektu.
 

Funkcje LED wyjaśnione

M5StickC Plus2 jest wyposażony w programowalną diodę LED zasilania, którą można zaprogramować do prostego sterowania włączaniem/wyłączaniem lub efektami migania. Dioda LED może być używana do wskazywania statusu zasilania oraz, w połączeniu z innymi modułami czujników, jako wskaźnik statusu urządzenia. Programowalność tej diody LED zapewnia szeroki zakres scenariuszy zastosowań dla inteligentnych przypomnień lub prostych systemów alarmowych.

Przykładowa analiza

StickCP2.Power.setLed(1) jest używane do włączenia diody LED zasilania w M5StickC Plus2.
W związku z tym StickCP2.Power.setLed(0) jest używane do wyłączenia diody LED. Funkcja ta jest często stosowana do wskazywania statusu, na przykład czy zasilanie jest włączone lub wyłączone, czy urządzenie działa prawidłowo, lub do prostego sygnalizowania.
        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(ZIELONY);
            // centers the text
            StickCP2.Display.setTextDatum(środek_środek);
            // 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("Dioda zasilania", 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.
            opóźnienie(1000);
            // Turns off the LED.
            StickCP2.Power.setLed(0);
            //Waits 1 second.
            opóźnienie(1000);
        }
  
✔ Skopiowano!

Aby uzyskać wyjaśnienie funkcji podczerwieni, zobacz: Przewodnik dla początkujących M5Stack: możliwości podczerwieni PLUS2

Realizacja funkcji pilota zdalnego sterowania

Krok 1: Rozpoznawanie sygnału podczerwieni pilota zdalnego sterowania

W tej metodzie M5Stack Plus2 działa jako pilot zdalnego sterowania, wysyłając sygnały podczerwieni do innych urządzeń (np. telewizorów, klimatyzatorów itp.) za pomocą modułu emitującego podczerwień (dioda IR).
  1. Wymagany sprzęt:
  1. Połączenia sprzętowe:
Arduino UNO ---> Odbiornik IR
5V ---> VCC
GPIO 11 ---> W
GND ---> GND

 

  1. Zainstaluj biblioteka
  • Możesz przejść dalej i zainstalować bibliotekę IRremote w Arduino IDE. Ta biblioteka pomoże Ci generować sygnały IR zgodne ze standardami.
  • Otwórz Arduino IDE, wybierz Narzędzia -> Menedżer bibliotek, wyszukaj IRremote i zainstaluj ją.
  • Napisz kod odbioru podczerwieni
       

        // 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);
        }
  
✔ Skopiowano!
  • Kliknij Narzędzia -> Port, aby wypalić.

  • Kliknij Narzędzia -> Monitor portu szeregowego, aby monitorować sygnał IR.

Krok 2: Wyjaśnienie projektu sterowania diodami LED

Po zrozumieniu funkcji kodu i zapoznaniu się z samouczkiem przycisku, możemy teraz połączyć operacje przycisków z kontrolą diody LED. Logika jest prosta:
  1. Naciśnij przycisk A (StickCP2.BtnA.wasPressed()): Włącz diodę LED za pomocą StickCP2.Power.setLed(1);.
  2. Naciśnij przycisk B (StickCP2.BtnB.wasPressed()): Wyłącz diodę LED za pomocą StickCP2.Power.setLed(0);.
Implementujemy to, używając if warunków, aby wykryć, kiedy naciśnięty jest Przycisk A lub Przycisk B. Zapewnia to responsywny sposób przełączania diody LED za pomocą prostych interakcji z przyciskami, co czyni ten projekt łatwym do rozpoczęcia.

M5Stack Plus2 implementuje funkcje zdalnego sterowania

Przykładowy kod emituje sygnał podczerwieni przez diodę IR, gdy przycisk M5Stack Plus2 jest naciśnięty, symulując działanie pilota zdalnego sterowania. Możesz zmienić numer sygnału w IrSender.sendNEC() kontrolować różne urządzenia w razie potrzeby.
 
        #define WYŁĄCZ_KOD_DLA_ODBIORNIKA 
        #define WYSYŁAJ_PWM_PRZEZ_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(ZIELONY);
        
            //Text alignment middle_center means aligning the center of the text to the specified coordinate position.
            StickCP2.Display.setTextDatum(środek_środek);
        
            //Font Styles
            StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);
        
            //Font size
            StickCP2.Display.setTextSize(1);
        
            IrSender.begin(DISABLE_LED_FEEDBACK);  // Rozpocznij z IR_SEND_PIN jako pinem nadawczym
            IrSender.setSendPin(IR_TX_PIN);//Ustawienia pinu nadawania sygnału podczerwieni
        }
        
        void loop() {
        
          if (StickCP2.BtnA.zostałNaciśnięty()) {
            // Send IR code for power button
             IrSender.sendNEC(0x25AE7EE3, 32);  // Przykładowy kod NEC dla telewizora (należy zastąpić rzeczywistym kodem)
             StickCP2.Display.clear();
             StickCP2.Display.drawString("Sygnał zasilania wysłany", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
             delay(5000);  // Wysyłane co 5 sekund
          }
          
          if (StickCP2.BtnB.zostałNaciśnięty()) {
            // Send IR code for volume up button
            //IrSender.sendNEC(25AE7EE3, 32);  // Send volume up signal
            StickCP2.Display.clear();
            StickCP2.Display.drawString("Głośność zwiększona", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
            delay(5000);  // Wysyłane co 5 sekund
          }
        
          StickCP2.update();  // Aktualizuj status przycisku
          
        }
  
✔ Skopiowano!

 

 

Zostaw komentarz

Twój adres e-mail nie będzie opublikowany. Wymagane pola są oznaczone *

Zarejestruj się do naszego newslettera

Uzyskaj najnowsze informacje o naszych produktach i specjalnych ofertach.