Hallo Leute,
ich will eine Funkverbindung zwischen zwei Microkontrollern aufbauen mit
den 433MHz-AM-Funkmodulen von Conrad (Best. 130428-31, 15 Eur für
Sender und Empfänger).
Ich weiß, die Dinger sind billig gebaut. Dafür sind sie auch vom Preis
billig...
So, meine Problem: WIE schließe ich die Dinger richtig an ?
Fangen wir mit dem Sender an:
In der Anleitung steht: Betriebsspannung 3 bis 12V DC, Eingangssignal:
Amplitude abhängig von der Größe der Betriebsspannung des Senders z.B. 3
bis 15 Vss bei 12 V/DC
Was meine die mit Vss ? Und was heißt das für den Pegel des
Eingangssignal ? Auf das Beispiel bezogen: Das Eingangssignal darf
zwischen 3 un 15 V sein. Wird dann 3 V als "0" und 15 V als "1" gesendet
? ODER, was ich eher glaube, alls zwischen 3 und 15 V wird als "Sender
an" interpretiert. Was ist nun richtig ? Kann ich den Ausgang eines
80C51 über einen Inverter direkt an das Sendermodul hängen ?
(Versorgungsspannung wäre 5V und das Eingang-Signal hätte 5V).
Und nun der Empfänger:
Anleitung sagt: Betriebsspannung 5V / DC , Ausgangssignal Hi + 0,8V; Lo
0V.
So. 0,8 V ist nicht mehr TTL, WIE verfütter ich das meinem 80C51 ?
Sollte man einen Schmitt-Trigger (74HC14) dazwischen hängen ? Oder einen
anderen Typ ? Oder wie bekomme ich sonst das Signal auf TTL-Pegel ?
Sollte man über einen Kondensator das Eingangssignal filtern ? Die
Empfänger haben ja immer eine gewisse Einschwingzeit in der sie
"Rauschen". Wie groß sollte man den Kondensator bemessen ? Ich würde den
Kondensator dann zwischen Ausgangsignal und Masse legen, oder ?
Fragen über Fragen, ich hoffe nicht all zu blöde und nervend.
Angehängt habe ich die Originalanleitung von Conrad.
Auf Antwort hoffend,
vorab schon mal dankend
Tilman Wenning
Ich denke die Übersetzung ist nicht so gut.
Am besten du probierst es aus. Empfänger Betriebsspannung 5V
Low 0-0,8V High 5V-0,8V.
Sender Betriebsspannung 5V.
Low 0V
High 5V.(entsprechend der Betriebsspannung).
Einschwingen des Empfängers wird mit ein paar Bits vorweg gemacht.
Ich habe den Empfänger an einer PC-Audiokarte getestet. Als Sender
diente ein Funkthermometer. Was ich gesehen habe sah gut aus.
Hi,
die Bedienungsanleitung ist leider wirklich nicht sehr
bennutzerfreundlich gestaltet, aber ich glaube ich kann deine Fragen
beantworten, da ich selbst vor kurzem mit diesen Modulen gearbeitet
habe.
Sender:
Den kann man mit einer Betriebsspannung zwischen 3 und 12V betreiben.
(VDC 3...12V)
Den Dateneingang kann man mit Pegeln zwischen 3 und 15V speisen ( 0V =
logisch 0; 3-15V = logisch 1)
Empfänger:
Versorgungsspannung 5V
Am Ausgang liegen 0V bei log. 0 und 5V bei log. 1 an, hat also TTL
Pegel.
Ich hatte mit den Eigangspegeln eigentlich weniger Probleme als mit der
Reichweite und der Datenrate, ich schätze mal das liegt daran das ich
den Sender nur mit 3V versorge.
MfG
GT
Oki, dann hat auch der Empfänger TTL-Pegel. Für was bekommen Übersetzer
Geld ?
Wie habt ihr die an den Mikrocontroller angeschlossen ? Direkt, über
einen Inverter, über einen Schmitt-Trigger ?
Vielen Dank schon mal für die Antworten !
Bis dann, Tilman
Hallo!
Ich will mir auch diese Module kaufen. Offen ist aber noch die Frage
nach der Antenne: Brauchen Sender/Empfänger eine oder ist die schon
integriert? Und wenn, was für eine müsste das sein? Kennt sich da jemand
aus?
Die Software sollte nicht sehr kompliziert werden. Wichtig ist halt nur,
dass die Bits im Manchester-Code verschickt und empfangen werden.
Ich denke, dass ginge so:
Vor jedem Byte (oder Paket) sollte ein (oder zwei?) Start-Bit geschickt
werden (0 oder 1 - egal), damit der Empfänger nicht das erste Datenbit
verschluckt. Der Empfänger kann dann die 'Clock' messen (= Zeit zwischen
zwei Pegel-Wechseln) und dann entscheiden, wann ein Bit ankommen muss.
Dann nur noch die n Bit einlesen.
Bin aber auch für jede Anregung dankbar.
Gruß
Hanno
Hi,
im Sendemodul ist eine Antenne integriert, es kann aber auch eine
externe Antenne angelötet werden. Dazu kann man einen einfachen Draht
der Länge lambda/4 verwenden.
Der Empfänger hat bereits eine Antenne, die als normaler Draht
ausgeführt ist.
Habt ihr schon einmal daran gedacht für das Senden und Empfangen einfach
die UART zu verwenden? Den Sender an den TX Pin und den Empfänger an den
RX Pin, dann hat man wenig aufwand mit der Codierung der Daten und kann
einfach die RX und TX Interrupts auswerten.
MfG
GT
@Gerd
Danke für die Info. Damit machen die für mich das Rennen.
Ich weiß nicht, ob das mit dem UART klappt. Ich habe irgendwo gelesen,
dass das Manchester-Code sein muss, damit der Empfänger weiß, was 1 und
was 0 ist. Könnte damit zusammenhängen, dass ja der "Pegel", in diesem
Fall also die Feldstärke, für eine "1" stark unterschiedlich sein kann.
Sicher weiß ich das aber nicht, weil ich die Module nicht genau kenne
und auch kein Amateurfunker bin :)
Gruß
Hanno
Der Sender sendet bei einer 1 am Dateneingang ein 433MHz Funksignal, bei
einer 0 macht er nichts. Der Empfänger erkennt also nur ein präsentes
433MHz Funksignal als 1, alles andere wird von ihm als 0 interpretiert.
GT
>Der Sender sendet bei einer 1 am Dateneingang ein 433MHz>Funksignal, bei einer 0 macht er nichts. Der Empfänger erkennt>also nur ein präsentes 433MHz Funksignal als 1, alles andere>wird von ihm als 0 interpretiert.
Ein ganz entschiedenes JEIN.
Wenn der Sender sendet, ist der Pegel nach einigen Millisekunden auf 1.
Wenn der Sender nichts sendet (0) dann ist der Pegel des Empfängers
undefiniert, d.h. er schwank willkürlich zwischen 1 und 0. Deswegen kann
man eine 1 nur daran erkenne das über einen längeren Zeitraum eine 1
anliegt. Deswegen ist ein prüfsummegesichertes fehlertollerantes
Protokoll unerläßlich.
Bezüglich des Timings (wie lange man warten muß um eine 1 sicher zu
erkennen etc.) werde ich hier was schreiben wenn ich es ausgiebig
gestestet habe.
Bis dann
Tilman Wenning
Verstehe ich das richtig, dass der Empfänger seine Empfindlichkeit quasi
dauernd anpasst? Also, wenn eine 1 gesendet wird, passt er sich in ein
paar ms daran an, wenn die 0 kommt, nimmt er u.U. auch das nach einiger
Zeit als 1 an?
Das wäre der Fall, wo Machester-Code die Lösung bringt, indem 1 und 0
dauern wechseln.
In jedem Fall muss die Übertragung aber per Prüfsumme gesichert werden.
Da stimme ich voll zu.
Gruß
Hanno
Ob er seine Empfindlichkeit anpaßt weiß ich nicht. Bis jetzt habe ich in
einem simplen Versuch (Sender bekommt per Taster seinen 5V-Pegel,
Empfänger hat 2 Leds für Pegel 0 und Pegel 1)
folgendes beobachtet:
Wenn der Sender nicht sendet, wechselt der Empfänger--Pegel ständig
zwischen 0 und 1, verharrt oft auf der 1 !!! (da werden sicher
irgendwelche andern Geräte auf 433MHz senden)
Sobald ich die Sendertaste drücke, fängt der Empfänger wild zwischen den
beiden Pegeln zu wechseln bis es sich wieder auf 1 stabilisiert (Zeit <
1 sek !! ) Wenn er vorher lange auf 1 war zuck er nur mal kurz zur 0 und
bleibt dann wieder bei 1.
Wenn ich dann den Taster loslasse, fällt der Pegel wieder auf 0 um dann
nach einen kurzen Moment auf 1 wider zu gehen.
Aber wenn ich mir das jetzt so überlege. Ein anpassen der
Empfindlichkeit würde das Verhalten erklären.
D.h. wenn man andere Geräte im Haus hat die auch im 433MHz Band senden,
hat unser Empfänger immer einen Pegel 1 und das unser Sender sendet
erkennt man an kurzen Pegel-Wechseln. Mhh. jo. Das schreit alles nach
Manchester.
(Vielleicht etwas unzusammenhängend, ich bin am überlegen :-D ) Aber ich
werde meine Ergebisse hier nochmal berichten.
Bis dann,
Tilman Wenning
Hallo zusammen!
Habe mir so ein Sender-Empfängersystem gestrickt.
Empfänger: Grundzustand Sender sendet 0-> Das Ding rauscht ohne Ende
(Pendelempfänger?!); Sender sendet eine 1 -> Der Empfänger zeigt "kurz"
eine 1 und rauscht danach wieder.
Exkurs: Der Empfänger benötigt ein Freqenzgang zwischen 500hz und 2k um
eindeutig zu eine 1 zu identifizieren (Datenblatt). Übersetzt bedeutet
das, daß spätestens bei einer gesendeten 0 eine 500'stel Sekunde später
eine 1 gesendet werden muß sonst herrscht wieder undefiniertes Rauschen
(schnellstens jedoch nach einer 2000'stel Sek).
Um zu gewährleisten das auch bei einer 0 ein definierter Zustand
herrscht habe ich ich also auch bei einer 0 eine 1 gesendet, dann
"lange" gewartet (eine 500'stel sekunde) bis zum nächsten bit, bei einer
gesendeten 1 entsprechend "kurz" (2000'tel sek).
Auf der Empfangsseite braucht man dann nur auszuwerten wieviel Zeit
vergeht bis nach einer eins wieder eine eins anliegt (Timervariable
incrementieren; (int0 unmittelbar an Empfänger Ausgang)
Interuptauslösung bei steigender Flanke timvervariable in int0 auswerten
und zurücksetzen. Um Fehlertoleranter zu sein kann man die Timervariable
innerhalb von Grenzwerten auswerten)
Bis zu dieser Stelle ist die Sache mit den nullen und einesn geklärt.
Aber.... Durch das Rauschen des Empfängers kommen ja in einem fort Werte
an-> also zuersteinmal 9 Einsen senden "Startseqenz". Aber.... Durch
andere Sender während der Übertragung kommen undefinierte werte zustande
-> also jedes übertragene Byte "manchastern" und das Byte nocheinmal
senden.
Nach diesen diesen Handständen habe ich nach einigen Stunden Probeläufen
noch keine Fehlübertragung festgestellt so daß ich auf Prüfsummen
verzichtete.
PS1. habe noch eine Seite gefunden wo der Autor angibt daß er den
Empfängerpelgel einfach per Transistor (DataOut an Basis angehoben hat
war bei mir nicht nötig)
PS2. Ich habe einen LCD-Display zur Darstellung der übertragenen Daten
während der Pfüfzeit angeschlossen das hat ungemein geholfen
PS. Mein Projekt läuft noch
Hallo zusammen!
Welche Reichweiten? Auf dem Datenblatt stehen max 50m. Ich habe gleich 5
Modulpaare bestellt und dummerweise alle auf einmal ausgepackt so daß
ich nicht mehr zuordnen konnte welche Paare ursprünglich
zusammengehörten, so daß ich eine zusätzliche Unsicherheit hierdurch
geschaffen habe, denn die module haben sich in einem Fachwerkhaus nur
ca. 10-12m weit unterhalten können. Die die Reichelt-Module erzielten
(jeweils als Empfänger und Sender einzeln gekauft) allerdings mit dem
doppelten Preis deutlich bessere Ergebnisse (ca. 20m). Einen
Freilandversuch habe ich noch nicht gestartet.
PS. Conradmodule (ca. 15 und Reicheltmodule ca. 15 + 15) konnten sich
ganz gut miteinander unterhalten.
mfg johannes