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!
Hallo Daniel,
der ist ja echt niedlich. Genau das richtige für meine Türklingel.
Sind die Eingänge 5V fest oder max 3,3V ?
Jörg
Hey,
Spezifiziert sind die Pins auf 3,3V. Kann gut sein, dass sie 5V abhalten, das ist beim 3,3V Arduino das gleiche Spiel. Arbeiten sollte man mit 3,3V. Punkt. aus. :P
Grüße Daniel
Wenn das Teil verfügbar ist, teste ich das gerne mit dem HC2 :-)
Hoffe dann, den Wasserstand meiner Zisterne messen zu können......
Ich muss mal schauen, wie ich Zeit habe. Meine HC2 steht in Dresden und ich bin in Regensburg :( Wenn alles gut geht, schreibe ich hier auch noch mal. Und bei deinem Wasserstand helfe ich dir auch gern. Bin für jede Idee Dankbar, vielleicht können wir dann eine Art Kompendium mit Quellcodes hier basteln :)
Grüße
Cool.
Bin gespannt dabei!
Danke für den tollen Aritkel! :)
Hallo Hoogle, für Deine Zisterne hätte ich schon was auf Basis eines UNO oder Nano Arduino. Pegelstandsmessung, usw. würde das dann auf Z-Wave portieren. Bin auf jeden Fall dabei. Wo kriege ich es beschafft? Würde ein paar kaufen. ;-)
Hey,
das Z-Uno wird es mitte Juli wohl über http://store.zwaveeurope.com/ geben. Freut euch aber nicht zu früh, denn bis jetzt ist in der stable version des Frameworks kein objektorientiertes programmieren möglich. Viele Funktionen der standard Arduino lib sind auch nicht implementiert.
Was auf jeden Fall gehen (müsste), ist ein weiterer "normaler" arduino als Bridge, welcher die werte dann aufbereitet an das z-uno schickt. Das probiere ich, wenn ich dann daheim bin.
Grüße
Hi TheoV,
das hört sich vielversprechend an!
VG Hoggle
Hallo zusammen,
habe gerade gesehen, dass der Z-UNO verfügbar ist!!!
-> http://store.zwaveeurope.com/product_info.php?products_id=13291
Bin gespannt was sich alles damit anstellen lässt!
wird dort zwar gelistet --- aber
Die mit *** markierten Artikel sind leider nicht in der von Ihnen gewünschten Menge auf Lager.
Die bestellte Menge wird kurzfristig von uns geliefert. Wenn Sie es wünschen, nehmen wir auch eine Teillieferung vor.
Das hört sich echt interessant an.
Hat das neue Board Design auch einen Batteriehalter?
Gruß Olaf
Es ist einfach möglich eine 3,3V Lithium-Ion anzustecken. Das ist ohnehin besser als die teure Knopfzelle. Der Eingang ist glaube ich auf 3-15V Spezifiziert, du hast also freie Wahl bei der Stromversorgung.
Hallo,
Z-Uno ist jetzt verfügbar.
Die letzte Version, die ich getestet hatte funktionierte auch mit der letzten Beta vom HC2 ;)
@Hoggle: Wasserstandsmessung mit Ultraschallsensor funktioniert prinzipiell - allerdiings braucht man einen Level-Shifter, da diese Sensoren mit 5V arbeiten und der Z-UNO definitiv nur mit 3,3V Level bedient werden darf.
Anderes "Problem" könnte die dazugehörige Z-Wave Klasse sein, ob die schon integriert ist.
Das sollte man sich vorher ansehen.Verständlicherweise sind noch nicht *alle* Klassen hinterlegt.
Übrigens der Z-Uno basiert auf dem 8051 (Z-Wave Chip) und die Arduino Oberfläche wurde in C (nicht C++) implementiert.
Es gibt aber Anpassungen, die eine weitgehende C++ Kompatibilität gewährleisten sollen.
Dazu muss man dann eine andere Firmware laden (anderer Link in Board Manager URL - ist/war noch in Beta).
Von der Stromversorgung her ist der Z-UNO sehr interessant, ist definitiv für den Batteriebetrieb geeignet.
Optional kann man auch einen weiteren arduino als "Gateway" nutzen und die Sensorwerte per serial an den zuno übertragen. Stromversorgung über Batterie fällt dann eher aus, aber Solar oder Netzteil sollten weiterhin möglich sein. Ein bsp habe ich hier geschrieben:
https://github.com/danielboe/zuno_serial_transfer
Funktioniert aber auch nur mit der C++ Version der zuno ide . Eine Anleitung für diese gibt es auch hier:
http://z-uno.z-wave.me/news/2016/06/tests-of-cpp-implementation-in-z-uno/