Wie versprochen widme ich mich diesen Monat verstärkt dem Thema Hausautomatisierung mit CUL und der Software FHEM, geplant habe ich ein mehrteiliges Tutorial zum Thema. In diesem Artikel schaffe ich die Grundlage zum Betrieb eines Hausautomatisierung-Systems auf Basis des Raspberry Pi, ich baue mir einen eigenen CUL.
Der CUL dient zum Senden und Empfangen von Funknachrichten auf 433 bzw. 868MHz und somit zum steuern von etlichen verfügbaren Geräten, auf 433MHz wird das Protokoll Intertechno unterstützt, auf 868MHz kann das Protokoll Homematic und FS20 gesprochen werden. Ich verwende, da ich in vergangenheit schon viele andere Artikel zu 433MHz Steuerung mit dem Pi geschrieben habe, in diesem Artikel die Variante mit 868MHz.
Wer nicht gerne bastelt und lötet kann den CC1101-USB-Lite 868MHz CUL Stick von Busware auch fertig kaufen, ist mit Gehäuse und Antenne aber schnell 80-90€ los. Da mir das zu teuer war und ich gerne bastle habe ich mir einen eigenen CUL Stick auf Basis eines Arduino Nano und eines CC1101 RF1101SE 868MHz Funkmoduls gebaut.
Benötigte Komponenten
Neben Lötequipment, dem Raspberry Pi mit Standard Zubehör,auf welchem wir später den FHEM Server laufen lassen und den CUL Stick anschließen bzw. Programmieren, wird zum Bau eines folgendes benötigt:
- Arduino Nano Clon mit USB Kabel (USB A auf Mini B) ab 5€
- CC1101 Funkmodul 868MHz oder 433MHz mit Antenne, ich verwende ein RF101SE V3.1 mit 868MHz ab 5€
- Lochraster-Platine 2,54mm 100×75 ~2€
- Kohleschicht-Widerstand 10 kOhm ~0,5€
- Kohleschicht-Widerstand 330 Ohm ~0,20€
- Klingeldraht zum verkabeln – 3,50€
- 2x Buchsenleiste gerade Pole (15 Pins, zuschneiden) ~ 1€
- 1x Buchsenleiste Doppelreihig gerade Pole (2x5Pins, zuschneiden) ~3€
- Eine Status LED ~0,30€
- Optional ein Gehäuse mit mindestens 65 x 65 x 25 ~4€
Das macht für das Material ohne Versandkosten ungefähr 30€, ich habe mir die Sachen zum Großteil beim Elektrofachhändler um die Ecke besorgt um Versand zu sparen.
Der Zusammenbau des CUL
Kontrolliert bevor ihr beginnt bitte ob bei eurem Arduino und Funkmodul die Pinbelegung mit meiner übereinstimmt, falls nicht müsst ihr entsprechende Anpassungen vornehmen. Der Aufbau ist recht einfach.
Arduino Nano | Funkmodul |
Pin 17 – VCC 3,3V | Pin 1 – VDD |
Pin 14 – D11 | Pin 3 – SI (MOSI) |
Pin 16 – D13 | Pin 4 – SCK |
Pin 15 – D12 | Pin 5 – SO (MISO) |
Pin 5 – D02 | Pin 6 – GDO2 |
Pin 13 – D10 | Pin 7 – CSn (SS) |
Pin 6 – D03 | Pin 8 – GDO0 |
Pin 4 – GND | Pin 9 GND |
nicht belegt | PIN 2 & 10 |
Im linken Bild findet Ihr die PINs des Arduino, im Rechten Bild die PINs meines Funkmoduls
Das ursprüngliche Layout aus dem FEHM WiKi habe ich mit der Fritzing Software auf eine Lochstreifenplatine übertragen (CUL-Sebstbau Fritzing Datei), das Layout ist hinsichtlich der Größe bestimmt nicht optimal, ich verwende aber am liebsten Lochstreifen. Wichtig! Die schwarzen Kreuze markieren die Stellen an welchen der Streifen (Leiterbahn) der Platine durch einen Schnitt / Cut unterbrochen werden muss. Als Unterschied zum FEHM Layout habe ich die Spannungsteiler mit 4,7k / 10k Widerständen eingebaut da die Eingänge des Funkmoduls nur 3,3V vertragen.
Update: Im nachhinein habe ich bemerkt das ich die Buchsenleiste für das Modul eine Reihe weiter weg (links) vom Nano hätte platzieren müssen, die beiden liegen übereinander. Korrigiert das am besten bei euch!
Widerstände auflötenDie Buchsenleisten für den Nano und das Funkmodul auf die Platine löten, die Cuts / Schnitte bei der 2×5 Buchsenleiste für das Funkmodul am Besten vor dem Löten machen!Vorgegangen bin ich wie folgt:
- Die weiteren Schnitte / Cuts wie eingezeichnet machen (mit einem Cutter oder Skalpell zwei Schnitte machen und dann das Kupfer dazwischen rauskratzen / raus schneiden)
- Verkabelung mit Klingeldraht
- LED als letztes auflöten, ich habe anstelle die LED direkt aufzulöten den Rest meiner Buchsenleiste verwendet (das lange Bein ist Plus und liegt am Widerstand an)
- Platine zuschneiden
Das Ergebnis sieht ohne Zuschnitt der Platine bei mir so aus. Update: Nachträglich habe ich einen Fehler bemerkt und behoben, die Bilder sind aktualisiert (haben etwas mehr durchtrennte Leiterbahnen als im Fritzing, daher nicht wundern). Als weitere Variante habe ich einen CUL aus zwei Platinen gebaut falls mal das Modul anders verwendet werden soll oder man im Gehäuse Flexibel sein möchte (Bild 3).
Die CUL Firmware aufspielen
Nachdem ihr euer CUL fertig gelötet habt könnt ihr die notwendige Firmware auf den Nano aufspielen, auf dem Arduino werkelt übrigens ein ATmega328 Micro Controller mit 16 MHz, dieser übernimmt für uns die Kommunikation mit dem Funkmodul (SPI) und dem Raspberry Pi (Serial over USB). Die Firmware ist als Open Source Projekt unter GPL veröffentlicht und unterstützt eine ganze Reihe an Protokollen und Geräten, das interessanteste für mich ist eine HomeMatic Unterstützung.
Voraussetzungen
- Raspberry Pi mit dem üblichen Zubehör und installiertem Raspbian Betriebssystem (zum Einsteiger Guide)
- Zum flashen der Firmware solltet ihr den Arduino am Besten von der Platine nehmen.
Meldet euch via SSH auf eurem Raspberry Pi an, als erstes installieren wir dann die notwendige Software
1 |
sudo apt-get install make gcc-avr avrdude avr-libc subversion |
Dann laden wir uns den Code der Firmware über den subversion client aus dem Sourceforge Repository
1 |
svn checkout http://svn.code.sf.net/p/culfw/code/trunk culfw-code |
Da ich ein 868MHz Modul verwende muss ich, bevor die Firmware Compilliert und auf den Nano aufgespielt wird, noch eine Konfiguration editieren
1 2 |
cd culfw-code/culfw/Devices/nanoCUL nano board.h |
Die Zeile „#define HAS_CC1100_433“ muss durch anfügen von /* am anfang und */ am Ende der Zeile auskommentiert werden, danach sieht die Datei so aus.
Speichert die Änderung mit STRG+X, Y und ENTER.
Jetzt kompilieren wir die Firmware, wer einen Raspberry Pi 2 hat kann den Vorgang durch anhängen des Parameters „-j 4“ deutlich beschleunigen. Bei älteren Modellen lasst den Parameter einfach weg.
1 |
make -j 4 |
Der Kompiler hat nun die Firmware als Datei ausgespuckt „nanoCUL.hex“, diese wollen wir nun auf unseren Nano schreiben. Verbindet euren Nano via USB Kabel mit dem Raspberry Pi. Prüft ob der Nano korrekt verbunden ist:
1 |
lsusb |
Bei mir wird der USB-Serial Chip (FTDI) des Nano direkt erkannt
Da der Nano korrekt verbunden ist schreiben wir die Firmware mit folgendem Befehl
1 |
make program |
Das flash Programm „avrdude“ meldet nach erfolgreichem Abschluss „avrdude done. Thank you.“
Inbetriebnahme des CUL am Raspberry Pi
Vorbereitung
Nach dem Flashen und dem Aufstecken der Module auf das Board sollte die LED ungefähr einmal pro Sekunde blinken die PWR LED des Nano sollte dauerhaft an sein, falls nicht stimmt die Taktfrequent nicht oder in der Schaltung liegt ein Fehler vor.
Die Kommunikation zwischen Pi und Board über USB Serial müssen wir noch testen, das erledigen wird über das Terminal Programm Minicom.
1 |
sudo apt-get install minicom |
Wir müssen herausfinden welchen tty Port die USB Serial Verbindung bekommen hat, Steckt hierzu den USB ab wartet kurz und steckt ihn wieder an, danach suchen wir nach dem zugewiesenen Port.
1 |
dmesg | grep tty |
Bei mir wird folgendes ausgegeben, ich verwende daher ttyUSB0
1 |
[ 721.157143] usb 1-1.5: FTDI USB Serial Device converter now attached to ttyUSB0 |
Die Kommunikation mit dem Board findet mit 38400 Baud und der Serial Konfiguration 8N1 statt (8 Daten Bits, N Parity Bit und 1 Stop Bit). Die Minicom füttern wir daher mit den passenden Parametern
1 |
sudo minicom -s |
Navigiert mit den Pfeiltasten zu „Serial Port Setup“ und macht folgende Einstellungen, speichert danach mit „Save setup as dfl„. /dev/ttyUSB0 müsst ihr natürlich entsprechend mit eurem Port ersetzen.
Beendet wird minicom übrigens mit CTRL+A und dann X. Wenn wir nun minicom starten und ein V (es muss ein großes V, also Shift+V) senden erhalten wir die Firmware Version zurückgeliefert und die Kommunikation funktioniert.
1 |
minicom |
Dann Senden wir SHIFT+V und ENTER und erhalten eine Antwort
Somit haben wir einen Funktionsfähigen selbstgebauten CUL mit 868MHz welchen wir über unseren Raspberry Pi ansteuern und auslesen können.
Wer das Problem hat das der Clone Nano nach einem Reboot des Raspberry Pi nicht erkannt wird hat einen mit fehlerhafter Hardware erwischt, Abhilfe gibt es im Betirag „Reboot Problem beheben„.
Weitere Tutorials aus dieser Serie
- Teil 1- Selbstau CUL für den Raspberry Pi zum Betrieb mit FHEM (dieses Tutorial)
- Teil 2 – FHEM auf dem Raspberry Pi installieren und CUL einrichten
- Teil 3 – Steuerung von HomeMatic Geräten mit FHEM – Rolladensteuerung