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?
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.
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?
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.
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.
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?
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.
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.
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.
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.
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 :-)
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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...