M5StickC Plus2 on pieni kehityskortti, joka perustuu ESP32-piiriin ja sisältää monia tehokkaita toimintoja, kuten Bluetoothin, Wi-Fin, OLED-näytön, kosketusnäytön ja muita. Sen avulla voimme helposti toteuttaa kaukosäätötoiminnon muiden laitteiden tai kodinkoneiden ohjaamiseen. Tässä artikkelissa näytetään, miten tehdä yksinkertainen kaukosäädin M5StickC Plus2:lla ja esitellään projektin rakenne ja koodin toteutus.
LED-toimintojen selitys
M5StickC Plus2:ssa on ohjelmoitava virtavalo, jota voidaan koodata yksinkertaiseen päälle/pois-kytkentään tai vilkkumistehosteisiin. LEDiä voidaan käyttää virran tilan osoittamiseen ja yhdessä muiden anturimoduulien kanssa laitteen tilan merkkinä. Tämän LEDin ohjelmoitavuus tarjoaa laajan valikoiman sovellusmahdollisuuksia älykkäisiin muistutuksiin tai yksinkertaisiin hälytysjärjestelmiin.
Esimerkin analyysi
StickCP2.Power.setLed(1) käytetään M5StickC Plus2:n virtavalon sytyttämiseen.
Vastaavasti StickCP2.Power.setLed(0) käytetään LEDin sammuttamiseen. Tätä toimintoa käytetään usein tilan osoittamiseen, kuten virransyötön päällä tai pois päältä oleminen, laitteen toimivuus tai yksinkertaisen signaalin antaminen.

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(GREEN); // centers the text StickCP2.Display.setTextDatum(middle_center); // 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("Power LED", 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. delay(1000); // Turns off the LED. StickCP2.Power.setLed(0); //Waits 1 second. delay(1000); }
✔ Kopioitu!
Infrapunatoiminnon selitys löytyy täältä: M5Stack Aloittelijan Opas: PLUS2 Infrapunaominaisuudet
Kaukosäätimen toiminnon toteutus
Vaihe 1: Kaukosäätimen infrapunasignaalin tunnistus
Tässä menetelmässä M5Stack Plus2 toimii kaukosäätimenä, lähettäen infrapunasignaaleja muihin laitteisiin (esim. televisiot, ilmastointilaitteet jne.) infrapunasäteilymoduulin (IR-LED) kautta.
-
Tarvittava laitteisto:
-
Laitteistoyhteydet:
Arduino UNO | ---> | IR-vastaanotin |
5V | ---> | VCC |
GPIO 11 | ---> | IN |
GND | ---> | GND |
-
Asenna kirjasto
-
Voit jatkaa ja asentaa IRremote-kirjaston Arduino IDE:ssä. Tämä kirjasto auttaa sinua luomaan standardin mukaisia IR-signaaleja.
-
Avaa Arduino IDE, valitse Työkalut -> Kirjaston hallinta, etsi IRremote ja asenna se.
-
Kirjoita vastaanottava infrapunakoodi
// 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); }
✔ Kopioitu!
-
Napsauta Työkalut -> Portti polttamista varten.
-
Napsauta Työkalut -> Sarjavalvonta seuratakseen IR-signaalia.
Vaihe 2: LED-ohjausprojektin selitys
Kun koodin toiminnot on ymmärretty ja painikeopas käyty läpi, voimme nyt yhdistää painikkeen toiminnot LED-ohjaukseen. Logiikka on yksinkertainen:
-
Paina painiketta A (StickCP2.BtnA.wasPressed()): Kytke LED päälle käyttämällä
StickCP2.Power.setLed(1);
. -
Paina painiketta B (StickCP2.BtnB.wasPressed()): Sammuta LED käyttämällä
StickCP2.Power.setLed(0);
.
Toteutamme tämän käyttämällä
if
-ehtoja havaitaksemme, kun painiketta A tai B painetaan. Tämä tarjoaa reagoivan tavan vaihtaa LED päälle tai pois yksinkertaisilla painikkeen painalluksilla, tehden siitä helpon projektin aloittaa.M5Stack Plus2 toteuttaa kaukosäätimen toiminnot
Esimerkkikoodi lähettää infrapunasignaalin IR-LEDin kautta, kun M5Stack Plus2:n painiketta painetaan, simuloiden kaukosäätimen toimintaa. Voit muuttaa signaalin numeroa kohdassa
IrSender.sendNEC()
ohjata eri laitteita tarpeen mukaan.
#define DISABLE_CODE_FOR_RECEIVER #define SEND_PWM_BY_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(GREEN); //Text alignment middle_center means aligning the center of the text to the specified coordinate position. StickCP2.Display.setTextDatum(middle_center); //Font Styles StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24); //Font size StickCP2.Display.setTextSize(1); IrSender.begin(DISABLE_LED_FEEDBACK); // Aloita käyttämällä IR_SEND_PIN lähetyspinninä IrSender.setSendPin(IR_TX_PIN);//Infrapunasignaalin lähetyspinnin asetukset } void loop() { if (StickCP2.BtnA.wasPressed()) { // Send IR code for power button IrSender.sendNEC(0x25AE7EE3, 32); // Esimerkkikoodi NEC:lle TV:lle (tarvii korvata oikealla koodilla) StickCP2.Display.clear(); StickCP2.Display.drawString("Virta signaali lähetetty", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); delay(5000); // Lähetetään 5 sekunnin välein } 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("Äänenvoimakkuuden lisäys lähetetty", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); delay(5000); // Lähetetään 5 sekunnin välein } StickCP2.update(); // Päivitä painikkeen tila }
✔ Kopioitu!