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

Erstellt am 20. Juni 2015 von At2oo1

raspberry.tips
raspberry.tips - Raspberry.Tips - Projekte, Tutorials und News rund um den Mini-Computer 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:

  • Arduino Nano Clon mit USB Kabel (USB A auf Mini B) ab 5€
    • Auch bei ebay ab 4€
  • CC1101 Funkmodul 868MHz oder 433MHz mit Antenne, ich verwende ein RF101SE V3.1 mit 868MHz ab 5€
    • 2 Stück 868MHz aus China für 15 Dollar
  • Lochraster-Platine 2,54mm 100×75 ~2€
  • 4x Kohleschicht-Widerstand 10 kOhm ~0,5€
  • 4x Kohleschicht-Widerstand 4,7 kOhm ~0,5€
  • 1x 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!

Vorgegangen bin ich wie folgt:

  1. Die 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!
  2. Widerstände auflöten
  3. Die weiteren Schnitte / Cuts wie eingezeichnet machen (mit einem Cutter oder Skalpell zwei Schnitte machen und dann das Kupfer dazwischen rauskratzen / raus schneiden)
  4. Verkabelung mit Klingeldraht
  5. 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)
  6. Platine zuschneiden

Das Ergebnis sieht ohne Zuschnitt der Platine bei mir so aus, da ich mich zwischenrein verzählt habe weicht die Verdrahtung minimal ab :)

     

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

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

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

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.

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:

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

make program

Das flash Programm “avrdude” meldet nach erfolgreichem Abschluss “avrdude done.  Thank you.”

Inbetriebnahme des CUL am Raspberry Pi

Vorbereitung

  • Um via Serial mit dem Arduino bzw. dem Modul kommunizieren zu können muss erst SPI bzw. Serial aktiviert werden!

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.

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.

dmesg | grep tty

Bei mir wird folgendes ausgegeben, ich verwende daher ttyUSB0

[  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

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.

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.

Im nächsten Teil dieses Tutorial zeige ich die Installation von FEHM auf dem Raspberry Pi und die Einrichtung des CUL Moduls.

Stay Tuned!