http://sites.schaltungen.at/arduino-uno-r3/arduino-heimautomation
Das intelligente HausWels, am 2016-11-18BITTE nützen Sie doch rechts OBEN das Suchfeld [ ] [ Diese Site durchsuchen]DIN A3 oder DIN A4 quer ausdrucken ********************************************************************************** DIN A4 ausdrucken ********************************************************* Heimautomation mit Arduino, Android und PC eBook vorhanden nicht für Einsteiger geeignet ! ! ! Mike Riley
mailto:[email protected]
Deutsche Übersetzung: Thomas Demmig Mannheim
Englische ORIGINAL-Ausgabe
http://www.oreilly.de/catalog/automatearduinoger/index.html http://www.oreilly.de/cgi-bin/perlfect/search/search.pl?p=1&mode=all&q=Das+intelligente+Haus e-Book von der Fa. buecher.de https://www.buecher.de eBook von www.schaltungen.at downloadbar Das intelligente Haus - Heimautomation mit Arduino, Android und PC (244 Seiten)_1a.pdf
http://www.makezine.com
http://www.instructables.com http://groups.google.com/group/comp.home.automation/topics Kommentare und Fragen können Sie gerne an uns richten: O’Reilly Verlag GmbH & Co. KG Balthasarstr. 81 D-50670 Köln mailto:[email protected] Das intelligente Haus - Heimautomation mit Arduino, Android und PC
Mike Riley
Deutsche Übersetzung von Thomas Demmig
O'REILLY-Verlag
1. Auflage (August 2012)
ISBN: 3-86899-363-9
248 Seiten eBook-Format: PDFGedruckte Ausgabe nicht mehr lieferbar! Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Mike Riley ist seit 25 Jahren ein Technologie-Begeisterter, Entwickler und Autor und hat für Connected World, DevPro Connections, Dr Dobbs, iPhone Life, Make und Software Development geschrieben. Das intelligente Haus - Heimautomation mit Arduino und Android und PC (eBook, ePUB)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. Kurzbeschreibung Das intelligente Haus – Heimautomation mit Arduino, Android und PC zeigt Ihnen anhand von geekigen Projekten, wie Sie Ihr Haus bzw. Ihre Wohnung clever automatisieren. Geeks, Häuslebauer, Programmierer und Technikjünger lernen darin, wie sie die Hausbeleuchtung fernsteuern, Ihre Wohnung vor Einbruch schützen oder auch: wie sie eine twitternde Vogeltränke bauen. Ausführliche Beschreibung In Das intelligente Haus - Heimautomation mit Arduino, Android und PC führt Sie der Technologie-begeisterte Autor Mike Riley durch eine Reihe von Heimautomations-Projekten - von einer Telefon-App, die Sie informiert, wenn ein Paket vor Ihrer Haustür abgelegt wurde, bis zu einem elektronischen Wachhund, der unerwünschte Besucher fernhält. Geekige Projekte Öffnen Sie Türen mit Ihrem Smartphone. Bauen Sie ein Vogelhäuschen, das sich via Twitter meldet, wenn die Vögel zum Fressen kommen oder das Futter ausgeht. Lassen Sie Ihr Haus sprechen, wenn Sie eine E-Mail erhalten, Besucher kommen und vieles mehr. Spannende Projekte Sie werden lernen, wie Sie Android-Smartphones, Arduinos und eine ganze Reihe von Sensoren, Servos, Programmiersprachen, Web-Frameworks und mobile SDKs einsetzen. Das intelligente Haus -- Heimautomation mit Arduino, Android und PC ist für Smartphone-Programmierer, Webentwickler, Technik-Bastler und alle anderen, die Spaß daran haben, als Heimwerker spannende elektronische Projekte zu verwirklichen. Innovative Projekte Dieses Buch soll Sie inspirieren und Ihnen die notwendigen Fertigkeiten zum Bauen erstaunlicher Automationsprojekte vermitteln, so dass Sie Ihr Haus in das intelligenteste Haus der ganzen Nachbarschaft verwandeln können! Was Sie brauchen Um Das intelligente Haus - Heimautomation mit Arduino, Android und PC richtig einsetzen zu können, sollte Ihnen die Arduino-Plattform nicht ganz fremd sein und Sie sollten Spaß am Basteln haben. Und natürlich sollten Sie neugierig sein und dazulernen wollen. Auch ein bisschen Erfahrung bei der Anwendungsentwicklung ist nicht verkehrt. http://www.buecher.de/shop/heimnetzwerke/das-intelligente-haus-heimautomation-mit-arduino-und-android-und-pc-ebook-epub/riley-mike/products_products/detail/prod_id/38618942/ 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. https://pragprog.com/titles/mrhome/errata Weitere beliebte Websites sind die Do-it-yourself-Websites Makezine und Instructables, auf denen viele selbstgebaute Werke vorgestellt werden.
Link-Liste http://www.pachube.com http://www.exosite.com http://www.yaler.org. http://www.makezine.com http://www.instructables.com. http://groups.google.com/group/comp.home.automation/topics http://freemind.sourceforge.net http://fritzing.org/ http://inkscape.org http://www.creating-your-app.de/electronic_toolbox_features.html?&L=1 http://icircuitapp.com/ http://ithoughts.co.uk http://minidraw.net/ http://www.pragprog.com/magazines/2011-04/testing-arduino-code http://developer.android.com/guide/topics/testing/testing_android.html http://arduino.cc/ http://developer.android.com/guide/topics/usb/adk.html http://jquerymobile.com/ http://developer.android.com/sdk http://www.virtualbreadboard.net http://emulare.sourceforge.net/ http://www.digi.com/xbeewifi http://www.makershed.com/ProductDetails.asp?ProductCode=JM691104 http://git-scm.com/ http://arduino.cc/en/Reference/Ethernet und http://www.arduino.cc/playground/Code/Spi http://code.google.com/p/tinkerit/source/browse/trunk/Ethernet2+library/Ethernet2/ http://gkaindl.com/software/arduino-ethernet http://www.adafruit.com/products/175 http://www.adafruit.com/products/155 http://www.sparkfun.com/products/9736 http://www.makershed.com/ProductDetails.asp?ProductCode=MKSEEED14 http://www.ladyada.net/make/waveshield/ http://www.ladyada.net/learn/sensors/pir.html http://www.freesound.org http://www.ladyada.net/make/waveshield/convert.html http://audacity.sourceforge.net/ http://www.ladyada.net/make/waveshield/libraryhc.html http://www.arduino.cc/playground/Main/Mediaplayer http://www.ladyada.net/media/wavshield/AFWave_18-02-09.zip http://www.arduino.cc/playground/Main/Mediaplayer http://www.arduino.cc/playground/uploads/Main/ServoTimer2.zip http://www.makershed.com/ProductDetails.asp?ProductCode=MKGR1 http://www.adafruit.com http://www.solio.com/chargers/ http://www.arduino.cc/playground/Main/CapSense http://www.ladyada.net/learn/sensors/cds.html. http://www.ladyada.net/make/xbee/ http://ladyada.net/make/xbee/point2point.html http://alioth.debian.org/projects/minicom/ http://www.sqlite.org/download.html https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/ http://oauth.net/ http://code.google.com/p/python-twitter/ http://www.solio.com/chargers/ http://www.sunforceproducts.com/results.php?CAT_ID=1 http://cairoplot.sourceforge.net/ http://www.adafruit.com/products/166 http://www.sparkfun.com/products/9376. https://github.com/alertedsnake/packagetrack https://github.com/alertedsnake/python-fedex http://www.intellihome.be/deutsch/heim_automation https://www.virtualbox.org/ http://www.x10.com http://www.heyu.org/heyu_faq.html http://www.heyu.org/docs/protocol.txt http://heyu.org http://www.rubyonrails.com http://eclipse.org http://developer.android.com/sdk http://developer.android.com/sdk/eclipse-adt.html http://www.prolific.com.tw/eng/downloads.asp?ID=31l. http://developer.apple.com/technologies/tools/ http://developer.android.com/sdk http://developer.android.com/guide/developing/devices/managing-avds.html http://developer.android.com/guide/publishing/app-signing.html http://developer.android.com/guide/developing/building/building-eclipse.html http://www.sinatrarb.com/ https://www.adafruit.com/products/324 http://www.adafruit.com/products/81 https://www.adafruit.com/products/352 https://www.adafruit.com/products/165 http://www.ladyada.net/make/mshield/make.html https://github.com/adafruit/Adafruit-Motor-Shield-library http://www.ladyada.net/make/mshield/use.html http://accessories.android.com http://www.powerswitchtail.com/Pages/PSTIIU.aspx http://www.adafruit.com/products/327 http://www.sparkfun.com/products/8269 http://www.adafruit.com/products/352 https://groups.google.com/group/ioio-users?pli=1 http://www.sparkfun.com/products/8734 http://www.sparkfun.com/products/10748 http://www.sparkfun.com/products/8612. http://www.smarthome.com/5192/Electric-Door-Strike-Mortise-Type/p.aspx http://www.sparkfun.com/products/10745 http://handbagdevices.com/ https://github.com/ytai/ioio/wiki http://www.sparkfun.com/tutorials/280 http://code.google.com/p/android-webserver/ http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android http://code.google.com/p/krvarma-android-samples/ http://developer.android.com/reference/android/hardware/Camera.html http://code.google.com/p/javamail-android/ https://www.grc.com/ppp.htm http://www.supertooth.net/EN/DISCO http://www.radioshack.com/product/index.jsp?productId=2131022 http://store.griffintechnology.com/imic http://developer.apple.com/library/mac/#documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/osascript.1.html http://developer.android.com/resources/articles/speech-input.html oder http://msdn.microsoft.com/en-us/library/ee125663%28VS.85%29.aspx. http://arduino.cc/blog/2011/10/04/arduino-1-0/ http://www.adafruit.com/products/191 http://www.adafruit.com/products/164 http://www.adafruit.com/products/143 http://www.adafruit.com/products/387 https://www.adafruit.com/products/385 http://www.sparkfun.com/products/9964 http://revision3.com/tbhs/homeauto ORDNER: C:\Benutzer\fritz\Desktop\Heimautomation mit Arduino\ mrhome-code.zip Von www.schaltungen.at downloadbar Das intelligente Haus - Heimautomation mit Arduino, Android und PC (244 Seiten)_1a.pdf Inhaltsverzeichnis Danksagung . . . . . . . . . . . . . xi Einleitung . . . . . . . . . . . . . . xiii Teil I – Vorbereitungen 1. Der Einstieg . . . . . . . . . . . . . 3 1.1 Was ist Heimautomation? 3 1.2 Kommerzielle Lösungen 4 1.3 Do-it-yourself-Lösungen 5 1.4 Die Ausgaben im Auge behalten 6 1.5 Richten Sie Ihren Arbeitsplatz ein 7 1.6 Skizzieren Sie Ihre Ideen 7 1.7 Schreiben, Verdrahten und Testen 9 1.8 Dokumentieren Sie Ihre Arbeit 10 2. Anforderungen . . . . . . . . . . . . . 13 2.1 Die Hardware kennen 14 2.2 Die Software kennen 19 2.3 Spaß mit Sicherheit 20 Teil II – Projekte 3. Wasserstands-Warner . . . . . . . . . . . 25 3.1 Was Sie benötigen 25 3.2 Die Lösung bauen 28 3.3 Der Zusammenbau 29 3.4 Ein Sketch 30 3.5 Den Web-Mailer schreiben 36 3.6 Einen Ethernet Shield hinzufügen 38 3.7 Und jetzt alles zusammen 42 3.8 Nächste Schritte 44 4. Elektronischer Wachhund . . . . . . . . . . 47 4.1 Was Sie benötigen 48 4.2 Die Lösung zusammenbauen 50 4.3 Den Hund zusammenbauen 51 4.4 Hundeschule 54 4.5 Das Projekt testen 58 4.6 Den Hund von der Leine lassen 58 4.7 Nächste Schritte 59 5. Zwitscherndes Vogelhäuschen . . . . . . . . 61 5.1 Was Sie benötigen 62 5.2 Die Lösung zusammenbauen 65 5.3 Der Landesensor 65 5.4 Der Futtersensor 69 5.5 Drahtlos agieren 72 5.6 Tweeting mit Python 79 5.7 Und jetzt alles zusammen 86 5.8 Nächste Schritte 87 6. Paketzustellungs-Detektor . . . . . . . . . 89 6.1 Was Sie benötigen 90 6.2 Die Lösung zusammenbauen 92 6.3 Hardware-Zusammenbau 93 6.4 Den Code schreiben 94 6.5 Der Paketzustell-Sketch 95 6.6 Den Sketch testen 96 6.7 Der Zustell-Prozessor 97 6.8 Die Zustell-Datenbank anlegen 97 6.9 Die abhängigen Pakete installieren 99 6.10 Das Skript schreiben 100 6.11 Den Zustell-Prozessor testen 105 6.12 Die Hardware einrichten 106 6.13 Nächste Schritte 107 7. Lichtschalter mit Web-Unterstützung . . . . . . 109 7.1 Was Sie benötigen 110 7.2 Die Lösung zusammenbauen 113 7.3 Hardware verbinden 114 7.4 Den Code für den Webclient schreiben 117 7.5 Den Webclient testen 119 7.6 Code für den Android-Client schreiben 121 7.7 Den Android-Client testen 125 7.8 Nächste Schritte 127 8. Rollo-Automation . . . . . . . . . . . . 129 8.1 Was Sie benötigen 129 8.2 Die Lösung zusammenbauen 132 8.3 Den Schrittmotor verwenden 133 8.4 Den Schrittmotor programmieren 134 8.5 Die Sensoren hinzufügen 136 8.6 Den Sketch schreiben 138 8.7 Die Hardware einrichten 142 8.8 Nächste Schritte 144 9. Android-Türöffner . . . . . . . . . . . . 147 9.1 Was Sie benötigen 147 9.2 Die Lösung zusammenbauen 151 9.3 Den Android-Türöffner steuern 154 9.4 Den Android-Server schreiben 159 9.5 Den Android-Client schreiben 170 9.6 Testen und Einrichten 175 9.7 Nächste Schritte 176 10. Geben Sie Ihrem Haus eine Stimme . . . . . . . 179 10.1 Was Sie benötigen 180 10.2 Lautsprecher einrichten 181 10.3 Lion eine Stimme geben 183 10.4 Das schnurlose Mikrofon kalibrieren 187 10.5 Einen sprechenden Löwen programmieren 189 10.6 Sprechen Sie mit Ihrem Haus 197 10.7 Nächste Schritte 197 Teil III – Vorhersagen 11. Zukunftsentwürfe . . . . . . . . . . . . 201 11.1 In der nahen Zukunft 201 11.2 Auf lange Sicht 204 11.3 Das Haus der Zukunft 206 12. Weitere Projektideen . . . . . . . . . . . 211 12.1 Krempel-Detektor 211 12.2 Stromverbrauch messen 212 12.3 Elektrische Vogelscheuche 212 12.4 Ferngesteuerte Fernbedienung für die Unterhaltungselektronik 212 12.5 Schlaf-Timer für Geräte 213 12.6 Feuchtigkeitsgesteuerte Gartenbewässerung 213 12.7 Vernetzte Rauchmelder 213 12.8 Garage öffnen per GPS-Position 214 12.9 Intelligente Temperatursteuerung 215 12.10 Intelligenter Briefkasten 215 12.11 Intelligente Lichtsteuerung 215 12.12 Energieüberwachung für Solar- und Windstrom 215 Teil IV – Anhänge A1. Arduino-Bibliotheken installieren . . . . . . . 219 A1.1 Apple OS X 219 A1.2 Linux 220 A1.3 Windows 220 A2. Literaturverzeichnis . . . . . . . . . . . 221 Index . . . . . . . . . . . . . . . 223 Vollständige Liste der elektronischen Komponenten, die man benötigt, um die Projekte in diesem Buch nachzubauen, zusammen mit den ungefähren Preisen (in US$, Fa. Adafruit Fa. Sparkfun USA http://www.adafruit.com http://www.sparkfun.com http://www.watterott.com • ARDUINO UNO R3, Duemilanove oder Diecimila - $30,- • Ethernet Shield - $45,- • Wave Shield mit Lautsprecher, Kabeln und SD-Karte - $35,- • Passiver Infrarot-Bewegungssensor (PIR-Sensor) - $10,- • Flex-Sensor - $12,- • Force Sensing Resistor - $7,- • TMP36 analoger Temperatursensor - $2,- • Fotowiderstand LDR03 (im Englischen auch Photocell oder CdS) - $1,- • Standard-Servomotor - $15,- • Elektrischer Türöffner (12Vdc) - $35,- • Zwei XBee-Module und Adapter-Kits - $70,- • FTDI-Verbindungskabel - $20,- • Solarladegerät mit Akku-Pack - $30,- • X10 CM11A ActiveHome Serielle Computerschnittstelle - $50,- • X10 PLW01 Standardschalter - $10,- • Seriell-USB-Konverter - $20,- • PC (möglichst Linux oder Mac) – $200,- (bis $2000,- je nach Modell) • Drahtloser Bluetooth-Lautsprecher - $120,- • Android G1 – $80,- bis $150,- je nach Gebrauchsspuren • Android-Smartphone – $50,- bis $200,- je nach Features und Vertragsbedingungen • Sparkfun IOIO-Board mit JST-Connector, Barrel Jack to 2-Pin JSTConnector und 5Vdc-Stromversorgung - $60,- • USB auf Mini-USB-Kabel - $3,- • 2,1mm Buchse für Klinkenstecker - $3,- • Kupferdraht (zum Beispiel mit 0,66 mm Durchmesser = AWG22) - $3,- • 10k Ohm Widerstand - $0.10 • 10M Ohm Widerstand - $0.10 • Kleine Steckplatine - $4,- • Isolierband und Schrumpfschlauch - $5,- • Stromversorgung 9Vdc - $7,- • Schaltnetzteil 12V 5A - $25,- • PowerSwitch Tail IIU mit einem 1k Widerstand und einem Transistor 2N4222A npn - $20,- • Schrittmotor - $14,-
ORDNER: C:\Benutzer\fritz\Desktop\Heimautomation mit Arduino\ mrhome-code.zip
WaterLevelNotifier/WaterLevelNotifier.pde Bibliothek MediaPlayer.h
Processing-IDE
MediaPlayer.pde
MediaPlayerTestFunctions.pde Seite 032 WaterLevelSensor.pde Seite 042 WaterLevelNotifier.pde Seite 057 ElectricGuardDog.pde Seite 068 BirdPerchTest.pde Seite 070 SeedPhotocellTest.pde Seite 075 TweetingBirdFeeder.pde Seite 095 PackageDeliveryDetector.pde Seite 136 StepperTest.pde Seite 138 CurtainAutomation.pde 032 - WaterLevelNotifier/WaterLevelSensor.pde void loop() { // Bei jedem Durchlauf eine Sekunde warten delay(1000); // FLEX_SENSOR abfragen bend_value = analogRead(FLEX_SENSOR); // bend_value am seriellen Port ausgeben, um erste Messungen zu machen // Auskommentieren, wenn die Werte für den Standardwert sowie die obere // und untere Grenze definiert wurden Serial.print("bend_value="); Serial.println(bend_value); switch (bend_state) { case 0: // bend_value bleibt im Normalbereich if (bend_value >= FLEX_TOO_HI || bend_value <= FLEX_TOO_LOW) { bend_state = 1; SendWaterAlert(bend_value, bend_state); } break; case 1: // bend_value ist zu hoch oder zu niedrig if (bend_value < FLEX_TOO_HI && bend_value > FLEX_TOO_LOW) { bend_state = 0; SendWaterAlert(bend_value, bend_state); } break; } } 042 - WaterLevelNotifier/WaterLevelNotifier.pde void ContactWebServer(int bend_value, int bend_state) { Serial.println("Mit Webserver verbinden, um Warnung zu schicken ..."); if (client.connect()) { Serial.println("Verbunden mit PHP-Server"); // HTTP-Request erstellen: client.print("GET /wateralert.php?alert="); client.print(bend_state); client.print("&flex="); client.print(bend_value); client.println(" HTTP/1.0"); client.println(); client.stop(); } else { Serial.println("Verbindung mit Webserver fehlgeschlagen"); } } 057 - ElectricGuardDog/ElectricGuardDog.pde void loop(){ pirValue = digitalRead(inputPin); // Wert des PIR abfragen if (pirValue == HIGH) { // Bewegung erkannt? digitalWrite(ledPin, HIGH); // Onboard-LED anschalten if (pirStatus == LOW) { // Bewegung auslösen Serial.println("Bewegung erkannt"); // Zufallszahl zwischen 1 und 5 erzeugen, um eine Datei auszuwählen, // sie wiederzugeben und den Servo zu bewegen switch (random(1,6)) { case 1: Serial.println("Wiedergabe von 1.WAV"); theservo.write(1250); mediaPlayer.play("1.WAV"); break; case 2: Serial.println("Wiedergabe von 2.WAV"); theservo.write(1400); mediaPlayer.play("2.WAV"); break; case 3: Serial.println("Wiedergabe von 3.WAV"); theservo.write(1600); mediaPlayer.play("3.WAV"); break; case 4: Serial.println("Wiedergabe von 4.WAV"); theservo.write(1850); mediaPlayer.play("4.WAV"); break; case 5: Serial.println("Wiedergabe von 5.WAV"); theservo.write(2100); mediaPlayer.play("5.WAV"); break; } delay(1000); // Eine Sekunde warten theservo.write(1000); // Servo in Startposition zurücksetzen pirStatus = HIGH; // pirStatus-Flag auf HIGH, um eine Wiederholung // der Bewegung zu stoppen } } else { digitalWrite(ledPin, LOW); // Onboard-LED abschalten if (pirStatus == HIGH){ Serial.println("Keine Bewegung"); mediaPlayer.stop(); pirStatus = LOW; // pirStatus-Flag auf LOW setzen, um // für eine Bewegung gerüstet zu sein } } } 068 - TweetingBirdFeeder/BirdPerchTest.pde #include <CapSense.h> #define ON_PERCH 1500 #define CAP_SENSE 30 #define ONBOARD_LED 13 CapSense foil_sensor = CapSense(10,7); // Kapazitiver Sensor // Widerstandsbrücke zwischen den digitalen Pins 7 und 10, // Kabel am Pin 7 angeschlossen int perch_value = 0; byte perch_state = 0; void setup() { // Zum Debuggen im seriellen Fenster Serial.begin(9600); // Pin für Onboard-LED pinMode(ONBOARD_LED, OUTPUT); } void SendPerchAlert(int perch_value, int perch_state) { digitalWrite(ONBOARD_LED, perch_state ? HIGH : LOW); if (perch_state) Serial.print("Vogel gelandet, perch_value="); else Serial.print("Vogel weggeflogen, perch_value="); Serial.println(perch_value); } void loop() { // Bei jedem Durchlauf eine Sekunde warten delay(1000); // Folienwert abfragen perch_value = foil_sensor.capSense(CAP_SENSE); switch (perch_state) { case 0: // Kein Vogel auf der Stange if (perch_value >= ON_PERCH) { perch_state = 1; SendPerchAlert(perch_value, perch_state); } break; case 1: // Vogel auf der Stange if (perch_value < ON_PERCH) { perch_state = 0; SendPerchAlert(perch_value, perch_state); } break; } } 070 - TweetingBirdFeeder/SeedPhotocellTest.pde #define SEED 500 #define ONBOARD_LED 13 #define PHOTOCELL_SENSOR 0 int seed_value = 0; byte seed_state = 0; void setup() { // Zum Debuggen im seriellen Fenster Serial.begin(9600); // Pin für Onboard-LED pinMode(ONBOARD_LED, OUTPUT); } void SendSeedAlert(int seed_value, int seed_state) { digitalWrite(ONBOARD_LED, seed_state ? HIGH : LOW); if (seed_state) Serial.print("Futter alle, seed_value="); else Serial.print("Futter nachgefüllt, seed_value="); Serial.println(seed_value); } void loop() { // In jedem Durchlauf eine Sekunde warten delay(1000); // Wert der Fotozelle auslesen seed_value = analogRead(PHOTOCELL_SENSOR); switch (seed_state) { case 0: // Futter nachgefüllt if (seed_value >= SEED) { seed_state = 1; SendSeedAlert(seed_value, seed_state); } break; case 1: // Futter aufgebraucht if (seed_value < SEED) { seed_state = 0; SendSeedAlert(seed_value, seed_state); } break; } } 075 - TweetingBirdFeeder/TweetingBirdFeeder.pde #include <CapSense.h>; #include <NewSoftSerial.h> #define ON_PERCH 1500 #define SEED 500 #define CAP_SENSE 30 #define ONBOARD_LED 13 #define PHOTOCELL_SENSOR 0 // Transmit/Receive-Pins für den XBee setzen NewSoftSerial XBeeSerial = NewSoftSerial(2, 3); CapSense foil_sensor = CapSense(10,7); // Kapazitiver Sensor // Widerstandsbrücke zwischen den digitalen Pins 7 und 10, // Kabel am Pin 7 angeschlossen int perch_value = 0; byte perch_state = 0; int seed_value = 0; byte seed_state = 0; void setup() { // Zum Debuggen im seriellen Fenster Serial.begin(9600); // Für die XBee-Übertragung XBeeSerial.begin(9600); // Pin für Onboard-LED pinMode(ONBOARD_LED, OUTPUT); } void SendPerchAlert(int perch_value, int perch_state) { digitalWrite(ONBOARD_LED, perch_state ? HIGH : LOW); if (perch_state) { XBeeSerial.println("arrived"); Serial.print("Vogel gelandet, perch_value="); } else { XBeeSerial.println("departed"); Serial.print("Vogel abgeflogen, perch_value="); } Serial.println(perch_value); } void SendSeedAlert(int seed_value, int seed_state) { digitalWrite(ONBOARD_LED, seed_state ? HIGH : LOW); if (seed_state) { XBeeSerial.println("refill"); Serial.print("Futter alle, seed_value="); } else { XBeeSerial.println("seedOK"); Serial.print("Futter nachgefüllt, seed_value="); } Serial.println(seed_value); } void loop() { // Bei jedem Durchlauf eine Sekunde warten delay(1000); // Foliensensor abfragen perch_value = foil_sensor.capSense(CAP_SENSE); // Fotozelle abfragen seed_value = analogRead(PHOTOCELL_SENSOR); switch (perch_state) { case 0: // Zur Zeit kein Vogel auf der Stange if (perch_value >= ON_PERCH) { perch_state = 1; SendPerchAlert(perch_value, perch_state); } break; case 1: // Zur Zeit Vogel auf der Stange if (perch_value < ON_PERCH) { perch_state = 0; SendPerchAlert(perch_value, perch_state); } break; } switch (seed_state) { case 0: // Vogelfutter war aufgefüllt if (seed_value >= SEED) { seed_state = 1; SendSeedAlert(seed_value, seed_state); } break; case 1: // Vogelfutter war aufgebraucht if (seed_value < SEED) { seed_state = 0; SendSeedAlert(seed_value, seed_state); } break; } } BUCH: Mark Lutz and David Ascher. Einführung in Python. O’Reilly, Köln, 2007. 083 - Die Python-Twitter-Bibliothek Selbst mit dem API-Zugriff auf Twitter müssen wir es immer noch von Python aus ansprechen können. Dazu können wir auf die Hilfe der Python-Twitter- Bibliothek TweetingBirdFeeder/tweetingbirdfeeder.py # DateTime, Serial port, SQLite3 und Twitter-Python-Bibliotheken importieren from datetime import datetime import serial import sqlite3 import twitter # OS-Module importieren, um das Terminalfenster bei Start zu leeren. # Windows nutzt "cls", Linux und OS X "clear" import os if sys.platform == "win32":
usw.
095 - PackageDeliveryDetector/PackageDeliveryDetector.pde #include <NewSoftSerial.h> #define FORCE_THRESHOLD 400 #define ONBOARD_LED 13 #define FORCE_SENSOR 0 // Transmit/Receive-Pins für den XBee setzen NewSoftSerial XBeeSerial = NewSoftSerial(2, 3); int force_value = 0; byte force_state = 0; void setup() { // Zum Debuggen über das serielle Fenster Serial.begin(9600); // Für die XBee-Übertragung XBeeSerial.begin(9600); // Pin für Onboard-LED pinMode(ONBOARD_LED, OUTPUT); } void SendDeliveryAlert(int force_value, int force_state) { digitalWrite(ONBOARD_LED, force_state ? HIGH : LOW); if (force_state) Serial.print("Paket abgelegt, force_value="); else Serial.print("Paket aufgenommen, force_value="); Serial.println(force_value); XBeeSerial.println(force_value); } void loop() { // Bei jedem Durchlauf 1 Sekunde warten delay(1000); // FORCE_SENSOR abfragen force_value = analogRead(FORCE_SENSOR); switch (force_state) { case 0: // Wurde Paket abgelegt? if (force_value >= FORCE_THRESHOLD) { force_state = 1; SendDeliveryAlert(force_value, force_state); } break; case 1: // Wurde Paket aufgenommen? if (force_value < FORCE_THRESHOLD) { force_state = 0; SendDeliveryAlert(force_value, force_state); } break; } } 101 PackageDeliveryDetector/packagedeliverydetector.py from datetime import datetime import packagetrack from packagetrack import Package import serial import smtplib import sqlite3 import time import os import sys # Mit dem seriellen Port verbinden XBeePort = serial.Serial(’/dev/tty.YOUR_SERIAL_DEVICE’, \ baudrate = 9600, timeout = 1)
usw.
136 - CurtainAutomation/StepperTest.pde #include <AFMotor.h> AF_Stepper motor(48, 2); void setup() { Serial.begin(9600); Serial.println("Schrittmotor-Test starten ..."); // Mit setSpeed wird die Drehgeschwindigkeit geändert motor.setSpeed(20); } void loop() { // step()-Funktion motor.step(100, FORWARD, DOUBLE); motor.step(100, BACKWARD, DOUBLE); } 138 - CurtainAutomation/CurtainAutomation.pde #include <AFMotor.h> #define LIGHT_PIN 0 #define LIGHT_THRESHOLD 800 #define TEMP_PIN 5 #define TEMP_THRESHOLD 72 #define TEMP_VOLTAGE 5.0 #define ONBOARD_LED 13 int curtain_state = 1; int light_status = 0; double temp_status = 0; boolean daylight = true; boolean warm = false; AF_Stepper motor(100, 2); void setup() { Serial.begin(9600); Serial.println("Rollo-Automation starten ..."); // Umdrehungsgeschwindigkeit des Schrittmotors // auf 100/min setzen motor.setSpeed(100); // Motor initialisieren // motor.step(100, FORWARD, SINGLE); // motor.release(); delay(1000); } void Curtain(boolean curtain_state) { digitalWrite(ONBOARD_LED, curtain_state ? HIGH : LOW); if (curtain_state) { Serial.println("Rollo öffnen ..."); // SINGLE, DOUBLE, INTERLEAVE oder MICROSTOP testen motor.step(800, FORWARD, SINGLE); } else { Serial.println("Rollo schließen ..."); motor.step(800, BACKWARD, SINGLE); } } void loop() { // Wert der Fotozelle light_status = analogRead(LIGHT_PIN); delay(500); // light_status am seriellen Port ausgeben Serial.print("Fotozelle: "); Serial.println(light_status); Serial.println(""); // Temperatur auslesen int temp_reading = analogRead(TEMP_PIN); delay(500); // Spannung in Temperatur in °C und °F umwandeln float voltage = temp_reading * TEMP_VOLTAGE / 1024.0; float temp_Celsius = (voltage - 0.5) * 100 ; float temp_Fahrenheit = (temp_Celsius * 9 / 5) + 32; // temp_status am seriellen Port ausgeben Serial.print("Temperatur (Celsius) = "); Serial.println(temp_Celsius); Serial.print("Temperatur (Fahrenheit) = "); Serial.println(temp_Fahrenheit); Serial.println(""); if (light_status > LIGHT_THRESHOLD) daylight = true; else daylight = false; if (temp_Fahrenheit > TEMP_THRESHOLD) warm = true; else warm = false; switch (curtain_state) { case 0: if (daylight && !warm) // Rollo öffnen { curtain_state = 1; Curtain(curtain_state); } break; case 1: if (!daylight || warm) // Rollo schließen { curtain_state = 0; Curtain(curtain_state); } break; } } 157 - AndroidDoorLock/HelloIOIO-PTS/src/ioio/examples/hello/pts/MainActivity.java class IOIOThread extends AbstractIOIOActivity.IOIOThread { /** Die Onboard-LED. */ private DigitalOutput led_; private DigitalOutput powertail_;
usw.
164 - AndroidDoorLock/DoorLockServer/src/com/mysampleapp/androiddoorlockserver/AndroidDoorLock-ServerActivity.java @Override protected void loop() throws ConnectionLostException {
usw.
166 - AndroidDoorLock/DoorLockServer/src/com/mysampleapp/androiddoorlockserver/CameraSurface.java public void startTakePicture(){ camera.autoFocus(new AutoFocusCallback() {
usw.
191 -GivingYourHomeAVoice/osx-voice-automation.scpt
with timeout of 2629743 seconds set exitApp to "no" repeat while exitApp is "no" tell application "SpeechRecognitionServer"
usw.
********************************************************* Einen Arduino konfigurieren Wir werden mit der Arduino-IDE unseren Code für den Arduino schreiben, kompilieren und auf das Gerät übertragen. Wer eine umfangreichere Einführung in die Arduino-Programmierung sucht, siehe Maik Schmidt. Arduino: A Quick Start Guide. The Pragmatic Bookshelf, Raleigh, NC and Dallas, TX, 2011. DIN A4 ausdrucken ********************************************************* Impressum: Fritz Prenninger, Haidestr. 11A, A-4600 Wels, Ober-Österreich, mailto:[email protected] ENDE |