Funkübertragung programmieren

OP #4633614
Lesenswert?
• ▲
▼
Hallo,

ich möchte bei einem Empfänger eine LED Aus und Ein schalten können.
Aber leider funktioniert das nicht :(
Ich habe 2 Arduino UNO Boards einer mit einem 433mHz Empfänger der 
andere mit einem 433mHz Sender.
Bei dem Arduino Board mit Sender habe ich eine UART wo ich vom HTerm aus 
ein Zeichen eingeben kann für An und Aus. Auf dem Sender Board kann ich 
die LED An und Aus machen nur bei der Funkübertragung, bei dem Empfänger 
Arduino, bleibt die LED immer an.

Ich habe den Code mal angehangen, vielleicht könnt ihr mir ja sagen was 
ich falsch mache :)

LG
Angehängte Dateien:
#4633852
Lesenswert?
• ▲
▼
Hallo,

vielelicht übersehe ich was, aber außer den UART-Sachen habe ich da 
nichts gesehen, was da nach Funk aussieht.
Von welchen 433MHz Sachen ist überhaupt die Rede? Es gibt da wesentlich 
mehr als eine Version, was Frequenzen, Modulation, Protokoll usw. 
angeht...

Gruß aus Berlin
Michael
(Firma: matzetronics) #4633859
Lesenswert?
• ▲
▼
Du kannst nicht einfach ASCII Zeichen über Funk übertragen und hoffen, 
das da hinten das rauskommt, was du in den Sender reinschickst.

Funkempfänger liefern immer Störungen (bei den meisten ist ohne Sender 
ein beinhartes Rauschen am Ausgang), so das du gezwungen bist, ein 
Protokoll zu benutzen

* dem Störungen nichts ausmachen - ein UART wird beim ersten empfangenen 
Bit bis Pflaumenpfingsten warten, das ein Zeichen fertig wird.

* das eindeutig zu decodieren ist und evtl. sogar eine Fehlererkennung 
und -korrektur hat.

Nicht ohne Grund gibt es dafür Dinge wie Manchester- oder 
Biphasekodierung, Prüfsummen- und Timeout Behandlung.
OP #4633907
Lesenswert?
• ▲
▼
Hallo,

danke für die schnellen Antworten :)
Im Anhang habe ich mal meine Module für das Senden und Empfangen.
Aus dem Datenblatt habe ich Mudulate Mode: ASK, Frequenz:433,92MHz.
Achso also einfach ASCII Senden ist nicht :(
Wie sieht das dann aus mit z.B. einem Manchestercode oder CRC Prüfsumme? 
*.*
Muss ich die Frequenz und die Modulation noch angeben?
Wie könnte ich das im Code machen?

LG
Angehängte Dateien:
#4634585
Lesenswert?
• ▲
▼
Matthias S. schrieb:
> * dem Störungen nichts ausmachen - ein UART wird beim ersten empfangenen
> Bit bis Pflaumenpfingsten warten, das ein Zeichen fertig wird

Nö. Er wird ab fallender Flanke des Startbit genau 10 Bitzeiten warten 
und das Empfangene als Byte dekodieren. Bei verrauschter Leitung ist 
aber schon die korrekte Erkennung des Start Bits nicht mehr so einfach.
(Firma: matzetronics) #4634836
Lesenswert?
• ▲
▼
Jim M. schrieb:
> Bei verrauschter Leitung ist
> aber schon die korrekte Erkennung des Start Bits nicht mehr so einfach.

Es ist sogar noch schlimmer - alles was da rein kommt, ist ein Startbit 
oder Datenmüll.
UART geht also gar nicht für Funk.
@TE: Es kommt drauf an, was du alles steuern willst.
Ein guter Anfang ist z.B. IRMP:
https://www.mikrocontroller.net/articles/IRMP
Das läuft unter anderem auf AVRs und ist eigentlich für IR 
Fernbedienungen gedacht, mit sehr robustem Empfangscode. Da auch 
Infrarot Empfänger sehr viele Störungen ertragen müssen, ist die 
Problemstellung nahezu die gleiche wie bei Funk.

Dazu gehört als Sender das IRSND Paket. Damit kannst du ohne grossen 
Aufwand brauchbare Übertragungen programmieren. Der einzige Unterschied 
ist, das du deinen Sender nicht zusätzlich mit 32-40kHz aufmodulieren 
musst wie einen IR Sender.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren