Hausautomatisierung mit FHEM Teil 1 – CUL Stick Selbstbau – 868MHz CUL am Raspberry Pi

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:

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

arduino nano pins Selbstbau CUL rf1101se Pinbelegung

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!

Fritzing-Plan

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:

  1. Die weiteren Schnitte / Cuts wie eingezeichnet machen (mit einem Cutter oder Skalpell zwei Schnitte machen und dann das Kupfer dazwischen rauskratzen / raus schneiden)
  2. Verkabelung mit Klingeldraht
  3. 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)
  4. 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).

 CUL Selbstbau  CUL Selbstbau Rückseite  CUL-Selbstbau-Variante2

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

Dann laden wir uns den Code der Firmware über den subversion client aus dem Sourceforge Repository

Da ich ein 868MHz Modul verwende muss ich, bevor die Firmware Compilliert und auf den Nano aufgespielt wird, noch eine Konfiguration editieren

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.

board-h-configuration

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.

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:

Bei mir wird der USB-Serial Chip (FTDI) des Nano direkt erkannt

arduino-nano-am-raspberry-pi

Da der Nano korrekt verbunden ist schreiben wir die Firmware mit folgendem Befehl

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.

CUL-Platine-mit-Arduino-und-Funkmodul-am-raspberry-pi

Die Kommunikation zwischen Pi und Board über USB Serial müssen wir noch testen, das erledigen wird über das Terminal Programm 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.

Bei mir wird folgendes ausgegeben, ich verwende daher 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

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.

minicom-settings-cul

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.

Dann Senden wir SHIFT+V und ENTER und erhalten eine Antwort

minicom-mit-cul-testen

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