Das intelligente Haus

Heimautomation mit Arduino, Android und PC

Mike Riley

Thomas Demmig

Für Bill, Eileen und Josie

Kapitel 1. Danksagung

Ich war schon immer ein Bastler. Meine früheste Erinnerung handelt vom Auseinandernehmen des kaputten Kassettenrecorders meines Vaters. Dies weckte mein Interesse an der Technik, die dahintersteckt. Von dort ging es über Baukästen, Modelleisenbahnen und programmierbare Taschenrechner zu PCs, mobilen Geräten und Mikrocontrollern. Im Laufe der Jahre war es sehr befreiend, nicht nur zu lernen, wie die Dinge funktionieren, sondern auch, wie technische Konzepte zu überraschenden, oft ausgesprochen erfolgreichen Ergebnissen kombiniert werden können. Das ist der Grund, warum es mir so viel Spaß gemacht hat, dieses Buch zu schreiben.

Vorrangiges Ziel dieses Buchs ist, anderen dabei zu helfen, herauszufinden, was möglich ist, indem sie ihre Umgebung beobachten und den Wunsch hegen, eine aktive Rolle beim Vereinfachen ihres Lebens einzunehmen. Hätten mir andere nicht beim Umwandeln meiner Ideen in die hier präsentierten Ergebnisse geholfen, wäre das Buch auch nicht entstanden. Diesen Menschen möchte ich für ihre Unterstützung meinen tiefsten Dank aussprechen.

Ein ganz großer Dank geht an Jackie Carter, den Lektor dieses Buches, der in unzähligen Stunden sichergestellt hat, dass meine Worte klar und präzise sind. Copy Editor Molly McBeath hat sehr erfolgreich (mir) verborgen gebliebene Tippfehler und grammatikalische Fehlkonstruktionen aufgespürt. Einen großen Dank auch an Susannah Pfalzer für ihren ansteckenden Enthusiasmus und die andauernde Ermutigung sowie an Maik Schmidt, Arduino‐Experte und (Pragmatic-)Autor, dessen eigener Erfolg mich dazu ermutigt hat, ein Buch wie dieses zu schreiben.

Vielen Dank auch an den Technik-Guru John Winans, der den Code für den in einer Reihe von Projekten genutzten Zustandsautomaten überarbeitet hat, sowie an Sven Davies, Mike Bengtson, Jon Bearscove, Kevin Gisi, Michael Hunter, Jerry Kuch, Preston Patton und Tony Williamitis, die mir alle dabei geholfen haben, dieses Buch so technisch exakt und vollständig wie möglich zu machen. Ebenfalls bedanke ich mich bei Jon Erikson und Jon Kurz für ihre große Unterstützung. Zudem möchte ich mich bei Bob Cochran und Jim Schultz für die sehr hilfreichen Rückmeldungen während der Beta-Phase dieses Buches bedanken. Ein Dankeschön auch an Philip Aaberg, dessen Musik mich beim Programmieren begleitet hat. Und an die Gründer und Teilnehmer an den Arduino- und Fritzing‐Projekten. Ihr habt die Welt ein bisschen besser gemacht.

Am meisten danke ich meiner Frau Marinette und meiner Familie, die es mir ermöglicht hat, mich über Monate in meine Arbeitshöhle zurückziehen und dieses Buch erstellen zu können. Und ich bin immer noch begeistert von den Zeichnungen, die meine Tochter für dieses Buch erstellt hat. Ich bin so stolz auf dich, Marielle!

Schließlich danke ich Dave Thomas und Andy Hunt für ihre Leidenschaft und ihre Visionen. Ihr seid die Besten.

Anmerkung

Mike Riley

mike@mikeriley.com

Naperville, IL, Dezember 2011

Kapitel 2. Einleitung

Willkommen in der spannenden Welt der Heimautomation! Wollten Sie schon immer einmal, dass Ihr Haus mehr kann als Sie nur vor den Naturgewalten zu schützen, sondern auch in der digitalen Welt mitspielt, dann erfahren Sie in diesem Buch, wie das geht. Durch die Vorstellung einer Reihe einfach nachzubauender Projekte erlernen Sie die Fertigkeiten, um diese Projekte zu erweitern und eigene Heimautomations‐Projekte auf die Beine zu stellen.

Hauptziel des Buches ist es, Sie für die vielen Möglichkeiten der Heimautomation zu begeistern und das Vertrauen wachsen zu lassen, das Sie benötigen, um auf eigenen und fremden Ideen aufzubauen. Die Projekte sind zudem eine tolle Möglichkeit, mit den eigenen Kindern werkeln und mit dem Ergebnis gemeinsam zufrieden sein zu können. Und wer weiß – vielleicht ändern Ihre kleinen Heimautomations‐Kreationen die Welt und werden zu einer großen Geschäftsidee, weil andere Hausbesitzer genau nach dieser Lösung suchen, um Zeit und Geld zu sparen.

Wer dieses Buch lesen sollte

Das intelligente Haus ist für Heimwerker, Programmierer und Bastler gedacht, die ihre Freizeit gerne damit verbringen, High-Tech-Lösungen zu bauen, um ihr Leben zu vereinfachen und Freunde und Familie mit ihren Kreationen zu beeindrucken. Also für alle, die gerne selbst mit Technik und Elektronik arbeiten, um ihre private Umgebung zu verbessern.

Es ist empfehlenswert, schon etwas über den Arduino zu wissen und auch Sprachen wie Ruby und Python zu kennen – aber es ist keine Voraussetzung. Sie werden lernen, wie Sie diese Technologien zusammenführen, um Ihren Haushalt zu vereinfachen und effizienter zu gestalten.

Neben Python-Skripten und Webservices, die auf Ruby on Rails basieren, nutzen einige Projekte die Android‐Plattform von Google, um das Sammeln und Visualisieren von Daten und das Auslösen von Aktivitäten zu ermöglichen. Es ist hilfreich, zumindest grob mit dem Android SDK vertraut zu sein, damit Sie die entsprechenden Projekte auch erfolgreich weiterentwickeln können.

Bauen Sie Dinge lieber selbst, statt sie fertig zu kaufen, wird Sie dieses Buch dazu motivieren, es als Ausgangspunkt zu nutzen und Ihre Werke zu erweitern und zu optimieren. Auch wenn einige der Projekte verschiedene Software- und Hardware‐basierende Lösungen nutzen, sind sie leicht zu verstehen und es ist auch nicht teuer, sie nachzubauen. Bei den meisten zeigt sich, wie man mit ein paar einfachen Ideen aus der klassischen analogen in eine intelligente digitale Umgebung überführt und dabei auch noch Spaß hat.

Was Sie in diesem Buch finden

Nach einer grundlegenden Einführung in die Heimautomation und das dazugehörige Handwerkszeug erfahren Sie in diesem Buch, wie Sie acht verschiedene Projekte aufbauen und programmieren, die den Haushalt verbessern und den Freizeitwert steigern. In jedem Projekt werden eine Reihe von günstigen Sensoren, Aktuatoren und Mikrocontrollern mit bestimmten Fähigkeiten verwendet. Sie werden die Hardware zusammenbauen und die Software programmieren, um eine Reihe von Funktionen umzusetzen, wie zum Beispiel das Umlegen von Schaltern über Ihr Smartphone, das Erkennen einer Lieferung durch einen Paketboten sowie das Informieren per E-Mail, erkennen, wenn das Vogelhäuschen wieder mit Futter befüllt werden muss und das Öffnen und Schließen von Rollos abhängig von Licht und Temperatur.

Da zu den empfohlenen Fertigkeiten für das Aufbauen dieser Projekte auch Programmierkenntnisse gehören, basiert dieses Buch auf anderen Pragmatic‐Büchern. Wollen Sie über das Programmieren des Arduino oder das Schreiben von Ruby- oder Python-Skripten lernen, empfehle ich Ihnen, einen Blick in das Literatur zu werfen.

Jedes Projekt beginnt mit einer allgemeinen Einführung, gefolgt von einem Abschnitt zu den benötigten Bauteilen. Darauf folgt ein Abschnitt zum Zusammenbau des Projekts mit Schritt-für-Schritt‐Anweisungen zur Hardware. Das intelligente Haus baut größtenteils (aber nicht immer) auf dem Arduino auf. Ist die Hardware zusammengebaut, kann sie programmiert werden, um die ihr zugedachte Automationsaufgabe auszuführen. Bei den Programmen kann es Code rein für den Arduino geben, aber auch Skripte, die auf einem Computer ausgeführt werden, der die Daten von den Hardware‐Elementen ausliest, verarbeitet und steuert.

Dieses Buch schließt mit einem Kapitel zu zukünftigen Projekten in der Hausautomation und einem Kapitel mit Ideen zum Weiterverwenden der Hard- und Software‐Ansätze aus den acht Projekten.

Arduinos, Androids und iPhones – oh je!

Mit dem rasanten Aufstieg der mobilen Geräte hat es der Post-PC in das Technologie‐Vokabular geschafft. Ich bin ein großer Freund von Technikumwälzungen, aber ich bin auch alt genug, um drei große Computerrevolutionen mitgemacht zu haben (vom Mainframe zum PC, den Aufstieg des Internet und den Weg vom PC zu den mobilen Geräten) und ich weiß, dass die Änderung gar nicht so schnell abläuft, wie man es immer glaubt. Bis mobile Anwendungen auch auf mobilen Geräten genauso programmiert werden können wie PC-Anwendungen auf PCs, wird ein Linux-, Windows- oder Mac-Computer immer noch ein wichtiger Bestandteil beim Entwickeln mobiler Apps sein. Das gleiche gilt für die Arduino‐Programmierung.

Nichtsdestotrotz ändern sich die Zeiten tatsächlich. Microsoft Research war einer der ersten großen Anbieter eines Telefon‐Betriebssystems, der versuchte, echte mobile Anwendungen mit der Veröffentlichung von TouchStudio direkt auf dem Mobilgerät zu entwickeln. Google-Entwickler Damon Kohler hat den Scripting Layer for Android (SL4A) erschaffen, mit dem Android‐Anwender die Möglichkeit haben, mit einem Texteditor auf ihrem Smartphone ziemlich komplexe Programme zu schreiben. Zusammen mit dem IOIO-Board (»Jo-Jo«) von Sparkfun sehen wir schon erste Ansätze, bei denen sich der PC für ein paar der Skripte aus diesem Buch ersetzen ließe.

Da Sie einen Mac, einen Linux- oder Windows‐Rechner für das Programmieren des Arduinos und der mobilen Apps in diesem Buch benötigen, wird es sich bei diesem Rechner auch um den Computer handeln, auf dem die serverseitigen Programme laufen, die Informationen verarbeiten und an Ihre Mobilgeräte weitergeben. Haben Sie solch einen Computer nicht, weil Sie mit Ihrem Laptop arbeiten, der Sie auch immer auf Ihren Reisen begleitet, sollten Sie sich überlegen, einen günstigen Linux- oder Mac-Rechner als Home Server zu besorgen. Sie haben dadurch nicht nur ein dediziertes System, auf dem die Überwachungsanwendungen rund um die Uhr laufen können, sondern es kann auch noch als Network Attached Storage (NAS)-Server dienen.

Ich glaube an Open Source – sowohl bei der Hardware als auch bei der Software. Daher basieren die Projekte in diesem Buch auch darauf. Zudem bin ich bezüglich der Technik recht agnostisch und habe keinen großen Hang zu genau einem Computerhersteller oder einer Programmiersprache. Der Code in diesem Buch könnte genauso gut in Mono-basiertem C# und Perl geschrieben sein, aber ich habe mich für Ruby und Python entschieden, weil diese Sprachen sehr gut portierbar sind und von vielen Seiten unterstützt werden. Ich hätte einen Windows- oder Linux-Rechner als Server und Entwicklungssystem nutzen können, habe aber einen Mac genutzt, weil Ruby und Python hier vorinstalliert sind und man sich damit das Installieren, Konfigurieren und die Fehlersuche spart, die man sonst bis zum Erreichen eines lauffähigen Systems vor sich hat.

Passend zu dieser Open-Source-Philosophie habe ich mich auch dazu entschieden, die Beispiele mit mobilen Apps ausschließlich für das Android OS zu präsentieren. Ich nutze für mich persönlich zwar lieber iOS-Geräte, aber das Schreiben von Anwendungen für iOS ist deutlich aufwendiger. Neben dem Erlernen von Objective-C und den verschiedenen Frameworks sowie dem Kampf mit der Speicherverwaltung braucht man zum Ausliefern von iOS-Apps entweder ein per Jailbreak »befreites« Gerät oder man muss eine jährliche Mitgliedschaft im iPhone Developer Network von Apple bezahlen. Im Gegensatz dazu ist die Entwicklung mit dem Android SDK frei und offen. Android‐Programme beherrschen zudem das Multitasking besser als iOS-Programme. Natürlich führen diese beiden Vorteile zu größeren Sicherheits‐Risiken und Problemen mit der übermäßigen Verwendung der Geräteressourcen. Ich empfehle den Lesern, die die mobilen Apps lieber auf Nicht-Android‐Geräten laufen lassen wollen, die in diesem Buch vorgestellten, einfachen Client-Programme auf das von ihnen gewünschte mobile OS zu portieren und ihre Ergebnisse mit der Programming Your Home Community zu teilen.

Ein weiterer Begriff, der in der Technik-Presse Fuß fassen konnte, ist das »Internet der Dinge«. Dieser Begriff beschreibt die Idee, dass mit der zunehmenden Verbreitung von an das Netzwerk angeschlossenen Mikrocontrollern die Internet‐basierte Kommunikation zwischen solchen kleinen Geräten irgendwann einmal die im Netz surfenden Menschen überholen wird. Nun, das mag zwar für das Übertragen von Daten zu einem Server stimmen, aber das Erreichen solch eines Geräts aus dem Internet ist immer noch eine Herausforderung. Neben dem technischen Wissen, das nötig ist, um einen dynamischen DNS-Eintrag einzurichten und eine sichere Port-Weiterleitung zu konfigurieren, um das Gerät erreichen zu können, gibt es auch ISPs, die ausgehende Ports blockieren, um Endanwender davon abzuhalten, dedizierte Server auf den gebräuchlichen Netzwerkports einzurichten, zum Beispiel für FTP, HTTP/S und SMTP.

Die Projekte aus diesem Buch sollten problemlos in einem Haus-LAN funktionieren. Das Auslesen von Sensordaten außerhalb dieses lokalen Netzwerks ist dagegen kompliziert. Wie prüfen Sie den Status von zum Beispiel eines Temperaturmessers, ohne sich mit dem Öffnen und Weiterleiten von Ports auf Ihrem Router herumschlagen zu müssen (von den sich dadurch ergebenden Sicherheitsproblemen mal ganz abgesehen)?

Glücklicherweise haben eine Reihe von Firmen damit begonnen, Plattformen anzubieten, die über einfache Webservice-APIs ansprechbar sind, um diese Probleme zu vermeiden. Drei davon sind Pachube, Exosite und Yaler.[1] Das Konfigurieren und Konsumieren von ihren Services ist recht leicht. Schauen Sie sich ruhig mal ihre Sites an, um herauszufinden, ob Sie deren Tools in Ihren eigenen Projekten einsetzen können.

Codebeispiele und Codekonventionen

Der Code in diesem Buch besteht aus C/C++ für Arduino, Java für Android, Ruby für die Web-Middleware und Python für Desktop‐Skripte. Die meisten Codebeispiele sind vollständig enthalten – mit Ausnahme von größeren externen Bibliotheken (wie bei Programmen für Android und Ruby on Rails). Die Syntax jeder Sprache ist passend hervorgehoben und der größte Teil des Codes ist ordentlich kommentiert, so dass man auch die wichtigen Code-Elemente erkennt.

Hervorhebungen und Kästen sind nur selten eingesetzt, um den Lesefluss nicht allzu sehr zu unterbrechen.

Online-Ressourcen

Schauen Sie auf der (englischsprachigen) Website des Buches vorbei (http://pragprog.com/titles/mrhome), wo Sie den Code für die Projekte herunterladen, am Diskussionsforum zum Buch teilnehmen, Fragen stellen und Ihre eigenen Ideen zur Heimautomation veröffentlichen können. Fehler, fehlende Informationen und andere Korrekturen finden Sie hier ebenfalls im Errata-Bereich.

Weitere beliebte Websites sind die Do-it-yourself‐Websites Makezine und Instructables,[2] auf denen viele selbstgebaute Werke vorgestellt werden.

Es gibt eine Reihe von IRC-Kanälen auf freenode.net und SIG-Foren auf Google Groups, die sich dem Thema widmen, wobei es spezielle Gruppen für die einzelnen Aspekte des DIY-Gadget-Designs, der Heimautomation und des Hardware Hacking gibt.[3]

Okay, genug mit dem Vorwort. Lassen Sie uns endlich etwas bauen!

[1] http://www.pachube.com, http://www.exosite.com und http://www.yaler.org.

[2] http://www.makezine.com und http://www.instructables.com.

[3] http://groups.google.com/group/comp.home.automation/topics

Teil I. Vorbereitungen

Kapitel 3. Der Einstieg

Bevor wir die Hardware verdrahten und den Code zusammenstellen, wollen wir uns um die Grundlagen kümmern und auch klären, was wir genau mit Heimautomation meinen, was es für Privatkunden bisher gab und warum es heute und in Zukunft sinnvoll ist, eigene Lösungen zu bauen.

Wir werden auch ein paar Best Practices beim Design und bei der Konstruktion beschreiben, die sehr nützlich sind, wenn man Projekte aus dem Buch nachbaut.

Beginnen wollen wir mit der Definition von Heimautomation. Dann schauen wir uns ein paar der fertigen kommerziellen Lösungen an, die auf dem Markt verfügbar sind, und werfen einen kurzen Blick auf die bekannteren Hard- und Softwareprojekte im Bereich der Heimautomation. Das Kapitel endet mit ein paar Tools und Praktiken, die mir sehr geholfen haben, als ich die Projekte zu diesem Buch entwarf – aber auch bei anderen Projekten, die nichts mit Heimautomation zu tun haben.

Was ist Heimautomation?

Was genau ist Heimautomation? Ganz grundlegend handelt es sich um ein Produkt oder eine Dienstleistung, das im Haus oder in der direkten Umgebung eine Aktion auslöst oder eine Nachricht übermittelt, ohne dass der Besitzer selbst eingreift. Ein Wecker ist ein Heimautomations-Gerät. Ebenso ein Rauchmelder. Das Problem ist, dass diese einzelnen Geräte kein Standard‐Netzwerk-Kommunikationsprotokoll verwenden, so dass sie nicht so miteinander »reden« können wie normale Computer.

Eine meine ersten Erinnerungen an die Heimautomation ist die automatische Filterkaffee‐Maschine von Mr. Coffee, die in den frühen 1970er Jahren in unseren Haushalt gelangte. Die Freude, die dieses einfache Küchengerät meinen Eltern gebracht hat, war einzigartig. Es war für sie so schön, zu wissen, dass beim Aufwachen schon eine frisch aufgebrühte Tasse Kaffee auf sie wartete. Wer hätte gedacht, dass solch ein einfaches Konzept – eine Kaffeemaschine kombiniert mit einem Wecker – ihre Welt ändern würde?

Jetzt befinden wir uns im 21. Jahrhundert und die einfachen Kaffeemaschinen werden von Bastlern überarbeitet, die Netzwerk‐Adapter, Temperatursensoren und Mikrocontroller miteinander verbinden, um den Brühvorgang mit genau der richtigen Dauer und Temperatur durchzuführen und dann eine SMS zu verschicken, dass der Kaffee fertig ist. Es ist nur eine Frage der Zeit, bis die Hersteller günstige Elektronikschaltungen in ihre Geräte einbauen, die das erledigen, was die Bastler bisher selbst umgesetzt haben. Aber ein Standard‐Kommunikationsprotokoll zwischen solchen Geräten ist noch nicht in Sicht. Es sind allerdings durchaus Bestrebungen der verschiedenen Hersteller im Gange, dieses Problem anzugehen.

Kommerzielle Lösungen

Die Versuche, die Heimautomations‐Kommunikation zu standardisieren, sind fast so alt wie Mr. Coffee. Eine der ersten größeren Firmen war X10, die immer noch einfache und recht günstige Heimautomations‐Lösungen anbietet. X10 greift auf das bestehende Stromnetz im Haus zurück. Dabei verwendet es ein einfaches Pulsecode‐Protokoll, um Nachrichten von der X10-Basisstation oder von einem Computer, der mit einer X10‑Kommunikationsschnittstelle verbunden ist, zu übertragen. Probleme mit der Signaldämpfung, Prüfsummen und Rückmeldungen von Nachrichten sowie die unhandliche Hardware und die Konzentration auf das Steuern über reine Ein-/Ausschalter haben aber eine größere Verbreitung verhindert.

Es gab weitere Standardisierungsversuche, wie CEBus und Insteon, aber keiner hat einen größeren Erfolg im Heimbereich gehabt. Das liegt zum Teil am Henne-Ei-Problem der fehlenden Haushaltsgeräte, die von den Herstellern mit entsprechenden Schnittstellen und Protokollen ausgestattet sind.

Vor kurzem hat Google angekündigt, sein Android‐Betriebssystem in Haushaltsgeräten einzubetten. Man wird sehen, ob Google da Erfolg hat, wo andere gescheitert sind, aber die Erfahrung spricht eher dagegen.

Statt weitere zwanzig Jahre auf einen endlich erfolgreichen Standard zu warten, gibt es heute eingebettete Rechner in Geräten, die über das Standard-TCP/IP-Protokoll mit anderen Computern kommunizieren. Die Preise solcher Hardware sinkt weiterhin auf einen Bruchteil der Preise, die man noch vor ein paar Jahren bezahlen musste. Während diese Komponenten also eine immer größere Verbreitung finden, ist jetzt der richtige Zeitpunkt für Software‐Entwickler, Heimautomations-Fans und Bastler, eigene Lösungen zu entwerfen und umzusetzen. Ein paar wenige werden vielleicht eine günstige und attraktive Lösung entwickeln, die auch dem Markt gefällt und eines Tages voll einschlagen und eine echte Revolution für den Haushalt auslösen wird.

Do-it-yourself-Lösungen

Do-it-yourself ist bei der Heimautomation heute attraktiver als je zuvor. Die Kombination aus günstiger Elektronik und preiswerten vernetzbaren Computern macht diese Option ausgesprochen interessant. Es gibt noch weitere Gründe, die Do-it-yourself‐Lösungen so spannend machen. Anders als proprietäre, kommerzielle Produkte handelt es sich bei den selbst gebauten Projekten nicht um Black Boxes. Sie kennen den Quellcode. Sie haben das Wissen. Alles, was Sie brauchen, ist vorhanden.

Sie wissen nicht nur, wie die Lösung gebaut wird, sondern auch, wie Sie Fehler beheben, wie Sie reparieren und verbessern. Keine der kommerziellen Lösungen kann genau Ihre Bedürfnisse erfüllen. Hersteller von Heimautomations‐Lösungen müssen ihre Produkte für die Allgemeinheit anlegen, damit sie für viele Leute interessant sind. Dadurch können sie sich nicht den Luxus leisten, Speziallösungen zu erstellen, die genau auf einen Kunden passen. Aber mit ein bisschen Grundlagenwissen und Bastelerfahrung schaffen Sie es, sich selbst genau die Lösung zu bauen, die Sie benötigen.

So geht es zum Beispiel im ersten Projekt darum, einen Wasserstandsmelder für den Pumpensumpf zu bauen, der Sie per E-Mail benachrichtigt, wenn das Wasser eine bestimmte Höhe erreicht hat. Während sich kommerzielle Systeme immer akustisch melden, habe ich im lokalen Baumarkt keines gefunden, das sich auf die angegebene Weise bemerkbar macht. Und sollten Sie das Design verändern müssen (um zum Beispiel eine hell blinkende LED zu ergänzen und die Nachricht damit auch »visuell« sichtbar zu machen), müssen Sie kein weiteres kommerzielles Produkt kaufen, das dieses Feature bietet.

Schauen Sie sich in Ihrem Haus um. Suchen Sie nach ineffizienten Lösungen und sich wiederholenden Aufgaben, die Sie in den Wahnsinn treiben. Überlegen, was sich mit ein bisschen Einfallsreichtum und Automation verbessern lässt. Sie werden eventuell überrascht sein, wie viele Ideen Sie in kurzer Zeit haben.

Die Ausgaben im Auge behalten

Seien wir ehrlich. Es ist nicht sehr sinnvoll, mehr Geld für die Teile auszugeben, die zusammengebaut ihren Zweck erfüllen (oder auch nicht), als ein günstigeres, fertiges Gerät zu kaufen, das die Funktionalität einer eigenen Lösung vielleicht sogar übertrifft. Sicher, auch das Wissen, das man durch das Design erlangt, der Spaß am Bauen und die Befriedigung, das eigene Werk in Aktion zu sehen, hat seinen Wert. Aber solche Ausgaben zum Beispiel gegenüber seinem Partner zu rechtfertigen, der auf die Haushaltskasse achtet, kann schnell den Spaß ruinieren, den man beim Basteln hatte.

Wenn Sie sich ein neues Design überlegen, achten Sie darauf, Arbeitszeit und vorhandenes Material möglichst gut einzusetzen und viel zu lernen. Sie brauchen vielleicht viele Experimente und Iterationsschritte, bis Hardware und Software zusammenarbeiten und das Gewünschte liefern. Aber wenn Sie am Ball bleiben, werden Sie für Ihre Ausdauer belohnt werden. Sie erreichen nicht nur Anerkennung für eine günstige Lösung; solche Einschränkungen helfen auch dabei, die Kreativität zu fördern. Das ist der Grund, warum ich versucht habe, alle Projekte dieses Buches in einem vernünftigen Budget-Rahmen zu halten. Ich finde es auch ausgesprochen gut, alte Elektronikkomponenten und Materialien so weit wie möglich wiederzuverwenden.

Machen Sie Ihre Hausaufgaben. Stöbern Sie im Internet, um herauszufinden, wer schon so etwas Ähnliches gebaut hat wie das, was Sie erstellen wollen. Hatte derjenige Erfolg? War es das aufgewendete Geld und die Zeit wert? Gibt es eine kommerzielle gleichwertige Alternative?

Stellen Sie fest, dass Ihre Idee einmalig ist, schätzen Sie ab, wie viel Zeit und zu besorgendes Material Sie benötigen. Denken Sie auch daran, die Werkzeuge mit zu berücksichtigen, die Sie zum Erstellen und Testen Ihres Produkts noch kaufen müssen. Das kann sich durchaus läppern, besonders, wenn Sie gerade mit dem Selbstbauen beginnen. Steigen Sie weiter in den Do-it-yourself‐Bereich ein, werden Sie bald erkennen, dass ein billiger Lötkolben und ein paar Kabel nicht mehr ausreichen und Sie nun ein gutes Multimeter und vielleicht sogar ein Oszilloskop benötigen. Aber der Vorteil des Selbstbaus ist, dass Sie es in der Hand haben, welches ein Werkzeug Sie wann kaufen. Wächst Ihr DIY-Freundeskreis an, werden Sie bemerken, dass Sie auch mehr Möglichkeiten zur angeregten Unterhaltung haben, größere Werkzeuge eher ausleihen können, wertvolle Tipps und Einblicke erhalten, und auch Ihre Unterstützung wächst.

Richten Sie Ihren Arbeitsplatz ein

Ein guter Zusammenbau gelingt nur mit einem guten Design. Erstellen Sie diese Projekte in einer frustrationsfreien Umgebung, sorgen Sie dafür, dass Ihre Arbeitsabläufe und Ihr Verstand im Einklang sind.

Arbeiten Sie in einer gut beleuchteten, gut belüfteten Umgebung. Das ist besonders beim Löten wichtig. Öffnen Sie ein Fenster und nutzen Sie einen kleinen Ventilator, um die Dämpfe nach draußen zu leiten. Gibt es kein Fenster, das sich öffnen lässt, verwenden Sie eine andere Möglichkeit, die Abluft loszuwerden.

Haben Sie ausreichend Platz, nutzen Sie einen großen Tisch, um Ihre Elektronikteile zu verteilen. Sorgen Sie dafür, dass die Stromschalter immer in der Nähe sind, und versuchen Sie, auf dem Tisch auch eine Steckdose bereitzuhaben, um sie schnell nutzen zu können.

Organisieren Sie Ihre Komponenten in kleinen Kästen, Babybrei‐Gläschen, Pillen- oder Bonbondosen – Behältnisse, die dafür sorgen, dass alle die verschiedenen Kondensatoren, Widerstände, LEDs, Kabel, Platinen, Motoren und Sensoren nicht durcheinanderfliegen.

Platzieren Sie Ihren Computer auf dem Arbeitstisch oder zumindest in der Nähe. Bei einem Laptop ist das kein Problem. Bei einem Desktop‐Computer sorgen Sie dafür, dass er nicht zu viel Platz auf dem Tisch wegnimmt, indem Sie nur Monitor, Tastatur und Maus (beides möglichst drahtlos) darauf stellen.

Versuchen Sie auch, die direkte Umgebung des Arbeitstisches müllfrei zu halten. Das senkt nicht nur das Brandrisiko, es macht es auch deutlich einfacher, dieses winzige Bauteil wiederzufinden, das vom Tisch gerollt ist und sich eigentlich auf Nimmerwiedersehen verabschiedet hat.

Und achten Sie schließlich darauf, den Arbeitstisch exklusiv für die Projekte freizuhalten. Bei manchen Projekten fühlt man sich wie beim Zusammensetzen eines Puzzles. Sie benötigen einen Platz für die nur halb zusammengebauten Elemente, während Ihr normales Leben weitergeht. Muss man sich nur hinsetzen und kann gleich weiterbauen, ist das viel angenehmer, als erst all die Kabel und Bauteile wieder auspacken und auseinanderfitzeln zu müssen.

Skizzieren Sie Ihre Ideen

Wenn Sie eine Eingebung haben, gibt es nichts Besseres als die gute alte Kombination aus Papier und Bleistift, um Ihre Ideen schnell zu dokumentieren. Möchte man seine Gedanken lieber auf einem Computer erfassen, gibt es viele freie, plattformunabhängige Open-Source-Tools, die mir dabei geholfen haben, meine Ideen zu sammeln und meine Arbeit zu dokumentieren:

Freemind ist ein tolles Tool für das Sammeln von Gedanken, Zielen und Abhängigkeiten.[4] Diese ausgereifte Mindmapping‐Anwendung hilft Ihnen dabei, Gedanken zu ordnen und die Verbindungen zwischen ihnen zu entdecken. Damit sparen Sie Zeit und Geld, da sich die wichtigen Ideen leichter herauskristallisieren lassen, Redundanzen vermieden werden und Sie Ihre Ziele priorisieren können.

Fritzing ist eine Diagramm‐Anwendung, die extra für die Dokumentation von Schaltplänen rund um den Arduino entworfen wurde.[5] Leider befindet sie sich noch in der Entwicklung und es gibt ein paar Ecken und Kanten. Auch ist eine ganze Reihe beliebter Sensoren noch nicht als Symbole eingebunden, aber die Objektbibliothek wächst stetig an, weil sich immer mehr Personen am Projekt beteiligen. Ich verwende nur diese Applikation für das Dokumentieren meiner Arduino‐basierten Projekte, und auch die Schaltpläne in diesem Buch wurden mit Fritzing erstellt.

Inkscape ist ein einfach zu bedienendes, vektorbasiertes Zeichenprogramm, das dabei hilft, über das Arduino‐zentrierte Fritzing hinaus Ideen zu skizzieren.[6] Obwohl Inkscape vor allem auf Grafikkünstler ausgerichtet ist, besitzt es exakte Messinstrumente, mit denen sich benötigte Größen ermitteln lassen.

Schaut man über den Tellerrand des Desktop-PCs hinaus, stellt man fest, dass Tablets immer mehr die Aufgaben übernehmen, für die man bisher Papier und Bleistift genutzt hat. Tatsächlich würde es mich nicht überraschen, wenn Sie dieses Buch auf einem iPad oder Kindle lesen. Abgesehen von der Möglichkeit, Referenzliteratur griffbereit zu haben, dienen Tablets auch als wunderbares Hilfsmittel für das Sammeln von Ideen und das Erstellen erster Skizzen oder vorläufiger Projekt‐Designs. Ein iPad (oder Android-Tablet) ist zusammen mit einer stabilen Stütze eine praktische elektronische Referenz. Laden Sie Ihre Skizzen, dokumentieren Sie Ihren Fortschritt, passen Sie Prioritäten an und machen Sie sich Notizen.

Zu meinen momentan beliebtesten iPad-Apps für meine Projekte gehören:

Elektor Electronic Toolbox ist eine Referenz für Elektronikbauteile mit einer ganzen Reihe von hilfreichen Umrechnern und Konvertierungs‑Tools.[7]

iCircuit ist ein Simulator für elektronische Schaltkreise, mit dem man diese viel einfacher erstellen und verstehen kann, als wenn man sich statische Diagramme auf einer ausgedruckten Seite anschaut.[8]

iThoughts HD ist eine Mindmap-App, die Freemind‐Dateien importieren und exportieren kann.[9]

miniDraw ist ein vektorbasiertes Zeichenprogramm, das in das SVG‐Format exportieren kann – perfekt, um Ihre Skizzen nach Inkscape zu importieren.[10]

Neben dem Design und der Dokumentation benötigen gut geführte Projekte auch genaue Messungen und Tests, um Ihre Arbeit zu überprüfen.

Schreiben, Verdrahten und Testen

Leider gibt es keinen guten Software‐Emulator für den Arduino. Glücklicherweise sind Programme für diese Plattform meist klein und spezifisch genug, so dass die Runden aus Kompilieren, Ausführen und Debuggen überschaubar bleiben. Gut geschriebener Code und ordentliche Tests helfen sehr beim Sicherstellen eines hochwertigen Ergebnisses. Das Gleiche gilt für das Entwerfen und Zusammenbauen der realen elektrischen Verbindungen.

Während nahezu alle Projekte in diesem Buch ohne Löten zusammengebaut werden können, braucht man für dauerhafte Installationen ein bisschen Löterfahrung, um die Verbindungen fehlerfrei zu gestalten. Am besten prüft man zunächst (zum Beispiel mit einer Steckplatine), ob alles funktioniert, bevor man die Verbindungen dauerhaft verlötet.

Setzen Sie gute Coding-Techniken ein. Egal ob es um Mikrocontroller-Code für den Arduino oder um serverseitigen Code für Ihre Ruby- oder Python-Skripte geht – Test-Driven Development (TDD) ist eine gute Praktik, die Sie übernehmen sollten. Es gibt eine Reihe guter Testframeworks und Bücher zu diesem Thema. Lesen Sie Ian Dees Artikel »Testing Arduino Code« in der Ausgabe April 2011 des PragPub-Magazins,[11] aber auch RC11.

Führen Sie beim Schreiben von Python-Skripten Unit Tests wie py.test aus. Schreiben Sie den Code in Ruby und erstellen Sie Rails-basierte Web‑Frontends, werfen Sie einen Blick auf Rspec (mehr dazu finden Sie in CADH09). Für Ihre Android‐Anwendungen nutzen Sie das Android Testing Framework.[12] Selbst bei kleinen Applikationen hilft Ihnen das Verwenden bewährter Testmethoden dabei, sauber zu bleiben und die Codequalität hoch zu halten.

Machen Sie sich mit einem Multimeter vertraut. Wie ein Software‐Debugger kann ein Multimeter sehr hilfreich sein, wenn Sie herauszufinden versuchen, was in Ihrem Projekt passiert – zum Beispiel, wo ein Kurzschluss Ihr Projekt beeinträchtigt. Außer für das Finden von Problemen ist ein Multimeter auch nützlich, wenn man elektrische Ausgänge misst. Sie können es zum Beispiel verwenden, um herauszufinden, ob ein mit Solarzellen kombinierter Akkupack ausreichend Energie liefert, um einen durch den Mikrocontroller gesteuerten Servo zu versorgen.

Haben Sie bisher noch kein Multimeter verwendet, geben Sie einfach »voltmeter tutorial video« in Ihre bevorzugte Suchmaschine ein. Sie erhalten dann eine umfangreiche Auswahl.

Dokumentieren Sie Ihre Arbeit

Handgezeichnete Skizzen sind ein guter Ausgangspunkt, aber Projekte ändern sich häufig mit der Zeit und bewegen sich in eine andere Richtung, weil zum Beispiel die Hardware nicht mitspielt und man sich umorientieren muss. Das endgültige Produkt kann sich deutlich vom ursprünglichen Design unterscheiden. Deshalb ist es so wichtig, ein Projekt mit genauer, sauberer und knapper Dokumentation zu begleiten, besonders wenn Sie es auch anderen zur Verfügung stellen wollen.

Anwendungen wie Fritzing helfen beim Erstellen sauberer, farbiger Diagramme. Damit ist einem schon sehr geholfen, wenn man herausbekommen will, wie ein Projekt zu verdrahten ist. Nichts ist schlimmer, als aus verschwommenen, schrägen Flickr-Fotos oder YouTube-Videos mit Drahtverhauen und fast nicht zu erkennenden Platinen erraten zu müssen, wie man vorzugehen hat. Solche Bilder und Videos sind eine nette Ergänzung, aber ein gut geführtes Projekt sollte immer saubere und verständliche Abbildungen zum Aufbau enthalten.

Kommentieren Sie Ihren Code, auch wenn es sich nur um einfache Skripte und Sketches handelt. Das hilft nicht nur Ihnen selbst und den Leuten, die Ihren Code nutzen, beim Verstehen des verschiedenen Routinen. Gute Kommentare machen Ihnen auch klar, was Sie sich gedacht haben, als Sie den Code das erste Mal schrieben. Und wenn Sie Ihren Code auf Repositories wie Github und Sourceforge bereitstellen, deutet gut kommentierter Code auf ein professionelleres Vorgehen hin, das Ihnen bei anderen auch mehr Respekt einbringt.

Bei all diesen Empfehlungen denken Sie trotzdem daran, dass Spaß das wichtigste Element bei den Buchprojekten ist. Wenn Sie den haben, fällt es auch leichter, die Projekte als Ausgangspunkt zu verwenden und sie auf eigene Bedürfnisse und Ziele anzupassen.

Im nächsten Kapitel gehen wir auf die Hardware und Software ein, die wir verwenden werden, und kümmern uns um die jeweils beste Konfiguration.

[4] http://freemind.sourceforge.net

[5] http://fritzing.org/

[6] http://inkscape.org

[7] http://www.creating-your-app.de/electronic_toolbox_features.html?&L=1

[8] http://icircuitapp.com/

[9] http://ithoughts.co.uk

[10] http://minidraw.net/

[11] http://www.pragprog.com/magazines/2011-04/testing-arduino-code

[12] http://developer.android.com/guide/topics/testing/testing_android.html

Kapitel 4. Anforderungen

Bevor wir in die eigentlichen Projekte einsteigen, müssen wir uns über das Material und die Vorgehensweisen Gedanken machen, die wir beim Bauen der Lösungen nutzen wollen.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!