Projekt dla początkujących z M5Stack: zaimplementuj funkcję zdalnego sterowania

M5StickC Plus2 to niewielka płytka deweloperska oparta na układzie ESP32, oferująca wiele zaawansowanych funkcji, w tym Bluetooth, Wi-Fi, wyświetlacz OLED, ekran dotykowy i wiele innych. Dzięki niej możemy łatwo zrealizować funkcję pilota do sterowania innymi urządzeniami lub sprzętem gospodarstwa domowego. W tym artykule pokażemy, jak utworzyć prosty pilot za pomocą M5StickC Plus2, oraz przedstawimy strukturę i implementację kodu projektu.
 

Wyjaśnienie funkcji LED

M5StickC Plus2 jest wyposażony w programowalną diodę LED zasilania, którą można zaprogramować do prostego włączania i wyłączania lub uzyskać efekt migania. Dioda LED może wskazywać stan zasilania, a w połączeniu z innymi modułami czujników także stan urządzenia. Możliwość programowania tej diody zapewnia szeroki zakres zastosowań, takich jak inteligentne przypomnienia lub proste systemy alarmowe.

Analiza przykładu

StickCP2.Power.setLed(1) służy do włączania diody LED zasilania urządzenia M5StickC Plus2.
Odpowiednio StickCP2.Power.setLed(0) służy do wyłączania diody LED. Funkcja ta jest często używana do sygnalizowania stanu, na przykład informowania, czy zasilanie jest włączone lub wyłączone, czy urządzenie działa prawidłowo albo do prostego sygnalizowania.
        void setup() {
            // Pobiera konfigurację urządzenia.
            auto cfg = M5.config();
            // Inicjalizuje M5StickC Plus2.
            StickCP2.begin(cfg);
            // Obraca ekran
            StickCP2.Display.setRotation(1);
            // ustawia kolor tekstu na zielony
            StickCP2.Display.setTextColor(GREEN);
            // wyśrodkowuje tekst
            StickCP2.Display.setTextDatum(middle_center);
            // używa czcionki „Orbitron_Light_24”
            StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);
            StickCP2.Display.setTextSize(1);
            // Wyświetla komunikat „Power LED” na środku ekranu.
            StickCP2.Display.drawString("Power LED", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2);
        }
        
        void loop() {
            // sterowanie czerwoną diodą LED wewnątrz modułu zasilania
            //Włącza diodę LED zasilania.
            StickCP2.Power.setLed(1);
            // Odczekuje 1 sekundę.
            delay(1000);
            // Wyłącza diodę LED.
            StickCP2.Power.setLed(0);
            //Odczekuje 1 sekundę.
            delay(1000);
        }
  
✔ Skopiowano!

Wyjaśnienie funkcji podczerwieni znajdziesz tutaj: Poradnik dla początkujących M5Stack: możliwości podczerwieni PLUS2

Realizacja funkcji pilota

Krok 1:Rozpoznawanie sygnału podczerwieni pilota

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

 

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

        // Definiuje piny, do których podłączony jest czujnik odbiornika podczerwieni
        const int RECV_PIN = 11; 
        //Tworzenie obiektów odbiornika podczerwieni
        IRrecv irrecv(RECV_PIN); 
        // Utwórz obiekt wyniku dekodowania
        decode_results results; 
        
        void setup() {
          // Zainicjalizuj komunikację szeregową
          Serial.begin(115200); 
          // Rozpocznij odbiór sygnału IR
          irrecv.enableIRIn(); 
          Serial.println("Odbiornik IR gotowy");
        }
        
        void loop() {
          if (irrecv.decode(&results)) { 
            // Wykryto sygnał IR
            Serial.print("Odebrany kod IR: ");
            // Wyświetl odebrany sygnał IR
            Serial.println(results.value, HEX); 
            // Odbierz następny sygnał
            irrecv.resume(); 
          }
          delay(100);
        }
  
✔ Skopiowano!
  • Kliknij Narzędzia -> Port, aby wgrać program.

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

Krok 2: Objaśnienie projektu sterowania diodą LED

Po zapoznaniu się z funkcjami kodu i wykonaniu instrukcji dotyczących przycisków możemy teraz połączyć obsługę przycisków ze sterowaniem diodą 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);.
Realizujemy to za pomocą if warunków, aby wykrywać naciśnięcie przycisku A lub B. Zapewnia to responsywny sposób przełączania diody LED za pomocą prostych interakcji z przyciskami, dzięki czemu jest to łatwy projekt na początek.

M5Stack Plus2 realizuje funkcje pilota

Przykładowy kod emituje sygnał podczerwieni za pomocą diody IR po naciśnięciu przycisku M5Stack Plus2, symulując działanie pilota. Numer sygnału możesz zmienić w IrSender.sendNEC() aby sterować różnymi urządzeniami zgodnie z potrzebami.
 
        #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();
            
            //Aby zrozumieć działanie inicjalizacji za pomocą begin(), zapoznaj się z biblioteką zależną.
            StickCP2.begin(cfg);
        
              //Kierunki obrotu wyświetlacza
            StickCP2.Display.setRotation(1);
        
            //  Kolor tekstu wyświetlanego na ekranie.
            StickCP2.Display.setTextColor(GREEN);
        
            //Wyrównanie tekstu middle_center oznacza wyrównanie środka tekstu do określonej pozycji.
            StickCP2.Display.setTextDatum(middle_center);
        
            //Style czcionki
            StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);
        
            //Rozmiar czcionki
            StickCP2.Display.setTextSize(1);
        
            IrSender.begin(DISABLE_LED_FEEDBACK);  // Rozpocznij, używając IR_SEND_PIN jako pinu nadawczego
            IrSender.setSendPin(IR_TX_PIN);//Ustawienia pinu nadajnika sygnału podczerwieni
        }
        
        void loop() {
        
          if (StickCP2.BtnA.wasPressed()) {
            // Wyślij kod IR przycisku zasilania
             IrSender.sendNEC(0x25AE7EE3, 32);  // Przykładowy kod NEC dla telewizora (należy zastąpić rzeczywistym kodem)
             StickCP2.Display.clear();
             StickCP2.Display.drawString("Wysłano sygnał zasilania", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
             delay(5000);  // Wysyłane co 5 sekund
          }
          
          if (StickCP2.BtnB.wasPressed()) {
            // Wyślij kod IR przycisku zwiększania głośności
            //IrSender.sendNEC(25AE7EE3, 32);  // Wyślij sygnał zwiększenia głośności
            StickCP2.Display.clear();
            StickCP2.Display.drawString("Wysłano zwiększenie głośności", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
            delay(5000);  // Wysyłane co 5 sekund
          }
        
          StickCP2.update();  // Aktualizuj stan przycisku
          
        }
  
✔ Skopiowano!

 

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone symbolem *

Register for our newsletter

Get the latest information about our products and special offers.

Website Feedback

Help us improve OpenELAB

Found a website issue or have an idea? Tell us what would make your experience better.