Forum: HF, Funk und Felder 3 Byte über Funk zwischen 2 AVR übertragen


von Mathias S. (merzi1993)


Lesenswert?

Hallo,

nach langem Suchen im Forum bin ich noch immer keinen Schritt weiter.
Ich bin auf der Suche nach einer günstigen Methode (<20€) 3 Byte 
zwischen 2 AVR zu übertragen, d.h. einer sendet und der andere empfängt 
diese 3 Byte.

Die AVR sind ca. 3m entfernt.

Außerdem sollte es eine kompakte Lösung sein, d.h. sie sollte nicht zu 
viel Platz benötigen. Eine große Antenne wäre somit auch nicht die 
richtige Lösung.

Ich habe da irgendwie an eine Übertragung mit Bluetooth gedacht, nur 
finde ich nicht die richtigen Module dafür.

Oder würden 433MHz Funkmodule eine bessere Lösung darstellen?

IR wäre auch eine mögliche Lösung, jedoch habe ich auf der Sendeseite 
schon eine IR-Diode verbaut, welche Signale von einer Fernbedienung 
empfängt und daher bin ich mir nicht sicher, ob dies ohne Probleme 
laufen würde.


Gruß
Mathias

von Helmut L. (helmi1)


Lesenswert?


von Sebastian (Gast)


Lesenswert?


von TestX .. (xaos)


Lesenswert?

Mathias S. schrieb:
> IR wäre auch eine mögliche Lösung, jedoch habe ich auf der Sendeseite
> schon eine IR-Diode verbaut, welche Signale von einer Fernbedienung
> empfängt und daher bin ich mir nicht sicher, ob dies ohne Probleme
> laufen würde.
>

bluetooth module kosten wesentlich mehr, das kannst du vergessen. rf12 
sind auch müll, da die keinen protokol stack drinnen haben (mmusst du 
alles selber machen).
Am einfachsten wäre eine infrarotstrecke -> nimm einfach eine andere 
wellenlänge und gut ;)

von Helmut L. (helmi1)


Lesenswert?

Andi D. schrieb:
> Am einfachsten wäre eine infrarotstrecke -> nimm einfach eine andere
> wellenlänge und gut ;)

Ach und da braucht man kein minimales Protokoll?

Und du meinst er soll eine andere Infrarot Wellenlaenge nehmen?

Andi D. schrieb:
> rf12
> sind auch müll, da die keinen protokol stack drinnen haben (mmusst du
> alles selber machen).

Dazu gibt es hunderte fertiger Protokoll Stacks im Netz.

von Mathias S. (merzi1993)


Lesenswert?

Helmut Lenzen schrieb:
> RFM12 ist dein Freund
>
> http://www.mikrocontroller.net/articles/RFM12

Im Artikel steht, dass die SPI-Schnittstelle für RFM12 benötigt wird, 
diese habe ich aber schon für eine andere Funktion verwendet..



Sebastian schrieb:
> Ebay-Artikel Nr. 120897348781

Nur wie teile ich einem solchen Modul mit wer Sender und wer Empfänger 
ist?


Andi D. schrieb:
> Am einfachsten wäre eine infrarotstrecke -> nimm einfach eine andere
> wellenlänge und gut ;)

IR würde mir auch am meisten zusagen, ein fertiges Protokoll wäre aber 
sehr vorteilhaft, da ich keine Ahnung habe wie ich ein solches schreiben 
soll... :)

von g457 (Gast)


Lesenswert?

> Im Artikel steht, dass die SPI-Schnittstelle für RFM12 benötigt wird,
> diese habe ich aber schon für eine andere Funktion verwendet..

Die kann man auch mehrfach nutzen, /CS regelt. Eine Alternative wäre 
u.U. auch der RFM70.

> Nur wie teile ich einem solchen Modul mit wer Sender und wer Empfänger
> ist?

Indem Du das Handbuch liest. Vermutlich ists wie bei einer UART: TX 
sendet, RX empfängt.. ;-)

HTH

von Mathias S. (merzi1993)


Lesenswert?

g457 schrieb:
> Die kann man auch mehrfach nutzen, /CS regelt.

Ich benutze die SPI-Schnittstelle für einen LED-Treiber - TLC5922

Dieser hat kein SlaveSelect, hier würde mir nichts anderes übrig 
bleiben, als BLANK auf High zu setzen, dann würden aber alle LEDs 
ausgeschaltet sein und der TLC5922 reagiert nicht mehr auf die Signale 
von der SPI-Schnittstelle und somit kann die SPI-Schnittstelle für die 
Funkübertragung verwendet werden. Die LEDs sollen in dieser Zeit aber 
nicht ausgeschaltet werden...

Oder verstehe ich in dieser Hinsicht etwas komplett falsch?



g457 schrieb:
>> Nur wie teile ich einem solchen Modul mit wer Sender und wer Empfänger
>> ist?
>
> Indem Du das Handbuch liest. Vermutlich ists wie bei einer UART: TX
> sendet, RX empfängt.. ;-)

Das mit der UART ist mir schon klar, aber muss da nicht zuerst mal eine 
Verbindung zwischen den beiden Modulen aufgebaut werden, damit diese 
kommunizieren können?

von Weingut P. (weinbauer)


Lesenswert?

Mathias S. schrieb:
> IR würde mir auch am meisten zusagen, ein fertiges Protokoll wäre aber
> sehr vorteilhaft, da ich keine Ahnung habe wie ich ein solches schreiben
> soll... :)

Werkle derzeit auch an IR-Strecke bidirektional, ist doch auch in 
Harware recht easy einiges zu machen.

Habs so gelöst, 9-Bit Datenmodus, das Bit 9 Zeigt das erste Byte an.
Dazu die Parity Bits, Maaster ist even, Slave ist odd, Hintergrund ist,
das der sendende ja auch gleich wieder empfängt, das Paritiy Error Flag 
kannst Du in der Empfangsroutine abfragen und einfach unterscheiden, ist 
das Flag gesetzt, kommt das Byte von der Gegenstelle, wenn nicht ists 
selbst gesendet.
Die Modulationsfrequenz (38KHz) lass ich mir von nem Timer im CTC-Mode 
generieren.

Empfang sieht dann so aus:
wenn Parity Error, dann von Gegenstelle,
wenn Bit 9 gesetzt Ringpuffer auf Anfang setzen
wenn Bit 9 nicht gesetzt Ringpuffer weiterschieben

von Mathias S. (merzi1993)


Lesenswert?

Fhutdhb Ufzjjuz schrieb:
>
> Werkle derzeit auch an IR-Strecke bidirektional, ist doch auch in
> Harware recht easy einiges zu machen.
>
> Habs so gelöst, 9-Bit Datenmodus, das Bit 9 Zeigt das erste Byte an.
> Dazu die Parity Bits, Maaster ist even, Slave ist odd, Hintergrund ist,
> das der sendende ja auch gleich wieder empfängt, das Paritiy Error Flag
> kannst Du in der Empfangsroutine abfragen und einfach unterscheiden, ist
> das Flag gesetzt, kommt das Byte von der Gegenstelle, wenn nicht ists
> selbst gesendet.
> Die Modulationsfrequenz (38KHz) lass ich mir von nem Timer im CTC-Mode
> generieren.
>
> Empfang sieht dann so aus:
> wenn Parity Error, dann von Gegenstelle,
> wenn Bit 9 gesetzt Ringpuffer auf Anfang setzen
> wenn Bit 9 nicht gesetzt Ringpuffer weiterschieben


Mir fällt es momentan schwer deinen Erklärungen zu folgen, aber ich werd 
mich in nächster Zeit sowieso mal mit Protokollen beschäftigen müssen.

Wie soll ich das mit "Bit 9 zeigt das erste Byte an" verstehen? : )

von g457 (Gast)


Lesenswert?

> Ich benutze die SPI-Schnittstelle für einen LED-Treiber - TLC5922
> Dieser hat kein SlaveSelect,

Wenn ich das richtig seh hat der zumindest ein Latch, d.h. wenn Du 
dessen SOUT (vulgo SDO/MISO) nicht brauchst um den Zustand zurückzulesen 
kannst Du die Bausteine problemlos parallel betreiben.

> Das mit der UART ist mir schon klar, aber muss da nicht zuerst mal eine
> Verbindung zwischen den beiden Modulen aufgebaut werden, damit diese
> kommunizieren können?

Auch das steht (hoffentlich:-) im Datenplatt. Der Bucht-Schopp liefert 
leider keines, ist also ein bisschen russisches Roulette.

von Mathias S. (merzi1993)


Lesenswert?

g457 schrieb:
> Wenn ich das richtig seh hat der zumindest ein Latch, d.h. wenn Du
> dessen SOUT (vulgo SDO/MISO) nicht brauchst um den Zustand zurückzulesen
> kannst Du die Bausteine problemlos parallel betreiben.

Warum komm ich eigentlich nicht selber auf solche Ideen? :)
Nur sollte ich mich halt ein bisschen mit RFM12 beschäftigen, wenn ich 
dieses verwenden will.



g457 schrieb:
>> Das mit der UART ist mir schon klar, aber muss da nicht zuerst mal eine
>> Verbindung zwischen den beiden Modulen aufgebaut werden, damit diese
>> kommunizieren können?
>
> Auch das steht (hoffentlich:-) im Datenplatt. Der Bucht-Schopp liefert
> leider keines, ist also ein bisschen russisches Roulette.

Ohne Datenblatt bestellen will ich auch nicht, da es mehr oder weniger 
Glückssache ist :)

von Sebastian (Gast)


Lesenswert?

Die verbindung zwischen den dingern ist bidirektional. Beide sind 
empfänger und sender. Kommunikation per bluetooth

was du in den einen reinschickst kommt beim anderen raus,

von Mathias S. (merzi1993)


Lesenswert?

Sebastian schrieb:
> Die verbindung zwischen den dingern ist bidirektional. Beide sind
> empfänger und sender. Kommunikation per bluetooth
>
> was du in den einen reinschickst kommt beim anderen raus,


Alles schön und gut, aber irgendwie muss eine Verbindung zwischen diesen 
Dingern aufgebaut werden. Ist ja schließlich das selbe wie bei Handys, 
da muss man zuerst auch mal mit dem anderen Gerät verbinden, bevor man 
irgendwelche Daten senden kann.

von Helmut L. (helmi1)


Lesenswert?

Mathias S. schrieb:
> Im Artikel steht, dass die SPI-Schnittstelle für RFM12 benötigt wird,
> diese habe ich aber schon für eine andere Funktion verwendet..

Jeder Prozessor hat soviel SPI Schnittstellen wie er Pins hat.
Man muss nicht unbedingt eine Hardware SPI Schnittstelle nehmen man kann 
die auch durch ein paar Zeilen Software ersetzen. An jedem Prozessorpin 
wo man dran wacklen kann, kann man nehmen.

von Sebastian (Gast)


Lesenswert?

Bis eine Verbindung steht, akzeptieren die Boards AT Kommandos.

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.