mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR und Funkprotokoll


Autor: AntonWert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte einige Daten zwischen 2 AVR's per Funk übertragen. Die
nötige 433MHz Hardweare hab ich schon, bin aber noch auf der Suche nach
einem guten Protokoll für die Übertragung (incl. Manchester Kodierung)
Hat da einer einen Tipp?

Autor: Pöschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

eine Frage, was für Hardware nimmst du? Wollte sowas auch mal bauen.

Autor: AntonWert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfache 433 MHz Module von Conrad, die gab's damals güstig beim großen
C. Heute wohl nemme im Angebot...

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu Protokoll? UART auf ca. 4000 Baud einstellen und los geht´s. Vorher
aber in´s Datenblatt der Funkmodule (Sender) gucken, die vertragen u.U.
keine 5V am Datenpin.

Autor: AntonWert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und was ist mit Fehlerkorrektur und von den Modulen geforderte
Mancestercodierung?

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Amplitudenmodulierten Signalen muss künstlich ein Pegelwechsel
erzeugt werden, da die Module mit statischen Zuständen nicht klar sind.
Gängigstes Mittel ist eben der Manchestercode, mit dem man ja auch schon
eine einfache Überprüfung auf Richtigkeit der empfangenen Daten
vornehmen kann.

Einfach solche Module an die serielle Schnittstelle (sei es nun PC mit
Pegelkonverter oder µC) funktioniert also nicht.

Anbei zwei Routinen, die die Daten Manchester-kodieren bzw.
-dekodieren.

unsigned char restore(void)
{
  unsigned char result = 0;

  //decode highbyte
  if (0x00 != (highbyte & 0x80)) result+=0x80;
  if (0x00 != (highbyte & 0x20)) result+=0x40;
  if (0x00 != (highbyte & 0x08)) result+=0x20;
  if (0x00 != (highbyte & 0x02)) result+=0x10;

  //decode lowbyte
  if (0x00 != (lowbyte & 0x80))  result+=0x08;
  if (0x00 != (lowbyte & 0x20))  result+=0x04;
  if (0x00 != (lowbyte & 0x08))  result+=0x02;
  if (0x00 != (lowbyte & 0x02))  result+=0x01;

  return result;
}  //end of restore

void manchester(unsigned char Bitarray)
{
highbyte=0x00;
lowbyte=0x00;

if (0x00 != (Bitarray & 0x80)) highbyte+=0x80; else highbyte+=0x40;
if (0x00 != (Bitarray & 0x40)) highbyte+=0x20; else highbyte+=0x10;
if (0x00 != (Bitarray & 0x20)) highbyte+=0x08; else highbyte+=0x04;
if (0x00 != (Bitarray & 0x10)) highbyte+=0x02; else highbyte+=0x01;

if (0x00 != (Bitarray & 0x08)) lowbyte+=0x80; else lowbyte+=0x40;
if (0x00 != (Bitarray & 0x04)) lowbyte+=0x20; else lowbyte+=0x10;
if (0x00 != (Bitarray & 0x02)) lowbyte+=0x08; else lowbyte+=0x04;
if (0x00 != (Bitarray & 0x01)) lowbyte+=0x02; else lowbyte+=0x01;
}

highbyte und lowbyte müssen natürlich als globale Variablen deklariert
werden.

Gruß
Christoph

Autor: AntonWert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seh ich das richtig, dass du die Datenmenge damit (wie bei Manchester
eben üblich) verdoppelst?
Wieviele oder besser wie lange vertragen solche Module einen statischen
Pegel? Ich meine man könnte sie ja auch mit neiedrigerer Baudrate fahren
und dann liegen die Pegel ja auch laenger an.

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, die Datenmenge, die letztlich übertragen wird, wird verdoppelt.

Ich verwende Module von Aurel. Laut Hersteller sollte der Wechsel mit
mindestens 50Hz erfolgen. Demnach sollte er bei ein paar kHz keine
Probleme mit statischen Zuständen haben, doch eine solche Übertragung
ist  auf jeden Fall nicht empfehlenswert, da
-viele Empfänger statische Pegel nicht detektieren können
(Pendenempfänger)
-eine Datenübertragung ohne jeglich Codierung extrem anfällig für das
immer vorhandene Empfangsrauschen ist.

Zum Funk-Protokoll sei noch gesagt, dass man in jedem Fall eine
Präambel (ein paar Mal irgendein dafür reserviertes Byte)
vorrausschicken sollte, damit sich der Empfänger auf die richtige
"Lautstärke" einstellen kann und die serielle Schnittstelle sich
einpendelt und das Startbit auch wirklich als diese erkennt.

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei AM Modulen stimmt das unbedingt,
alternativ kann man aber auch FM-Module verwenden, dieschwingen nicht
aus.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende auch die Aurel-Module (AM) und habe bei einem
kontinuierlichen Datenstrom von 4000 Baud (USART -> Start  9  gerade
Parität / Stop) keinerlei Übertragunsprobleme innerhalb der Reichweite.
Bei ständigem Senden von 0-Daten reicht das einzelne Stop-Bit (knapp
400Hz) immer noch aus, um die Module nicht aus dem Konzept zu bringen.
Funktioniert ohne Kodierung mit eben den Rohdaten einwandfrei (am Oszi
getestet und seit 3 Monaten 24/7 am laufen).
Grüße!

Autor: don hendi (dg3hda) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein relativ handliches Protokoll, x-fach bewährt, ist das AX.25, es wird
im AMateurfunk zur Datenübertragung eingesetzt. Mit CRC und Adressierung
und Flußsteuerung, aber du kannst dir ja wenn du auf einer
Eigenproduktion bestehst einfach nur was abgucken.
(Evtl. auch bei EAX.25)
Was dem aber je nach Anwendung fehlt ist eine FEC, da wirst du
eventuell durch googlen nach "Reed-Solomon" schlauer (Ein Verfahren,
bei dem man ein paar Bit mehr überträgt als sein müssten, aber wenn
etwas schiefgeht
kann man mit deren Hilfe die Fehler finden+korrigieren. In der Praxis:
Wenn mal paar Bit durch Rauschen verloren gehen, werden die mithilfe
der Zusatzdaten restauriert.)

abzugucken bei SITOR Seefunkfernschreiben, AMTOR
Amateufunkfernschreiben, oder wenns ein komplexeres Beispiel sein darf
DVB :-)

Ja, auch WLAN und DVB und Bluetooth und all dieses "moderne Zeuch"
ist nur ein verfeinertes Fernschreiben (manche alte Herren haben jetzt
vielleicht so ein klackern im Erinnerungsohr...)

Grundfrage, die du dir stellen sollst: Müssen sich die beiden
Gegenstellen "unterhalten" oder genügts wenn eine Daten rausschreit
und die andere lauscht ?

Autor: AntonWert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Beiden Gegenstellen kommen sich immer näher, sind sie in Reichwete
soll ein Frage-Antwortspiel entstehen. Das alles ist aber Zukunftsmusik,
jetzt erst mal in eine Richtung...

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
für Duplexbetrieb würden sich die easy-Radio-Module eignen,
brauchste auch kein extra Protokoll für, einfach auf
RX-TX-Schalten und per UART mit 19200 die Datenrein schieben
und fertig. Sind aber nicht ganz billig, irgendwas
zwischen €30-€40 musste dafür rechnen

Autor: AntonWert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo gibt es diese "easy-Radio-Module"?

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der englsiche Hersteller ist LPRS (www.lprs.co.uk), deutsche
Distributoren sind die Firma Telemeter (www.telemeter.de) oder zum
Beispiel Farnell (www.farnell.de).

Ansonsten mal auf der Distributoren-Liste des Herstellers schauen.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wär´s denn mal mit ausprobieren? Wenn Du schon die "Aurels" da
hast, was hindert Dich, Daten zu übertragen und die Tauglichkeit zu
testen?! Wenn´s geht, kannst Du jegliche Suche einstellen und
losbasteln, wenn nicht, kannst Du ja immer noch weitergucken.

Autor: Hans Ebberich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Anton,

Sind bei deinem Sendemodul freie Lötstellen? (An welchen ein
SMD-Kondensator sein kann). Bei mir ist einer auf der Packung
abgebildet , aber am Modul ist er nicht eingelötet.

Mfg Hans

Autor: AntonWert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab die Dinger gerade nicht vor mir, kann mich aber an keien nicht
bestückten Bauteile erinnern.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.