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!
Pro vysvětlení infračervené funkce viz: Průvodce pro začátečníky M5Stack: Infračervené schopnosti PLUS2
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.).
-
Požadovaný hardware:
-
Hardwarová připojení:
Arduino UNO | ---> | IR přijímač |
5V | ---> | Virtuální obchodní centrum |
GPIO 11 | ---> | V |
Zem | ---> | Zem |
-
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á:
-
Stiskněte tlačítko A (StickCP2.BtnA.wasPressed()): Zapněte LED pomocí
StickCP2.Power.setLed(1);
. -
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" #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(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!