Nach den Störungen bei der AM Daten Übertragung auf 433 MHz aus diesem Artikel muss eine entsprechende Synchronisierung und Fehlerkorrektur her. Hier bietet sich die VirtualWire Library von Mike McCauley an. Sie enthält all das bereits und ist einfach anzuwenden.
Der 433 MHz Sender und der Empfänger sind wieder direkt an den Pins des Arduino angeschlossen, wie im vorherigen Artikel beschrieben.
Der Sender
Nach ein paar Anpassungen sieht die Sender Software für den Arduino dann so aus.
// 433 MHz Sender mit der VirtualWire Library V 1.27 // // Matthias Busse 17.5.2014 Version 1.0 // Verbindungen zum Uno // GND > D5 // VCC > D6 // Daten > D7 #include < VirtualWire.h> char *msg = "Hallo Welt";// Nachricht void setup() { pinMode(7, OUTPUT); pinMode(5, OUTPUT); // GND 0V digitalWrite(5, LOW); pinMode(6, OUTPUT); // VCC 5V digitalWrite(6, HIGH); vw_setup(5000); // Bits pro Sekunde vw_set_tx_pin(7); // Datenleitung } void loop(){ vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // warten bis alles übertragen ist delay(1000); }
Der Empfänger
Auf der Empfangsseite wird dieses Programm verwendet
// 433 MHz Empfänger mit der VirtualWire Library V 1.27 // // Matthias Busse 17.5.2014 Version 1.0 // Verbindungen zum Uno // GND > D4 // Data > D5 // Input > D6 // VCC > D7 #include < VirtualWire.h> int i; uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; void setup() { Serial.begin(38400); pinMode(5, INPUT); pinMode(6, INPUT); pinMode(4, OUTPUT); // GND 0V digitalWrite(4, LOW); pinMode(7, OUTPUT); // VCC 5V digitalWrite(7, HIGH); vw_setup(5000); // Bits pro Sekunde vw_set_rx_pin(5); // Datenleitung vw_rx_start(); // Empfänger starten } void loop() { if (vw_get_message(buf, &buflen)) { // überprüfen ob eine Nachricht eingegangen ist for (i=0;i< buflen;i++) { Serial.print((char)buf[i]); // Nachricht aus buf ausgeben } Serial.println(""); } }
Damit bekomme ich hier eine stabile und fehlerfreie Datenübertragung.
< Eine simple 433 MHz Funkstrecke mit 2 Arduinos aufbauen
von Matthias Busse
Hallo,
Ich hätte eine Frage…
und zwar möchte Ich Daten senden über Funk, doch Ich weiß nicht recht wie Ich dies schreiben/machen soll…
Schon im voraus danke
Hallo Robin,
das musst Du einfach mal ausprobieren.
Das hier ist ein guter Start mit nur wenigen Daten.
Viel Spass beim experimentieren,
Matthias
Hallo, ich habe Schwierigkeiten. Sende mal einen String der Länge 10 und der Länge 3, abwechselnd.
Dann wird der längere String auch auf die Länge 3 begrenzt.
Abhilfe:
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
muss in die Loop, so wie auch im Beispiel. Warum, habe ich noch nicht heraus bekommen. Die Suche hat mich mehrere Stunden gekostet. Verflucht. Hoffentlich irre ich mich nicht. Jedenfalls funktioniert es nun.
Habe zur Ausgabe ein Nokia Display #include benutzt. Ob das was ausmacht? Vielleicht Doppelbenutzung von Variablen? Wenn gewünscht, dreh ich gerne ein Filmchen darüber.
Hallo, ich habe Schwierigkeiten. Sende mal einen String der Länge 10 und der Länge 3, abwechselnd.
Dann wird der längere String auch auf die Länge 3 begrenzt.
Abhilfe:
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
muss in die Loop, so wie auch im Beispiel. Warum, habe ich noch nicht heraus bekommen. Die Suche hat mich mehrere Stunden gekostet. Verflucht. Hoffentlich irre ich mich nicht. Jedenfalls funktioniert es nun.
Habe zur Ausgabe ein Nokia Display #include benutzt. Ob das was ausmacht? Vielleicht Doppelbenutzung von Variablen? Wenn gewünscht, dreh ich gerne ein Filmchen darüber.
so sieht es jetzt aus
Hallo Welt10
yxc 3 usw.
so sah es vorher aus
Hallo Welt10
yxc3
Hal3
yxc3
jeweils mit der buflänge zur Kontrolle dahinter
noch was . Vor Virtual wire
#include < VirtualWire.h>
steht ein Leerzeichen. Das muss weg.
Hallo, wie sieht es mit der Reichweite aus? Hat jemand einen Richtwert, welche Strecken ca. erreicht werden?
Grüsse, zuschi
jau, 350 m erreicht. Völlig zufrieden. Mit zwei lambda viertel Drahtstücken.
Hallo zusammen,
kann ich mehrere dieser Sender/Empfänger gleichzeitig betreiben?
Sprich auf verschiedenen Frequenzen oder Kanälen?
Oder darf im Umfeld des Senders/Empfänger kein weiteres Gerät sein, welches mit 433 Mhz überträgt?
Danke,
Stephan
Dieser einfache Empfänger hat keine Kanalwahl, sodaß ein Sender mehrere Empfänger bedienen kann. Es können aber keine Sender auf Grund der Frequenz vom Empfänger unterschieden werden, hier muß der Sender dann ggf. eine eigene Identifikation mit senden.
Matthias
Hallo
bekomme die Fehlermeldung :
This report would have more information with
„Show verbose output during compilation“
enabled in File > Preferences.
Arduino: 1.0.6 (Windows NT (unknown)), Board: „Arduino Nano w/ ATmega328“
sketch_jun01a.ino: In function ‚void setup()‘:
sketch_jun01a:20: error: ‚vw_setup‘ was not declared in this scope
sketch_jun01a:21: error: ‚vw_set_tx_pin‘ was not declared in this scope
sketch_jun01a.ino: In function ‚void loop()‘:
sketch_jun01a:25: error: ‚vw_send‘ was not declared in this scope
sketch_jun01a:26: error: ‚vw_wait_tx‘ was not declared in this scope
Kann mir einer Helfen?
Mfg.
Hallo, ich habe das Problem, dass beim Hochladen für den Empfänger ein Fehler auftritt, den ich hier kopiert habe:
Arduino: 1.6.11 (Windows 10), Board: „Arduino/Genuino Uno“
empfaenger:23: error: stray ‚\302‘ in program
 pinMode(6, INPUT);
^
empfaenger:23: error: stray ‚\240‘ in program
exit status 1
stray ‚\302‘ in program
Das einzige, was ich abgeändert habe, ist „#include “ -> „#include
#include “
Danke im Voraus
Hallo!
Ich hätte eine Frage zu den 433MHz-Bausteinen. Sind die irgendwie anfällig oder empfindlich oder so?
Ich habe 4 Sender-Empfänger-Pärchen hier bei mir ausprobiert, aber ich bekomme keine Übertragung zu Stande. Mit Antenne, ohne Antenne, egal. Ich tüftle schon eine Zeit lang nun herum, aber kein Erfolg.
Ich habe schon den Verdacht, dass meine Sender oder Empfänger Module defekt sind.
Ich benutze XY-MK-5V + XY-FST 433MHz
Hat da jemand ähnliche Erfahrung oder einen Tipp?
Hallo zusammen. Das senden und empfangen von Daten ist kein Problem, aber ich wäre nicht ich, wenn ich nicht ein Problem daraus machen würde.
Folgendes:
Ich habe eine Gartenbahn. Vieles lässt sich ja mit Timern (NE555 ect) realisieren. Doch da die Anlage an sich recht groß ist, gibt’s da Probleme überall meterweise Kabel zu verlegen.
Also muss ein entsprechender Sender und Empfänger her, der z.B. eine Schranke öffnet / schließt. Durch einen Impuls beim durchfahren eines gewissen Teilstückes soll ein 433MHZ Sender (durch Impuls) dem Empfänger senden „jetzt“ und der Empfänger wiederum gibt einen Impuls aus um ein „Flip – Flop“ zu sagen Schranke auf oder zu.
Nun kommt das eigentliche. Die Sketche müssen beide (sowohl Sender als auch Empfänger) auf einen ATTiny85 gepresst werden. Denn ich kann ja nicht 4 oder 6 Arduino Unos verbauen. Das ist ne Kosten sowie Platzfrage. Ich habe da was interessantes gefunden, (sie Link im Beispiel 2 http://funduino.de/nr-03-433mhz-funkverbindung ) aber das will nicht richtig. Beim Sender soll ein Taster den Impuls senden und beim Empfänger soll dann ein LED leuchten. So weit so gut. Der Sender sendet, aber dauerhaft und einen Taster geht nicht. Und der Empfänger empfängt halt permanent und zeigt mir das durch ständiges Blinken der LED. Wo bei ich sagen muss, den Empfänger Sketch krieg ich nicht in einen ATTiny gepresst. Nur wenn ich alle Zeilen mit der Bezeichnung Seriell lösche.
Könnte mir bitte jemand die Sketche ändern, das es so funktioniert wie ich das gern hätte
Bisher Pinbelegung beim ATTiny Sender „0“ = Daten und „4“ = Taster VCC und GND erklärt sich von selbst.
Empfänger läuft momentan auf einem Arduino Uno Pin 12 LED Pin 2 Daten und da muss das auf einen 85iger vllt. auch „0“ als Daten und LED auf „3“ oder so.
Danke Euch schon mal für die Geduld und Hilfe.
L.G. Reiner
DE – SAC – Osterzgebirge – Altenberg
Statt „Hallo Welt“ empfange ich : ⸮⸮ՠ⸮ՠ⸮ՠ⸮ՠ⸮ՠ⸮ՠ⸮ՠ⸮ՠ⸮ՠ⸮ՠ⸮⸮ʡՠ⸮ՠ⸮ՠ⸮ՠ⸮ՠ⸮ՠ⸮Ǡ⸮ՠ⸮
Weiß jemand warum? 🙁
Vielen Dank!
Hallo,
ich habe in den letzten Tagen die Config Ardiono Nano (Sender) und Raspberry Pi Rev3 (Empfänger) in Betrieb genommen. Nach einigem Testen funktionierte es dann wunderbar.
1. Test Strecke zwischen Arduino Nano (Sender) und Arduino UNO als Empfänger um zu testen dass Sender und Empfänger funktionieren, Das klappte dann nach mehren Anläufen, Fehler saß aber vor dem Gerät 🙂 .
2. Test Strecke zwischen Nano und Pi, das war ein wenig schwieriger, da wie beim Uno die Herausforderung mit den richtigen PINS bestand, und dann noch mit dem richtigem Signal Level am GPIO Input. Trotz Spannungsteiler um auf 3.3V zu reduzieren funktionierte es dann mit Empfängerbetriebsspannung 3.3Volt und direktem Anschluss an den GPIO endlich. RPI habe ich nach diesem https://quadmeup.com/virtualwire-support-for-raspberry-pi/ Tuturial aufgebaut. Zielsetzung dieser Funkverbindung: Funkübertragung von RFID Codes und 5 Digital Werten vom Nano an den Pi, der dann die SONOS Library mit den zu den RFID Codekarten hinterlegten Kinderhörspielen aufruft und steuern kann. Die SONOS Funktionen habe ich schon erfolgreich implementiert. Das ganze habe ich schon mit WIFI Bausteinen ESP8266 implementiert, mit diesem Aufbau reduziere ich aber den Stromverbrauch im Sender um ein vielfaches.
Herzlichen Dank an die Ersteller der Virtual Wire Library und an Matthias
Gruß
Ulli