Przewodnik dla początkujących po M5Stack: możliwości podczerwieni PLUS2

Urządzenie M5StickC Plus2 to kompaktowy, wszechstronny moduł deweloperski wyposażony w wydajny nadajnik podczerwieni (IR), który otwiera nowe możliwości w zakresie inteligentnego sterowania i zastosowań komunikacyjnych. Ta funkcja umożliwia urządzeniu wysyłanie sygnałów IR.
 
Urządzenie M5StickC Plus2 nie ma wbudowanego odbiornika podczerwieni (IR), ale może odbierać sygnały podczerwieni po podłączeniu zewnętrznego modułu IR. Ekosystem urządzeń M5Stack oferuje kilka kompatybilnych modułów IR, takich jak Grove IR Receiver module, które można podłączyć do urządzenia M5StickC Plus2 za pomocą interfejsu Grove.
Aby włączyć odbiór sygnałów podczerwieni, wykonaj następujące kroki:
  1. Wybierz moduł IR: na przykład moduł Grove IR Receiver.
  2. Połączenie sprzętowe: Użyj interfejsu Grove lub przewodów połączeniowych, aby podłączyć moduł podczerwieni do odpowiednich pinów GPIO urządzenia M5StickC Plus2.
  3. Obsługa programowa: Napisz kod w Arduino lub MicroPython, aby odczytywać sygnały podczerwieni. Biblioteki Arduino, takie jak IRremote, mogą łatwo dekodować popularne protokoły podczerwieni, np. protokół NEC.

Najważniejsze cechy funkcji podczerwieni

Nadawanie i odbieranie sygnałów podczerwieni
Wbudowany nadajnik podczerwieni pozwala urządzeniu M5StickC Plus2 naśladować funkcje tradycyjnych pilotów, wysyłając sygnały sterujące telewizorami, klimatyzatorami i innymi urządzeniami kompatybilnymi z podczerwienią.
Odbiornik podczerwieni umożliwia modułowi uczenie się i dekodowanie sygnałów z innych pilotów, dzięki czemu można go dostosować do wielu scenariuszy sterowania.

  

/**
 * @file ir_nec.ino
 * @author SeanKwok (shaoxiang@m5stack.com)
 * @brief Test IR NEC dla M5StickCPlus2
 * @version 0.1
 * @date 2023-12-09
 *
 *
 * @Hardwares: M5StickCPlus2
 * @Platform Version: Arduino M5Stack Board Manager v2.0.9
 * @Dependent Library:
 * M5GFX: https://github.com/m5stack/M5GFX
 * M5Unified: https://github.com/m5stack/M5Unified
 * M5StickCPlus2: https://github.com/m5stack/M5StickCPlus2
 * IRremote: https://github.com/Arduino-IRremote/Arduino-IRremote
 */

#define DISABLE_CODE_FOR_RECEIVER  // Wyłącza ponowne uruchamianie odbiornika po każdym
                                   // wysyłane. Oszczędza 450 bajtów pamięci programu i
                                   // 269 bajtów pamięci RAM, jeśli funkcje odbioru są
                                   // nieużywane.
#define SEND_PWM_BY_TIMER
#define IR_TX_PIN 19




uint8_t sCommand = 0x34;
uint8_t sRepeats = 0;

void setup() {
    auto cfg = M5.config();
    
    // Aby poznać podstawową logikę 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 współrzędnych.
    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);  // Uruchom z IR_SEND_PIN jako pinem transmisji
    IrSender.setSendPin(IR_TX_PIN);//Ustawienia pinu transmisji sygnału podczerwieni
}

void loop() {
    Serial.println();//Wyświetl pustą linię, aby sformatować dane wyjściowe i ułatwić odczytanie kolejnych informacji.
    Serial.print(F('Send now: address=0x1111, command=0x'));//Wyświetl ciąg znaków.
    Serial.print(sCommand, HEX);//Wyświetl w formacie szesnastkowym.
    Serial.print(F(', repeats='));//Wskaż liczbę powtórzonych transmisji.
    Serial.print(sRepeats);//Liczba wysłań polecenia.
    Serial.println();//Wyświetl kolejną pustą linię, aby uporządkować dane wyjściowe.

    StickCP2.Display.clear();//Zaktualizuj wyświetlacz.

    //drawString Metoda używana do rysowania ciągu znaków w określonym miejscu.
    StickCP2.Display.drawString('IR NEC SEND', StickCP2.Display.width() / 2,
                                StickCP2.Display.height() / 2 - 40);

    StickCP2.Display.drawString('ADDR:0x1111', StickCP2.Display.width() / 2,
                                StickCP2.Display.height() / 2);

    StickCP2.Display.drawString('CMD:0x' + String(sCommand, HEX),
                                StickCP2.Display.width() / 2,
                                StickCP2.Display.height() / 2 + 40);

    Serial.println(F('Send standard NEC with 16 bit address'));

    StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Narysuj okrąg.
    
    IrSender.sendNEC(0x1111, sCommand, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem NEC.
    // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem Onkyo.
    /*
     * Zwiększanie wartości wysyłanych danych
     */
    sCommand += 1;//Zwiększ wartość polecenia.
    delay(500);//Opóźnienie o 500 milisekund.
    StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Narysuj wypełnione koło.
    delay(500);
}
  
✔ Skopiowano!

 

 

1. IrSender.begin(DISABLE_LED_FEEDBACK);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Uruchom z IR_SEND_PIN jako pinem transmisji
        
Wywołaj metodę begin obiektu IrSender, aby zainicjować funkcję transmisji podczerwieni.
  • DISABLE_LED_FEEDBACK: To parametr służący do wyłączenia sygnalizacji za pomocą diody LED. Gdy sygnalizacja jest włączona, dioda LED miga podczas transmisji sygnałów podczerwieni.
Domyślnie obiekt IrSender używa ustawionego pinu transmisji podczerwieni (np. IR_SEND_PIN) do wysyłania sygnałów podczerwieni. Ten wiersz kodu aktywuje nadajnik podczerwieni i przygotowuje go do wysyłania sygnałów.

2. IrSender.setSendPin(IR_TX_PIN);

                IrSender.begin(DISABLE_LED_FEEDBACK);  // Uruchom z IR_SEND_PIN jako pinem transmisji
        

Wywołaj metodę setSendPin obiektu IrSender, aby ustawić pin transmisji sygnału podczerwieni na IR_TX_PIN.

  • IR_TX_PIN to zdefiniowany numer pinu określający dokładny pin używany do wysyłania sygnałów podczerwieni.

Za pomocą tego wiersza kodu możesz dostosować pin transmisji podczerwieni zamiast używać domyślnego. Jest to szczególnie przydatne w przypadku zmian w połączeniach sprzętowych lub mapowaniu pinów.

3. Serial.print(F('Send now: address=0x1111, command=0x'));

                Serial.println();//Wyświetl pustą linię, aby sformatować dane wyjściowe i ułatwić odczytanie kolejnych informacji.
                Serial.print(F('Send now: address=0x1111, command=0x'));//Wyświetl ciąg znaków.
                Serial.print(sCommand, HEX);//Wyświetl w formacie szesnastkowym.
                Serial.print(F(', repeats='));//Wskaż liczbę powtórzonych transmisji.
                Serial.print(sRepeats);//Liczba wysłań polecenia.
                Serial.println();//Wyświetl kolejną pustą linię, aby uporządkować dane wyjściowe.
        
  • Użyj Serial.print(), aby wyświetlić ciąg „Send now: address=0x1111, command=0x”. Makro F() służy tutaj do przechowywania ciągu w pamięci Flash, co pomaga oszczędzać pamięć RAM.
4. StickCP2.Display.drawString(' ', , );
  
                //drawString Metoda używana do rysowania ciągu znaków w określonym miejscu.
                StickCP2.Display.drawString('IR NEC SEND', StickCP2.Display.width() / 2,
                                            StickCP2.Display.height() / 2 - 40);
            
                StickCP2.Display.drawString('ADDR:0x1111', StickCP2.Display.width() / 2,
                                            StickCP2.Display.height() / 2);
            
                StickCP2.Display.drawString('CMD:0x' + String(sCommand, HEX),
                                            StickCP2.Display.width() / 2,
                                            StickCP2.Display.height() / 2 + 40);
        

Wyświetla „IR NEC SEND” za pomocą metody drawString, aby wyrenderować ciąg znaków w określonym miejscu na ekranie.

  • StickCP2.Display.width() / 2: Zapewnia wyśrodkowanie ciągu znaków w poziomie na wyświetlaczu.

  • StickCP2.Display.height() / 2 - 40: Umieszcza ciąg znaków 40 pikseli powyżej środka w pionie ekranu.

Wyświetla „ADDR:0x1111” za pomocą metody drawString, aby pokazać informacje o adresie.
  • StickCP2.Display.width() / 2: Wyśrodkowuje tekst w poziomie na ekranie.
  • StickCP2.Display.height() / 2: Wyśrodkowuje tekst w pionie, umieszczając go dokładnie na środku wyświetlacza.

Wyświetla informacje o poleceniu, renderując ciąg znaków 'CMD:0x' wraz z szesnastkową reprezentacją zmiennej sCommand.

  • String(sCommand, HEX): Konwertuje zmienną sCommand na ciąg znaków w formacie szesnastkowym.

  • StickCP2.Display.width() / 2: Wyśrodkowuje tekst w poziomie na wyświetlaczu.

  • StickCP2.Display.height() / 2 + 40: Umieszcza tekst 40 pikseli poniżej środka w pionie ekranu.

5. Serial.println(F('Send standard NEC with 16 bit address'));

                Serial.println(F('Send standard NEC with 16 bit address'));

                StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Narysuj okrąg.
        
Użyj Serial.println(), aby wyświetlić informacje na **monitorze szeregowym**, dodając znak nowej linii na końcu, dzięki czemu następny wynik zacznie się w nowym wierszu.

  • F('Send standard NEC with 16 bit address'): Makro F() przechowuje ciąg znaków „Send standard NEC with 16 bit address” w pamięci Flash (pamięci programu), a nie w **pamięci RAM**, pomagając oszczędzać pamięć.
  • Dane wyjściowe „Send standard NEC with 16 bit address” wskazują, że przesyłany jest standardowy sygnał podczerwieni protokołu NEC z **16-bitowym adresem**.

6. IrSender.sendNEC()

                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem NEC.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem Onkyo.
                /*
                 * Zwiększanie wartości wysyłanych danych
                 */
        
0x1111: to adres sygnału podczerwieni, reprezentujący 16-bitową wartość adresu używaną do identyfikowania urządzenia docelowego lub miejsca docelowego polecenia.
sCommand: to wartość polecenia, która zostanie wysłana. Może być to wartość 8-bitowa lub 16-bitowa, określająca dokładną operację, którą powinno wykonać urządzenie docelowe.
sRepeats: wskazuje liczbę powtórzeń sygnału, zwykle w celu zwiększenia niezawodności sygnału lub spełnienia określonych wymagań sterowanego urządzenia.
  
7. IrSender.sendOnkyo()
                IrSender.sendNEC(0x1111, sCommand, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem NEC.
                // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem Onkyo.
                /*
                 * Zwiększanie wartości wysyłanych danych
                 */
        
  • 0x1111: to adres urządzenia sygnału podczerwieni, używany do identyfikowania konkretnego urządzenia.
  • 0x2223: to kod polecenia wysyłanego do urządzenia, określający operację, która ma zostać wykonana.
  • sRepeats: określa liczbę powtórzeń sygnału, zazwyczaj w celu zapewnienia niezawodności sygnału lub spełnienia wymagań urządzenia docelowego.

  

Łatwe programowanie

Funkcje podczerwieni są łatwo dostępne i programowalne za pomocą frameworka Arduino lub UIFlow, wizualnego środowiska programistycznego firmy M5Stack. Programiści mogą wywołać IrSender.begin(), aby zainicjować funkcję wysyłania sygnałów podczerwieni, i skonfigurować parametry, takie jak DISABLE_LED_FEEDBACK, który wyłącza miganie diody LED podczas transmisji.

 

Elastyczne scenariusze zastosowań

Sterowanie inteligentnym domem: Automatyzacja urządzeń domowych poprzez wysyłanie poleceń podczerwieni bezpośrednio z M5StickC Plus2.
Pilot uczący się: rejestrowanie sygnałów z istniejących pilotów w celu utworzenia uniwersalnego pilota.
IoT i robotyka: integracja komunikacji podczerwieni w celu przesyłania prostych poleceń bezprzewodowych między urządzeniami lub robotami.

  

Wstępnie skonfigurowany pin podczerwieni

M5StickC Plus2 ma fabrycznie przypisany pin transmisji podczerwieni, zwykle oznaczony jako IR_SEND_PIN. Ułatwia to wdrażanie funkcji podczerwieni bez skomplikowanych konfiguracji sprzętowych.

    

Dzięki kompaktowym rozmiarom i zintegrowanym funkcjom podczerwieni M5StickC Plus2 zapewnia wygodną i wszechstronną platformę dla programistów pracujących nad projektami związanymi ze zdalnym sterowaniem, automatyką domową lub komunikacją bezprzewodową. Ta funkcja przekształca urządzenie z prostego narzędzia deweloperskiego w potężne narzędzie do zastosowań IoT i systemów wbudowanych.

 

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.