Progetto per principianti M5Stack: implementa una funzione di controllo remoto

M5StickC Plus2 è una piccola scheda di sviluppo basata su un chip ESP32 con molte funzioni potenti, tra cui Bluetooth, Wi-Fi, display OLED, touchscreen e così via. Attraverso di essa, possiamo facilmente realizzare la funzione di controllo remoto per controllare altri dispositivi o elettrodomestici. Questo articolo ti mostrerà come realizzare un semplice telecomando utilizzando M5StickC Plus2 e introdurrà la struttura e l'implementazione del codice del progetto.
 

Funzioni LED Spiegate

L'M5StickC Plus2 è dotato di un LED di alimentazione programmabile che può essere codificato per un semplice controllo on/off o effetti di lampeggio. Il LED può essere utilizzato per indicare lo stato di alimentazione e, in combinazione con altri moduli sensore, come indicazione dello stato del dispositivo. La programmabilità di questo LED offre un'ampia gamma di scenari applicativi per promemoria intelligenti o semplici sistemi di allarme.

Analisi di esempio

StickCP2.Power.setLed(1) viene utilizzato per accendere il LED di alimentazione del M5StickC Plus2.
Di conseguenza, StickCP2.Power.setLed(0) viene utilizzato per spegnere il LED. Questa funzione è spesso usata per l'indicazione dello stato, come se l'alimentazione è accesa o spenta, se il dispositivo funziona correttamente, o per fare una semplice indicazione di segnalazione.
        impostazione nulla() {
            // Retrieves device configuration.
            auto cfg = M5.config();
            // Initializes the M5StickC Plus2.
            StickCP2.inizia(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("LED di alimentazione", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2);
        }
        
        ciclo vuoto() {
            // inside power red led control
            //Turns on the power LED.
            StickCP2.Power.setLed(1);
            // Waits 1 second.
            ritardo(1000);
            // Turns off the LED.
            StickCP2.Power.setLed(0);
            //Waits 1 second.
            ritardo(1000);
        }
  
✔ Copiato!

Per una spiegazione della funzione a infrarossi, vedere: Guida per Principianti M5Stack: Capacità a Infrarossi PLUS2

Realizzazione della funzione di controllo remoto

Passo 1: Riconoscimento del segnale a infrarossi del telecomando

In questo metodo, il M5Stack Plus2 funge da telecomando, inviando segnali a infrarossi ad altri dispositivi (ad esempio, TV, condizionatori d'aria, ecc.) tramite un modulo emettitore a infrarossi (LED IR).
  1. Hardware richiesto:
  1. Connessioni hardware:
Arduino UNO ---> Ricevitore IR
5V ---> VCC
GPIO 11 ---> IN
Terra ---> Terra

 

  1. Installare la biblioteca
  • Puoi procedere e installare la libreria IRremote nell'IDE di Arduino. Questa libreria ti aiuterà a generare segnali IR conformi agli standard.
  • Apri Arduino IDE, seleziona Strumenti -> Gestore Librerie, cerca IRremote e installalo.
  • Scrivi codice ricevitore a infrarossi
       

        // 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);
        }
  
✔ Copiato!
  • Clicca Strumenti -> Porta per masterizzare.

  • Clicca Strumenti -> Monitor Seriale per monitorare il segnale IR.

Passo 2: Spiegazione del progetto di controllo LED

Dopo aver compreso le funzioni del codice e seguito il tutorial sul pulsante, ora possiamo combinare le operazioni del pulsante con il controllo del LED. La logica è semplice:
  1. Premi il pulsante A (StickCP2.BtnA.wasPressed()): Accendi il LED usando StickCP2.Power.setLed(1);.
  2. Premi il pulsante B (StickCP2.BtnB.wasPressed()): Spegni il LED usando StickCP2.Power.setLed(0);.
Implementiamo questo utilizzando if condizioni per rilevare quando viene premuto il Pulsante A o il Pulsante B. Questo fornisce un modo reattivo per attivare o disattivare il LED usando semplici interazioni con i pulsanti, rendendolo un progetto facile da iniziare.

M5Stack Plus2 implementa funzioni di controllo remoto

Il codice di esempio emette un segnale a infrarossi tramite il LED IR quando viene premuto il pulsante di M5Stack Plus2, simulando il funzionamento di un telecomando. Puoi cambiare il numero del segnale in IrSender.sendNEC() per controllare diversi dispositivi secondo necessità.
 
        #define DISABLE_CODE_FOR_RECEIVER 
        #define INVIA_PWM_CON_TIMER
        #define IR_TX_PIN 19
        #include "M5StickCPlus2.h"
        #include  
        
        impostazione nulla() {
        
            auto cfg = M5.config();
            
            //To understand the underlying logic of the initialization with begin(), you can refer to the Dependent Library.
            StickCP2.inizia(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);  // Inizia con IR_SEND_PIN come pin di invio
            IrSender.setSendPin(IR_TX_PIN);//Impostazioni del pin di trasmissione del segnale a infrarossi
        }
        
        ciclo vuoto() {
        
          se (StickCP2.BtnA.èStatoPremuto()) {
            // Send IR code for power button
             IrSender.sendNEC(0x25AE7EE3, 32);  // Codice NEC di esempio per TV (necessario sostituire con codice reale)
             StickCP2.Display.clear();
             StickCP2.Display.drawString("Segnale di alimentazione inviato", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
             delay(5000);  // Inviato ogni 5 secondi
          }
          
          se (StickCP2.BtnB.èStatoPremuto()) {
            // Send IR code for volume up button
            //IrSender.sendNEC(25AE7EE3, 32);  // Send volume up signal
            StickCP2.Display.clear();
            StickCP2.Display.drawString("Volume Su Inviato", StickCP2.Display.width() / 2,
                                        StickCP2.Display.height() / 2 - 40);
            delay(5000);  // Inviato ogni 5 secondi
          }
        
          StickCP2.aggiorna();  // Aggiorna lo stato del pulsante
          
        }
  
✔ Copiato!

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati con *

Iscriviti alla nostra newsletter

Ricevi le ultime informazioni sui nostri prodotti e offerte speciali.