IR Arduino Senden und Empfangen

Ich verwende ein digitales IR-Empfängermodul und ein digitales IR-Sendermodul, die jeweils mit einem anderen Arduino Uno verbunden sind. Wie kann ich Daten wie „1234“ an den Empfänger übertragen und Daten auf dem LCD anzeigen? Dies liegt daran, dass die meisten Beispiele, die ich gefunden habe, IR-Fernbedienungscodes wie Sony und RC4 verwenden. Ich möchte nur einfache Daten senden.

Am einfachsten wäre es, eine der vorhandenen IR-Code-Bibliotheken wie RC5 zu verwenden, die numerische Codes für die Tasten 0-9 auf einer Fernbedienung enthält.

Antworten (1)

Da die Frage nicht angibt, welche digitalen IR-Sender- und -Empfängermodule verwendet werden, erklärt diese Antwort, wie eine Infrarotdatenkommunikation einfach mit einer generischen IR-LED und einem modulierten IR-Empfänger wie dem TSOP17xx von Vishay oder ähnlichen Teilen erreicht werden kann .

Annahmen :

  • Die ausgewählte IR-LED kann mit 20 mA Strom betrieben werden, z. B. IR333
  • TSOP1756 Sensor soll verwendet werden (56 KHz Modulation).
    • Ändern Sie die Modulationsfrequenz entsprechend dem tatsächlich im Sensormodul verwendeten Teil. Für TSOP11 38 beträgt die Modulationsfrequenz beispielsweise 38 KHz.

Empfangen :

Dies ist der einfache Teil. Verbinden Sie einfach den OUT-Pin des Sensors mit dem seriellen RX-Pin Ihres Arduino (digitaler Pin 0 ). Wenn Ihr Arduino eines der grundlegenden (älteren) Modelle ist, verwenden Sie Serial.read()in loop():

int inputByte = 0;
if (Serial.available() > 0) {
    // read the incoming byte:
    inputByte = Serial.read();
    // Do stuff with this byte, then loop again

Für den Arduino Mega oder Due können Sie auch Serial1, Serial2 oder Serial3 verwenden, je nachdem, welchen RX-Pin Sie verwenden.

Weitere Informationen finden Sie in der seriellen Arduino-Referenz .

Hinweis: Versorgen Sie den Sensor mit der gleichen Spannung, mit der Ihr Arduino seinen Mikrocontroller tatsächlich mit 3,3 oder 5 Volt betreibt, je nach Arduino-Modell. Jedes Arduino-Board hat einen geeigneten Spannungsausgangspin, den Sie dafür verwenden können. Verwenden Sie nicht die externe Versorgung (normalerweise 7 bis 12 Volt) für das Arduino-Board.


Übertragen :

Sie haben zwei Möglichkeiten: (1) Arduino, LED und passive Komponenten oder (2) die Verwendung einer zusätzlichen Logikgatterkomponente. Die erste Option ist gut für Niedrigstrom-IR-LEDs (20-30 mA Spitzen):

  • Stellen Sie einen der Arduino-Timer (z. B. Timer1, es ist ein 16-Bit-Timer) für die Modulationsfrequenz ein, wobei die Ausgabe an einem der Timer-Pins D9 oder D10 erfolgt, die diesem Timer zugeordnet sind.
  • Verwenden Sie für einen 16-MHz-Arduino einen Zählerüberlaufwert von 286 ( = 55,944 Hz), um ungefähr 56 KHz zu erhalten. 38,005 HzBei Bedarf wird stattdessen ein Überlaufwert von 421 geliefert .
  • Schließen Sie einen geeigneten Strombegrenzungswiderstand ( 120 bis 150 Ohm an einem 5-Volt-Arduino = ungefähr 18 mA bis 23 mA -Grenze ), eine kleine Signaldiode und die LED in Reihe, wie unten gezeigt:

    schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

  • Wenn der TX-Pin hoch ist, wird die LED mit der Modulationsfrequenz gepulst. Wenn der TX-Pin niedrig ist, leuchtet die LED nicht auf und die Kleinsignaldiode in Reihe schützt die LED vor einem Rückwärtsdurchbruch.
  • Wenn Ihr Arduino der 3,3-Volt-Typ ist, ist die Kleinsignaldiode nicht wirklich wichtig.

Zum Ansteuern einer LED mit höherem Strom kann eine zusätzliche Logikkomponente, ein Quad-UND-Gatter wie SN74AS1008 , verwendet werden. Dieser Teil liefert oder senkt bis zu 48 mA pro Gate, und mehrere Gates können für eine höhere Stromansteuerung parallel geschaltet werden.

  • Verbinden Sie den Timer1-Ausgang wie oben eingerichtet mit einem Eingang jedes der UND-Gatter.
  • Verbinden Sie den TX-Ausgang wie oben erwähnt mit dem zweiten Eingang jedes der UND-Gatter.
  • Verbinden Sie einen Strombegrenzungswiderstand mit geeignetem Wert mit jedem Ausgangspin dieser 4 UND-Gatter - so dass die Summe der 4 Ausgangsströme dem gewünschten Treiberstrom auf der LED entspricht
  • Verbinden Sie die anderen Enden der 4 Strombegrenzungswiderstände mit der Anode der LED, wobei die Kathode mit Arduino-Masse verbunden ist.
  • Möglicherweise müssen Sie die Vcc des UND-Gatters von einer externen (5 Volt) Stromversorgung versorgen, da der integrierte Regler des Arduino überhitzt, wenn zu viel Strom durch ihn gezogen wird. Stellen Sie sicher, dass die Masse dieser externen Versorgung mit Arduino GND verbunden ist.

schematisch

Simulieren Sie diese Schaltung


Verwenden Sie nun einfach Serial.write()Ihren Arduino- Code, um alle seriellen Daten zu übertragen, die am anderen Ende loop()empfangen werden , wie zuvor beschrieben.Serial.read()