Bastler aufgepasst! Es kommt etwas ganz ganz Großes, der Z-Uno. Ab Juli wird sich die DIY Szene rund um Z-Wave monumental ändern, denn ihr könnt Devices selbst programmieren.
Was ist dieses Z-Uno
Der Z-Uno ist ein in C(++) programmierbarer Mikrocontroller. Er kann daher auf logischer Ebene erst einmal das Gleiche wie jeder Arduino. Aber fangen wir einmal von Beginn an.
Das Besondere bei Arduino ist, dass auf einem (meist Atmel 328) Mikrocontroller eine Firmware aufgespielt wird/ist. Dies ermöglicht den einfachen Upload von Usercode über Serial (USB) und deren Ausführung. Es wird also kein teurer und früher auch komplizierter Programmer benötigt, sondern der Arduino wird wie ein USB Gerät an den PC angesteckt und es kann los gehen.
Beim Z-Uno kommt eine Besonderheit hinzu, denn abgesehen von der etwas anderen Hardware (Intel Architektur) besitzt der Chip auf dem Z-Uno einen Z-Wave Netzwerk Stack. Dieser ist eine separate "Schicht" und um die Hardware über den Usercode anzusprechen gibt es eine Menge Klassen bzw. Makros
Zusammengefasst heißt das: Ich kann mir meine eigenen Z-Wave Devices erstellen und definieren, ganz ohne Z-Wave Allianz Mitgliedschaft und ohne Fachwissen über das Z-Wave Netzwerk. Der Fantasie sind (fast) keine Grenzen gesetzt, denn der Z-Uno kann bis zu 10 Z-Wave Klassen aufspannen. (Beispiel: 5 Dimmer, 3 Schalter, 2 Sensoren)
Die Von mir genutzte Boardversion ist eine veraltete. Diese wird nicht mehr verkauft, die Funktion bleibt aber gleich. Die neue Version seht ihr bei den Layouts. Der Preis wird in etwa 50-60€ betragen, das wissen wir nächsten Monat, denn im Juli ist Verkaufsstart.
Das Board Design und die Spezifikation
Hardware:
- 28 kB Flash memory for your sketches
- 2 kB RAM available
- Z-Wave RF transmitter at 9.6/40/100 kbps
- 26 GPIO (overlaps with special hardware controllers)
- 4 ADC
- 5 PWM
- 2 UART
- 1 USB (serial port)
- 64 kB EEPROM
- 1 SPI (master or slave)
- 4 IR controllers, 1 IR learn capability
- 1 TRIAC/ZEROX to control dimmer
- 1 Interrupt
- 2 Timers 16 MHz or external source
- I2C (software)
- 1-wire (software)
- 8x6 Keypad Scanner
- 2 service LED, 1 service button
- 1 user test LED
Kurze Installation und Einführung
Treiber installieren
Unter Windows wird ein neuer Treiber benötigt. Unter OSX läuft es auch ohne Treiber.
- Den Z-Uno Treiber Herunterladen und entpacken Z-Uno Treiber
- Das Board via USB anstecken
- Systemsteuerung -> Gerätemanager öffnen
- Das umbekannte Device auswählen
- Rechtsklick und "Update Treiber Software klicken
- "Den Computer durchsuchen" auswählen und den Treiberordner selektieren.
- In der Arduino IDE dann den passenden COM-Port für das Board auswählen
Arduino IDE Setup
Die Installation gestaltet sich, wie bei Arduino üblich, recht einfach und intuitiv. Wir laden uns als erstes die Arduino IDE (wichtig ist Version 1.6.5) herunter und installieren diese. In den Voreinstellungen tragen wir dann die ZUNO URL bei "Weitere Board Manager" ein. Die URL lautet:
1 |
http://z-uno.z-wave.me/files/z-uno/package_z-wave.me_index.json |
Nun gehen wir zu Tools -> Board -> Board Manager und Scrollen ganz nach unten. Wir installieren das Paket "Z-Uno by Z-WAVE>ME" und können dann bei "Boards" das Z-Uno auswählen.
Firmware Update des Boards
Als letztes sollten wir noch die Firmware des Z-Unos auf den neusten Stand bringen. Im Menü Tools -> Programmer wählen wir auch wieder den Z-Uno aus und klicken anschließend auf "Bootloader Brennen". Das dauert einen Moment und ihr solltet in dieser Zeit das Device auf keinen Fall vom USB trennen.
Der erste Sketch
Eine Art "Hallo Welt" soll es an dieser Stelle natürlich auch geben. Auf dem Board befindet sich, wie beim Arduino, eine Debug LED an Pin 13. Diese verwenden wir im Beispiel-Sketch und können sie dann via Z-Wave ein und aus schalten. Wichtig ist, dass ihr das richtige Board ausgewählt habt und die Schritte oben bereits abgeschlossen sind.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
//Pin 13 ist Onboard debug LED #define LED_PIN 13 byte currentLEDValue; // Der Letzte LED Status global gesichert // Compileranweisung für z-wave stack // der bootloader schaut nach diesem macro und konfiguriert die zwave software // ZUNO_SWITCH_BINARY ist ein macro, // hinter dem sich ein array für die einstellung verbirgt // getter ist ein zeiger auf die userfunktion zum senden oder abfragen // setter ist die userfunktion zum empfangen, wert wird an die funktion übergeben ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_BINARY(getter, setter)); //arduino typisch: setup wird 1x beim boot ausgeführt, dann läuft die loop void setup() { pinMode(LED_PIN, OUTPUT); // LED Pin als ausgang } //loop läuft dauerhaft void loop() { // hier steht nichts in der loop, denn wir warten auf einkommende signale // diese triggern (callback) die setter funktion // hier könnte in einem anderen Fall ein ständig aktualisierender sensor wert stehen // oder eine tiefschlaf-routine, die durch einen taster unterbrochen wird } void setter(byte value) { // value übergibt den wert aus dem zwave stack // dieser kommt vom zwave kontroller (usereingabe zb) if (value > 0) { //größer 1, LED an digitalWrite (LED_PIN, HIGH); //high ist der pinstatus der LED = an } else { //ansonsten aus digitalWrite(LED_PIN, LOW); //pinstatus auf aus } currentLEDValue = value; // als letztes den wert in die globale variable ... } byte getter() { //... um sie dann hier wieder an den controller zu setzen, damit dieser weiss, //dass wir den wert empfangen haben return currentLEDValue; } //easy, oder? :) |
Nachdem wir auf Compilieren und Hochladen gedrückt haben, läuft der Sketch auf dem Device. Passieren wird jetzt noch nichts, denn wie bei einem normalen Z-Wave Controller muss dieser erst einmal inkludiert werden. Wir drücken den Button wie wir es bereits kennen 3x schnell und der Controller befindet sich im Inklusionsmodus. Ich habe es mit dem Razberry getestet, aber vermutlich funktionieren zumindest mit diesem einfachen Beispiel fast alle Z-Wave fähigen Zentralen. Vielleicht kann jemand mal die HC2 testen? Ich habe meine leider gerade nicht.
Fazit
Das war nur eine kleine Einführung. Ich werde in ein paar Beispielen detailliert auf die Funktionsweise und Möglichkeiten eingehen. Bis jetzt bin ich vom Z-Uno natürlich begeistert, denn die Varianten und Optionen sind grenzenlos und vor allem recht einfach umzusetzen. Wer noch keine Lust auf Arduino und co. hatte, bekommt diese vielleicht gerade jetzt. Mit eigenen Sensoren kann für wenig Geld fast für jede Anwendung das passende Paket in Form einer funktionsfähigen Z-Wave Komponente geschnürt werden. Der Nutzer braucht sich keine Gedanken um Datenaustausch, Netzwerk und Kompatibilität machen. Einfach cool!