Forum: Mikrocontroller und Digitale Elektronik einfachste Funkübertragung im Freien, 20m, wenige Bytes/Minute?


von Funki (Gast)


Lesenswert?

Ich bin auf der Suche nach einer kleinen günstigen, einfachen und mit 
AVR + überschaubarem Zubehör zu implementierenden Funkübertragung:

- ein Empfänger und 5 Sender sternförmig darum,
- Abstand maximal 20m,
- zu übertragen sind 10 Byte jede Stunde pro Sender, Geschwindigkeit ist 
sehr unkritisch (kein Problem wenn die 10 Byte eine Minute bräuchten),
- Unterscheidbarkeit, welcher Sender (Adressbyte)

Angesehen habe ich mir:

- ESP2866 - möglich, aber vom Protokoll her eingentlich schon zu viel 
Aufwand

- Infrarot (RC5) - könnte problematisch sein bei viel Sonne oder einem 
Hindernis, was die Sicht nimmt (z.B. Laub)

Was schlagt Ihr vor?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Funki schrieb:
> - Infrarot (RC5) - könnte problematisch sein bei viel Sonne oder einem
> Hindernis, was die Sicht nimmt (z.B. Laub)

Das IR Protokoll ist robust, übertrage es doch mit einfachen Funkmodulen 
statt mit LED und IR Empfänger.

http://www.ebay.de/itm/5X-433-Mhz-RF-Sender-Empfanger-Receiver-Modul-Arduino-Wireless-Transmitter-TE122-/201312653471

Solche Angebote gibt es zu Dutzenden, ich habe einfach mal das erste 
rausgesucht. Natürlich würdest du nur einen Empfänger benötigen, dem ich 
persönlich dann allerdings eine bessere Antenne verpassen würde.

: Bearbeitet durch User
von Funki (Gast)


Lesenswert?

Matthias S. schrieb:
> Das IR Protokoll ist robust, übertrage es doch mit einfachen Funkmodulen
> statt mit LED und IR Empfänger.

danke, das werde ich probieren. Kann man diese Module vergießen für den 
Einsatz draußen? oder senden / empfangen die dann nichts mehr?

von Arduinoquäler (Gast)


Lesenswert?

Funki schrieb:
> Was schlagt Ihr vor?

Was Matthias vorschlägt geht schon in die richtige Richtung.

Bei allen diesen Funkübertragungs-Wünschen bleibt häufig
eines unberücksichtigt:

Brauche ich eine Rückmeldung dass die Information übertragen
wurde oder reicht als Feedback die Reaktion des Empfängers
à la Fernseher oder dergleichen. Oder ist es wie bei der
Funk-Wetterstation, es ist "wurscht" wenn hie und da keine
Übertragung stattfindet.

Wenn man eine bestätigte Übertragung braucht dann muss man
diese Module auch doppelt kaufen und betreiben, einmal für
hin, und einmal für die Bestätigung zurück. Mit gezieltem
Ein-/Ausschalten der Sender und Empfänger.

von Jim M. (turboj)


Lesenswert?

Funki schrieb:
> Ich bin auf der Suche nach einer kleinen günstigen, einfachen und mit
> AVR + überschaubarem Zubehör zu implementierenden Funkübertragung:

Muss es unbedingt AVR sein? Ich hätte nämlich NRF5x (von NordicSemi) 
basierte Module vorgeschlagen, z.B. 
https://www.sparkfun.com/products/13990 oder 
https://www.sparkfun.com/products/13729

Die Dinger habe BT Low Energy und einen Cortex-M4 (oder -M0 bei NRF51x) 
integriert - bei einem Stromverbrauch weit unter üblichen AVRs. Es gibt 
auch Arduino- kompatible Software Libs.

Mit dem 32,768 kHz Quarz kann man die in den Tiefschlaf schicken (ein 
paar µA) und dann zu festgelegter Zeit aufwachen und senden+empfangen.

von Funki (Gast)


Lesenswert?

Naja AVR bin ich halt gewohnt und hab ich schon da.. :-) ..

Nur mal so als Frage: Wenn man beim Sender statisch 1 oder statisch 0 
anlegt (sagen wir je eine Sekunde lang) - kommt das dann aus der 
Datenleitung des Empfängers auch so raus oder wird eine Mindestfrequenz 
im Signal benötigt?

von c-hater (Gast)


Lesenswert?

Funki schrieb:

> - ein Empfänger und 5 Sender sternförmig darum,
> - Abstand maximal 20m,
> - zu übertragen sind 10 Byte jede Stunde pro Sender, Geschwindigkeit ist
> sehr unkritisch (kein Problem wenn die 10 Byte eine Minute bräuchten),
> - Unterscheidbarkeit, welcher Sender (Adressbyte)

Letzteres (Adresse) kann man auf Protokollebene abhandeln, ist also 
ziemlich unwichtig.

Aber es fehlt noch eine, recht wesentliche Angabe:

Wie wichtig ist, dass der Empfänger jede Nachricht empfängt?

Weil, wenn das wichtig ist, dann brauchst du nicht nur Sender und 
Empfänger, sondern Transceiver auf beiden Seiten, um damit einen 
Handshake-Mechanismus realisieren zu können.

Und klar: ich würde Funk nehmen, wenn Abschattungen IR ausschliessen. 
Übrigens weist dein Gedankengang bezüglich der Abschattungen schon 
irgendwie darauf hin, dass wohl jede Nachricht empfangen werden soll, 
also die Reise Richtung Transceiver-Modul gehen muss.

Da wären dann RFM12(B), RFM69 o.ä. angesagt.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Funki schrieb:
> oder wird eine Mindestfrequenz
> im Signal benötigt?

Du musst unbedingt kodieren. Erstens bist du nicht alleine auf den 
433MHz und zweitens möchtest du ja sicher übertragen, die Empfänger 
erkennen ein Dauersignal im Allgemeinen nicht an, weil sie eine Regelung 
haben. Deswegen ja der Vorschlag mit einem robusten Protokoll.
Falls du Arduino Dingse machen willst, gibts da wohl eine 'Virtual-Wire' 
Bibliothek, ansonsten kannst du z.B. IRMP und IRSND leicht modifizieren 
und für deine Zwecke anpassen.

von Randolf (Gast)


Lesenswert?

Funki schrieb:
> Was schlagt Ihr vor?
Die RX/TX Module auf 433/868MHz für unter 1€ vom ebayChinesen + 
VirtualWire.
Billiger und einfacher gehts nicht und funktioniert tadellos.
Braucht nur 1 Pin, idiotensicher anszuschliessen, kein Busprotokoll zum
ansteuern. Adressen, Format frei definierbar dank Softwareprotokoll und 
äussert robust trotz zig Wetterstationen,... die auch in dem Band 
unterwegs sind. Laufen meist bis  12V, da kannste alles ranklemmen und 
hast auch gleich mehr Power als bei den meisten anderen SoC-Teilen.
Stromsparsam sind die Dinger auch, ähnlich den SoC im Sleepmodus, nur 
dass du dort nicht erst Kommandos hinschicken musst, halbgares Libs 
einsetzen, dich mit den Bugs der Hardware rumplagen, z.T. idiotische 
Konfig. , halbfertige Doku, halbgare Konfigtools (wie bei Silabs 
/TI),...

Wenns doch ein SoC sein soll dann ein nRF24L01+, der ist auch günstig 
und noch einfach handlebar, mit ausreichender Konfigurierbarkeit die 
praxisgerecht ist. Der oben genannte nRF5x ist totaler Overkill und nur 
rausgeworfenes Geld.

von Mike J. (linuxmint_user)


Lesenswert?

Nimm den nRF24L01P, da kannst du jedem Sender eine Adresse geben, du 
kommst mit Sichtverbindung auf 100m und wenn du ihn schlafen legst, dann 
zieht er so gut wie keinen Strom mehr.

Ich habe auch nur eine Lib verwendet um ihn anzusteuern.

Es gibt diese Module für etwa 6€ im 10er Pack mit einer 2x5 poligen 
Stiftleiste und normalem Quarz.

Ich habe mir auch noch die mini-Version besorgt, da kosten 10 Stück 
8,50€ , aber dafür sind die Kontakte einreihig und es wird ein kleiner 
SMD-Quarz verwendet.

Beide senden mit 0dBm = 1mW und unterscheiden sich nicht in der 
erzielbaren Reichweite.

Man kann auch durch das Setzen eines Bits einstellen ob das Modul das 
Datenpaket nur dumm ein mal übertragen soll oder ob es das mehrfach 
versuchen soll, wenn die Übertragung nicht geklappt hat.

von Funki (Gast)


Lesenswert?

Matthias S. schrieb:
> die Empfänger
> erkennen ein Dauersignal im Allgemeinen nicht an, weil sie eine Regelung
> haben. Deswegen ja der Vorschlag mit einem robusten Protokoll.

Danke für die vielen Ideen. Ich wollte nur mal wissen (ich hab ja so ein 
Modul noch nicht) was passiert, wenn ich Sender und Empfänger auf den 
Tisch lege und beim Sender ein Rechteck mit 0,5Hz anlege, wie oben 
beschrieben - Sollte dann beim Empfänger-Datenbein auch so ein Rechteck 
rauskommen ( respektive kurze Störungen natürlich) ?

Ich muss nicht unbedingt jede Nachricht sicher erkennen, ich kann das 
gleiche Datenpaket ja auch 10x senden, und wenn > 6x das gleiche ankommt 
wird's schon passen :-)

von Arduinoquäler (Gast)


Lesenswert?

Funki schrieb:
> was passiert, wenn ich Sender und Empfänger auf den
> Tisch lege und beim Sender ein Rechteck mit 0,5Hz anlege, wie oben
> beschrieben - Sollte dann beim Empfänger-Datenbein auch so ein Rechteck
> rauskommen

Im Prinzip ja, aber damit wirst du kein einziges Datum korrekt
übertragen können. Kein einziges.

Lies nochmal und verstehe. Und wenn du es nicht verstehst,
dann glaube es einfach.

Matthias S. schrieb:
> Du musst unbedingt kodieren.

von Joachim B. (jar)


Lesenswert?


von Diopter  . (diopter)


Lesenswert?

Funki schrieb:
> Sollte dann beim Empfänger-Datenbein auch so ein Rechteck
> rauskommen
Ein sauberes Rechteck wird es nicht sein, aber ankommen wird etwas.
Die einfachen Sender brauchen aber meist einige Signalwechsel (On/Off), 
um in die Gänge zu kommen.
1200 oder 2400Hz sollten möglich sein.

Funki schrieb:
> Ich muss nicht unbedingt jede Nachricht sicher erkennen, ich kann das
> gleiche Datenpaket ja auch 10x senden, und wenn > 6x das gleiche ankommt
> wird's schon passen :-)
Ich würde jeden Sender alle 5 oder 10 Minuten sein Datenpaket 2-3mal 
hintereinander senden lassen, dann wird wohl eines pro Stunde sauber 
ankommen.
Jedes Datenpaket mit Kennung, Sendernummer und CRC.
Je nach Umgebung solltest du nicht nur mit "kurzen Störungen", sondern 
auch mit fremden Datenpaketen rechnen.

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Bis fast in den Sekundenbereich werden diese Rechteck-Signale genau so 
am anderen Ende ankommen.

Davor/dahinter wird der Empfänger 'Müll' ausgeben, da Er eben genau Das 
empfängt.

Dafür gibt es die ICs
PT2262
PT2272 (L oder M)
Damit kann man einige Bits parallel übertragen und Diese kommen so auch 
am anderen Ende an.
Unterschied zwischen der L bzw. M Variante - EIne hält den Ausgang so 
lange high, wie das Signal anliegt, die Andere schaltet das Muster auf 
Dauer.

Bisher aber auch nur mit 'gespielt' - dabei wurden auch die Zeiten 
ermittelt, Die man maximal brauchen darf, bevor das Funksignal 
'abreißt'.

MfG

von Arduinoquäler (Gast)


Lesenswert?

Diopter  . schrieb:
> Die einfachen Sender brauchen aber meist einige Signalwechsel (On/Off),
> um in die Gänge zu kommen.

So ein Käse.

Beschäftige dich erst mal mit diesen "einfachen Sendern" damit
du weisst was du da für völlig falsche Informationen lieferst.

von Diopter  . (diopter)


Lesenswert?

Mit "einfachen Sendern" meinte ich diese:

Matthias S. schrieb:
> Ebay-Artikel Nr. https://www.mikrocontroller.net/link/ebay/201312653471

Bei denen trifft meine Aussage definitiv zu.

von Mike J. (linuxmint_user)


Lesenswert?

Arduinoquäler schrieb:
> Diopter  . schrieb:
>> Die einfachen Sender brauchen aber meist einige Signalwechsel (On/Off),
>> um in die Gänge zu kommen.
>
> So ein Käse.

Er hat schon recht damit, das steht auch in so ziemlich jedem Datenblatt 
für Funkmodule. Das wurde dort mit ins Übertragungsprotokoll mit 
aufgenommen.

Man sendet am Anfang der Verbindung 0x55 oder eben 0xAA um diese 
Signalwechsel (Low/High) zu bekommen.
Der Empfänger kann sich damit irgend wie auf den Sender einpegeln.

Beitrag #5122007 wurde von einem Moderator gelöscht.
von Mike J. (linuxmint_user)


Lesenswert?

Funki schrieb:
> ich hab ja so ein Modul noch nicht

Du brauchst solch ein primitives Modul auch gar nicht zu kaufen.
Die kosten doch bestimmt mehr als 60 Cent pro Stück und die Übertragung 
der Daten ist mit solch einem nRF Modul sehr einfach und man muss sich 
nicht sonderlich Mühe geben um fehlerhaft übertragene Pakete zu 
erkennen.

Hier sind die Bilder im Größenvergleich:
https://www.mikrocontroller.net/attachment/261631/nRF24L01P_sd_mini_normal.jpg

Links mikro-SD-Karte, mittig das mini-Modul, rechts das normale Modul.

Also wenn du es einfach, billig und komfortabel willst, dann nimm das 
nRF-Modul.

von Wolfgang (Gast)


Lesenswert?

Funki schrieb:
> Ich wollte nur mal wissen ... was passiert, wenn ich Sender und
> Empfänger auf den Tisch lege und beim Sender ein Rechteck mit 0,5Hz
> anlege, wie oben beschrieben - Sollte dann beim Empfänger-Datenbein
> auch so ein Rechteck rauskommen ( respektive kurze Störungen natürlich) ?

Das ist nicht das Problem. Erhebliche Probleme kann dir das Signal 
bereiten, dass aus dem Empfänger raus kommt, wenn dein Sender schweigt. 
Das kann wirres Zeug (Rauschen der Welt), der Zoo von Wetterstationen in 
deine Umgebung oder das Schaltsteckdosensteuersignal deines Nachbarn 
sein.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Arduinoquäler schrieb:
> Diopter  . schrieb:
>> Die einfachen Sender brauchen aber meist einige Signalwechsel (On/Off),
>> um in die Gänge zu kommen.
>
> So ein Käse.

Naja nun - kleiner Schreibfehler, die Sender brauchen die Signalwechsel 
natürlich nicht, es sind die Empfänger, die 'in die Gänge' kommen 
müssen, bzw. synchronisiert werden. Bei den höher integrierten Modulen 
wie den RFM oder nRF Platinchen muss man sich darum nicht kümmern, wobei 
die RFMs gerne ein 'Magic' vorangestellt haben wollen (zumindest die 
RFM01/02 Kombi).
Bei den ganz einfachen Platinen macht man alles selber, wie z.B. mit 
0x55, wie o.a.
Die 'Virtual Wire' Bibliothek wurde ja nun schon öfter erwähnt und 
scheint für die Arduinos eine brauchbare Lösung zu sein.

: Bearbeitet durch User
von André R. (andr_r619)


Lesenswert?

Ich würde auch auf 433 MHz gehen. Wir setzen in der Firma diverse Geräte 
in dem Band ein und die haben sich auch im industriellen Umfeld mit 
vielen Störquellen als sehr robust herausgestellt.

von Wolfgang (Gast)


Lesenswert?

André R. schrieb:
> Ich würde auch auf 433 MHz gehen. Wir setzen in der Firma diverse Geräte
> in dem Band ein und die haben sich auch im industriellen Umfeld mit
> vielen Störquellen als sehr robust herausgestellt.

Die Robustheit der Übertragung hat doch nichts mit dem Frequenzband zu 
tun. Auf 868MHz oder anderen Bändern ist die Übertragung genauso gut. 
Die Robustheit der Übertragung ist ganz wesentlich eine Frage des 
verwendeten Übertragunsprotokolls. Die Frequenz wirkt sich eher auf die 
Antennengröße und die Ausbreitung bei Hindernissen in der Funkstrecke 
aus.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

André R. schrieb:
> im industriellen Umfeld

Gerade da würde ich allerdings eher auf 868MHz setzen - je nachdem, ob 
man mit den Sendebeschränkungen dort klarkommt. Kleine Antennen und 
deutlich weniger Konkurrenz auf diesem Band - vor allem meine 
Funkfreunde mit ihren starken Sendern sind dort nicht aktiv.

Ich kann mit meinem alten Kenwood TH-41 Handfunkgerät und 150mW 
Sendeleistung jeden Funkschlüssel eines Kfz im Umkreis von dutzenden von 
Metern lahmlegen, wenn ich wollte.
Schalte ich auf 1,5W Output, gehts auch ein paar hundert Meter weit.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Matthias S. schrieb:
> Ebay-Artikel Nr. 201312653471
>
> Solche Angebote gibt es zu Dutzenden, ich habe einfach mal das erste
> rausgesucht. Natürlich würdest du nur einen Empfänger benötigen, dem ich
> persönlich dann allerdings eine bessere Antenne verpassen würde.

Die Sender sind ok. 12V dran, dann gibts auch ordentlich Reichweite.
Die Empfänger sind unter aller Sau. Viel zu breitbandig.
Die hören sogar, wenn beim Nachbarn eine Gießkanne umfällt.

z.B. die RXB12 Superheterodyne sind da viel besser

von André R. (andr_r619)


Lesenswert?

Matthias S. schrieb:
> André R. schrieb:
>> im industriellen Umfeld
>
> Gerade da würde ich allerdings eher auf 868MHz setzen

Sind fertig gekaufte Komponenten. Daher haben wir leider keinen Einfluss 
auf die gewählte Frequenz. Wollte lediglich damit ausdrücken, dass das 
Ganze bei uns gut funktioniert.

von c-hater (Gast)


Lesenswert?

Wolfgang schrieb:

> Die Robustheit der Übertragung hat doch nichts mit dem Frequenzband zu
> tun.

Genauso ist das.

Das Problem ist halt nur, dass in gewissen Frequenzbändern auf Grund der 
vielfachen konkurrierenden Nutzung mehr Robustheit erforderlich ist als 
in anderen.

Was natürlich alle Dummen und Faulen glauben läßt, sie hätten mit dem 
Wechsel auf ein (noch!) weniger frequentiertes Band wirklich den Stein 
der Weisen und die ultimative Lösung entdeckt...

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
Noch kein Account? Hier anmelden.