Forum: Mikrocontroller und Digitale Elektronik 433MHz mit AVR


von Robin G. (carotinbombe)


Lesenswert?

Hallo liebe Community,

ich brauche euren Rat wegen meinen Projekt. Zurzeit arbeite ich an einen 
Projekt, wo die Temperatur über einen 433MHz Sender zu einem Empfänger 
übertragen werden soll. Als Mikrocontroller nutze ich den 2x ATmega8.

Im Internet habe ich ein einfaches Protokoll für UART gefunden. War am 
Anfang begeistert und habe mir auf Basis dessen eins geschrieben. Leider 
sind Theorie und Praxis zwei verschiedene paar Schuhe. Bei einer BAUD 
von 1200 werden nicht mal in einem Abstand von 5 cm die Daten richtig 
empfangen. Wenn ich TX und RX verbinde klappt es ohne Störung super, 
doch sobald man das über die Module betreibt kommt da Käse raus.Auch 
habe ich nach Libs geschaut, doch die meisten sind nur auf Arduino 
Boards geeignet.

Ich habe im Internet gelesen, das Manchester-Codierung dafür Sinnvoll 
wäre. Im Studium habe ich diese zwar behandelt, aber ich wüsste nicht 
genau wie man das mit einen Mikrocontroller umsetzt.
Soweit wie ich es verstanden habe, müsste ich mein binäres Signal XOR 
mit einen Taktsignal verknüpfen? Wie verknüpft man denn so etwas ? Gibt 
es Anregungen dazu, evtl. Code-Beispiele ?

Wäre nett, wenn Ihr mir helfen könntet :)

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Robin G. schrieb:

> Ich habe im Internet gelesen, das Manchester-Codierung dafür Sinnvoll
> wäre. Im Studium habe ich diese zwar behandelt, aber ich wüsste nicht
> genau wie man das mit einen Mikrocontroller umsetzt.

Dann wär dein Bafög definitiv verschwendetes Geld (u.a. meines). Das 
Studium hätte dich zumindest in die Lage versetzen sollen, sowas 
triviales ganz schnell alleine herauszufinden...

Schämst du dich nicht wenigstens ein bisschen, das Geld anderer Leute 
sinnlos vergeudet zu haben? Wenn nicht: Du hättest BWL studieren sollen, 
da wärst du richtig gewesen!

von Wolfgang (Gast)


Lesenswert?

Robin G. schrieb:
> Wäre nett, wenn Ihr mir helfen könntet :)

Du kannst sinvoll kein UART-Signal auf einen Sender geben. Der Empfänger 
wird vom Signal überrumpelt, weil er keine Zeit für die Einregelung der 
Verstärkung hat. Dadurch verpasst er ziemlich sicher das erste Startbit 
und synchronisiert dann falsch. Du brauchst eine Präambel.

Es gibt genug Bibliotheken für Funktübertragung

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

benutzt Du dafür rein analog arbeitende Funkmodule, deren Signale erst 
konditioniert werden müssen?

Konntest Du mit diesen bereits anderweitig die Signalübertragung 
nachweisen?

MfG

von Robin G. (carotinbombe)


Lesenswert?

c-hater schrieb:
> Robin G. schrieb:
>
>> Ich habe im Internet gelesen, das Manchester-Codierung dafür Sinnvoll
>> wäre. Im Studium habe ich diese zwar behandelt, aber ich wüsste nicht
>> genau wie man das mit einen Mikrocontroller umsetzt.
>
> Dann wär dein Bafög definitiv verschwendetes Geld (u.a. meines). Das
> Studium hätte dich zumindest in die Lage versetzen sollen, sowas
> triviales ganz schnell alleine herauszufinden...
>
> Schämst du dich nicht wenigstens ein bisschen, das Geld anderer Leute
> sinnlos vergeudet zu haben? Wenn nicht: Du hättest BWL studieren sollen,
> da wärst du richtig gewesen!

Davon abgesehen, dass ich Studium kaum Hardwarenahe Programmierung habe, 
gehe nebenbei arbeiten und beziehe nicht mal Bafög.

von Robin G. (carotinbombe)


Lesenswert?

Christian S. schrieb:
> Hallo,
>
> benutzt Du dafür rein analog arbeitende Funkmodule, deren Signale erst
> konditioniert werden müssen?
>
> Konntest Du mit diesen bereits anderweitig die Signalübertragung
> nachweisen?
>
> MfG

Ich benutze reine 433 MHz Module. Sind normale Steckmodule. Ich glaube 
nicht das die Signale konditioniert sind.

Sind diese hier: 
https://www.amazon.de/Wireless-Sender-Empf%C3%A4nger-Modul-Fernbedienung/dp/B00F6POAEG

Naja ich habe einen UART-USB und habe mit HTerm einfach den Funkraum 
abgehört. Natürlich kam da wie zu erwarten ziemlicher Mist raus, doch 
konnte ich manchmal meinen gesendeten Werte erkennen. Die ganze Reihe 
meiner Daten war manchmal sichtbar und konnte richtig angezeigt werden.

von Wolfgang (Gast)


Lesenswert?

Robin G. schrieb:
> Natürlich kam da wie zu erwarten ziemlicher Mist raus, ...
Dieser "Mist", den du beobachtet hast, ist das Rauschen der Welt, dass 
dein Empfänger über seine Antenne aufgeschnappt hat und mit seinem 
Eigenrauschen vermengt hat.

von derjaeger (Gast)


Lesenswert?

>Schämst du dich nicht wenigstens ein bisschen, das Geld anderer Leute
sinnlos vergeudet zu haben? Wenn nicht: Du hättest BWL studieren sollen,
da wärst du richtig gewesen!



Schlechter Tag heute Kollege?

Beitrag #5637778 wurde von einem Moderator gelöscht.
Beitrag #5637784 wurde von einem Moderator gelöscht.
Beitrag #5637788 wurde von einem Moderator gelöscht.
von Joachim B. (jar)


Lesenswert?

Wolfgang schrieb:
> Du kannst sinvoll kein UART-Signal auf einen Sender geben

komisch meine erste IR Fernbedienung wurde über UART hinausgeschickt
IRDEO http://pofahl.de/irdeo/

also einer liegt falsch und da IRDEO funktionierte über UART muss deine 
Aussage wohl unzutreffend sein.

Zurück zum TO gerade für Arduino gibt es virtual wire und einen Haufen 
Hardware 433MHz 868MHz RFM12 und den kompatiblen Nachfolger RFM69.
Dann gibt es noch wlan Shields und das Projekt Lora
https://www.lora-wan.de/

auch ESP32 mit Lora in die Arduino IDE integriert.

Robin G. schrieb:
> Im Studium habe ich diese zwar behandelt

also ein Studierter und dann klemmts bei Dinge die schon interessierte 
Schüler umsetzen?

c-hater schrieb:
> Dann wär dein Bafög definitiv verschwendetes Geld (u.a. meines).

Nie dachte ich c-hater mal zuzustimmen, warum outen sich hier angeblich 
immer wieder Studierte, das hätte ich kleinlaut verschwiegen und mich 
als 10-jähriges Mädel vorgestellt.

Beitrag #5637801 wurde von einem Moderator gelöscht.
Beitrag #5637806 wurde von einem Moderator gelöscht.
von Steffen H. (avrsteffen)


Lesenswert?

Hallo Robin,

versuche einfach solch Leute wie c-hater zu ignorieren.

Um auf deine Frage eine Antwort zu geben, hab ich verschiedene 
Forumsbeiträge hier gefunden.
Zum Beispiel hier:
Beitrag "Re: Funkmodule, RS232, manchester code"

oder das hier:
https://www.mikrocontroller.net/articles/Manchester

Am Besten, finde ich jedenfalls, ist der Manchester Code im Artikel zum 
125kHz RFID erklärt. Schau dort mal unter der Softwarebeschreibung-
https://www.mikrocontroller.net/articles/RFID_T%C3%BCrmodul

Gruß Steffen

von Stefan F. (Gast)


Lesenswert?

Die meisten einfachen Funkmodule brauchen eine Menge Zeit, um sich 
einzuschwingen. Meistens mehrere hundert Millisekunden.

Dann ist wichtig, dass die Frequenz des Nutzsignals in dem Bereich 
liegt, den das Modul unterstützt.

Weiterhin ist es bei vielen Modules wichtig, dass das Nutzsignal genau 
so lange auf High Pegel liegt, wie es auf Low Pegel liegt, weil sich 
sonst Koppelkondensatoren bis ans Limit aufladen und dann wird das 
Signal bis zur Unkenntlichkeit verzerrt. Daher zum Beispiel die 
Manchester Codierung.

Viele Empfänger empfangen Rauschen, solange der Sender inaktiv ist oder 
außer Reichweite.

von Wolfgang (Gast)


Lesenswert?

Joachim B. schrieb:
> Wolfgang schrieb:
>> Du kannst sinvoll kein UART-Signal auf einen Sender geben
>
> komisch meine erste IR Fernbedienung wurde über UART hinausgeschickt
> IRDEO http://pofahl.de/irdeo/

Vielleich hätte ich bei meinem Satz ergänzen sollen: "... und erwarten, 
dass die Daten 1:1 beim Empfänger hinten wieder raus kommen."

Natürlich kannst du Dinge, wie Präambel, Gleichspannungsfreiheit und 
dergl. auch mit einem UART hin fummeln, aber es funktioniert nicht, am 
einen Ende Nutzdaten mit HTerm rein zu tippen und am anderen Ende diese 
Daten wieder direkt mit HTerm zu empfangen.

von Christian S. (roehrenvorheizer)


Lesenswert?

"Ich benutze reine 433 MHz Module"

Ja, für Puristen sind diejenigen, die an Reinheit nicht zu überbieten 
sind,  die richtigen, gleich nach komplett selbst aufgebauten 
VHF-Geräten.

Mit diesen Modellen habe ich keine Erfahrung und kann deshalb nur zu 
RFM12, RFM69 und Konsorten raten, da liegt dann alles digital vor.


Du bräuchtest mindestens noch ein Oszilloskop, um den Ausgang des 
Empfängers genauer zu untersuchen. Aber immerhin war das Gesendete 
bereits zu erkennen.

"
sinnlos vergeudet zu haben? Wenn nicht..."
Den wird der Nikolaus zur Rechenschaft ziehen.

MfG

: Bearbeitet durch User
von Christian S. (roehrenvorheizer)


Lesenswert?

Möglicherweise sind die Module nicht gut aufeinander abgeglichen. Wenn 
Du mehrere Paare gekauft hättest, hättest Du vielleicht passende gehabt.

Vertrauenserweckend ist die Beschreibung nicht:

Der Sender Modul Parameter Technologie:
Betriebsspannung: weder im 3V 12V
Arbeitsstrom: ≤ 40mA (12 V) Max, ≤ 9mA (3 V) min
Frequenz Arbeiten: 315MHz-433.92mhz, Motiv Frequenz ist.
Resonanz Modus: Schallwelle Resonanz (Schwert)
Sendeleistung: 25mW (315 mhz bei 12 V)
Modulation Modus: Ask/Ook
Frequenz Auflösung: + 150 kHz (max)
Velocity: ≤ 10Kbps
Codes Selbstklebende-Owned: Negativ
Size: 31 millimeter X20mm X8mm
RX technischen Spezifikationen:
Betriebsspannung: 5. 0VDC + 0. 5v
Arbeitsstrom: ≤ 5. 5mA (5. 0VDC)
Arbeitsprinzip: superregeneration chip Einzelbettgröße Empfang
Art der Arbeit: Ook/ASK
Frequenz Arbeiten: 315MHz-433.92mhz, Motiv Frequenz ist.
Bandbreite: 2 mhz (315 mhz, dass Ergebnis muhend Sensibilität von Test 
bei 3dBm)
Betriebstemperatur: weder im 65 °C + -20 °C 
Empfindlichkeit (Magnesits): - 103DBm (50 ω)
Ausgang signal: TTL signal Übertragung transparent
Empfindlichkeit: excel¨C100dBm (50 Ω)
Übertragung von Velocity :< 9. 6Kbps (bei 315 mhz und - 95dBm)
Size: 18 millimeter X7mm

von Beo Bachta (Gast)


Lesenswert?

Christian S. schrieb:
> Mit diesen Modellen habe ich keine Erfahrung

... und daher solltest du nicht so laut reden, denn diese
Module in Verbindung mit der bereits im Nebensatz erwähnten
VirtualWire Lib funktionieren ganz hervorragend.

Nur wissen einfach viele Leute nicht damit umzugehen.

Christian S. schrieb:
> Möglicherweise sind die Module nicht gut aufeinander abgeglichen.

Nein.

von Joachim B. (jar)


Lesenswert?

alle 433 MHz Sender die ich kaufte arbeiten zufriedenstellend, nur die 
billigsten Empfänger taugen nichts, man müsste wenn nicht RFM und Co 
genutzt werden auf Superheterodyne Empfänger ausweichen, bei beiden 
passende Antennen nicht vergessen, weiter kommen Lora Module.

von Gerhard O. (gerhard_)


Lesenswert?

Robin G. schrieb:
> Zurzeit arbeite ich an einen
> Projekt, wo die Temperatur über einen 433MHz Sender zu einem Empfänger
> übertragen werden soll. Als Mikrocontroller nutze ich den 2x ATmega8...

Robin,

falls Du erste Erfahrungen mit einfachen 433Mhz Modulen sammeln willst, 
rate ich Dir folgendes:

Ich setze jetzt voraus, dass Deine Module auf ASK oder OOK Modulation 
beruhen. Diese Empfänger verwenden einen sogenannten Bitslicer der 
zuerst einen Preambel zum festlegen des Datenschwellenwertes benötigt. 
Der Bitslicer ist einfach ein Analog Comparatorder am einen Eingang die 
Rohdaten vom Empfaenger bekommt und am zweiten Eingang eine stark 
gefilterte Version dieser Daten. Wenn nun ein Preamble gesendet wird 
stellt sich der DC Wert am gefilterten Dateneingang auf den Mittelwert 
ein. Wenn jetzt die Daten gesendet werden, werden die Daten mit dem 
Mittelwert verglichen und der Comparator gibt die Daten aus die dann der 
uC weiter verarbeiten kann.

Die Daten werden vom Sender meist als variable Bitlaenge kodiert. Eine 
logische eins hat z.B. zwei Mal die Laenge im Vergleich zu einer eins. 
Oft werden rund 333us als Zeiteinheit verwendet. Eine 1 ist dann 333us 
klang und eine Null rund 670us. Jedes Bit Symbol hat eine Standardlänge 
von 1ms. Man verwendet diese Art der Kodierung als Ersatz von Manchester 
um DC Shifts durch veränderliche Bitfolgen auszugleichen um einfache 
Dekodierer wie Bitslicer verwenden zu können. Durch diese Einfachheit 
und rohe Verarbeitung schleichen sich in der Regel die Fehler ein die Du 
schon beim UART beobachtet hattest. Die Dekodierung erfolgt also am 
besten in Software.

In der Empfänger Firmware wird anstatt des UARTS wegen der zitierten 
Probleme oft ein Timer Interrupt verwendet der die Daten am uC Eingang 
so oft wie möglich sampelt und dann bewertet. Durch sinnvolles 
Vergleichen der Werte stellen sich dann die Einser und Nullen heraus und 
können in einen Puffer aufgezeichnet werden. Da die Bits zeitkodiert 
sind ergeben die längeren Symbole groessere Zahlenwerte als die kurzen. 
Einfacher Test erlaubt dann die 1 und 0 dann zu erkennen.

Nun zum praktischen Teil: Wenn Du zufällig Arduino Bords hast, lade Dir 
eine Wireless Bibliothek herunter die es für diese Funkmodule gibt und 
probier die beigelegten Beispiel aus. Wenn das dann alles funktioniert 
sehe Dir den Source Code der LIBs an um zu sehen wie das im Einzelnen 
gemacht wird. Dadurch kann man auch viel lernen.

Für den Anfang ist das doch ein bisschen kompliziert um das alles selber 
schreiben zu wollen. Durch Experimentieren, Messen kann man auch mit 
einem solchen "Referenz Design" viel lernen. Da brauchst Du Dich nicht 
schämen:-)

https://randomnerdtutorials.com/rf-433mhz-transmitter-receiver-module-with-arduino/

Ich habe das vor ein paar Monaten selber gemacht um schnell eine 
Funktemperatur Übermittlung mit diesen Module auszuprobieren und es hat 
bestens geklappt. In ein paar Minuten hatte ich dann die Sourcen für 
meine Zwecke modifiziert.

Die gezeigten Funkmodule sind nicht gerade die besten und deren 
Reichweite ist begrenzt. Für kurze Entfernungen sind sie aber OK. 
Antennen sind halt wichtig. Die Module von LINX, z.B., sind wesentlich 
zuverlässiger, kosten aber auch mehr.

So! Ich hoffe das hilft Dir weiter.

Gerhard

von Christian S. (roehrenvorheizer)


Lesenswert?

> ... und daher solltest du nicht so laut reden, denn diese
> Module in Verbindung mit der bereits im Nebensatz erwähnten
> VirtualWire Lib funktionieren ganz hervorragend.
>
> Nur wissen einfach viele Leute nicht damit umzugehen.
>
> Christian S. schrieb:
> Möglicherweise sind die Module nicht gut aufeinander abgeglichen.
>
> Nein.



Ich wollte Möglichkeiten aufzeigen, die Meister Robin vielleicht noch 
nicht betrachtet hat. Es scheint so, als könntest Du genau die beiden 
Module, die bei Robin auf dem Tisch liegen direkt beurteilen. Denn von 
genau diesen berichtet er, es gäbe unerwartete Schwierigkeiten.

MfG

von Beo Bachta (Gast)


Lesenswert?

Christian S. schrieb:
> Denn von
> genau diesen berichtet er, es gäbe unerwartete Schwierigkeiten.

Wenn er irgendeine Art von UART-Übertragung damit erreichen will
dann wird das natürlich nicht funktionieren. Garantiert nicht!

Daher der Hinweis die VirtalWire Lib zu verwenden.

Aber soweit ich jetzt erkennen kann ist er noch lang nicht
da angekommen.

von Beo Bachta (Gast)


Lesenswert?

Christian S. schrieb:
> Vertrauenserweckend ist die Beschreibung nicht:

Das sind Beschreibungen die fünf mal durch die Chinesisch-
Englische Übersetzungs-Mangel gewurschtelt worden sind.

An der prinzipiellen (vernünftigen) Funktionsweise der
Module wie sie der Erfinder kreirt hat ändert das nichts.

von Christian S. (roehrenvorheizer)


Lesenswert?

> An der prinzipiellen (vernünftigen) Funktionsweise der
> Module wie sie der Erfinder kreirt hat ändert das nichts.


Ja, wie gut sie im Sinne des großen kreativen Erfinders funktionieren, 
weiß man aber erst, wenn man mit ihnen bereits etwas gut 
funktionierendes aufbauen konnte.
Ich hätte gerne in der Beschreibung etwas von Quarz, PLL, Genauigkeit 
gelesen und nicht
" dass Ergebnis muhend Sensibilität von Test"


Ich habe immer noch keine da liegen...


sonst würde ich muhend mal eben etwas damit aufbauen, und wenn es nur 
eine Gartenzwergbeleuchtung ist.

mfG

: Bearbeitet durch User
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.