Discussion:
[ethersex-devel] RFM69
Meinhard Ritscher
2015-09-01 18:45:04 UTC
Permalink
Hallo,

hat schon jemand Versuche mit dem Nachfolger des Funkmoduls RFM12B
unternommen?
Ich versuche gerade, die Bibliothek von Felix Pflaum [1] in ethersex zu
integrieren, bin aber noch nicht sehr weit gekommen.
Bislang bringt mir ein Versuch, etwas zu empfangen, ethersex ziemlich aus dem
Tritt.
Aber vielleicht muss ich ja nicht ganz bei Null anfangen...

Gruß
Meinhard
[1]
https://www.mikrocontroller.net/topic/332579
e***@users.sourceforge.net
2015-09-02 16:28:33 UTC
Permalink
Hallo Meinhard,
Post by Meinhard Ritscher
hat schon jemand Versuche mit dem Nachfolger des Funkmoduls RFM12B
unternommen?
ja, hab hier einen Jeelink mit RFM69CW und E6. Allerdings noch keine
Zeit, das zum Laufen zu bekommen. Ich bin allerdings eher an ASK/OOK
denn FSK interessiert.
Post by Meinhard Ritscher
Ich versuche gerade, die Bibliothek von Felix Pflaum [1] in ethersex zu
integrieren, bin aber noch nicht sehr weit gekommen.
Bislang bringt mir ein Versuch, etwas zu empfangen, ethersex ziemlich aus dem
Tritt.
Aber vielleicht muss ich ja nicht ganz bei Null anfangen...
Du möchtest IP über den RFM69CW senden und empfangen? Man kann das
Modul konfigurieren, dass es auf funkseitig kompatibel mit dem
RFM12 ist:

https://github.com/jcw/jeelib -> RF69_compat*

PR willkommen!
Meinhard Ritscher
2015-09-06 18:37:56 UTC
Permalink
Hallo eku,
Ich bin allerdings eher an ASK/OOK denn FSK interessiert.
Die Modulation ist mir eigentlich egal. Ich habe zwischenzeitlich ein Paper[1]
gefunden, wo FSK mit OOK verglichen wurde und OOK in vielen Belangen besser
abschnitt.
Du möchtest IP über den RFM69CW senden und empfangen? Man kann das
Modul konfigurieren, dass es auf funkseitig kompatibel mit dem
Die Bibliothek von Felix hat auch ein define fuer RFM12 Kombatibilitaet.
Ich moechte mit einem unter ethersex laufenden AVR-Net-IO mit AddOn Board
Daten von Klimasensoren empfangen. Urspruenglich hatte ich auf fertige
Sensoren mit bekanntem Funkprotokoll gehofft. Nach etwas ernuechternder
Recherche will ich die Nodes jetzt selbst bauen.
Der erste basiert auf einem RN-MikroFunk, welcher praktischerweise bereits
Platz fuer ein RFM12-Modul auf der Platine hat.
Da die RFM12-Reihe abgekuendigt ist, und ich erst am Anfang stehe, habe ich
mich fuer die RFM69CW entschieden. Schade, dass diese den WakeUp-Timer nicht
mehr haben, sonst bieten sie verglichen mit dem RFM12 ja auch Vorteile.

Die korrekte Funktion der Hardware zusammen mit der Bibliothek konnte ich
inzwischen feststellen, indem ich das AddOn-Board an ein anderes Atmega-328-
Platinchen geknuepft habe. Das AddOn-Board hat ja auch einen Platz fuer einen
RFM12 bzw RFM69CW vorgesehen.
Mit diesem Setup komme ich schon mal durch das ganze Haus.
Wenn ich das Net-IO mit dem AddOn Board verknuepfe, hatte ich auch bei einem
simplen main(), welches eigentlich nur Signale empfangen und per UART ausgeben
soll, noch keinen Erfolg. So konnte ich beobachten, dass ein rfm_init() jedes
Mal den CS von der SD-Karte auf low zieht, welche ebenfalls am SPI-Bus haengt.
Ich konnte die Stelle im Code allerdings noch nicht finden.
Das Net-IO ist bei mir mit einem 20Mhz getaktetem Amega 1284P betrieben.
Diese Konstellation lauffaehig zu bekommen, ist also mein naechster Schritt.

Habe ich das geschafft, geht es um die integration in ethersex. Wichtig ist,
dass das Modul moeglichst dauernd auf Empfang ist und bei empfangenen Daten
moeglichst schnell eine Bestaetigung schickt, damit sich die Nodes schnell
wieder akkuschonend schlafen legen koennen.

Es ist also noch etliches zu tun ...

Gruss
Meinhard

P.S. Im Thread von mikrokontroller.net wird auch immer wieder eine C++ -
RFM69-Bibliothek von LowPowerLab [2]erwaehnt. Die habe ich mir aber nocht
nicht weiter angeschaut.


[1]http://www.digikey.com.au/Web Export/Supplier Content/RFM_583/PDF/rfm-an-
ook-ask-fsk-comparison.pdf
[2]https://github.com/LowPowerLab/RFM69
Meinhard Ritscher
2015-09-15 21:05:07 UTC
Permalink
Hallo,

nur kurz der aktuelle Stand:
https://github.com/cyc1ingsir/ethersex/tree/prepare_rfm69_pr
Das ist zwar noch sehr weit von einem Pull Request entfernt, aber es laesst
sich zumindest etwas damit empfangen.
Zu Demonstrationszwecken:
https://github.com/cyc1ingsir/ethersex/tree/rfm69_receiver_example

PR welcome ;-)

Gruss
Meinhard
Meinhard Ritscher
2015-10-22 22:55:00 UTC
Permalink
Hallo,

mal wieder ein Update von der RFM69-Baustelle.

Ich habe mich entschieden, die Bibliothek von LowPowerLab als Grundlage zu
nehmen. Diese bietet mehr Funktionalitaet, ist aber in C++ fuer die Arduino-
Platform geschrieben.
Anfangs wollte ich die Prortierung so nah wie moeglich am Original halten, um
upstream-Aenderungen moeglichst einfach uebernehmen zu koennen. Aber dann habe
ich es aufgegeben, ein digitalWrite etc nachzubauen.
Das Original ist aber noch gut zu erkennen.
Richtig Bauchschmerzen hatten mir Kollisionen auf dem SPI-Bus gemacht. Bis ich
auf die Idee gekommen bin, dass die Verwendung des SPI innerhalb der
Interruptbehandlung mit der SPI-Kommunikation des ENC28J60 und des SD-Card-
Readers kollierdiert ...

Der aktuelle Stand: Es laeuft erst einmal. Den Code muss ich aber noch weiter
aufraeumen.
Wer schon mal schauen will: In den u.g. Branches sind alle Aenderungen drin.
Post by Meinhard Ritscher
https://github.com/cyc1ingsir/ethersex/tree/prepare_rfm69_pr
https://github.com/cyc1ingsir/ethersex/tree/rfm69_receiver_example
Eine Frage noch:
In der Bibliothek wird fuer timeouts gerne auf die Funktion millis() aus der
Arduino-Welt zurueckgegriffen. Hier zum Beispiel:
uint32_t now = millis();
while (!rfm69_canSend() && millis() - now < RF69_CSMA_LIMIT_MS)
Um recht nahe am Original zu bleiben, habe ich das so geloest
#include "services/clock/clock.h"
#define millis() (clock_get_uptime())

Gibt es eine aehnliche Funktion zu clock_get_uptime() mit weniger
Abhaengigkeiten?

Meinhard

Lesen Sie weiter auf narkive:
Loading...