Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

bauteile:rfid_kommunikation

RFID Kommunikation

Mithilfe der 433MHz Sendern und Empfängern können Daten zwischen zwei Arduinos ausgetauscht werden. Das ist zum Beispiel hilfreich um einen Roboter fernzusteuern oder Messwerte von einem mobilen Roboter an einen Computer zu senden um diese dann zu verarbeiten. Die Kommunikation zwischen den beiden Modulen ist nicht trivial und erfordert einige Vorkehrungen und Tricks um eine störungsfreie und stabile Übertragung zu sichern. Deshalb verwenden wir eine Bibliothek in der all diese Arbeit schon erledigt wurde. Mithilfe der in der Bibliothek enthaltenen Befehle kann dann relativ einfach eine Kommunikation zwischen den beiden Modulen hergestellt werden.

Bauteile

Es gibt einen Sender und einen Empfänger, was beim Aufbauen der Schaltung beachtet werden muss, da sonst keine Übertragung statt finden kann. Die beiden Module haben entsprechende Antennen(schwarze gewickelte Kabel) die bei Bedarf gegen andere/stärkere Antennen getauscht werden können. Besonders wichtig ist, dass beide Module mit einem eignen Arduino betrieben werden, da die Kommunikation sonst auch nicht funktioniert.

Sender

Der Sender hat 3 Pins, von links nach rechts Data, 5V und GND. Data wird mit einem Digital Pin verbunden, 5V und GND mit den entsprechenden Pins auf dem Arduino.

Empfänger

Der Empfänger hat 4 Pins, wobei zwei davon Data Pins sind. Von links nach rechts 5V, 2x Data, GND. Die Pins werden wie beim Sender angeschlossen.

Code

Auch beim Code müssen zwei verschiedene Versionen für den Sender und dem Empfänger implementiert werden, Hier gibt es ein Beispiel mit dem ein einfacher String übertragen werden kann. Die verwendetet Bibliothek heißt VirtualWire. Weitere Informationen zu dieser Bibliothek findet ihr hier.

Sender

/*
  Sender
  Der Data Pin wird mit Pin 12 des Arduino verbunden
*/
#include <VirtualWire.h> //Einbinden der Virtual Wire Bibliothek
void setup()
{
  vw_setup(2000); //Initialisierung IO mit 2000 Bits per Second
}
void loop()
{
  send("Hello there"); //Aufruf der send Funktion
  delay(10);
}
void send (char *message)
{
  vw_send((uint8_t *)message, strlen(message));  //Senden eines Strings
  vw_wait_tx(); //Warten bis die vollständige Nachricht gesendet wurde
}

Empfänger

/*
  Empfänger
  Der Data Pin wird mit Pin 11 des Arduino verbunden
*/
#include <VirtualWire.h>
byte message[VW_MAX_MESSAGE_LEN]; //Buffer um ankommende Nachrichten zu speichern; maximal mögliche Größe
byte messageLength = VW_MAX_MESSAGE_LEN; //Größe der ankommenden Nachrichten; maximal mögliche Größe
void setup()
{
  Serial.begin(9600);
  Serial.println("Device is ready");
  vw_setup(2000);
  vw_rx_start(); //Starten des Empfängers
}
void loop()
{
  if (vw_get_message(message, &messageLength)) //Überprüfen ob eine Nachricht empfangen wurde
  {
    Serial.print("Received: ");
    for (int i = 0; i < messageLength; i++) //Ausgabe der empfangen Nachricht an die Konsole
    {
      Serial.write(message[i]);
    }
    Serial.println();
  }
}
bauteile/rfid_kommunikation.txt · Zuletzt geändert: 2021/04/06 15:55 von luismeixner