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).
-
Wymagany sprzęt:
-
Połączenia sprzętowe:
Arduino UNO | ---> | Odbiornik IR |
5V | ---> | VCC |
GPIO 11 | ---> | W |
GND | ---> | GND |
-
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:
-
Naciśnij przycisk A (StickCP2.BtnA.wasPressed()): Włącz diodę LED za pomocą
StickCP2.Power.setLed(1);
. -
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" #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(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!