Der M5StackC PLUS 2 ist ein fantastisches kleines Entwicklungsboard, das sich für eine Vielzahl von Projekten eignet. Eines seiner vielen verborgenen Potenziale liegt in der Integration von Infrarot (IR)-Funktionalität. In diesem Artikel zeigen wir Ihnen Schritt für Schritt, wie Sie IR-Kommunikation in Ihre M5StackC PLUS 2-Projekte einbauen können, um z. B. Fernbedienungen zu steuern, Daten drahtlos zu übertragen oder komplexe Automatisierungssysteme zu erstellen.
Warum Infrarot (IR) mit dem M5StackC PLUS 2 verwenden?
IR-Kommunikation bietet einige entscheidende Vorteile, besonders in bestimmten Anwendungsszenarien:
- Einfachheit und Zuverlässigkeit: IR ist eine bewährte Technologie, die relativ einfach zu implementieren und zu betreiben ist.
- Geringer Stromverbrauch: Im Vergleich zu anderen drahtlosen Kommunikationsmethoden wie Bluetooth oder Wi-Fi verbraucht IR oft deutlich weniger Strom, was besonders für batteriebetriebene Geräte von Vorteil ist.
- Kostengünstig: IR-Komponenten sind in der Regel sehr preiswert.
- Punkt-zu-Punkt-Kommunikation: IR ist ideal für die Punkt-zu-Punkt-Kommunikation, z. B. zwischen einer Fernbedienung und einem Gerät.
Was Sie benötigen
Bevor wir beginnen, stellen Sie sicher, dass Sie die folgenden Komponenten zur Hand haben:
- Ein M5StackC PLUS 2 Entwicklungsboard.
- Ein IR-Empfänger (z. B. TSOP38238).
- Ein IR-Sender (IR-LED).
- Einige Jumper-Kabel.
- Eine Lötstation (optional, aber empfohlen für stabilere Verbindungen).
- Ein Computer mit installierter Arduino IDE (oder einer anderen IDE Ihrer Wahl).
- Die M5Stack-Bibliotheken, die in der Arduino IDE installiert sind.
- Eine kompatible IR-Fernbedienung (oder ein anderes Gerät, das IR-Signale sendet).
Schritt 1: Hardware-Verbindung
Der erste Schritt besteht darin, den IR-Empfänger und den IR-Sender ordnungsgemäß an den M5StackC PLUS 2 anzuschließen. Beachten Sie die Polarität der IR-LED (längeres Bein ist positiv). Verwenden Sie das folgende Schema als Richtlinie:
- IR-Empfänger:
- GND (Ground) des IR-Empfängers mit GND des M5StackC PLUS 2 verbinden.
- VCC (Spannung) des IR-Empfängers mit 5V des M5StackC PLUS 2 verbinden.
- OUT (Ausgang) des IR-Empfängers mit einem digitalen Pin des M5StackC PLUS 2 verbinden (z. B. Pin 26).
- IR-Sender (IR-LED):
- Verbinden Sie den positiven Anschluss (längeres Bein) der IR-LED über einen Vorwiderstand (z. B. 220 Ohm) mit einem digitalen Pin des M5StackC PLUS 2 (z. B. Pin 27). Der Vorwiderstand schützt die LED vor zu hohem Stromfluss.
- Verbinden Sie den negativen Anschluss (kürzeres Bein) der IR-LED mit GND des M5StackC PLUS 2.
Achten Sie auf saubere und sichere Verbindungen. Bei Bedarf können Sie die Verbindungen verlöten, um die Stabilität zu erhöhen.
Schritt 2: Installation der erforderlichen Bibliotheken
Um die IR-Funktionalität mit dem M5StackC PLUS 2 zu nutzen, benötigen Sie die entsprechenden Bibliotheken. Die verbreitetste und am besten unterstützte Bibliothek für die IR-Kommunikation ist die IRremoteESP8266-Bibliothek. Gehen Sie wie folgt vor, um sie in der Arduino IDE zu installieren:
- Öffnen Sie die Arduino IDE.
- Gehen Sie zu Sketch > Include Library > Manage Libraries…
- Suchen Sie nach „IRremoteESP8266” und installieren Sie die Bibliothek von crankyoldgit.
- Stellen Sie sicher, dass Sie auch die M5Stack-Bibliothek installiert haben. Suchen Sie nach „M5Stack” und installieren Sie die neueste Version.
Schritt 3: Programmierung des M5StackC PLUS 2 für IR-Empfang
Nun, da die Hardware verbunden und die Bibliotheken installiert sind, können wir mit dem Schreiben des Codes beginnen. Hier ist ein Beispielcode, der IR-Signale empfängt und die empfangenen Codes auf dem Bildschirm des M5StackC PLUS 2 anzeigt:
„`cpp
#include
#include
#include
#include
const int RECV_PIN = 26; // Pin, an dem der IR-Empfänger angeschlossen ist
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
M5.begin();
M5.Lcd.println(„IR Receiver Test”);
irrecv.enableIRIn(); // Starte den IR-Empfänger
}
void loop() {
if (irrecv.decode(&results)) {
M5.Lcd.print(„Raw: „);
M5.Lcd.println(results.value, HEX); // Zeigt den empfangenen Code in Hexadezimal an
irrecv.resume(); // Empfange den nächsten Wert
}
M5.update();
delay(100);
}
„`
Erklärungen zum Code:
#include <M5Stack.h>
: Bindet die M5Stack-Bibliothek ein, die für die Initialisierung des Displays und anderer Funktionen benötigt wird.#include <IRremoteESP8266.h>
,#include <IRrecv.h>
,#include <IRutils.h>
: Bindet die erforderlichen Header-Dateien der IRremoteESP8266-Bibliothek ein.const int RECV_PIN = 26;
: Definiert den Pin, an dem der IR-Empfänger angeschlossen ist.IRrecv irrecv(RECV_PIN);
: Erstellt ein IRrecv-Objekt, das den Empfang von IR-Signalen ermöglicht.decode_results results;
: Erstellt ein Objekt, das die dekodierten IR-Daten speichert.M5.begin();
: Initialisiert das M5StackC PLUS 2.irrecv.enableIRIn();
: Aktiviert den IR-Empfänger.irrecv.decode(&results)
: Dekodiert das empfangene IR-Signal und speichert die Ergebnisse im `results`-Objekt.M5.Lcd.println(results.value, HEX);
: Zeigt den dekodierten IR-Code im Hexadezimalformat auf dem Bildschirm des M5StackC PLUS 2 an.irrecv.resume();
: Setzt den IR-Empfänger zurück, um das nächste Signal zu empfangen.
Laden Sie diesen Code auf Ihren M5StackC PLUS 2 hoch und öffnen Sie den seriellen Monitor. Richten Sie nun eine IR-Fernbedienung auf den IR-Empfänger und drücken Sie eine Taste. Sie sollten den entsprechenden Hexadezimalcode auf dem Bildschirm des M5StackC PLUS 2 sehen.
Schritt 4: Programmierung des M5StackC PLUS 2 für IR-Übertragung
Um IR-Signale zu senden, verwenden wir die IRsend
-Klasse der IRremoteESP8266-Bibliothek. Hier ist ein Beispielcode, der einen vordefinierten IR-Code sendet, wenn die Taste A auf dem M5StackC PLUS 2 gedrückt wird:
„`cpp
#include
#include
#include
const int SEND_PIN = 27; // Pin, an dem die IR-LED angeschlossen ist
IRsend irsend(SEND_PIN);
// Beispiel für einen NEC-IR-Code (ersetzen Sie diesen durch Ihren eigenen Code)
#define NEC_CODE 0x20DF807F
void setup() {
M5.begin();
M5.Lcd.println(„IR Sender Test”);
irsend.begin();
}
void loop() {
M5.update();
if (M5.BtnA.wasPressed()) {
M5.Lcd.println(„Sending IR code…”);
irsend.sendNEC(NEC_CODE, 32); // Sende den NEC-Code (32 Bit)
delay(100);
M5.Lcd.println(„Code sent!”);
}
delay(100);
}
„`
Erklärungen zum Code:
const int SEND_PIN = 27;
: Definiert den Pin, an dem die IR-LED angeschlossen ist.IRsend irsend(SEND_PIN);
: Erstellt ein IRsend-Objekt, das das Senden von IR-Signalen ermöglicht.#define NEC_CODE 0x20DF807F
: Definiert den IR-Code, der gesendet werden soll. Sie müssen diesen Code durch den Code ersetzen, den Ihr Zielgerät erwartet.irsend.begin();
: Initialisiert den IR-Sender.irsend.sendNEC(NEC_CODE, 32);
: Sendet den IR-Code mit dem NEC-Protokoll (32 Bit).
Laden Sie diesen Code auf Ihren M5StackC PLUS 2 hoch. Richten Sie nun die IR-LED auf das Gerät, das Sie steuern möchten, und drücken Sie die Taste A. Wenn der Code korrekt ist und das Gerät das NEC-Protokoll unterstützt, sollte das Gerät auf das gesendete Signal reagieren.
Schritt 5: Fortgeschrittene Anwendungen und Tipps
- Protokoll-Unterstützung: Die IRremoteESP8266-Bibliothek unterstützt eine Vielzahl von IR-Protokollen, darunter NEC, Sony, RC5, RC6 und viele mehr. Stellen Sie sicher, dass Sie das richtige Protokoll für Ihr Gerät auswählen.
- Code-Analyse: Verwenden Sie den Empfangscode, um die IR-Codes Ihrer vorhandenen Fernbedienungen zu analysieren. Dies ist entscheidend, um die richtigen Codes für die Übertragung zu ermitteln.
- Interaktive Steuerung: Kombinieren Sie IR-Funktionalität mit anderen Funktionen des M5StackC PLUS 2, wie z. B. Sensoren oder Wi-Fi, um komplexe Automatisierungssysteme zu erstellen.
- Stromversorgung: Achten Sie darauf, dass die IR-LED ausreichend Strom erhält, um ein starkes Signal zu senden. Verwenden Sie ggf. eine externe Stromversorgung.
- Abstand und Ausrichtung: Der Abstand und die Ausrichtung zwischen dem IR-Sender und dem Empfänger sind entscheidend. Experimentieren Sie, um die beste Position für eine zuverlässige Kommunikation zu finden.
Fazit
Die Integration von IR-Funktionalität in Ihre M5StackC PLUS 2-Projekte eröffnet eine Welt voller Möglichkeiten. Ob Sie nun eine Universalfernbedienung bauen, ein Smart-Home-System automatisieren oder einfach nur mit drahtloser Kommunikation experimentieren möchten, IR bietet eine einfache, zuverlässige und kostengünstige Lösung. Mit dieser Schritt-für-Schritt-Anleitung und den Beispielcodes sind Sie bestens gerüstet, um die Leistung von Infrarot auf Ihrem M5StackC PLUS 2 voll auszuschöpfen. Viel Spaß beim Basteln!