Pages: 1 [2]   Go Down
Author Topic: Senden von Daten über stabile Funkverbindung (433MHz o.ä.)  (Read 2917 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Über den nRF24L01 habe ich auch schon nachgedacht, bin aber aus 2 Gründen davon abgekommen:
- die Platine kann nicht ohne weiteres aufs Breadborad. Lässt sich aber lösen: http://blog.sui.li/2011/06/28/rfm01-rfm12-aufs-breadboard/ Anstatt das Teil wie im Beispiel auf eine Lochraster-Platine zu löten, kann man die Draht-Enden ja direkt ins Breadboard stecken.
- Anschluss über SPI und 3,3V. Das verkompliziert den Aufbau, vor allem in einer späteren Standalone-Lösung mit evtl. sogar einem kleineren µC.

Die Reichweite wird oft mit 200ft angegeben, also ca. 60m. Bei den 433MHz Geräten wird als Reichweite zwischen 30 und 200m angegeben.
Logged

Chemnitz/Saxony/Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Das Bild, was Du verlinkst ist ein RFM12-Modul, der nRF24L01 ist erst mal ein Chip, den es auf verschiedenen Modulen gibt. Und da gibts auch welche die sich problemlos stecken lassen.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oh, da hatte ich mich wohl vertan... Den nRF24L01 hatte ich abgewählt, da er bei Watterott ~20€ kostet und ich nicht beim Chinesen bestellen will (hab keine Lust, mich mit irgendwelchem Zoll-Kram rumzuärgern).

Inzwischen habe ich noch ein wenig auf 433 MHz rumgetestet:
- Mit 2000 Bit/s kommt fast garnichts mehr an. Mit 1000 geht es wieder.
- Ich habe die Datenmenge auf 6 Byte Nutzdate reduziert (vorher 17 Byte): 1 Byte Kennung, 2 Byte Sensor-ID, 2 Byte Temperatur, 1 Byte laufende Nummer. Mehr ist ohne Funktions- oder Komfortverlust nicht möglich. Dies hat den Paketverlust um ca. 50% reduziert.
- Ich sende nun alle Nachrichten 2x direkt hintereinander.

Damit kommen auf Dauer ca. 90% der Pakete durch (wenn mind. 1 der 2x Pakete durchkommt, reicht es). Wiederhole ich 5x, kommen ~95% durch.

Es fällt auf, dass meistens größere Blöcke nicht durchkommen (also gleich 5 Pakete hintereinander). Daraus folgere ich, dass die Probleme aufgrund der starken Belegung des 433MHz Bandes entstehen. Um es nicht noch mehr zu belasten, habe ich wieder auf 2 Wiederholungen reduziert. Damit belege ich das Band ca. 4% (0,2s/5s). Wenn alles fertig ist, reduziere ich auf 20s Sendeimpuls oder größer.

Vielleicht mache ich noch einen Test auf 868 MHz. Dort sollte weniger los sein und die maximalen Sendelängen sind gesetzlich festgelegt.
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 138
Posts: 2895
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es fällt auf, dass meistens größere Blöcke nicht durchkommen (also gleich 5 Pakete hintereinander).

Was heißt "größere Blöcke"?

Du packst doch wohl hoffentlich nicht die Message in ein größeres char-Array und sendest dann auf einmal mit einer einzigen vw_send Anweisung in einem Rutsch? Dann würde natürlich das zutreffen, was ich in diesem Thread vorgerechnet habe: Je größer die Blöcke, desto weniger kommt an.

Sondern Du sendest hoffentlich immer dieselbe kleine Message mit eigenem vw_send fünfmal getrennt hintereinander mit zusätzlichem delay:

Code:
for (int i=0;i<5;i++)
{
  vw_send((uint8_t*)msg, strlen(msg));
  vw_wait_tx();
  delay(30);
}

Wobei das zusätzlich eingefügte delay nach dem vw_wait_tx() mindestens so lange dauern sollte, wie Du zum Abholen und Verarbeiten einer empfangenen Nachricht beim Empfänger benötigst.

BTW China-Bestellungen und Zoll: Mit Zoll hast Du bis zu einem Warenwert von 22,50 EUR pro Sendung nichts zu tun. Außer dass die Sendung bei Dir gelegentlich mal mit einem kleinen grünen Aufkleber ankommt, auf dem entweder sowas steht wie "zollamtlich geprüft" oder "von der Zollbehandlung befreit", weil der Zoll geprüft hat, ob der zoll- und einfuhrumsatzsteuerfreie Warenwert vielleicht überschritten wurde.
« Last Edit: February 06, 2013, 04:24:56 pm by jurs » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Was heißt "größere Blöcke"?

Hier meine ich schon, mehrere Messages in direkter Folge (ähnlich dem Beispiel unten).


vw_wait_tx() kann man weglassen, das passiert implizit bei jedem send().
Ein Delay habe ich auch nicht drin. Das sollte kein Problem sein. Das Empfangen läuft innerhalb von VirtualWire asynchron via Interrupt, d.h. solange ich nicht länger zum Verarbeiten der Message benötige, als die nächste Message übertragen wird, ist's wohl kein Problem. In meinem Fall leite ich die Message 1:1 als UDP-Broadcast weiter.

Ohne Störung kommen alle 5 Messages sauber an. Wenn es eine Störung gibt, fallen aber gleich mal 4 oder alle 5 Messages weg. Dass nur 1 oder 2 durchkommen, passiert fast nie - daher die Vermutung, dass andere Sender die Übertragung gleich für längere Zeit stören.
Logged

Pages: 1 [2]   Go Up
Jump to: