Forum: Mikrocontroller und Digitale Elektronik Funkübertragung programmieren


von Philipp K. (flipsie)


Angehängte Dateien:

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

von дампфтроль (Gast)


Lesenswert?

Und welches waren denn die bisherigen Schritte zum Fehler finden ?

von Michael U. (amiga)


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

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


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.

von Philipp K. (flipsie)


Angehängte Dateien:

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

von Jim M. (turboj)


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.

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


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.

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.