PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Signale über Funk von Atmega8 zu Atmega8 senden?!



NRG
07.12.2007, 13:47
Hallo!
Ich habe ein neues Projekt in Planung. Dazu möchte ich mithilfe des Funksendesets von Conrad von einem Atmega8 zum anderen Signale senden. Das ganze soll soetwas wie eine Funkfernbedienung werden.

Das Funkset:
Sender:
http://img165.imageshack.us/img165/3169/empfnger1eb.jpg
http://img165.imageshack.us/img165/7671/senderschaltplan4xf.jpg
Empfänger:
http://img165.imageshack.us/img165/7122/sender3cr.jpg
http://img165.imageshack.us/img165/9674/empfngerschaltplan6ax.jpg

So nun meine Frage, ist es möglich das zu verwirklichen oder benötige ich erst noch nen encoder decoder bla bla bla...

Gruß

Nrg :-({|=

Hubert.G
07.12.2007, 21:04
Zu verwirklichen ist das schon, auch ohne de-und encoder. Ob es ganz problemlos geht kann ich nicht sagen. Am besten mit dem UART versuchen.

NRG
07.12.2007, 22:02
okay jetzt müsste man nur noch wissen was ein UART ist ^^ bzw. verstehen...
Ich hätte auch einen Decoder Encoder da falls es damit einfacher ginge... \:D/

Also ich hätte hier einen Encoder bzw. Decoder (Ht-600/ht-614):
http://img239.imageshack.us/img239/9706/177342sz00fbeps0sl.jpg

_werwurm_
07.12.2007, 23:07
Hallo!

Folgendes Problem könnte auftreten: Aus den meisten preisgünstigen Empfängern kommt immer "Datenmüll" raus wenn nix empfangen wird. Um einen encoder/decoder wird man also nicht herum kommen.

Außerdem muß das Eingangssignal für den Sender meist gleichspannungsfrei sein. Es müssen also auf der digitalen Leitung die Einsen und Nullen über eine gewisse Zeit gleichverteilt sein sonst klappt senden und/oder Empfangen nicht.

Praktisch löst man letzteres der Einfachheit halber per Manchestercodierung. Man sendet also für jedes zu übertragende Bit immer zwei Bit. Dadurch halbiert sich leider die übertragbare Datenmenge pro Zeit. Wenn Bandbreite also ein Problem ist dann muß man zu ausgefuchsteren Codierungen greifen.

Ob der Empfänger gerade gültige Daten oder nur Rauschen empfängt kann man durch ein geeignetes Protokoll unterscheiden. Meist wird erst eine "Präambel" aus 01010101010101..etc. gesendet um den Empfänger einrasten zu lassen und danach dann ein Startframe (etwa eine "magic number" und die größe des folgenden Paketes in Bytes). Die Präambel hilft auch beim Decodieren um den Anfang der Übertragung zu finden.

Hubert.G
08.12.2007, 04:01
Wenn du aber ohnehin von Mega8 zu Mega8 übertragen willst, dann kannnst du all das mit diesen realisieren. Du brauchst keine zusätzlichen en- decoder, diese µC können das alles. Es ist nur etwas Software notwendig.
Aber deiner Fragestellung nach bist du nicht sehr versiert was µC angeht. Ein UART ist die serielle Schnittstelle des Mega8. Mit dieser kannst du mithilfe eines MAX232-Pegelwandler eine Datenverbindung zu einem PC herstellen. In deinem Fall, ohne MAX232 verwendest du den UART für den Funk.

NRG
08.12.2007, 08:54
Ahja... d.h. also ich kann mit dem Mega8 die Signale erzeugen, die ich dann über das Funksendemodul zum empfänger schicke. Habe ich das richtig verstanden!?
Könnte mir von euch dann bitte jemand mal nen Beispielcode schicken?! O:)
Wäre super!

Gruß

Nrg

Hubert.G
08.12.2007, 09:14
Für den UART gibt es eine fertige Lib. von P.Fleury http://jump.to/fleury falls du in C progst.

NRG
08.12.2007, 09:32
Ne leider nicht progge mit Bascom ;-)

Hubert.G
08.12.2007, 09:47
Da kann ich dir nicht helfen, aber es wird auch da sicher was fertiges geben.

Dirk
08.12.2007, 09:49
Hallo NRG,

das Funkset, das du da nehmen willst, ist nicht ohne. Auf der Hardware-Seite brauchst du einen Ausgangstreiber am Empfänger (einfach 2 Transistoren).

Auf der Softwareseite must du Manchester-codieren. Dafür gibt es hier im Forum schon eine Bascom-Lösung. Geh mal auf die Suche.

Das Funkset direkt über UART, d.h. über die serielle Schnittstelle, zu verwenden haben hier auch schon einige probiert. Dabei handelt es sich aber nicht um eine Manchester-codierte Übertragung, so dass man mit viel Müll und Fehlern rechnen muss. Eigentlich ist dieses Set für eine direkte serielle Übertragung ohne ein eigenes Protokoll nicht verwendbar.

Gruß Dirk

NRG
08.12.2007, 09:52
Hallo!
Ja mein Vorhaben ist jetzt ja nicht so schlimm wenn es Fehler enthält.. Ich möchte mir eine Funkfernbedienung bauen, mit der ich am empfänger dann leds an und ausschalte, die je nachdem dann blinken leuchten etc.

Dirk
08.12.2007, 13:36
Ja mein Vorhaben ist jetzt ja nicht so schlimm wenn es Fehler enthält.. Ich möchte mir eine Funkfernbedienung bauen, ...

Ok, dafür wird das gehen. Aber es bleibt folgendes: Man braucht ein Protokoll, um sicherzustellen, dass der Empfänger nur auf den eigenen Sender reagiert und nicht auf iregndeinen Müll.

Gruß Dirk

Netbird
08.12.2007, 15:13
Hallo,

muss es denn Funk sein? Du willst doch etwas sehen, also gibt es vermutlich eine Sichtverbindung. Dann bietet sich gerade mit BASCOM eine RC5- Bedienung an. Funktioniert sehr leicht und ist sehr billig.

Willa
08.12.2007, 19:01
Wenn du genug Geld hast und es richtig einfach haben willst nimm doch einfach 2 Easy Radio Transceiver. Kostet ca. 32 Euro das Stück und ist kinderleicht in Bedienung und An-/ Einbau.
Viele Grüße,
William

Besserwessi
08.12.2007, 20:06
Wenn die Datenrate nicht zu hoch ist, sollte das auch ohne Manchester codierung gehen. Man könnte die UART benutzen um die Daten aufzuarbeiten. Eventuelle nur 4 bits + Prität und dazu ein paar extra Stopbits (2-3) und natürlich eine passende Datenrate. Wahrscheinlich gibt es einen recht breiten bereich von mögliche Darenraten, aber sowohl zu hohe als auch zu nierdrige können Probleme machen.
Eventuell auch mal in der Anleitung zu den Modulen nachlesen was vorgeschlagen ist, und was ggf. erlaubt oder verboten (ohne Amatuerfunklizenz) ist.

NRG
08.12.2007, 22:02
hm... das problem ist halt auch dass ich ziemlicher Laie in diesem Bereich bin! ;-) am liebsten einfach send in bascom und receive :D aber so easy wird des nicht gehen.
Wegen der Sichtverbindung: Das ganze ist so geplant, in ein RC Auto soll der Empfänger, mit dem Sender schalte ich dann entweder die Unterbodenbeleuchtung, die normale Beleuchtung etc. ein.

Gruß

NRG

PS: wer mal so nen UART code hätte wäre sehr dankbar!

Willa
08.12.2007, 22:42
Dann nimm doch das easy radio! ich bin auch blutiger anfänger, aber damit eine stabile verbindung bis 200m hinbekommen kann wirklich jeder! Ich war echt begeistert von dem modul...
viele grüße,
William

NRG
09.12.2007, 14:48
Hi!
Du meinst also das hier:

http://www.shop.robotikhardware.de/shop/catalog/images/easyradio.gif

Aber davon benötige ich dann zwei Stück oder?! Also ist eins jeweils sender bzw. empfänger?!

Willa
10.12.2007, 23:48
Hi!
Kommt drauf an was du machen willst. Wenn du von einem µC nur zum anderen senden willst und nicht umgekehrt, dann benötigst du einen Transmitter und einen Receiver insgesamt. Wenn beide µCs jeweils senden und empfangen sollen, dann benötigst du insgesamt 2 Transceiver.
Viele Grüße,
William

nikolaus10
11.12.2007, 08:59
Nimm doch FunkSteckdosen aus dem Baumarkt.
Fuer 10 Euro ein Sender und und vier Steckdosen.
Bastellspass hast du dann auch noch :-)

NRG
11.12.2007, 15:26
@ nikolaus10: ne du danke :D den spaß hatte ich schonmal.. da hab ich mir ne Türklingel von TCM gekauft... das war was des zum laufen zu bringen... aber immerhin es läuft und hat spaß gemacht! :-)

nollsen
14.12.2007, 16:19
hi,

wenn du bascom nimmst brauchst du überhaupt keine uart bibliothek, denke bascom müsste da schon alles drinhaben. da reicht wohl ein print "hallo Welt" um einen Text auszugeben.
tipp: UART ist praktisch das gleiche wie RS232, USART oder "Serielle Schnittstelle"

NRG
14.12.2007, 21:53
Hi!
Und wo "printet" er mir das dann hin also an welchen pin?!
bzw. wie rufe ich es mit dem anderen mega 8 dann ab?! mit "receive"??

nollsen
15.12.2007, 20:36
der mega8 hat zwei spezielle uart pins, einfach mal im datenblatt nachschauen.
du kannst ein programm schreiben das an den uart irgendwelche signale sendet, beispiel: https://www.roboternetz.de/wissen/index.php/Bascom#Das_ber.C3.BChmte_Hello_World_Programm_in_B ascom
wenn du den uart mit einem max232 auf rs232 level konvertierst kannst du die signale am pc sehen.

wenn du zwei mikrocontroller verbinden möchtest, dann verbinde rxd des einen mikrocontroller mit dem txd des anderen. (txd: daten gehen heraus, rxd: daten kommen rein).
wie du das in bascom schreiben kannst:
https://www.roboternetz.de/wissen/index.php/Bascom_UART_Input