PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funkübertragung ist schlecht



µcFlo
25.12.2011, 12:12
Hi,
ich wollte texte von einem µC zum anderen übertragen, war auch kein Problem. Nun wollte ich das ganze noch über Längere Strecken ohne nerfige Kabel machen und hab mir einfach mal ein Funkset gekauft.

Also habe ich den TX des einen Microcontrollers mit dem Eingang des Senders verbunden und den RX des anderen µC mit dem Ausgang des Empfängers. Nun habe ich den Sender-µC mit dem Bascome Befehl "print" einfach eine 1 übertragen lassen und den Empfänger-µC mit dem Befehl "inkey()" aud die 1 reagieren lassen, in dem eine Led angeschaltet werden sollte.

Doch aus irgend einem Grund Funktioniert es nur mit in 1 von 100 übertragenen Siganlen. Wie kann ich das ändern ?

So hier sind noch ein Paar Infos die man vieleicht benötigt:

Sender-/Empfänger:
868 Mhz
Reichweite beträgt max. 200m
Senderleistung unter 10mW
Ich benutze Antennen die ich aus alten W-lan Routern Ausgebaut habe ca. 8 - 15 cm lang.
Link zur beschreibung hier (http://www.conrad.de/ce/de/product/190939/SENDE-EMPFAeNGERMODULSET-868MHZ/SHOP_AREA_17364&promotionareaSearchDetail=005).

Beispiel Code für den Empfänger:

$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
$baud = 300

Portc.5 = Output
Dim X As Byte

Do
X = Inkey()

If X = 49 Then
Portc.5 = 1
Else
Portc.5 = 0
End If
Loop
End


Beispiel für den Sender:

$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
$baud = 300

Do
print "1"
wait 5
Loop
End



Danke für Eure Hilfe

Kampi
25.12.2011, 13:57
Naja ich würde mal darauf tippen das das Problem daran liegt das du keinen Sender und Empfänger mit UART Interface hast. Du musst deinen Text quasi in einzelne Bits zerlegen, dann senden und nach dem Empfang wieder richtig auswerten und zusammensetzen. Du kannst nicht einfach mit einem Print ein Wort in den Sender reinschieben und dann hoffen das es klappt. Der Controller wird wahrscheinlich zu schnell mit dem reinschieben der einzelnen Bits sein dass der Sender nicht nachkommt. Für sowas braucht das Modul einen Buffer wo die Bits reingeschoben werden und dann nacheinander gesendet werden. Dann gibt es noch ein 2. Problem. Ein "Print" Befehl in Bascom heißt das er den darauffolgenden Parameter sendet + ein Carriage Return und ein Line Feed. Das siehst du dann auch im Terminal, weil wenn du dein Programm mal am Terminal anschaust sieht das so aus:
1
1
1
1
1

Der sendet quasi sowas:
0x0D 0x0A 0x01

Was du mal probieren kannst ist, dass du den Sendepin mal auf High legst und schaust was am Empfänger ankommt. Dort müsste dann auch ein High anliegen.
Ansonsten würde ich dir für eine UART-Funkübertragung die XBee Module empfehlen :) damit kannst du 100m weit funken und kannst die direkt an den Controller anschließen (eventuell brauchst du noch nen Pegelwandler)

Und warum hast du im Programm zum Empfangen ein:
If X = 49
wenn du eine 1 sendest? Du kannst die Variable X auch als String deffinieren und dann:
If X = "1"
schreiben und direkt den Stringinhalt vergleichen.
Aber das ist Kleinkram :)
Probier erstmal den Sendepin am Controller auf High zu legen (ohne Printbefehl usw.) und dann schau mal ob das am Empfänger auch so ist. Wenn das klappt kann man weiter schauen.
So ich hoffe das hilft dir etwas weiter :)

µcFlo
25.12.2011, 16:04
Danke Kampi,
leider funktioniert es meinem Modul nicht. Aber ich kaufe mir jetzt, das von dir vorgeschlagene XBee. Aber eine Fage hätte ich noch: Kennst du einen Anbieter der diese Module in Deutschland verschickt ?
Da ich bis jetzt nur welche aus Amerika gefunden habe und mein Zeitplan sehr eng ist, bedarf es einer kutzen Lieferzeit.


Danke für deine schnelle Antwort

Kampi
25.12.2011, 16:36
Die Funkmodule kannst du bei RS, Reichelt oder Watterrott bestellen. Ich denke mal nicht das du einen RS Account hast also würde ich das hier nehmen:
http://www.watterott.com/de/XBee-Pro-60mW-Serie-25-Chip-Antenne
Und dazu dann noch eine Adapterplatine:
http://www.watterott.com/de/Adapterplatine-fuer-XBee-Module

Alternativ kannst du das XBee auch bei Reichelt bestellen ;) nur dann musst du 2x Versand zahlen wenn du die Adapterplatinen noch haben musst. Und ganz wichtig. Entweder den Controller mit 3,3V betreiben oder einen Pegelwandler für die Strecke Tx Controller -> Rx Funkmodul verwenden.

Zwerwelfliescher
25.12.2011, 17:19
Hi,
ich arbeite zur Zeit auch mir Xbee Modulen. Sie sind wirklich sehr einfach zu verstehen.
Siehe: https://www.roboternetz.de/community/threads/56009-3pi-Wireless

Arbeite doch mit dem Case Befehl.
Hier wird es sehr gut erklärt:
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/ausgaenge_mit_computer/

Gruß
Flexxx

µcFlo
25.12.2011, 18:00
Danke Kampi und Flexx,
ich hoffe ich nerve nicht aber eine letzte Frage hab ich noch. Ich kann eine XBee sowohl als Sender wie auch als Empfänger benutzen. Also kaufe ich zwei mal das Gleiche und gebe ihnen nur andere Funktionen, oder ?

Danke

Kampi
25.12.2011, 18:11
Quark nerven tust du nicht ;)
Und ja du brauchst 2x das selbe Modul. Jedes Modul kann als Sender und Empfänger genommen werden. Du kannst mit denen sogar ein Netzwerk aus Funkmodulen bauen z.B. aus 1 Sender und 4 Empfänger. Aber dazu steht alles im Datenblatt :)
Einstellen musst du an dem Modul nichts mehr. Einfach die beiden anschließen und es läuft. Prorammtechnisch musst du auch nichts beachten. Einfach die Funkstrecke behandeln als ob es ein Kabel ist ;)
Und für alles weitere musst du ins Datenblatt schauen. Nur die Baudrate ist glaub ich auf 9600 begrenzt. Also bei mir klappt es nicht mit mehr. Ka ob man nicht noch was umstellen muss oder so hab da noch nicht nachgeschaut. Aber 9600 reicht auch locker aus wie ich finde.
Ich hab mir z.B. aus nem FT232 Modul und einem XBee einen Adapter für den PC gebaut. Der FT232 erzeugt 3,3V die das XBee versorgen und der FT232 erzeugt auch gleich 3,3V Pegel. So hab ich ein XBee was ich an den PC anschließen kann per USB und hab quasi ein W-Lan Terminal welches aus 2 Bauteilen besteht und superschnell aufgebaut ist :D
Das andere XBee kann ich dann an einen Mikrocontroller anschließen. Ein Spannungsteiler macht aus dem 5V Pegel vom Tx Pin des Controllers 2,5V und gibt die an den Rx vom XBee und den Tx vom XBee hab ich direkt am Rx vom Controller. Die 3,3V für das XBee mach ich mit einem kleinen 3,3V Regler im einfachen Transistorgehäuse.
Wie du siehst brauchen die Module quasi gar nichts an Extrabeschaltung (von der Spannungsquelle abgesehen) und sie laufen 1a :D

µcFlo
25.12.2011, 18:40
Ok danke an alle. Ich hbas jetzt begriffen und bestellt.

Hero_123
25.12.2011, 18:48
Hallo

XBEE Module - naja, gaaaanz so einfach ist es ja nun nicht, denn man sollte ein Modul als Enddevice und ein Modul als Coordinator/Router haben (im Transparent-Modus); außerdem kann man die Dinger problemlos mit z.B 57600Baud betreiben (mach ich jedenfalls...).

Zu Kaufen gibt's die Dinger u.a. bei: http://www.watterott.com


Du benötigst 2 XBEE-Module, ein XBEE Explorer USB-Board (für den PC, damit kannst Du die Module konfigurieren), ein XBEE Explorer Regulated (da kommt das Modul drauf, das an den uC angeschlossen wird, das Ding hat einen Spswandler auf 3V, ist vielleicht nciht unbedingt nötig...)

Zum Konfigurieren der Module (einstellen der Adresse des anderen XBEE-Moduls)benötigt man X-CTu, das findet man aber auf der watterott homepage; da gibst auch die links für X-CTU und den FTDI-Treiber

Im Netz gibts auch Hinweise, wie die Module zu konfigurieren sind

Hero_123