RFM12Pi als JeeLink-Ersatz

Begonnen von g_k, 22 Dezember 2014, 11:44:41

Vorheriges Thema - Nächstes Thema

g_k

Hallo,

Da ich im Forum nur einen Beitrag mit dem Schlagwort "RFM12Pi" finden konnte, hier ein kurzer Erfahrungsbericht zum Einsatz des RFM12Pi anstelle eines JeeLink zum Ansteuern von PCA301-Dosen.

Das RFM12Pi ist ein Aufsteckmodul auf den RaspberryPi, das von der Hardware nahezu ident mit der des JeeLink ist (RFM12-Funkmodul und ATmega328). Leider nur nahezu, denn ein direktes Flashen des PCA301 Hex-Files funktioniert nicht. Deswegen hier eine kurze Zusammenfassung, um das Ding zum Laufen zu bringen:


$ sudo apt-get update
$ sudo apt-get install arduino
$ sudo apt-get install python-dev python-rpi.gpio
$ git clone https://github.com/mharizanov/avrdude-rpi.git
$ cd avrdude-rpi
$ sudo cp autoreset /usr/bin
$ sudo cp avrdude-autoreset /usr/bin
$ sudo mv /usr/bin/avrdude /usr/bin/avrdude-original
$ sudo ln -s /usr/bin/avrdude-autoreset /usr/bin/avrdude


Notwendig wird der spezielle avrdude durch einen Workaround für den Reset (Mehr dazu unter http://wiki.openenergymonitor.org/index.php?title=RFM12Pi_V2). Achtung, falls avrdude anderweitig Verwendung findet, das Umkopieren und den Symlink nach dem Flashen wieder rückgängig machen.

Jetzt den Sketch downloaden (Siehe http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/36_PCA301-pcaSerial.zip)

Das zip-File beinhaltet das Sketch-File pca301serial.ino. Bevor wir dies in der Arduino-IDE kompilieren, muss das File boards.txt im Installationsverzeichnis der Arduino-IDE angepasst werden:


atmega328_384_8.name=ATmega328 Optiboot @ 38,400baud w/ 8MHz Int. RC Osc.

atmega328_384_8.upload.protocol=arduino
atmega328_384_8.upload.maximum_size=30720
atmega328_384_8.upload.speed=38400

atmega328_384_8.bootloader.low_fuses=0xE2
atmega328_384_8.bootloader.high_fuses=0xDE
atmega328_384_8.bootloader.extended_fuses=0x05
atmega328_384_8.bootloader.path=optiboot
atmega328_384_8.bootloader.file=optiboot_atmega328_384_8.hex
atmega328_384_8.bootloader.unlock_bits=0x3F
atmega328_384_8.bootloader.lock_bits=0x0F

atmega328_384_8.build.mcu=atmega328p
atmega328_384_8.build.f_cpu=8000000L
atmega328_384_8.build.core=arduino
atmega328_384_8.build.variant=standard


Jetzt kann der Sketch ohne Modifikationen kompiliert werden, sofern als Board "ATmega328 Optiboot @ 38,400baud w/ 8MHz Int. RC Osc." ausgewählt ist. Das Hex-File erhält man im temporären Build-Ordner des Sketches, dieses kann dann wie gewohnt mit:


avrdude -v  -c arduino -p m328p -P /dev/ttyAMA0 -b 38400 -U flash:w:pca301serial.cpp.hex


geflasht werden.

Danach kann man sich über minicom verbinden, um zu sehen, ob das Modul erfolgreich geflasht wurde:


minicom -o -b 57600 -D /dev/ttyAMA0


Die Einbindung in FHEM erfolgt dann (minicom wieder schließen) über das gewohnte


define JLPCA301 JeeLink /dev/ttyAMA0@57600