Eine simple 433 MHz Funkstrecke mit 2 Arduinos aufbauen

Ich habe hier einen 433 MHz Sender und einen passenden Empfänger. Damit möchte ich eine Funkstrecke aufbauen für 2 Arduino Uno.

433 MHz Empfaenger und Sender

433 MHz Empfänger und Sender

Die Sendeleistung ist mit 10mW angegeben. Zwei Drahtantennen mit je 17cm Länge wurden an den Sender und Empfänger an geschlossen. Für die Spannungsversorgung beider Platinen sind 5V ausreichend. Die Stromaufnahme beträgt jeweils wenige mA, deshalb können die digitalen Ausgangs Pins die Stromversorgung übernehmen. Die Empfangsempfindlichkeit ist mit -105 dB angegeben. Wahrscheinlich sind dBW gemeint.

Senden

Als erstes wird der Sender auf den Uno gesteckt.

433 MHz Sender auf dem Arduini Uno

433 MHz Sender auf dem Arduino Uno

Die Pins können die Stromversorgung übernehmen, das spart ein extra Steckbrett ein.
D5 ist GND
D6 ist VCC / 5V
D7 ist Datenausgang

Das Senderprogramm

// 433 MHz Sender
//
// Matthias Busse 16.5.2014 Version 1.0

// Verbindungen zum Uno
// GND > D5
// VCC > D6
// Daten > D7

int led = 13;
int data = 7;

void setup(){
 Serial.begin(38400);
 pinMode(led, OUTPUT);
 pinMode(5, OUTPUT); 
 digitalWrite(5, LOW); // GND 0V
 pinMode(6, OUTPUT);
 digitalWrite(6, HIGH); // VCC 5V
 pinMode(data, OUTPUT); 
 digitalWrite(data, LOW);  // Daten
}

void loop() {         // H/L im Sekundentakt ausgeben
  digitalWrite(data, LOW);
  digitalWrite(led, LOW);
  delay(500);
  digitalWrite(data, HIGH);
  digitalWrite(led, HIGH);
  delay(500);
}

Es werden je 500 Millisekunden lang 1 und 0 gesendet. Zur Kontrolle blinkt die LED entsprechend.

Empfangen

Nun kommt der Empfänger dran auf einem 2. Uno.

433 MHz Empfänger am Uno

433 MHz Empfänger am Arduino Uno

Die Pins können wieder die Stromversorgung übernehmen.
D4 ist GND
D5 ist der Dateneingang
D6 ist ein Eingang, wird aber nicht verwendet
D7 ist VCC / 5V

Das Empfänger Programm

// 433 MHz Empfänger
//
// Matthias Busse 16.5.2014 Version 1.0

// Verbindungen zum Uno
// GND > D4
// Data > D5
// Input > D6
// VCC > D7

int led = 13;
int data = 5;

void setup(){
 Serial.begin(38400);
 pinMode(led, OUTPUT);
 pinMode(4, OUTPUT); 
 digitalWrite(4, LOW); // GND 0V
 pinMode(data, INPUT); 
 digitalWrite(data, LOW);  // Daten
 pinMode(6, INPUT); // wird hier nicht verwendet
 pinMode(7, OUTPUT);
 digitalWrite(7, HIGH); // VCC 5V
}

void loop() {     // data lesen und LED entsprechend schalten
  digitalWrite(led,digitalRead(data));
  delay(50);
}

Das Empfänger Programm soll die LED entsprechend leuchten lassen als Bestätigung für den Empfang. Die Datenleitung wird alle 50ms, also 20x in der Sekunde abgefragt und das Ergebnis wird auf den LED Ausgang gegeben.

Damit habe ich eine wirklich simple Funk Datenverbindung aufgebaut.
Die Reichweite beträgt ein paar Meter.

Wenn der Sender ausgeschaltet ist oder die Reichweite überschritten wird, kommen Störungen rein und die Empfänger LED blinkt weiterhin zufällig vor sich hin. Auch sonst ist die Übertragung stark gestört. Da muss ich noch etwas unternehmen.

> Eine fehlerfreie 433 MHz Datenübertragung mit dem Arduino

von Matthias Busse

5 Gedanken zu „Eine simple 433 MHz Funkstrecke mit 2 Arduinos aufbauen

  1. Stefan

    Hallo,

    ich finde Deine Seite sehr interessant. Besonders den Beitrag mit der 433Mhz Funkstrecke. Leider bin ich in Sachen Elektronik/Programmieren nicht so fit. Ich würde gern ein Spannungssignal (ca. 1V-5V) über ein Entfernung von bis zu 5m senden. Wie ist die Belegung der PINS beider Leiterplatten? Kann ich simpel ausgedrückt in den Sener eine Spanung geben und diese beim Empfänger einfach abnehmen?

    Was passiert, wenn ich mehrere dieser Funkstrecken habe – beeinflussen sich diese?

    Da ich im Internet keine richtigen Infos finde, kannst Du mir evtl. kurz helfen. Das wäre toll.

    Gruß Stefan

    Antworten
  2. Lucas

    Hallo,

    ich habe versucht, auch eine Funkübertragung zu erstellen. Ich bekomme leider bei Benutzung der VirtualWire.h die Fehlermeldung beim Compilieren:

    /VirtualWire.h:14:20: fatal error: wiring.h: No such file or directory
    #include

    kann mit jemand sagen, wie ich das beheben könnte?

    Antworten
    1. los21

      Hab das gleichproblem:
      VirtualWire.h bibliothek eingebunden, die eine Library wiring.h sucht.
      Die gibt es aber nicht. Die Standard bibliothek heisst wire.h

      Antworten
    2. Hansi

      Der Fehler ist das vor #include eine Leerstelle ist.
      Richtig muss es heißen #include ohne Leerstelle vor VitulaWire.h , dann wird die Bibliothek auch gefunden

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.