Selbstbau CUL: Unterschied zwischen den Versionen
Kaihs (Diskussion | Beiträge) |
Kaihs (Diskussion | Beiträge) |
||
Zeile 127: | Zeile 127: | ||
== Bekannte Probleme == | == Bekannte Probleme == | ||
Viele der Arduino nano haben eine sehr grell leuchtende blaue Stromversorgungs-LED. Diese lässt sich nicht per Software ausschalten. Sollte sie stören, kann entweder die Lötverbindung zur LED durchtrennt werden oder diese z. B. mit einem schwarzen Lackstift übermalt werden. | Viele der Arduino nano haben eine sehr grell leuchtende blaue Stromversorgungs-LED. Diese lässt sich nicht per Software ausschalten. Sollte sie stören, kann entweder die Lötverbindung zur LED durchtrennt werden oder diese z. B. mit einem schwarzen Lackstift übermalt werden. | ||
Bei den nachgebauten nanos gibt es wohl viele mit einem [http://forum.fhem.de/index.php/topic,24651.msg218291.html#msg218291 Fehler] in der Schaltung (unverbundener TEST Pin des FT232RL). Das kann dazu führen, dass er nicht richtig am USB Anschluss funktioniert. | |||
== Weblinks == | == Weblinks == |
Version vom 12. November 2014, 20:14 Uhr
Selbstbau CUL | |
---|---|
Allgemein | |
Protokoll | diverse |
Typ | Transceiver |
Kategorie | CUL |
Technische Details | |
Kommunikation | Funk 433MHz oder 868MHz |
Kanäle | N/A |
Betriebsspannung | 5V |
Leistungsaufnahme | |
Versorgung | USB |
Abmessungen | |
Sonstiges | |
Modulname | CUL |
Hersteller | du selbst |
Ein CUL ist ein Transceiver zum Empfangen und Senden von Funknachrichten. Er besteht im Wesentlichen aus einem Atmel ATmega Mikrocontroller und einem CC1101 Funkmodul sowie einer USB-Schnittstelle zur Verbindung mit dem Host Computer auf dem z. B. fhem läuft. Als Firmware wird die quelloffene culfw verwendet.
Mittlerweile sind diese Baugruppen einfach und kostengünstig einzeln beschaffbar. Daher ist es relativ einfach möglich eine in der Funktionalität zum CUL vergleichbare Hardware selbst zu bauen.
Verwendete Hardware
Die Arduinos sind weit verbreitete Boards mit dem ATmega328p. Für den Selbstbau CUL ist insbesondere der Arduino nano gut geeignet. Er ist relativ klein, hat eine USB-Schnittstelle und kann eine 3,3V Spannungsversorgung für den CC1101 zur Verfügung stellen.
Module mit dem CC1101 Funkchip gibt es in unterschiedlichen Ausführungen. Wichtig ist die Unterscheidung nach der verwendeten Funkfrequenz, für den Einsatz in Europa sind das 433MHz und 868MHz. Zwar kann der Chip grundsätzlich auf beide Frequenzen eingestellt werden. Für eine optimale Sende- und Empfangsleistung muss aber der Antennenkreis auf die verwendete Frequenz abgestimmt werden. Damit ist nicht nur die Antenne selbst gemeint, auch die Hardware auf dem Modul ist unterschiedlich.
Zwar kann die culfw temporär auf eine andere Frequenz umschalten, aber das führt oft nur zu unbefriedigenden Ergebnissen. Es sollte daher das Modul verwendet werden, das zu dem Funkprotokoll passt welches hauptsächlich zum Einsatz kommen soll.
Die Module gibt es von unterschiedlichen Herstellern die auch unterschiedliche Anschlüsse verwenden. Daher muss die genaue Anschlussbelegung ermittelt werden und kann nicht einfach blind aus einem Beispiel übernommen werden.
Bezugsquellen
Die original Arduinos sind relativ teuer. Es gibt aber billige Kopien, entweder bei den bekannten Auktionshäusern und Handelsplattformen oder direkt in China. Dort ist ein nano für unter 5€ beschaffbar. Es sollte aber darauf geachtet werden, dass als USB-seriell Wandler auf dem nano ein FTDI FT232RL Chip oder ein anderer Chip mit eindeutiger ID verwendet wird. Nur dann sind mehrere CULs gleichzeitig ohne Probleme in fhem nutzbar.
Auch die CC1101 Module werden dort in unterschiedlichen Ausführungen angeboten. Die 433MHz Versionen sind i.A. leichter erhältlich als die 868MHz Versionen. Wenn keine guten Lötkenntnisse vorhanden sind sollte darauf geachtet werden, ein Modul mit als Stiftleiste im 2,54mm Raster herausgeführten Anschlüssen zu verwenden.
In diesem Blog sind konkrete Bezugsquellen genannt.
Schaltplan
Das Funkmodul ist hier nur über seine acht Anschlüsse dargestellt. Hilfreich ist der Anschluss einer LED mit passendem Vorwiderstand. Diese hilft bei der Inbetriebnahme und als grobe Funktionskontrolle.
Achtung! Der CC1101 darf nur mit maximal 3.6V betrieben werden. Eine passende Versorgungsspannung stellt der Arduino nano bereit. Aber auch die Signalleitungen sind laut Datenblatt nicht 5V tolerant. Diese haben beim nano aber 5V Pegel. In der Praxis funktionieren die Module bisher trotzdem. Langzeiterfahrungen gibt es aber nicht und es ist nicht ausgeschlossen, dass die Module dadurch beschädigt werden.
Wer sicher gehen will verwendet in den Signalleitungen Pegelanpassungen 5V -> 3,3V. Das ist mit fertigen Bausteinen (Levelshifter) möglich oder im einfachsten Fall mit Widerständen als Spannungsteiler.
Aufbau
Am einfachsten ist der Aufbau auf einem Steckbrett (Breadboard). Damit lässt es sich schnell in Betrieb nehmen und mögliche Fehler können einfach korrigiert werden. Für einen permanenten Aufbau kann z. B. eine Lochraster oder Streifenrasterplatine verwendet werden.
Wer nicht löten will kann auch ein Breakoutboard mit Schraubklemmen für den Arduino nano verwenden, z. B. ein Angebot bei eBay.
Software
Um die culfw zu kompilieren müssen ein AVR C-Cross-Compiler sowie dazugehörige Tools installiert sein. Bei einem Debian basierten Linux geht das mit
sudo apt-get install make gcc-avr avrdude avr-libc
Anschließend die neueste Version der culfw als ZIP-Datei herunterladen und auspacken.
Dann in das Verzeichnis culfw/Devices/nanoCUL wechseln. In dieser Auslieferung sind alle von der culfw unterstützten Protokolle mit Ausnahme vom Wireless M-Bus aktiviert. Bei Bedarf können einzelne Protokolle durch Änderungen der entsprechenden defines in der Datei board.h aus- oder eingeschaltet werden.
Wenn ein 868MHz Modul verbaut ist sollte in der Datei nanoCUL.c die Zeile
const uint8_t mark433_pin = 0x00;
in
const uint8_t mark433_pin = 0xff;
geändert werden.
Wird ein Arduino mit einer Taktfrequenz von nur 8MHz, wie ein Pro Mini 3,3V, verwendet, so muss die Zeile
/* set clock to 16MHz/2 = 8Mhz */ clock_prescale_set(clock_div_2);
in der Datei nanoCUL.c entfernt werden.
Mittels
make
wird dann die Übersetzung gestartet, die ohne Fehler durchlaufen sollte. Dabei wird die Datei nanoCUL.hex erzeugt.
Diese muss dann anschließend noch auf den Arduino geflasht werden.
Wenn der Arduino das einzige per USB angeschlossene Gerät mit serieller Schnittstelle ist geht das ohne weitere Änderungen mit
make program
Inbetriebnahme
Nach dem Flashen sollte die LED einmal pro Sekunde blinken. Blinkt sie schneller oder langsamer, ist die Frequenz des Controllers nicht richtig eingestellt. Ursache können z. B. falsche Fuses sein, so dass der Controller den internen RC-Oszillator statt des externen 16MHz Quarz nutzt. Die culfw ist für eine Verarbeitungsgeschwindigkeit von 8MHz ausgelegt, daher wird beim nanoCUL die externe Frequenz von 16MHz direkt beim Start heruntergeteilt.
Bevor der Selbstbau CUL mit fhem verwendet wird kann man noch eine Funktionskontrolle mit Hilfe eines Terminalprogramms wie screen, picocom, cutecom oder minicom vornehmen. Dabei müssen die Kommunikationsparameter 38400/8N1 sein.
Nach der Eingabe von V und Bestätigung mit Return sollte die Versionsinformations ausgegeben werden. Nach ? werden die unterstützen Protokolle ausgegeben, siehe die Dokumentation der culfw für Details.
Um zu prüfen, ob der Empfang prinzipiell funktioniert kann das Kommando X08 verwendet werden. Wird auf der eingestellten Frequenz irgendwas empfangen, so erfolgt dann eine Ausgabe.
Hinweise zum Betrieb mit Fhem
Der Selbstbau CUL wird fast genauso wie ein richtiger CUL verwendet, die entsprechende Dokumentation gilt also auch hier. Der einzige Unterschied ist der Bootloader. Der bereits bei fabrikneuen Arduinos vorhandene Bootloader ist nicht kompatibel zu dem Bootloader der culfw. Daher funktioniert das Kommando B zum rebooten des Selbstbau CULs nicht. Der Selbstbau CUL gerät dann in eine Endlosschleife die sich nur durch aus- und einstecken beenden lässt. Das Problem tritt aber in normalen Betrieb nicht auf.
USB Geräte werden bei jedem Systemneustart neu enumeriert. Daher kann es vorkommen, dass ein Gerät das mal unter /dev/ttyUSB0 erreichbar war nach dem Neustart unter /dev/ttyUSB1 ist. Das führt natürlich zu Problemen, wenn fhem das Gerät unter /dev/ttyUSB0 erwartet. Um dieses Problem auszuschließen, empfiehlt es sich den CUL unter seiner eindeutigen ID anzusprechen. Die entsprechende Gerätedatei findet sich unter /dev/serial/by-id.
Bekannte Probleme
Viele der Arduino nano haben eine sehr grell leuchtende blaue Stromversorgungs-LED. Diese lässt sich nicht per Software ausschalten. Sollte sie stören, kann entweder die Lötverbindung zur LED durchtrennt werden oder diese z. B. mit einem schwarzen Lackstift übermalt werden.
Bei den nachgebauten nanos gibt es wohl viele mit einem Fehler in der Schaltung (unverbundener TEST Pin des FT232RL). Das kann dazu führen, dass er nicht richtig am USB Anschluss funktioniert.