Ich habe hier einen 433 MHz Sender und einen passenden Empfänger. Damit möchte ich eine Funkstrecke aufbauen für 2 Arduino Uno.
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.
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.
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
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
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?
Vielleicht ist da ein space zu viel zwischen < und VitualWire ?
Hab das gleichproblem:
VirtualWire.h bibliothek eingebunden, die eine Library wiring.h sucht.
Die gibt es aber nicht. Die Standard bibliothek heisst wire.h
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