Hallo, ich möchte zwei ATMega8 via Funk miteinander verbinden. Die Entfernung beträgt ungefähr 8 Meter. Eigentlich muss nur 1 Bit übertragen werden wobei ein ganzes int von Vorteil wäre. Bei Ebay habe ich für wenig Geld ein 433Mhz Set gefunden: Sender: MX- FS- 03V Empfänger: MX- 05V Kann ich die Teile einfach an den RX/TX Port anschließen und Daten über den UART senden und empfangen oder gehört da noch mehr dazu? Wie störanfällig sind diese Teile gegenüber dem Müll im Äther? Werden Störungen bei Benutzen des UART unterdrückt? Danke mal für die Hilfe Thomas
Ich habe vergessen zu erwähen das es sich um eien OneWay Verbindung handelt!
Thomas schrieb: > Kann ich die Teile einfach an den RX/TX Port anschließen und Daten über > den UART senden und empfangen oder gehört da noch mehr dazu? Nein, allerdings. > Wie störanfällig sind diese Teile gegenüber dem Müll im Äther? > Werden Störungen bei Benutzen des UART unterdrückt? Das ist ein strohdoofer Empfänger. Woher soll der wissen, was Nutzsignal und was Störsignal ist? Bevor es mit der Übertragung der eigentlichen Daten los geht, muss der Sender erstmal ein Vorspiel veranstalten, damit der Empfänger in Stimmung kommt. Dann muss die Synchronisation zwischen Sender und Empfänger folgen und erst dann kommen die eigentlichen Daten. Außerdem ist es sinnvoll, das Datentelegramm noch durch eine Prüfsumme abzusichern.
>Hi, ich dachte das übernimmt alles der UART für mich?
Tut er aber nicht.
Auf 433 läuft jede Funksteckdose, auf 868 soll es etwas ruhiger sein
Thomas schrieb: > Kann ich die Teile einfach an den RX/TX Port anschließen Das macht überhaupt keinen Sinn denn die meiste Zeit wirst du nur Schrott empfangen. Auf diese Weise wirst du auch etwas (Schrott) empfangen wenn dein Sender gar nichts sendet. Für diese Module gibt es die sogenannte Virtual Wire Lib auf Arduino-Basis die man sich auch so (um-)schreiben kann dass sie ohne Arduino Software verwendbar ist. Virtual Wire hat ein Protokoll das es ermöglicht Schrott (Empfangsrauschen) von realen eingehenden Daten zu unterscheiden. Es synchronisiert sich mit einem Header ein und empfängt dann ein vorbestimmt langes Paket welches mit einer Checksumme überprüft wird. Damit hat man schon mal eine gewisse Datensicherheit. Die Aufgabe des "Users" ist es noch, die Inhalte auszuwerten ob das Datenpaket wirklich für den einen Empfänger bestimmt ist.
W.A. schrieb: > Das ist ein strohdoofer Empfänger. Yes. Er kann nur 0 und 1 empfangen, und das tut er dauernd. Wegen seines Komparators der immer irgendwo in der Mitte schwebt macht er selbst aus dem FM Rauschen noch wilde Bitfolgen und verwirrt damit jeden RS232 Empfänger.
Okay verstanden, danke für die Infos. Ich könnte aber auch über einen Timer eine Art PWM Sequenz senden welche der Empfänger auswertet. Nur bei korrekter Reihenfolge und PWM Abständen würde der Empfänger das Empfangene als eine Log 1 erkennt. Ich muss mal das Oszi an das Empfangsmodul hängen um zu sehen was man sich so alles einfängt. Nach dem „Virtual Wire“ werde ich mal schauen. Wenn ich eine fertige Funktion einbinden kann, welche mir die ganze Checksummen und Protokollverarbeitung macht wäre das ja die optimale Lösung. Gruß Thomas
Thomas schrieb: > Ich könnte aber auch über einen Timer eine Art PWM Sequenz senden welche > der Empfänger auswertet. Ja dann mach mal. Da haben sich Leute schon Gedanken gemacht wie man das macht. Irgendeine Sequenz senden, das kann jeder. Aber sie sicher und eindeutig zu empfangen ist eine Kunst für sich. Der Empfänger weiss nämlich nicht wann er anfangen soll. Und eine Prüfsumme hast du bei deiner "PWM" vermutlich auch nicht.
Okay verstanden, ich werde mir das Thema "Virtual Wire" genauer anschauen. Gibt es irgendwo ein vernüftiges HowTo dazu, auf die schnelle habe ich nichts gefunden. Gruß Thomas
Thomas schrieb: > Okay verstanden, ich werde mir das Thema "Virtual Wire" genauer > anschauen. Gibt es irgendwo ein vernüftiges HowTo dazu, auf die schnelle > habe ich nichts gefunden. echt so schwer, ich fand das hier: http://www.arduino-tutorial.de/2015/01/funkuebertragung-von-messwerten-mit-dem-rf-link-modul/ und das: http://shelvin.de/433-mhz-datenuebertragung-mit-dem-arduino/ was brauchst du noch?
Falls du es etwas einfacher in der Ansteuerung magst, kann ich dir die XBee Pro 868MHz Module empfehlen. Die musst du einmalig mit dem Programm XCTU konfigurieren, wo du dann jeweils die Seriennummer des anderen Moduls einträgst. Sind die Dinger einmal konfiguriert, verbinden die sich automatisch, sobald beide bestromt und in Reichweite sind. Daten senden und empfangen geht dann ganz einfach über UART, alles weitere übernimmt der Mikrocontroller, der auf dem XBee drauf ist. Edit: Der Nachteil ist, dass die Module relativ teuer sind.
:
Bearbeitet durch User
Joachim B. schrieb: > was brauchst du noch? Diese Dilettanten verwenden grundsätzlich keine Abblock- Kondensatoren. Das wäre viel zu verwirrend für die Zielgruppe, und sie zu verwenden wäre auch zu teuer. Und dann müsste man auch noch begründen wofür die gut sein sollen.
Frickelfritze schrieb: > Diese Dilettanten verwenden grundsätzlich keine Abblock- > Kondensatoren. nun auf den fertigen Arduino Modulen sind ja welche, über Menge und Größe kann man trefflich diskutieren, trotzdem ist es ein guter Hinweis wenn auch mit unpassenden Worten.... also an alle Nachbauer verpasst den +VCC nach GND noch an den Funkmodulen Abblock Cs Kerko 100nF-470nF und einen 47µF bis 100µF Elko damit die Funkmodule auch genügend Power beim Senden gebuffert bekommen.
Ich habe mir jetzt den Code und einge Threads zu VirtuelWire angeschaut. Den Arduino Code umschreiben das er mit einem ATMega8 läuft ist nicht ganz ohne. Die Portkonfiguration zu ändern ist kein Problem aber bei dem Timer und einigen anderen Funktionen bin ich Planlos. Existiert keine fertige VirtuelWire Libary für die AVR Familie oder gibt es noch eine Alternative zu VW? @Gianluca - danke für den Tip. Ich habe aber bereits zwei solche billige Module bestellt. Hätte den Aufbau gern mit denen gemacht. Gruß Thomas
Okay, habe eben doch noch Code gefunden wo jemand das VW auf einem ATiny85 realisiert hat. Den Code konnte ich einbinden und kompilieren. Mal schauen ob es mit den Modulen funtzt wenn diese da sind. Thomas
Thomas schrieb: > Okay, habe eben doch noch Code gefunden wo jemand das VW auf einem > ATiny85 realisiert hat. klasse sag nur nicht wo, damit andere auch extra suchen müssen wäre ja sonst zu informativ. Ich liebe solche Antworten in einem Forum, erst fragen und dann nur vermelden habs gefunden.
Sorry, war keine Absicht - hast natürlich recht! Hier der Link: https://groups.google.com/forum/#!topic/virtualwire/XZmWJB9TNXg Irgendwo unten sind die Programme als Download. Thomas
Joachim B. schrieb: > nun auf den fertigen Arduino Modulen sind ja welche, über Menge und > Größe kann man trefflich diskutieren, Da sind welche? Von Mehrzahl kann man hier keine Rede sein. Ein müdes C auf dem Empfänger-Modul, vermutlich deplaziert, kein einziges auf dem Sende-Modul. Ich rede hier von Abblock-Kondensatoren.
Thomas schrieb: > Okay, habe eben doch noch Code gefunden wo jemand das VW auf einem > ATiny85 realisiert hat. Das ist auch nur die Umsetzung des C++ Codes der Arduino Lib auf normales C. Allerdings sehr unprofessionell und chaotisch. Die Tabulation und Kommentare alleine sprechen Bände .... Ausserdem leuchtet es nicht ein aus einer Lib zwei (receive und transmit) zu machen, die Platzverhältnisse können es ja nicht sein.
Frickelfritze schrieb: > Joachim B. schrieb: >> nun auf den fertigen Arduino Modulen sind ja welche, über Menge und >> Größe kann man trefflich diskutieren, > > Da sind welche? > Von Mehrzahl kann man hier keine Rede sein. Ein müdes C > auf dem Empfänger-Modul, vermutlich deplaziert, kein > einziges auf dem Sende-Modul. was genau ist auf dem Arduino Modul nicht zu verstehen? Ich habe gerade auf dem nano328p 6 Cs gezählt und auf dem m2560 fange ich nicht erst mit zählen an. Wenn du kritisierst das auf den 433MHz wenig Kondis sind, vielleicht reicht das ja so, zur Verwendung kann man bei der Integration 433MHz Teile am Arduino noch nachbessern, schrieb ich aber auch. Wer unbedingt glaubt die 433 MHz Kaufteile verbessern zu müssen dem steht es doch frei dort KerKos und ElKos nachzurüsten.
:
Bearbeitet durch User
Joachim B. schrieb: > was genau ist auf dem Arduino Modul nicht zu verstehen? Von Arduino habe ich nicht gesprochen. Meine Kritik bezieht sich auf die Sende- und Empfangsmodule. Und nur weil auf den Arduino-Modulen Abblock-Cs drauf sind braucht man sich keineswegs drauf verlasssen dass es woanders keine braucht. Die Wirkung eines Abblock-Cs lässt nämlich nach wenigen cm deutlich nach, je nach HF-Anforderungen....
Frickelfritze schrieb: > Von Arduino habe ich nicht gesprochen. ne aber du hast mich 2x zitiert als ich Arduino Links zeigte, was soll ich da denken? Frickelfritze schrieb: > Diese Dilettanten verwenden grundsätzlich keine Abblock- > Kondensatoren. klar war das auf die Verschaltung Arduino und 433 MHz Modul gemünzt, ein häufiger Fehler. Das du nun das Layout der Module meinst konnte ich nicht ahnen, dazu waren deine Worte zu sparsam.
Joachim B. schrieb: > ne aber du hast mich 2x zitiert als ich Arduino Links zeigte, was soll > ich da denken? Dass da wo der Aufbau gezeigt wird keine Abblock-Cs zu sehen sind. Dass auf den Arduinos welche drauf sind ist offensichtlich.
Such mal nach "RadioHead" lib, das ist der Nachfolger von VirtualWire, genauer gesagt ist es eine Lib um diverse Sendebausteine abzusprechen wie nRF24x und halt auch solche 'doofen' ASK-Modul, so heisst der entspr. Part jetzt auch, früher hiess es VirtualWire. Wenn mich nicht alles täuscht sind dort auch verschiedene Implementierungen drinn für diverse Atmels.
Oder schau dir mal das Video an, da implementiert einer sowas Ähnliches wie VirtualWire, damit kapierst du worauf es bei so einem Protokoll ankommt, den Source gibts auch dazu. https://www.youtube.com/watch?v=3Rs3SJBsiYE Der Typ von der RadioHead-Lib hat auf seiner Seite auch ein PDF verlinkt das ASK-basierte Protokolle erklärt, darauf aufbauend hat er VirtualWire entwickelt, iirc, bin jetzt zu faul auf der Seite nachzuschauen.
Frickelfritze schrieb: > Dass auf den Arduinos welche drauf sind ist offensichtlich. ja und auch da wird immer wieder über das Layout gemeckert! Die Abblockkondensatoren reichen manchen Leuten nicht auf den Arduinos und bei Nachbauten wird manchmal noch mehr gespart! rede dich nicht raus du hast zuwenig geschrieben als das man ahnen könnte worauf du dich beziehst!
@Für unsere Gäschd nur des Beschd (Gast) Laut der Homepage ist die Libary nicht für die AVR Familie umgesetzt worden. Wenn dann eventuell das auch irgend jemand die Lib auf ATMegas umgebaut hat. http://www.airspayce.com/mikem/arduino/RadioHead/index.html
Hi Zusammen, ich habe es jetzt auf 2 ATMega8 am laufen und übertrage immer ein Zeichen abwechselnd. Das Telegramm hat eine Länge von 200ms wenn ich es mit dem Oszi aufzeichne. Alle 200-300 Telegramme habe ich ein fehlerhaftes Telegramm (vw_rx_bad) was denke ich im grünen Bereich ist. Bei Zeiten kleiner 200ms fürs komplette Telegramm geht die Fehlerrate hoch. Bei kleiner 50ms ist jedes zweite Telegramm für die Tonne. Ich habe die Daten von der angegebenen Quelle verwendet. Ging eigentlich ganz gut nur der Code ist echt nicht aufgeräumt. Hat ein wenig gedauert zu verstehen was wie wo warum gemacht wird. Danke Thomas
Thomas schrieb: > Das Telegramm hat eine Länge von 200ms wenn ich es > mit dem Oszi aufzeichne. Alle 200-300 Telegramme habe ich ein > fehlerhaftes Telegramm (vw_rx_bad) was denke ich im grünen Bereich ist. > Bei Zeiten kleiner 200ms fürs komplette Telegramm geht die Fehlerrate > hoch. Bei kleiner 50ms ist jedes zweite Telegramm für die Tonne. Die Länge eines Telegramms gibt nur unzureichend die Übertragungs- verhältnisse wieder. Aus einer Länge kann nicht beurteilt werden welche Bitrate eingestellt ist da die Paketgrösse fehlt. Auch ist die Angabe einer Fehlerrate sinnlos wenn nicht die Entfernung und die Bitrate angegeben ist. Wenn man annimmt dass die Übertragung noch "weit im rauscharmen Bereich" stattfindet werden die meisten Fehler wohl dadurch auftreten dass, bedingt durch die Breitbandigkeit des Empfängers (keine Schmalbandselektion vorhanden), beliebig Störungen in diesem vielgenutzten Frequenzbereicht das zu übertragende Telegramm zerschiessen.
Frickelfritze schrieb: > Thomas schrieb: >> Das Telegramm hat eine Länge von 200ms wenn ich es >> mit dem Oszi aufzeichne. Alle 200-300 Telegramme habe ich ein >> fehlerhaftes Telegramm (vw_rx_bad) was denke ich im grünen Bereich ist. >> Bei Zeiten kleiner 200ms fürs komplette Telegramm geht die Fehlerrate >> hoch. Bei kleiner 50ms ist jedes zweite Telegramm für die Tonne. > > Die Länge eines Telegramms gibt nur unzureichend die Übertragungs- > verhältnisse wieder. Aus einer Länge kann nicht beurteilt werden > welche Bitrate eingestellt ist da die Paketgrösse fehlt. Auch ist > die Angabe einer Fehlerrate sinnlos wenn nicht die Entfernung und > die Bitrate angegeben ist. > > Wenn man annimmt dass die Übertragung noch "weit im rauscharmen > Bereich" stattfindet werden die meisten Fehler wohl dadurch > auftreten dass, bedingt durch die Breitbandigkeit des Empfängers > (keine Schmalbandselektion vorhanden), beliebig Störungen in > diesem vielgenutzten Frequenzbereicht das zu übertragende > Telegramm zerschiessen. Okay, folgende Parameter habe ich von der Quelle übernommen: VW_MAX_MESSAGE_LEN = 30 VW_RX_RAMP_LEN = 160 VW_RAMP_ADJUST = 9 VW_RX_SAMPLES_PER_BIT = 8 VW_HEADER_LEN = 8 Wie schon oben beschrieben sende ich nur 1 Character. Die Entfernung beträgt ungefähr 12 Meter allerdings über 2 Stockwerke mit Betondecken! Die Fehlerrate ist nicht merklich gestiegen nachdem ich Sender und Empfänger in verschiedenen Stockwerken plaziert habe. Ich habe den Sender 24h abgeschaltet und die VW Funktion hat keinen Schrott in mein Programm durch Störungen durchgelassen. Für meine Anwendung ist es super, ich bin zufrieden. Thomas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.