• Home »
  • twitter »

    5 Schritt:Schritt 1: Sound aktivieren Schritt 2: Installieren Twitter-API und der damit verbundenen Modulen Schritt 3: Montage einer Steckbrett Schritt 4: Registrieren App auf https://dev.twitter.com/ Schritt 5: Testen Programm ausführen

    Ich habe ein Spielzeug, die Tweets jemand mit Raspberry Pi Talks. Dieses Spielzeug Fänge Objekt durch Abstandssensor und dann Ton (Tweet). Die Architektur ist sehr einfach. Für immer Tweets, nur mit Twitter-API für Python. Und Sound spielen mit "AquesTalk Pi" (kostenlos), die von der japanischen Software-Unternehmen erstellt wird. Leider AquesTalk Pi unterstützt nur den japanischen Wörtern nahm seinen hand Englisch und Alphabet. Vielleicht "eSpeak" Werke für Englisch, ich habe es nicht getestet. [Materialien] - Raspberry Pi Typ B - USB-WiFi-Adapter - MCP3008 (Analog-zu-Digital-Wandler) - Scharfe Abstandssensor (GP2Y0A02YK) - Kleinen Lautsprecher - Red Bull Programmquelle und Verdrahtung auf Versuchsaufbau basiert auf "Analog-Eingänge für Raspberry Pi Mit dem MCP3008". Dank Mikey Sklar. Schritt 1: Sound aktivieren $ Sudo nano /boot/config.txt add "hdml_drive = 1" Zeile und speichern (cntrl + O [ENTER]). dies ermöglicht auszuloten Put auf 3,5-mm-Buchse. Beim Anschluss HDMI ist HDMI als Audioausgabegerät festgelegt, so ist es müssen Chenge. $ alsamixer Gewinnen Volumen um bis Taste. Standardmäßig ist ein bisschen small.Step 2: Installieren Sie Twitter-API und der damit verbundenen Modulen Installieren httplib Modul $ Wget https://httplib2.googlecode.com/files/httplib2-0.8.zip $ Unzip httplib2-0.8.zip $ Cd httplib2-0.8 $ Sudo python setup.py install Installieren simplejson Modul $ Git clone https://github.com/simplejson/simplejson $ Cd simplejson $ Sudo python setup.py install Installieren OAuth2 Modul $ Git clone https://github.com/simplegeo/python-oauth2 $ Cd python-OAuth2 $ Sudo python setup.py install Installieren twitter Modul $ Git clone https://github.com/bear/python-twitter $ Cd python-twitter-master $ Sudo python setup.py build $ Sudo python setup.py installStep 3: Montage einer Steckbrett Schritt 4: Registrieren App auf https://dev.twitter.com/ Twitter-API zu verwenden, müssen Sie die App auf Register Twitter-Entwickler. Nach der Registrierung, notieren Sie einige Sicherheitscodes wie Consumer key / Consumer secret / Zugriffstoken / Zugriffstoken Geheimnis. bedauere ich nicht das Verfahren hier zu schreiben. Test-Programm ausführen: Sie können es in der internet.Step 5 finden $ Git clone https://github.com/Azuwoo/TweeToy $ Cd TweeToy $ Sudo nano run.py modfiy 2 Teile unten. Wenn Sie einige tweet (nicht nur einer), fügen Sie "für" Satz "nach, wenn trim_pot <600:" sprechen möchten. Dieses Video von Top Seite wird Schleife gesetzt. -------------------------------------------------- ------------------------------------------ # Dev Konto .... (1) api = twitter.Api (consumer_key = 'user consumer_key', consumer_secret = 'user consumer_secret', access_token_key = 'user access_token_key', access_token_secret = 'user access_token_secret') # Angeben, die Sie Tweet von erhalten möchten Konto .... (2) Konto = 'dave_spector' -------------------------------------------------- ------------------------------------------ $ Sudo python run.py Schließen etwas zum senser. Sie könnten Klang Tweet zu bekommen. Und dann planen "run.py" in crontab (crontab -e) zum periodischen Ausführung wie 5s oder 10s. Das ist alles!!!$(function() {$("a.lightbox").lightBox();});

      5 Schritt:Schritt 1: Hardware-Liste Schritt 2: Prototyping Schritt 3: Construction Schritt 4: Herausforderungen, Verbesserungen und Lessons Learned Schritt 5: Abschließend

      Das Konzept ist einfach auf der Oberfläche; Aufbau einer autonomen solarbetriebene Vogelhäuschen , die Bewegung erkennt, schnappt Fotos und lädt sie auf Twitter. Der Rest dieses Artikels Details aus den Bau einer solchen Einrichtung und die Dinge, die unser Team gelernt, auf dem Weg. Wir haben offene sourced den Code für dieses Projekt unter der BSD-Lizenz. Sie können es von der Projekt downloaden git-Repository . Die mitgelieferten Readme-Datei Abdeckung allgemeine Einrichtung und Konfiguration topics.Step 1: Hardware-Liste Unten ist eine Liste der wir verwenden in der aktuellen Feeder Tweeter der Hardware. Wir haben auch ein paar Links zu, wo Sie diese Elemente aus kaufen. Natürlich, wenn Sie bereits über ähnlich Teile oder glauben, dass Sie etwas, das sogar noch besser funktionieren könnte dann zögern Sie experimentieren. 1) Bird Feeder - Wir entschieden uns für dieses Feeder, weil das Dach geneigt und abnehmbar. Unser ursprünglicher Entwurf für Sonnenkollektoren aufgefordert, über die Seiten des Daches macht sie so unauffällig wie möglich drapiert werden. Uns gefiel auch, dass die Seiten in dem offenen, uns etwas Platz, um verschiedene Teile und führen Leitungen montieren. 2) Raspberry Pi (Modell A) - Dies ist das Gehirn des Gerätes. Wir haben überlegt mit einem Arduino früh, aber ist, dass das Projekt eine so starke Abhängigkeit von Internet-Konnektivität und befasst sich mit großen Bildern, die wir letztlich das Gefühl, dass die Raspberry Pi war die bessere Wahl. Die Kosten für das Arduino WiFi Schild fuhr den Preis für das Projekt und die Methode, mit der Software auf das Arduino-Board geladen ebenfalls begrenzt unsere Fähigkeit, Auto-Update-Software auf den Zubringer, nachdem sie in die Freiheit entlassen worden. Wir Modell B der Raspberry Pi ursprünglich gekauft, aber am Ende haben wir genutzt Modell A. Modell A hat weniger USB-Ports und kommt ohne einen Ethernet-Anschluss. Diese Veränderungen helfen, den Gesamtenergieverbrauch des Boards von 200mA macht es eine bessere Wahl für unsere Solar-Projekt zu reduzieren. 3) Wireless USB Adapter - Wir mögen die Edimax EW-7811Un weil es hat einen sehr geringen Platzbedarf und unterstützt 802.11n geben uns boarder Funkreichweite. 4) Silikonkleber - Da der Feeder-Platzierung ist im Freien, das hilft uns wasserdicht alle Öffnungen, um die elektronischen Komponenten zu schützen. 5) Raspberry Pi-Kameramodul , Kamerahalterung , und Extension Kit - Wir haben mit ein paar Kameras, aber letztendlich entschied die Standard-Kamera-Modul am besten funktioniert für uns. 6) Enclosure - Wir haben beschlossen, ein Gehäuse unter der Zuführung zu den meisten elektronischen Komponenten House Mount. Diese Größe stellte sich heraus, perfekt zu sein, da es sich um etwa die gleiche Größe wie die Basis des Zubringers, war groß genug, um unsere ausgewählten Komponenten zu halten, und vielleicht am wichtigsten war es wasserdicht. 7) PC Board - Alle Bord tun wird. Wir sind zufällig auf dieses eine herumliegen haben. 8) Solar Panel und Batterie - Es gibt viele Optionen in dieser Kategorie. Wir haben uns nicht verbrachte viel Zeit zu experimentieren oder versuchen, unsere eigenen Platten von Grund auf neu zu bauen. Stattdessen wollten wir etwas, leicht verfügbar und leicht zu verarbeiten. Dies ist das ein Bereich, den wir beschlossen, das Budget auf knausern. Wir haben uns für das Goal Zero Boulder 15 Solar-Panel und der Sherpa 50 Power Pack. Sie werden von der gleichen Firma hergestellt und gemacht, um zusammen zu arbeiten. Die Sherpa 50 ist leicht und ist für die Verwendung von USB-Geräten gemacht. 9) Ein / Aus-Kippschalter - Sie können mit Standard-Linux-Befehle, um neu zu starten oder Herunterfahren des Pi. Jedoch gibt es keinen physischen Ein / Aus-Schalter auf der Karte. Um die Stromversorgung in den Vorstand müssen Sie das USB-Kabel herausziehen zu töten. Wir verdrahtet in einen Kippschalter, so dass wir alle Macht in den Vorstand auf der Außenseite des Gehäuses zu töten. 10) Drucktaster - Wir wollten eine Art und Weise Benutzer neu starten oder Herunterfahren des Gerätes, ohne so etwas wie ssh in das Gerät Shell und laufenden Softwarebefehle zu lassen. Wir verdrahtet einen Druckknopf, der für 2 Arten von Ereignissen überwacht wird. Wird die Taste für mehr als 2 Sekunden weniger als 5 gehalten und dies löst einen Neustart. Wird die Taste 5 Sekunden lang hielt dann eine Abschaltung ausgelöst wird. Dies ist der richtige Weg, um Herunterfahren des Gerätes. Nach Abschaltung der Kippschalter kann verwendet werden, um alle Macht zu entfernen. Sie das Gerät einschalten (Umlegen des Kippschalters wieder einschalten) wird automatisch die Pi neu zu starten. Sie können visuell zu sagen, dass entweder ein Neustart oder Shutdown-Befehl, indem man die LEDs auf der Außenseite des Gehäuses registriert. A 3 Sekunden halten, die einen Neustart auslöst, blinkt die grüne LED 3-mal. A 5 Sekunden halten, die eine Abschaltung auslöst, blinkt die rote LED 5 mal. 11) LEDs - 1 rote und 1 grüne. Jede Art tun wird. 12) Passiv-Infrarot-Sensor (PIR) 13) PING Ultradistance Sensor 14) Lesebrille - A 3.25+ Stärke Objektiv am besten für uns gearbeitet. 15) Fotozelle (CdS Fotowiderstand) Andere Artikel wahrscheinlich benötigt, um es selbst zu bauen: 1) Lötstation 2) bleifreiem Lot 3) Bleifreier Tip Tinner 4) Lupe mit Krokodilklemmen 5) Isolierband 6) Draht, Drahtschneider und Abisolierer 7) Drill / Dremel 8) Kreuzschlitzschraubendreher 9) Gorilla Kleber (Epoxy) 10) Schutzbrillen 11) Zwei Schrauben (mit passenden Unterlegscheiben und Muttern), um Ihre Gehäuse in Position zu halten 12) MultimeterStep 2: Prototyping Der Raspberry Pi lädt das Betriebssystem von einer SD-Karte, die Sie in die Karte einfügen direkt. Wir haben uns auf die Verwendung Raspbian Distribution. Sie müssen zuerst lernen, wie man Raspbian auf einer SD-Karte zu bekommen, wenn Sie ein Set, das eine vorgespannte SD-Karte bereitgestellt gekauft. Es gibt eine gute Anleitung für diesen Prozess hier . Mit einer vollständigen Linux-Distribution auf dem Raspberry Pi ist einer der Vorteile für die Auswahl dieses Board. Sie können die Pi direkt in eine bestehende Monitor, eine Maus anschließen, und die Tastatur dann gelten Macht und schon kann es losgehen. Bei Modell B können Sie stecken Sie einfach in ein Ethernet-Kabel und Sie im Internet sind. Modell A erfordert etwas mehr Aufwand, da sie nicht mit einem Ethernet-Anschluss kommen. Sie müssen WiFi konfigurieren , bevor Sie mit dem Internet verbinden. Dies wird in der Regel über eine 3rd-Party-USB-Adapter erfolgen. Natürlich auf einem Modell A erhalten Sie nur einen USB-Anschluss, so dass Sie müssen entweder einen USB-Hub zum Anschluss von bis andere Geräte wie Maus und Tastatur oder müssen Sie in eine kopflose Einrichtung zu bewegen. Glücklicherweise ist dies auch recht einfach. Raspbian läuft ssh das heißt, Sie können aus der Ferne in die Pi-Shell von einem Terminal-Programm auf einem anderen Computer. Wenn Sie den Desktop des Pi nicht zugreifen, als nur die Hülle verwenden möchten, können Sie VNC dafür. Erstellen einer Hardware-Hack meisten Zeiten beinhaltet externe Sensoren von einer Art, um Eingaben von der realen Welt zu lesen. Dinge wie gemäßigt, Licht, Bewegung, Kraft, Weg, etc. Der Raspberry Pi Board kommt mit einer Reihe von General Purpose Input / Out (GPIO) Stifte. Diese Stifte werden über die Software konfiguriert und kann verwendet werden, um Signale von Sensoren zu lesen und / oder zur Ausgabe an Sensoren, wie eine LED zu steuern. Einige Stifte einen bestimmten Zweck, während andere generische (Sie können auch neu konfigurieren sie an Ihre Bedürfnisse anzupassen). Der häufigste Weg, Entwicklern interagieren mit den GPIO-Kanäle auf einem Raspberry Pi ist über eine Python-Bibliothek namens RPi.GPIO . Sie können einige gute Tutorials finden Sie hier . Nachdem wir unsere ersten Prototypen fertig wir eine Skizze der Raspberry Pi GPIO geschaffen, um externe Sensorverdrahtung. Die meisten guten Software-Projekte beginnen mit Architekturplänen. Interactive-Hardware-Projekte können aus den Diagrammen in gleicher Weise zugute kommen und zum Glück gibt es eine großartige Initiative bekannt Fritzing um dieser zu helfen. Fritzing ist ein "Ökosystem, das es Benutzern, ihre Prototypen zu dokumentieren, sie mit anderen teilen, lehren Elektronik in einem Klassenzimmer, und das Layout und Produktion professioneller Leiterplatten ermöglicht." Dieses Tutorial würde wahnsinnig groß, wenn wir versuchten, Detail aus jedem Draht / Verbindung. Stattdessen teilen wir die Skizze. Da das Projekt entwickelte sich so auch die Skizze. Oben ist ein Bild von der letzten Skizze. Die Skizze kann auch gefunden werden in der Code-Repository mit dem Rest der code.Step 3: Konstruktion Wie Sie in dem Steckbrett Skizze sehen können, ist ein weiterer Bereich, einige sorgfältige Planung braucht Komponente Layout. Um die Innenteile der Maschine übersichtlich zu halten, sollten Sie sich Gedanken darüber, wie am besten, um das Layout der Komponenten vor dem Tauchen in zu geben. Dazu gehören Dinge wie wie man am besten die Drähte, wo man externe Löcher für Kabel bohren, wie man Komponenten halten vor dem Verrutschen usw. Mit Prototyping & Bestandteil Layout kann genagelt Gebäude beginnen. Für uns ist die tatsächliche Zeit, die zum ersten Prototyp build ausführen für dieses Projekt war etwa 25 Stunden. Wir haben, dass sich in einem 4,5-Minuten-Video, das Sie unten sehen können kondensiert: Schritt 4: Herausforderungen, Verbesserungen und Lessons Learned Der Anleger wir durch etwa 3 Monaten des Testens und Raffinesse auf dem Weg in die endgültige Version. Nachfolgend finden Sie Informationen darüber, was geändert und warum finden. Version 1.1: Unsere anfänglichen Build tatsächlich verwendet diese Wetter TTL JPEG Kamera . Nach einigen Betriebstagen wir festgestellt, dass die innere Bewegung Detektor auf der Wetter TTL JPEG Kamera war zu empfindlich gegenüber Veränderungen in der Licht. Änderungen der Lichtverhältnisse häufig zu sehen während der Sonnenaufgang, Sonnenuntergang, Bewölkung, etc. ausgelöst viele Fehlalarme. Wir entschieden uns für die Bewegungserkennung der Kamera zu deaktivieren und ersetzen Sie es mit einem passiven Infrarotsensor (PIR). PIR-Sensoren messen "warmen Körper" Wärme und werden häufig bei Home Sicherheitssysteme gesehen. Während dieser Zeit begannen wir auch mit Neige die Sonnenkollektoren zu experimentieren. Die anfängliche Solar Setup tatsächlich verwendet die Nomad 13 statt der Boulder 15. Der Nomad 13 arbeitete in Ordnung, aber das, was wir entdeckten, war, dass der Nomad 13 nicht ein ladungserzeugendes sofern nicht beide Platten wurden zur gleichen Zeit dem Licht ausgesetzt. Deshalb musste der Feeder mehr Ausfallzeiten, die wir wollten. Wie Sie wahrscheinlich auf die Dächer der Häuser im ganzen Land gesehen festen Sonnenkollektoren sind in der Regel abgewinkelt und zeigte in eine bestimmte Richtung. Die Richtung und die Neigung zur Optimierung der Energiemenge, die Platten zu erzeugen. Die Richtung der Platten und dem richtigen Winkel hängt von Ihren bestimmten Standort. Es gibt eine Reihe von Online-Rechner , mit denen Sie eine optimale Konfiguration zu finden. Version 1.2: Während der PIR-Sensor eine gute Abhilfe für die Lichtempfindlichkeit von Problemen mit der Kamera internen Bewegungsdetektor identifiziert es hatte seine eigene Schwäche. Der PIR-Sensor war übermäßig empfindlich auf Veränderungen der Wärme. Abrupte Änderungen in Wärme sind in der Regel nicht ein Problem in einer geschlossenen Einrichtung wie ein Haus, aber in der freien Natur, was gefällt. Die gleichen Sonnenaufgang, Sonnenuntergang und Wolkendecke Bedingungen stellte ein Problem für diesen Sensor als auch. Wir hatten in etwa die gleiche Anzahl von False Positives. So mit der Version 1.2 haben wir ließ den PIR-Sensor und mit einem neuen PING ultradistance Sensors. Auf den Punkt gebracht dieser Sensor nutzt Sonar, um den Abstand zu einem bestimmten Ziel zu messen. Der Sensor sieht aus wie eine Reihe von Augen. Ein Sensor sendet einen Ultraschallimpuls und den anderen Sensor misst die Zeit, die es braucht, um wieder auf die Beine. Gelten einige Berechnungen , die die Schallgeschwindigkeit beinhalten, und Sie können in einem Abstand Berechnung zu gelangen. Wenn Sie genau das Bild unseres Feeder schauen Sie eine kleine Wand gegenüber der Kamera sehen können. Diese Mauer wird wichtig, weil wir Prellen den Ultraschallimpuls aus der Wand. Wir wissen aus der Prüfung, wie weit die Wand ist. Ein Wert von weniger dass der Abstand zur Wand zeigt etwas in der Art (ie) eines Vogels. Wie Sie im Bild oben sehen können, den Sensor ist in einem Kunststoffbehälter eingeschlossen. Der Sensor ist nicht wasserdicht, so dass wir fashioned eine benutzerdefinierte Halter, die den Elementen ausgesetzt minimiert. Wir behaupten nicht, diese Einstellung ist 100% Voll Beweis, aber es hat unzählige Colorado Gewitter ohne Probleme bisher überlebt. Version 1.3: Kurz nach der Markteinführung der Version 1.2 haben wir festgestellt, die PING-Sensor war übermäßig empfindlich auf plötzliche Veränderungen im Wind. Windböen ausgelöst False Positives, da sie unterbrach ihn der Sonar Lesen. Wir halfen zähmen dies, indem Sie einen Windschutz (Schaum) über den Empfänger. Ein weiteres Problem mit dem Sensor war, dass manchmal, es wäre wieder eine kurze Lesung zu senden. Es war unberechenbar und oft mehr als akzeptabel. Die Lösung dafür war, eine 2. Lesung nehmen nach kurzer Lese registriert wurde. Während sie nach dem Zufall sendet eine kurze Lese nie sendet 2 in einer Reihe. Wie Sie jetzt sagen kann, der problematischste Merkmal der Vorrichtung ist die Bewegungserkennung. An dieser Stelle kamen wir auf eine neue Lösung, die sich als der Sieger sein. Wir wieder aktiviert die Kamerabewegungsdetektor und eine Software-Funktion nennen wir "Telefon ein Freund" (ja, dass aus "Wer wird Millionär" ausgeliehen) codiert. Die Idee ist einfach. Ein Sensor wird ständig überprüft für Bewegung. Wenn es eine Bewegung erkennt, fragt es die 2. Sensor für die Prüfung. Wenn der zweite Sensor bestätigt Bewegung dann ein Bild aufgenommen wird. Andernfalls wird das Ereignis als eine falsche positive behandelt. Version 1.4: Diese Version revisited die Solar-Panel-Fragen bereits erwähnt. Wir fühlten uns das Nomad 13, auch mit richtungs platziert und ordnungsgemäß Winkeln Panels, hinter unseren Erwartungen für die Geräteverfügbarkeit. Goal Zero besagt, dass der Nomad 13 können die Sherpa 50 in 8 bis 16 Stunden der Sonne berechnen. Version 1.4 des Feeder Tweeter etwa 450 bis 500mA der Macht und der Sherpa 50 liefert 50 Watt benötigt. Unser ursprüngliches Ziel war es, das Gerät online 27/4 halten. Ein voll aufgeladener Sherpa 50 würde ausreichen, um die Dinge in der Nacht am Laufen zu halten. Allerdings erwies sich das wirkliche Leben Test, dass wir eine volle Gebühr pro Tag nicht angesichts der verfügbaren Sonnenlichts in unserem Standort (Colorado). Wir entschieden uns, auf die Boulder 15 Solar-Panel zu aktualisieren. Dieses Panel sammelt 15 Watt anstatt die 13 Watt des Nomad 13. Das erste Hindernis mit dieser Platte wurde Montage. Der Nomad 13 war ein Trapper Keeper Stil Setup, die gut über das Dach gefaltet. Die Boulder 15 Schalttafeleinbau ist mehr wie eine Hängebilderrahmen, die offensichtlich nicht optimal für unsere Setup. Wir haben ähnlich dem Setup Sie auf solarbetriebene Bau Zeichen sehen könnten. Wir kauften ein Holz-Stange, bohrte ein Loch in der Spitze für einige Gewindestahl, auf einem Stativkopf oben verdreht, und fuhr sie in den Boden mit einer Tiki Torch dem Spiel . Auf der Rückseite des Boulder 15 gefertigten wir eine grundlegende "I" Klammer, die den oberen Teil des Stativ hält. Der Stativkopf ist in der Lage hält ca. 6 Pfund, die mehr als das Gewicht der Platte ist. Der Stativkopf ist ein einfaches Kugelgelenk, das uns die Möglichkeit gibt, Winkel der Platte in jeder Position und verriegeln. Mit diesen Release auch wir uns entschlossen, ein eigenes Debian-Paket für unsere Software zu bauen. Das werde ich nicht ausführlich aus dem Prozess zu tun, dass Sie hier. Hier finden Sie viele finden Tutorials online. Der Vorteil dabei ist, dass wir nun unsere eigenen benutzerdefinierten Debian-Paket-Repository auf jede neue Feeder wir bauen hinzuzufügen und haben es kontrollieren, ob das Repository gelegentlich nach neuen Versionen der Software. Was bedeutet, wir können Aktuelles zu Feeder in freier Wildbahn ähnlich wie erhalten auf Ihrem Mobiltelefon zu implementieren. Wenn eine neue Version der Software wird die Zuführung erfasst automatisch installiert die neue Verpackung und neu gestartet. Version 1.5: Das größte Problem verbleibenden Version 1.4 war die Qualität der Bilder. Das beste Bild unserer ursprünglichen Kamera in der Lage war, war ein 640 × 480 vorverdichtet JPEG. Am Anfang dachten wir, dass viel für eine einfache Vogel Bild sein. Allerdings wir am Ende nicht mit dieser Ausgabe zufrieden. Zu viel Arbeit ging in das Gerät, um es mit einem crappy Bild zu verlassen. Wir entschieden uns, die Swap-Original-Kamera für die offizielle Raspberry Pi Kameramodul. Diese Kamera ist für den Fang eine 5-Megapixel 2592 × 1944 Bild und ist vergleichbar mit dem von Ihnen vielleicht in einem Mobiltelefon zu finden. Die neue Kamera kam mit ein paar Nachteile. Zuallererst ist es nicht wasserdicht. Nach einigen Recherchen fanden wir ein Kunststoff Kamerahalterung, das war ziemlich gut abgedichtet. Wir beendeten die Arbeit mit einigen unserer Silikonkleber. Das zweite Problem war, dass das Flex-Kabel mit dem Modul ausgeliefert ist sehr kurz. Zu kurz, um aus dem Inneren unserer Anlage zu dem Bereich, den wir benötigten, um die Kamera an der Außenseite des Zuführungshalterung zu erreichen. Es scheint nicht, um entweder alles sein, witterungsbeständig. Schließlich fanden wir eine schöne Kamera Erweiterungssatz, die uns zu der Kamera-Kabel verlängern dürfen. Die neue Bandkabel war für den Außenbereich zu, der ein großer Bonus war besser geeignet. Das letzte Problem mit der neuen Kamera stand im Mittelpunkt. Der Raspberry Pi-Kamera ist ein Fixfokus-Modul. Alles darüber hinaus sagen wir 50 cm ist im Fokus. Alles, was näher ist verschwommen und wird noch schlimmer, je näher Sie erhalten. In unserem Feeder-Setup haben wir nur etwa 7 Zoll (18 cm) zwischen dem Bereich, den wir montieren Sie die Kamera und das Gebiet Vögel neigen zu sitzen. Wir justiert den Fokus der Kamera durch den Kauf der Lesebrille und die Leihe des Objektivs. Wir experimentierten mit verschiedenen Stärken, aber letztlich auf 3.25+ siedelt. Wir entfernten eine Linse aus dem Rahmen und verklebt sie direkt über die Kameralinse auf der Außenseite des Kamerabefestigung. 3.25+ erwies sich als die perfekte Anpassung Ebene für die Strecke, die wir hatten. Problem gelöst, klare Bilder ein viel. Schauen Sie sich diese zum Vergleich. Tauschen Sie die Kamera kam auch mit einigen anderen Nebenwirkungen. Wir mussten die ganze Kamera-Code neu zu schreiben. Dies könnte ein Nachteil oder ein Vorteil sein, je nachdem wie man es betrachtet. Die wetterfeste seriellen TTL-Kamera mussten wir mit ihm über die serielle Schnittstelle zu interagieren. Nicht super komplex, aber es dauert eine ganze Menge Code. Zum Glück Adafruit tatsächlich erstellt eine Bibliothek diese recht einfach mit einem Arduino, dass jemand später portiert über Python für den Raspberry Pi zu machen. Der einzige fehlende Teil des Hafens war Code an Bewegungserkennung verarbeiten, so dass wir codiert, dass ein Teil bis uns. Der Raspberry Pi-Kamera-Modul verfügt nicht über einen internen Bewegungserkennungsmechanismus so wurde eine neue Lösung für erforderlich. Die serielle Kommunikation ist auch nicht etwas, was wir haben, um über Sorgen mehr machen, wie die neue Kamera-Modul kommt mit ein paar Anwendungen, die Sie verwenden, um mit ihr zu interagieren; raspistill und raspivid . Raspivid ist ein Kommandozeilen-Anwendung, die Sie mit der Video-Kamera-Modul erfassen können, während die Anwendung raspistill ermöglicht es Ihnen, Bilder zu erfassen. Mit diesem neuen Setup wir warf eine Reihe von Code, die tatsächlich die Dinge am Ende sehr viel einfacher gemacht. Zurück zur Bewegungserkennung, nicht wie ich bereits erwähnt die neue Kamera diese Fähigkeit. Ist, dass die "Handy einen Freund" Featured so gut funktioniert, und dass wir ein paar andere Sensoren, die wir mit, beschlossen wir, die PIR-Sensor zurückbringen experimentiert hatte immer noch. So in der aktuellen Version die PING und PIR-Sensoren arbeiten zusammen, um Bewegung zu bestätigen. Auf dem Bild oben in diesem Abschnitt werden Sie ein zu sehen . Wir nennen dies die "Tower of Power". An der Unterseite ist der PING-Sensor, in der Mitte befindet sich der PIR-Sensor und eine neue Fotozelle, und an der Spitze ist das Kameramodul mit der zusätzlichen Linse. Die ursprüngliche Kamera hatte einen LED-Ring, die auf in der Dunkelheit kommen würde, und machen es der Lage der Aufnahme Schwarz-Weiß-Bilder bei schlechten Lichtverhältnissen. In den wenigen Wochen, die alte Kamera in Betrieb war nur erfasst wir eine Nacht Bild, so ist dies nicht ein super wichtiges Merkmal. , Die Entfernung der es getan hat jedoch gegenwärtig eine neue Herausforderung. Wenn winkte in der Nacht oder in einem stark bewölkt Situation erkannt wurde muss die Kamera erfassen eine sehr dunkle oder vielleicht sogar einen Platz schwarzes Bild. Zu lösen oder diese haben wir eine Fotozelle, die Maßnahme Lichtverhältnissen hilft. Wir habe einige Tests und kam mit dem, was wir fühlten uns waren akzeptabel Lichtniveaus für gute Bilder und hat dieses in den Mix. Nun wird ein Bild nur erfasst, wenn wir über Doppel bestätigt Bewegung und genug light.Step 5: Abschließend Was haben wir gelernt? Mehr als wir erwartet hatten und wahrscheinlich für einen anderen Blog von selbst genug. Können nur sagen, dies ist wahrscheinlich die größte Missbrauch von Manifold Tech-Ressourcen auf dem neuesten Stand und wir würden nichts ändern. Das ist der Stoff für die wir leben. Unsere Anwälte sagte, wir sollten auch erwähnt, dass mehr als ein paar Kästen Bier wurden bei der Erstellung dieser Vogelzufuhr geschädigt. Bauen Sie Ihre eigenen möglicherweise ein Gesundheitsrisiko darstellen. Dann wieder könnten Sie auch finden es eine aufregende Lernerfahrung so wie wir. Weitere Informationen finden Sie unter Begleiter Website des Projekts - http://www.feedertweeter.net/ .

        13 Schritt:Schritt 1: Psychic Hive Mind Fortune Teller in Aktion und Zusammenfassung dessen, was sie tut, Schritt 2: Design - Techniken für die Arbeit ein Konzept - von der vagen Idee, voll entwickelt gruselige Sache Schritt 3: Build - Making The Fortune Teller Kopf Schritt 4: Erstellen Sie - Hacking eine Tastatur eingeschränkten Dateneingabe zu ermöglichen Schritt 5: Erstellen - Erstellen einer Festplatz-style Sockel Fall aus Sperrholz Schritt 6: Techy - The Psychic Gehirn, seine Twitter app und seine Google Spreadsheet Admin-Interface Schritt 7: Techy - Brain Logik: Extrahieren Sinne von Dekonstruktion Live-Gespräche Schritt 8: Techy - Mit Arduino, um eine physische Knopfdruck senden tweet Schritt 9: Techy - Ein Mikro Auto-Monitor-Anzeige zur Visualisierung der inneren Hirn Schritt 10: Techy - Aufbau des visuellen Schnittstelle Schritt 11: Techy - Der vollständige Verarbeitungscode (und GitHub link) Schritt 12: Die Psychic Wahrsager-Lesung und seine tweet Übersicht - Testbeispiel Schritt 13: Weitere Informationen, Referenzen, Kredite, usw.

        Creepy Jahrmarktsattraktion und Twitter App! The Psychic Hive-Mind Fortune Teller ist ein Messegelände im Arcade-Art Anziehungskraft, die Ihr Glück sagen kann. Noch besser als dass, obwohl - es ist auch eine Web-Anwendung, die verbunden Twitter tweets ernten und erbrechen sie als Vermögen Messwerte können! Die Wahrsagerin liest den Geist eines twitter Diskussion. Es nimmt die Gedanken der Menschen von ihren Tweets, dann dekonstruiert sie in Basengehalt. Es rekonstruiert dann, dass Inhalte mit randomisierten Verbindungstextfragmente das Glück Lesen zu erstellen. Auf diese Weise schafft es Lesungen, die nicht nur einzigartig, sondern auch kontextspezifischer und vollständig up-to-date, da sie von der aktuellen Diskussion geschieht Live und in Echtzeit generiert werden. Sowie sprechen Ihre Glück und tweet es zurück zu Ihnen, es hat auch ein Fenster in sein Gehirn, durch die man die inneren Gedanken der twitter Diskussionen wird das Scannen zu sehen. Was können Sie von diesem Instructable bekommen? Diese Instructable zeigt Ihnen Hacking Social-Media-Daten an die Macht ein physisches Gerät Twitter - mit OAUTH Verbindungen zu Twitter Google Daten zugreifen - mit Tabellen und ihre Feeds so schnell und unsaubere Datenserver Arduino - wie man ein Computerprogramm Ereignis zu machen, indem ein ausgelöst werden physikalische Interaktion (Tastendruck) Box-Gebäude - wirklich grundlegende mit aufgeklebten Papierausdrucke als typografische schnelle Lösung Computer-Tastatur hacken - Umbau eines Standard-Computer-Tastatur als Schnittstelle beschränkt Consumer Auto-Video-Hardware als Display verwenden - wie eine Verbindung, eine primitive Auto-Video-Bildschirm als Monitor Verarbeitung - eine Skizze, die Twitter mit OAUTH zu ernten tweet Inhalt Verarbeitung verbinden können - die Verwendung von Text-to-Speech-Bibliothek für das Gespräch automatisch generierten Textverarbeitung - Randomisierte Satzbau für pseudo künstliche Intelligenz Verarbeitung - Visualisierung Informatik - mit einfachen Fernzugriff Admin-Einstellungen Hacking alten Audio-Kit - Hacken auseinander einen einfachen Computer-Audio-Verstärker, um den Ton Teileliste Leistung: Gesichtsmaske (optional) - Sand, Silikonform Gummi, Latex, Roll-on-Deodorant-Kugeln Kopf und Schultern - Ein gebrochenes Shop dummy Visualiser / Interaktion Bildschirm - Car Rückfahrmonitor und Grafiktreiber-Box Box - 6 mm Außensperrholz, Heißkleber (oder Holzleim), Holz off Schnitte, Farben, Lacke, Schrift auf Standard-Druckerpapier, Schrauben, etc gedruckt . Internet verbundenen Computer (kleines Laptop verwendet hier, aber wahrscheinlich ein Raspberry Pi funktionieren würde?) aktive Twitter-Account Alte Computer-Lautsprecher mit Verstärker Verarbeitung mit verschiedenen Bibliotheken gebaut installiert Türklingel drücken Arduino Board Werkzeuge benötigt: Computer - Wireless-fähigen PC (oder Mac, was auch immer Sie mit verschiedenen Bibliotheken, Arduino Umgebung Box verwenden) mit Verarbeitung 1,5 Umgebung - grundlegende Dinge - Handsäge, Stichsäge, Klebepistole, Pinsel, Sprühfarbe, Bohrer / Schraubenzieher usw. Head - in erster Linie nur Modellierungswerkzeuge für die Gesichtsmaske in Ton , Klebepistole zu bleiben auf. Fibre Filzstifte für Farbakzente Schritt 1: Psychic Hive Mind Fortune Teller in Aktion und Zusammenfassung dessen, was sie tut, The Psychic Hive Mind Fortune Teller ist so konzipiert, bei Veranstaltungen, wo Menschen versammelt und Online-Diskussion über Twitter nutzen. Wenn Menschen mit der Wahrsagerin zu interagieren, gibt sie ihnen einen Einblick in die Live-Twitter Gespräche um sie herum geschieht. Es ist wirklich eine Art von automoton, aber eine, die in den spezifischen Gespräch der Veranstaltung, an der sie vorhanden ist abgestimmt werden kann. Es muss nur bis zu der Veranstaltung gezielt eingestellt werden soll, dann wird er automatisch servieren Echtzeit-Reflexionen auf der Grundlage der digitalen Unterhaltung Geschehen um ihn herum. In der Tat, liest es die kollektiven Geist der Veranstaltung, also, warum es heißt die Psychic Hive-Mind Fortune Teller. Es kann leicht mit einfachen Admin-Einstellungen, die bestimmen, was es hört auf Twitter programmiert werden. Diese können aus der Ferne mit Hilfe eines Google-Tabelle als eine Web-Datenbank eingestellt werden. Hier ist es in der Tätigkeit am Museum-Technologie-Konferenz "MuseumNext", die im Mai 2013 in Amsterdam. Diese 47 Sekunden Clip zeigt, was ein ereignis goer Erfahrungen, wenn sie kommen über die Psychic Fortune Teller - im allgemeinen Verblüffung! . Zu haben, ihr Glück sagte, eine Person, die Interaktion mit ihm hat, nur um ihre twitterusername geben und drücken Sie eine physische Taste. Der Wahrsager der Twitter-App Gehirn liest dann Tweets in Echtzeit geerntet und zerlegt sie in ihre Einzelteile von Benutzernamen, Hashtags, URLs und andere allgemeine Worte. Es baut sie dann mit randomisierten Satzbau eher leftfield Rekombinationen erzeugen. Schließlich sendet sie einen Tweet mit einer Zusammenfassung des Vermögens Lesung zu der Person Twitter-Account. Der Wahrsager benutzt die irrestible Attraktivität ausgeflippt Messegelände Dinge und Stecker im Social Web, huckepack auf einige der zahlreichen Datenverbindungen, die in unserem digitalen Leben zu verfolgen. Bei der Verwendung von digitalen sozialen Medien sind Aspekte unserer kommunalen Verbindungen übersetzt und von Daten zurück. Der Wahrsager nutzt diese, um eine neue physische Wieder Manifestation unserer digitalen Interaktionen erstellen. Er überlegt, was es bedeutet, Teil einer großen kollektiven "hive" Gespräch, wie digitalen sozialen Medien werden zufällige und unerwartete Einblicke und Verbindungen mit Menschen auf Interesse geclustert und reflektiert über die Bedeutung der Austausch von Ideen, die im Internet zu sein. Aber vor allem ist es nur ein wenig gelegentliches :) Wie funktioniert es Der Automat ist mit einem Ereignis Diskussion, indem sie in Twitter angemeldet abgestimmt. Es ist so programmiert, tweets durch die Durchführung einer von drei Suchanfragen zu ernten. In der Regel ist dies ein #Hashtag suchen, aber es kann bis zu einerusername suchen oder einfach nur eine gerade Stichwortsuche tun eingestellt werden. Es extrahiert dann das Grundgehalt in vier Typen Die Benutzernamen der Personen, die die Tweets geschickt haben geerntet Hashtags in der Diskussionsrunde URLs schließlich eine große Liste aller Worte, die Menschen benutzt haben, um sich selbst auszudrücken gesendet werden. Es baut dann zufällige Glück Lesungen mit diesen Bedingungen, dass es spricht für die Besucher und tweets ihnen dann eine Zusammenfassung. Hier sind einige andere verwirrt aussehende Menschen! Schritt 2: Design - Techniken für die Arbeit ein Konzept - von der vagen Idee, voll entwickelt gruselige Sache Hier ist, wie ich arbeitete den Entwurf für das Ding. Ich begann nachzudenken, was eine gruselige Messegelände Kopf, der Tweets liest, aussehen soll! Es gab ein paar Einschränkungen und einige Wunschliste Wünsche. Ich wusste ungefähr, was ich suchte und hier ist, wie ich das Konzept, um eine reale Sache, die geeignet war komisch zu schaffen, sondern auch praktisch gebaut werden konnte. Die Hauptsache mit einer Jahrmarktsattraktion ist, dass es ein bisschen gruselig sein. Ich wusste, ich wollte, dass es erkennbar eine Person bei etwa normale Größe, aber das eine etwas ausgeflippt oder mutierte one! Der Text-zu-Sprache-Bibliothek war ich mit war eine männliche Stimme, so musste es sein male Es musste ein Mittel, mit dem der Benutzer konnte in seinen Geist zu sehen, um zu sehen, die Daten in seinen Gedanken Es benötigte eine Dateneingabe-Methode haben , damit die Benutzer zur Eingabe ihrer twitterusernames Es brauchte einen Sockel oder eine andere Halterung der ganzen Sache brauchte einen Rummelplatz vibe, so ist es notwendig, um gawdy Farben haben Habe ich erwähnt, es benötigt gruselig zu sein? I im wesentlichen erforderlich, um ein klares Bild von etwas in meinem Kopf, dass eine leicht gruselige Kopf mit einem großen Monitor war zu bekommen. Sobald ich auf, dass beschlossen habe, musste ich einfach mit möglichen Variationen zu spielen, bis ich über das Design aufgearbeitet schön. Die Technik, die ich für diese Art von Design-Entwicklung ist es, einfach zu ziehen viele Versionen von, was ich etwa nach bin. Diese Technik wird nicht versucht, eine genaue Gestaltung des endgültigen Objekt zu erzeugen (den Kopf in diesem Fall, und es ist Sockel). Die Idee ist, nur um Variationen zu erforschen, bis der richtige austritt. Der Prozess des Tuns los von Zeichnungen schnell ist gewollt zu vermeiden, zu einem der ihnen verbunden. Jede einzelne Zeichnung ist nicht wichtig, es ist die Stärke des geistigen "Gefühl" im Kopf, was zählt. Dies wird durch die Kombination aus all den Bildern festgestellt. Diese Methode kann nicht jedermanns Geschmack, aber es ist einen Versuch wert. Es funktioniert auf jeden Fall für mich. Sobald das endgültige Aussehen hergestellt ist, ich auch nützlich finden, um es neu zu ziehen ein paar Mal. Das gibt mir genug von einem Gefühl dafür, wie das fertige Sache, in der Lage, zu formen und bauen eine Veränderung auf sie später aus meinem Kopf zu sein. Es ist nicht ein Build Plan oder Entwurf aber. Es bleibt ein mentales Konzept. Dieses Design-Technik ist es, etwas im Gehirn, die nur eine allgemeine visuelle Form und eine Gesamt emotionale Gefühl zu beheben. Einmal im Kopf fixiert, helpd es führen die Hände später, wenn Bildhauerei und bauen es in 3-D. Im Folgenden sind einige der Design-Konzept-Skizzen. Bleistift ist gut, wie es so schnell für Stimmung Zeichnungen arbeiten in ist. Tintenfeder ist auch schnell und sauber. Das auf dem links unten war eine weiterentwickelte Version des Entwurfs. Mit Tinte, können Sie auch die Farbe separat zu. Die rechte Hand Version verwendet Promarker faser gekippt Federn, die wie ein Buntwäsche sind . Ungegenständlichen Zeichnungen Ich habe auch einige nicht-gegenständliche Zeichnungen, wie dieser zu helfen, aufzubauen, wie ich wollte, dass es das Gefühl, mehr als, wie es vielleicht look.It ist als Comic-Seite getan, vor allem, um ein Gefühl der narrative / Zeit in. Als ein Entwurf für ein interaktives, fühlte ich es brauchte etwas Gefühl für die Tatsache, dass es ist nicht festgelegt, sondern tut Dinge in der Zeit. Es ist zwar ein wenig rau, gelinde gesagt, ich finde es sehr hilfreich, um ein Gefühl der Interaktion sowie der physikalischen Objekts vermitteln. Schritt 3: Build - Making The Fortune Teller Kopf Dies ist, was der Kopf endete als. Ich denke, es erreicht die Absicht ganz schön gruselig. Der Leiter für diese Automaten wurde auf einer beschädigten Ausstellung Schaufensterpuppe vom Messe ballgowns an der V & A gebaut. Die Gesichtsmaske ist ein Latex-Test-Druckguss aus einer früheren Monstrosität (Twitr Janus). Es wurde in Stücke gespleißt und dann zurück Frankensteined, eine neue und noch gruseliger Version durch Umwickeln der Ebene Schaufensterpuppe zu schaffen. Hier ist das nicht wunderschön gemachte Schaufensterpuppe Torso, sah aus wie klassische griechische Marmor in der Sonne auf dieser azurblauen Tischtennisplatte. Schön gemacht obwohl diese Schaufensterpuppe wurde, nur der obere Teil benötigt wurde. Der Kopf und die Schultern brauchte off zu sägende, um einen flachen Boden zu verlassen. Das ist leichter gesagt als getan. Die wichtigste Sache zu richtig zu machen war die Kennzeichnung. (Prüfen Sie zweimal, sah einmal!) Der einfachste Weg, um ein Gefühl der Linie um den Körper zu bekommen war, Klebeband verwenden, in diesem Fall unser alter Freund Isolierband. Klebrig, aber nicht so klebrig, dass er streift die Lackschicht off! Eine weitere praktische Anwendung für das Wunder Band! Unten ist der Kopf. Der Körper ist GRP (Glasfaser), so dass die Sägespäne ist böse, gemahlenes Glas Lungentöte Zeug. Das nächste, was zu tun war, bekommen einige Augenhöhlen. Die Steckdosen sollten aus Deodorants wie gewohnt erfolgen. Die Augäpfel wurden eingeführt, um eine grobe Ort, um die Schablonen zu ziehen zu bekommen. Die orange Sache ist die Kugelaufnahme von einem männlichen deororant (es schlägt so auf dem Etikett zumindest) Also mehr rohe Operation für die Schaufensterpuppe. Bohren Sie an den Kopf, gefolgt von Stichsäge, schneiden Sie die Buchsen, autsch ... Und nicht schauen sie holen. Vage erinnert mich an den Film neun http://www.imdb.com/title/tt0472033/ und möglicherweise sogar Fantasic Planet https://www.google.co.uk/imghp?hl=en&tab=wi&authuser=0&q=fantastic_planet Enorm Als nächstes wird das ziemlich schön Schädel brauchte ein Gesicht, das ein Formteil aus Leinen los Twitr_janus ist, sondern in Stücke geschnitten und erneut angewendet, um die Form der Schaufensterpuppe passen. Wie üblich wurde dies mit dem herrlichen Heißklebepistole befestigt. Dieser stürmt slim-Bohrung Düse und kann verwendet werden, um unter die Haut injizieren. Die Stange unten ist mit einer Schraube aufgeklebt ist durch eine restriktive Schlucken, wo eine Hand passen nicht zugeführt. Einmal im Ort wurde mit Heißkleber fixiert und der Stab entfernt Unterhalb der Form des Gesichts wird gezogen, um als Führung für die Montage der Haut Gesicht auf zu handeln. Der Rest des Kopfes war leer gelassen werden. Das Gesicht ist sowohl eine echte Maske und eine metaphorische ein (wenn das nicht ein winziges bisschen meta!) Auf der rechten Seite der Monitorhalterung ist an der Befestigungsschraube davor montierten befestigt gezeigt. Die Bleistiftlinie wurde dann mit klaren Gaffer-Tape abgedeckt (clear so es immer noch zu sehen war!), Dann ist die Linie mit einem Skalpell zurück Das Band in der Linie wurde entfernt. Das Band ist da, um die umliegende Gegend Schädel painwork aus schmuddeligen Fingern, Chip, Kratzer und Heißkleber zu schützen, während der Arbeit auf sie. Die Gesichtsmaske wurde von Eigenschaften des Latex Gesichtsmaske aufgeklebt, und Verschnitt über Lücken gestreckt und getrimmt werden, um zu passen. Und dort haben Sie es. Die Grund Kopf, jetzt mit Gesicht ... Schritt 4: Build - Hacking eine Tastatur in eine verbotene Dateneingabe erlauben Der Wahrsager fordert den Benutzer auf ihrem Twitter-Benutzernamen eingeben. Um in dieser Funktion zu bauen bedeutete es eine Tastatur benötigen würden, aber eine, die nicht erlaubte es dem Benutzer, den Betrieb zu unterbrechen, entweder versehentlich oder absichtlich. Das rohe, sondern eher zufriedenstellende Lösung, um dies zu tun war, um zu hacken auseinander die Innereien einer Standard-Tastatur, dann entfernen Sie alle Steuertyp-Tasten, die tieferen Zugriff auf den Computer (Windows-Taste STRG, ALT, etc) zu ermöglichen, gerade aus der Buchstaben und Zahlen für die Dateneingabe. Dies ist, was die Tastatur sah aus wie nach der Modifikation. Es ist nett, aber ich würde es bevorzugt, ein bisschen mehr "fairgroundy" werden müssen. Es könnte ganz glücklich haben sich von Dampf punked oder Rummelplatz-punked oder etwas profitiert. Wenn es die Zeit erlaubt, möchte ich Holztasten geschnitzt haben oder vielleicht Bakelit oder Messing ... Wie auch immer, hier ist, wie die Tastatur Hacking war getan. NB- Hut ab vor Randolfo für diese ein. Ich habe seine große Instructable Hacking eine USB-Tastatur als Ausgangspunkt für diese Änderung. Auf der anderen Seite, die gute Sache über die Prüfung dieser Möglichkeiten ist, dass man, um durch Kunststoff in einer allgemein therapeutischen Weg zu hacken ... Vorher und nachher... Zunächst ersten abschrauben alles zu starten, um das Innenleben offenbaren ... Der Schlüsselmechanismus ist großartig ... Hacken Sie das Ende des Brettes des achtzehnten Jahrhunderts Schiff-Stil - mit einer Säge, dann planimg es nach unten - so angenehm! Das sah recht ordentlich im Frühjahr ... Aber unter all das, es ist eine ziemlich empfindliche Reihe von Kunststoff-Kreislauf-Matrizen. Diese erfassen die physikalischen Pressen von Tasten und nehmen Sie die entsprechende elektronische Verbindungen Leider gelang es mir, die erste Platte von einigen eher unsubtle Trimmen töten (subtltey ist nicht so mein Ding), so nehmen Sie zwei eher vorsichtiger. Schneiden Sie die Kunststoff und einfach falten Sie die Silikon und gedruckt Acetat Tastendruck Blätter ... Es gibt zwei Blätter von Kontakten, durch eine Abdeckfolie getrennt. Der obere Bogen eine Matrix von Elektroden, die mit entsprechenden Kontakten auf dem unteren Blatt verbinden. In der Mitte hat der Maskierungslage Löcher, die steuern, welche Kontakte berühren. Vor dem Falten der Blätter, die Kontakte für alle Tasten, die müssen (wie STRG oder WINDOWS oder ALT) neutralisiert werden müssen, berühren und damit die Aktivierung alles unerwünschte verhindert werden! Was man nicht wirklich sehen, hier ist das Klebeband verwendet werden, um dies zu tun. Dies wurde auf der anderen Bleche aufgebracht, um die Kontakte zu maskieren. Dieser brauchte etwas filigran-Level-Skalpell Arbeit rund um die Verschraubungen geschnitten ... Dies ist die Original Gaffer-Tape Versuch, die zu grob war ... Schließlich aber, arbeitete der zweite Versuch und die Senkung der Tastatur endlich geklappt .. Dies funktioniert, aber ich einzeln neu zu erstellen jede Taste wollen immer noch ... Schritt 5: Erstellen - Erstellen einer Festplatz-style Sockel Fall aus Sperrholz Sobald der Kopf gebaut wurde es notwendig eine Anzeige Sockel. Hier sehen Sie das fertige Sockel zu sehen, und unten ist, wie es gebaut wurde. Diese effektiv benötigt wird, um ein Feld groß genug, um die Tech, die es treibt Haus. Hauptsächlich ein Arduino, Verstärker, ein Videotreiber-Box und einen Mini-Laptop. Das erste, was zu tun war, um die Größe der Teile, die auf dem Feld standen werden musste überprüfen, und / oder in sie eingebaut. Dies bedeutete Einschätzen der Breite bezogen auf die Breite der Schultern des Automaten, und die Breite des abgesägten Tastatur. Das Bild unten zeigt ein Blatt ziemlich lecker 5.5mm Außen Sperrholz ist in rau, einfach, indem Sie die Teile auf es, die Positionierung mit dem Auge und dann das Zeichnen von Linien als Führer gekennzeichnet. Das schwarze Quadrat wurde es richtig und exakt auf den rechten Winkel zu halten. Daraus war ein Spitzenbrett ersten Schnitt zu Breite und ungefähre Länge (unten) ... Die Tastatur wurde aufgestellt, um die Platzierung richtig zu machen ... Die obere Platte wurde dann in zwei Teile (siehe unten) zu schneiden. Dies, da die benötigte Tastatur, um den Nutzern eine Vorwärtsneigungswinkel dargestellt werden ... Der Abschnitt, der verwendet würde, um die Tastatur zu montieren, wird nachfolgend mit der Papierschablone mit Gaffatape befestigt gezeigt. Nach der Markierung wurde eine Stichsäge verwendet zum Ausschneiden der Tastatur Loch, damit die Montage an der Unterseite. Hier ist die Tastatur, sitzt ziemlich fest in der Platte ... Der Laptop unten ist ein Notebook (dh die Kleinen), so dass Sie die Skala mehr oder weniger sehen ... Springen vor ein wenig, in den Schuss unten können Sie sehen, der andere Teil des Topboard hat an dem vorderen geneigten Tastatur Montageplatte ausgestattet, mit zwei Seitenplatten, die Grundfeld zu machen. Es ist die Vorderseite, Rückseite und Basisplatten fehlen. Die Höhe wurde durch die Notwendigkeit, den Laptop in der Box bei der Ausführung des Automaten später offen geregelt. Auch unten ist der Kopf positioniert ist, um zu kennzeichnen, einige Führungslöcher, um es in das Basisfeld zu suchen. Aus diesen Markierungen Löcher in der Spitze der Box als Positionierungslöcher für die Schultern des Automaten zu sitzen geschnitten wurden. Die Schultern gesenkt, um die Passform (unten) zu testen ... Und die Schultern sitzen im Ort ... Sitzen im Ort der Kopf sah so aus ... Müsse es auch einen Lautsprecher. Ein Loch wurde in der Mitte der vertikalen Frontplatte geschnitten, um diese zu passen. Der Lautsprecher und ihre Treiberverstärker wurden von einem Computer-Audio-Verstärker gehackt. Sie können die Lautsprecher durch, die in diesem Bild sehen. Die Rillen sind da, um die Lautsprechergitter zu lokalisieren. Diese wurden mit Metallsägeblatt Lauf gegen ein Stück Holz geschnitten, um sie gerade entlang der Führungsmarkierungen zu halten. Die folgende Aufnahme zeigt den Lautsprecher aus dem Inneren der Box. Die Verstärkerschaltung ist in der unteren rechten, auf eine Holzgehäuse angebracht und mit Schrauben gesichert. Hier ist der Kopf wieder, mit dem Lautsprecher zeigen. (Unten) Hier ist eine Rückansicht, die den Laptop offen und in der Box läuft. Um es ein Jahrmarktsattraktion fühlen zu geben, wurde das Feld ein grell rot lackiert. Das Feld auf der linken Seite zeigt die rohe Holz mit der Tastatur und oberen Löcher mit Gaffer-Tape maskiert, um Farbe zu stoppen bekommen in. Die rechte Aufnahme zeigt die Box nach mehreren Schichten von roter Farbe. Das war normales Auto Sprühfarbe. (Aceton-basiert) Zum Messegelände Stimmung weiterhin wurde das Label Wortlaut in großen Buchstaben gedruckt (ca. 90pt glaube ich), in Streifen geschnitten, dann gelb mit Filzstiften (ProMarkers) gefärbt. Einige Pseudo-Fading wurde mit Schichten von braun und grün schwach transparent Pigment ProMarkers angewendet. Man kann nicht wirklich sehen dies in diesem Schuss. Der Schriftzug wurde anstelle mit Bostick (clear Fumey Allzweckkleber) angeklebt und wurde mit 3 separate Schichten schnell trocknend Glanzlack lackiert, um alles zu versiegeln. In der Aufnahme Hier können Sie das pseudo-Aging klarer zu sehen. Damit sollte Lack vergilbt mit dem Alter zu imitieren. Und hier (unten) ist der fertigen Schachtel. Die Metallfolie Lautsprechergitter wurde separat mit gelber Farbe gesprüht, um die Beschriftung, dann mit Kabelbindern an Ort und Stelle hält es innerhalb der Gehäuserillen, die zuvor in das Feld geschnitten worden war, um ihn zu suchen festen entsprechen. Unten ist, wie es aussieht von der Rückseite mit der Rückwand entfernt. Der Laptop ist im Inneren passen. Hinter dem Laptop sind das Arduino Board (verwaltet die putton schieben Aktionen), die Audio-Verstärker und ein Videosignal-Konverter. Dies macht den Standard-VGA-Monitor-Ausgang aus dem Laptop arbeiten auf dem TV-Typ-Monitor, der auf dem Kopf des Automaten sitzt. Der Monitor ist ein geschlossener Kreislauf Fernsehmonitor normalerweise als eine Rückfahrmonitor in einem Auto verwendet wird. Unten ist ein Bild von den verschiedenen Dinge benötigt, um in der Box gestopft werden. Eine wichtige Sache zu beachten ist, dass der Kopf nicht auf den Sockel aufgeklebt. Es kann entfernt werden und ist nur mit einer Schraube gesichert. Diese Haltebolzen unter ganz links sichtbar (links von der Arduino-Board). Es ist eine einfache Gewindebolzen mit einem Holzblock auf sie Gewinde, lose an Ort und Stelle mit Nüssen statt. Der Grund für die nicht Kleben Sie den Kopf auf dem Feld ist, so kann es außer für den Transport berücksichtigt werden. Hier wird es in einem Koffer gezeigt, gerade dabei, nach Amsterdam getroffen, um an der Konferenz MuseumNext demonstrieren. Der Kopf ist in der Box. und das ist it.Step 6: Techy - The Psychic Gehirn, seine Twitter app und seine Google Spreadsheet Admin-Interface The Psychic Wahrsager funktioniert durch die Rekonstruktion kontextuellen Inhalt einer Heran spezifische Diskussion in Twitter geerntet. Es tut dies mehr oder weniger in Echtzeit. Alle 10 Sekunden für jede neue Inhalte in der Regel überprüft er, aber das kann in den Admin-Einstellungen geändert werden. Was es sieht für Twitter ist als eine Reihe von Admin-Parameter definiert. Dies wird in seiner aktuellen Admin-Einstellungen, die remote geladen werden (siehe unten für weitere Details) gesetzt. Die Einstellungen werden in einer Google-Tabelle an anderer Stelle gespeichert. Dieses Bild zeigt, wie es funktioniert Es greift auf die Twitter-API, um Tweets, dann Prozesse zu ernten und sortiert den Inhalt der Tweets in Listen von Wörtern, #hashtags,usernamesand URLs. Herstellen der Verbindung zu Twitter von Verarbeitung Offensichtlich, um Tweets zu bekommen, muss es um Twitter zu verbinden, und um dies zu tun, einen eigenen Twitter-Account (rbeetlelabs) nutzt. Dieses Konto wird verwendet, um die Wahrsager als offizielle Twitter App registrieren. Dies ermöglicht es, auf Twitter zu verbinden mit Open-Authentifizierungsschlüssel und die API Suchanfragen benötigt, um die Tweets für die Verarbeitung zu extrahieren zu machen. Ich werde nicht versuchen, neu zu schreiben, Anweisungen zum Einrichten eines neuen Twitter-Account. Das ist eigentlich ganz einfach, aber, wie es geht im Laufe der Zeit ändern. Am einfachsten ist es, um zu Twitter Entwicklerseiten: https://dev.twitter.com/docs Im Wesentlichen, wenn Sie eine Anwendung mit Twitter ein Profil, erhalten Sie 4 große Zeichenfolgen, die als Sicherheitsschlüssel zu genehmigen und API Verbindungen von diesem App verwendet. (Dies ist die offene Authentifizierung OAUTH) Der twitter app ist mit dem Gehirn verbunden Psychic. Dies ist eine Verarbeitung Skizze, die ständig läuft. Die Verarbeitung Skizze verwendet eine Java-Bibliothek namens Twitter4J (Twitter für Java, geddit?). http://twitter4j.org/ Twitter4J ist Open Source und wenn auch ein wenig fummelig zu importieren, funktioniert gut. Er sorgt für die Verbindung zwischen der Verarbeitungs Skizze und Twitter. Sie müssen die OAUTH Schlüssel in Ihrem Verarbeitungs Skizze zu speichern, und die Twitter4J Bibliothek hat eine Reihe von Klassen und Verfahren, die Sie fordern, um Verbindungen herzustellen. The Psychic Wahrsager verwendet 2 Twitter4J Methoden suchen (Abfrage), die Suche macht Anrufe auf die Twitter-Suche-API   und update (Status), die den Twitter-Account, indem Sie einen Tweet aktualisieren. Die vollständige Dokumentation zur Verwendung des Twitter4J Bibliothek finden Sie hier: http://twitter4j.org/en/api-support.html Google Spreadsheet als Admin-Interface Sobald die Verarbeitung Skizze hat den Twitter-Handshake-Verbindung hergestellt, macht es eine API-Suche. Was es für die durch Admin-Einstellungen, die in einem Google-Tabelle gespeichert sind, gesteuert sucht. Dies ermöglicht ihnen, aus der Ferne über das Internet eingestellt werden. Die wahre Schönheit von Google-Tabellen ist, dass man sie zugänglich wie Daten wirklich einfach und ohne API-Schlüssel oder Authentifizierung zu machen. Dazu müssen Sie nur veröffentlichen sie im Internet. Natürlich ist dies nicht etwas, das Sie für sensible Daten machen können, so sollten Sie nicht verwenden, die Tabelle, um Ihre OAUTH twitter Tasten speichern (das wäre auch vertrackt sein!) Um auf die Web zu veröffentlichen, verwenden Sie die Datei-Menü In das zu veröffentlichen, um Dialogfeld Web das Kontrollkästchen "Automatisch neu veröffentlichen, wenn Änderungen vorgenommen werden" -Option. Dies bedeutet nur, dass, wenn Sie Einstellungen zu aktualisieren, gehen sie auf die Bahn automatisch. Dieses Dialogfeld ist, wo Sie die Daten URL, die Sie in Verarbeitung verwenden können. Dies ist, wie es in der Verarbeitungscode verwendet wird. Wenn Sie auf die URL, wird ein Array in Bearbeitung, die ist bequem mit den Admin-Einstellungen gefüllt erstellt, so dass Sie sie, wie Sie bitte - sweet! void loadRemoteAdminSettings () { try { String checkRandomSpeech = adminSettings[8]; adminSettings = loadStrings("https://docs.google.com/spreadsheet/pub?key=0AgTXh43j7oFVdFNOcGtMaXZnS3IwdTJacllUT1hLQUE&output=txt"); if ((checkRandomSpeech.equals(adminSettings[8]))!=true) { tts.speak(adminSettings[8]); } In diesem Beispiel wird verwendet, um zufällige Nachrichten an den Psychic Wahrsager zu senden. Für das Gesamt Procesing Skizze und was jeder Teil hat siehe Schritt 7 Schritt 7: Techy - Brain Logik: Extrahieren Sinne von Dekonstruktion Live-Gespräche Erstellen Sie ein Automat sprechen Zufalls Scheiben Tweets der Menschen ist eine Sache, so dass sie annähernd zu einem einigermaßen matischen oder verständliche Begriff ist etwas ganz anderes. Es fiel mir der Schlüssel dazu liegt im Umfang der strukturierten und Klassifizierung, die innerhalb Tweets (oder nicht!) Bestehen können suchen. Zwar gibt es nicht viele von ihnen, gibt es einfache Grammatikregeln auf Twitter verwendet, die im Allgemeinen in einer konsistenten Art und Weise eingesetzt werden. Es gibt auch einige Gemeinschaftsgefühl Etikette, die überwacht und diese Standards. Die wichtigsten sind unten aufgeführt, mit einer gewissen Hinweis darauf, wie diese Bedeutung verwendet werden könnten username - jedes Wort mit einem @ vor, es ist sehr speziell a twitter Benutzernamen ein. ZBrosemarybeetle. Dies ist äußerst nützlich. Wenn einusername wird gekennzeichnet, wird die Person entweder in Diskussion oder direkt alarmiert / eingeladen, beitragen. Trennung dieser heraus gibt eine Liste Personen an der Diskussion beteiligt - sehr praktisch! #Hashtag - das ist twitter Grammatik für ein Gesprächsthema. Nach ihrer Annahme ein hashtag soll nur für einen bestimmten Thema verwendet werden. Daher Hashtags sind sehr nützlich, und wenn getrennt eine Liste von Themen geben diskutiert oder verwiesen wird. Es gibt einen speziellen Fall, wenn das Extrahieren Hashtags, die, wie man die Hauptdiskussions hashtag behandeln zu behandeln ist. Dies ist der Leim eines twitter Diskussion, sondern in Bezug auf die Häufigkeit des Auftretens verdrängen alle anderen Hashtags. Doch wie dieser hashtag id Regel, was wird verwendet, eine Suchabfrage Begriff, Handhabung ist einfach, da die Abfragebegriff kann ausgeschlossen werden, wenn erforderlich. Es gibt einige andere Veränderungen auf Hashtags. Zum Beispiel einige Hashtags für ein wiederkehrendes Ereignis kann eine Wurzel und eine Datumsmodifikator haben - zB # MW2012, # MW2013 usw. Hashtags oft Akronyme werden und es gibt auch einige Gelegentlich acronymous (ist, dass auch ein Wort?) Hashtags, die führen können, zu Verwirrung. Zum Beispiel die hastag #rdg ist seit einiger Zeit von einer lokalen Zeitung verwendet worden, um die Stadt von Reading, UK spenden, aber die Popularität der japanischen Anime Roten Mädchen führte zur #rdg Hashtag wird weithin angenommen, um zu verweisen. http://www.getreading.co.uk/news/s/2132218_red_data_girl_fans_twitter_storm_over_rdg_hashtag URLs - das ist der twitter Äquivalent einer Referenz. Dies sind in der Regel nicht die tatsächliche URL, aber eine verkürzte Weisung url. Auch diese wurden als wert Abtrennung, wie sie sind Ressourcen mit der Diskussion assoziiert und führen zu mehr in die Tiefe Ideen, die zu lang für die Darstellung auf Twitter RT oder RT sind: - (ReTweet) ist dies die Standard-Etikette für die Anerkennung eines Tweets als gesendet wird, nicht original ist tweet ist jemand anderes gesendet an. Es ist gleichbedeutend mit einer traditionellen Kredit. Wenn durch eineusername gefolgt, gibt es eine implicaton, dass dies die Person, die den ursprünglichen Tweet geschickt, aber das ist keine strenge Regel. Während RT nützlich sein könnte, wurde beschlossen, nicht zu stören, um Benutzernamen, die nicht erwähnt werden gutgeschrieben oder VIA enthalten sein könnten unterscheiden - ähnlich wie bei RT, ist dies in der Regel eine Bestätigung, dass dies eine Sekundär retweet, die Benennung der Person, die es geschickt auf . Es ist fast immer der Fall, dass eine folgendeusername ist die Person, die es zunächst retweeted. "Wörter in Anführungszeichen" - Anführungszeichen werden als Abkürzung für ein direktes Zitat aus einem anderen Tweet verwendet. Flussdiagramm Hier ist das Flussdiagramm von Schritt 6 erneut. Die Verarbeitung Skizze, wie jeder andere, hat eine Last von Initialisierungscode sowie eine Belastung von Funktionen deklariert. Es hat auch die Standard-Looping-Funktion draw (). Dieser läuft kontinuierlich, wenn die Skizze läuft und führt verschiedene Code, macht Kontrollen und ruft Funktionen nach Bedarf. Der Algorithmus für die draw () Funktion, vereinfacht gesagt, fließt etwas davon. Überprüfen Sie das Remote Admin-Einstellungen zu laden Fernsatzfragmente Aktualisieren lokalen Admin-Einstellungen mit den neuen Versionen bei Bedarf Ernte tweets nach Admin-Einstellungen Strip aus Stoppwörtern (wie "der", "und", etc.) Split tweets in Komponententypen Worten hashtags , Benutzernamen und URLs Aktualisieren Sie lokale Speicherzeitraster für jeden Typ mit den neuesten Werten Hören für Tastendrücke Wenn Taste gedrückt: erstellen Vermögen von tweet Inhalt zufällig mit Satzfragmenten kombiniert nach Glück Bau Ausdruck sprechen tweet mit Text-to-Speech tweet Zusammenfassung Benutzer Fortune-Bau Die Satzfragmente sollen neutral zu sein, so dass sie mit Twitter Diskussion der Content aus allen Twitter-Suche verwendet werden. Diese werden nach dem Zufallsprinzip aus vier Nachschlagetabellen ausgewählt. Der Inhalt jeder dieser Tabellen in den Bearbeitungs Skizze von einem separaten Google-Tabelle gezogen wird. Angezeigt werden die Inhalte dieser Tabellen zeigen die aktuellen Werte zum Zeitpunkt der Niederschrift dieses Instructable. Diese sind nicht festgelegt und können jederzeit geändert werden. In der Tat können sie Live geändert werden, während der Psychic Wahrsager ist in Aktion. Das ist, weil es überprüft die Inhalte dieser Tabellen mit der gleichen Geschwindigkeit er die Admin-Einstellungen und Abstimmungen Twitter prüft. Gesprochene Fortune- Hier ist das Diagramm für jedes weiße Feld Hier wird eine entsprechende Tabelle von Istwerten unten enthalten ... Die Funktion, die das Glück schafft innerhalb der Psychic Gehirn ist: void readFortune (String tweetText) { int picW1 = int(random (words.size())); String fortuneWord1= words.get(picW1); int picW2 = int(random (words.size())); String fortuneWord2= words.get(picW2); int hash = int(random (hashtags.size())); String fortuneHash= hashtags.get(hash); int urler = int(random (urls.size())); String fortuneUrl= urls.get(urler); int userer = int(random (usernames.size())); String fortuneUser = usernames.get(userer); int frag1Int =int (random (fortFrags1.size())); String fraglet1 = fortFrags1.get(frag1Int); int frag2Int =int (random (fortFrags2.size())); String fraglet2 = fortFrags2.get(frag2Int); int frag3Int =int (random (fortFrags3.size())); String fraglet3 = fortFrags3.get(frag3Int); int frag4Int =int (random (fortFrags4.size())); String fraglet4 = fortFrags4.get(frag4Int); fortune = "Psychic summary for @"+tfUserCurrent + ". for: #"+queryString+". "+ fortuneWord1+", "+ fortuneWord2+", #"+fortuneHash+ ", @"+fortuneUser+", "+fortuneUrl+". Enjoy/RT"; println ("just before fortune spoken"); fortuneSpoken = "Hello. "+tfUserCurrent+". "+adminSettings[7]+ ". "+fortuneGreeting +". Here. you are. Your Psychic Hive Mind. Fortune. based on reading .the collective mind of. "+queryString+". is. "+fraglet1+". "+ fortuneWord1+". "+ fraglet2+". "+fortuneWord2+". "+fraglet3+". hashtag."+fortuneHash+ ". "+fraglet4+". Twitter user."+fortuneUser+". Thank you. I have tweeted a psychic summary of this reading to your twitter account. Moove along now. " ; println ("fortuneSpoken= "+fortuneSpoken); } The script is looking at the size of the array storing the fragments, then obtaining a random value from the array by requesting the element that is an random integer between 0 and the max number of elements. Here are examples of the phrases used (current values at time of writing) Sentence fragment 1 - (INTRO) The first Google lookup table contains sentence openers to get the fortune started. Current values are... Perhaps you would be advised to try It could be that Don't assume always that Have you pondered Try something different like Maybe its You might like Grasp the Believe in a beautiful How you feel about Something unexpected like An unexpected issue like The intro is followed by... + Twitter word + A random word from the harvested list of Twitter terms currently in use is inserted. This is followed by... Sentence fragment 2 (CONNECTOR) This fragment is a short connector. It will connect the first word with a second, also pulled from the harvested list of Twitter terms currently in use. ZB back to also und beide but what if or maybe not only but und always hardens the möglicherweise more clearly and the wichtig goes towards It is followed by... Full stop The second Twitter term ends the first part of the fortune reading, so it gets a full stop. Sentence fragment 3 (#HASHTAG) This fragment invites the user to consider a hasttag that has been tweeted within the current collective discussion. It is intended to expose the user to one of the subjects under discussion.Eg Also think, you might like to seek out But perhaps a conversation would help with Some new ideas may come from talking to You may be surprised to know what you can learn from And don't rule out sharing ideas with someone like You may have something in common with Try finding things in common with Find out more about the work done by It is followed by... Twitter #hashtag As you might imagine. Sentence fragment 4 The final sentence fragment introduces a Twitter user. This user is specifically someone who has sent one of the tweets being harvested, NOT someone mentioned in them. In other words this fragment is being used to deliberately highlight a current contributor to the discussion. ZB Also think, you might like to seek out But perhaps a conversation would help with Some new ideas may come from talking to You may be surprised to know what you can learn from And don't rule out sharing ideas with someone like You may have something in common with Try finding things in common with Find out more about the work done by And there you have it. Tweeted fortune summary The spoken fortune is a central part of the live intreraction. However, given the Fortune Teller is designed to be used in a hectic environment, a second summary is also generated which is intended as a reminder for the user, of the reading. This is tweeted to the user. This is similar to the above spoken fortune, but is much simpler in construction. Mainly because as it has to be tweeted, it has to be 140 characters or less. Here is the diagram representing this and the code: fortune = "Psychic summary for @"+tfUserCurrent + ". for: #"+queryString+". "+ fortuneWord1+", "+ fortuneWord2+", #"+fortuneHash+ ", @"+fortuneUser+", "+fortuneUrl+". Enjoy/RT"; println ("just before fortune spoken"); One thing the summary includes that the spoken fortune does not, is a random URL. Once again, this is taken from the live discussion and is specifically a URL that had been shared and therefore a resource presumably of added interest to the discussion. The reason the spoken fortune does not contain URLs is simply because they are frequently unintelligible when spoken via text-to-speech. Limitations of auto-generated fortune readings The method shown above, of creating fortune readings from auto-harvested tweet content, is crude to say the least. Not surprisingly, the random (or semi-random) connection of terms used to create fortunes has some rather unpredictable results. These are quite often a little strange, but ocassionally you get a really quite surprisingly good juxtaposition. A bit like a leftfield haiku :)Step 8: Techy - Using Arduino to make a physical press of a button send a tweet One thing that I wanted for the Psychic Fortune Teller was that it required a physical interaction. It has a keyboard needed for data entry, so I could have just used the return key on that. However, this felt not quite enough for a fairground/arcade type experience. I wanted the user to have to make a much more obviously deliberate action to get their fortune told. Clearly this was where a handy Arduino was always going to be the solution! I fairly quickly knew this would be a button. Eventually I decided on a good old doorbell... The doorbell circuit is extremely simple The full Arduino skethc is available on GitHub here: https://github.com/rosemarybeetle/psychic-fortune-teller The same Arduino sketch with some annotations is shown below. You can see it's pretty simple. It looks for a button press (as in the circuit above) /* Fortune Teller Hive Arduino board code Needed to control physical interaction... and relay physical-detection data back to Processing mothership! */ The next line is defining a variable (switchPin) to store an interger, that will be used to define which analogue input will be used. int switchPin = A0; // Analogue in = A0, called switchPin. The next line defines a variable to show which PIN an LED is attached to int led = 13; // LED pin... The next line is the initialisation for the analogue input variable int analogValue = 0; // this is used to determine whether to make a call to Twitter (if high) Initialise timer period... float timerPeriod=5000; //don't send data more often than this Initialise a timer variable... float timerSend=millis(); Initialise a second comparison timer variable float timerCheck=0; The setup function... void setup() { Make a serial connection at baud rate 114200... Serial.begin(115200); Send confirmation message across serial USB port. This is used in testing Serial.write("Serial connection initiated"); // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: The main loop function... void loop() { The next line is making the Arduino check for any analogue signal to the analogue pin 0... analogValue = analogRead(switchPin); If the doorbell is pressed, then the input to analogue pin 0 will be 5V. This is equivalent to 1024. The IF statement has a threshold of 900 (about 4.5V) if (analogValue >=900) { reset first Timer variable (timerSend) timerSend=millis(); Check if period between now and last reset (timerSend-timerCheck) is greater than default period (timerPeriod) NOTE initially this will be true. After the first press it will be false until a period has elapsed. This is preventing accidental multiple sends of serial data which might cause the Fortune Teller to try to speak the same thing several times if ((timerSend-timerCheck)>timerPeriod) { Send the coded message "fireTweet" to the Processing script over the serial (USB) port Serial.write("fireTweet"); Once sent reset the check timer variable. This will be usd in the IF check to prevent refiring too early timerCheck=millis(); analogValue = 0; // reset - this is used to ensure the value is reset after a successful release of the switch // ADD ANY OTHER TRIGGERS HERE THAT COME FROM THIS INTERACTION } } } . Step 9: Techy - A micro car-monitor display for visualising the inner brain A key feature of the design of the Psychic Fortune Teller was that it should have some means of seeing into its brain. I wanted people using it to be able to see where the content it speaks comes from, by displaying it a live graphic visualisation. This mean it needed a monitor that would display this visualisation. I considered several possible sources for a screen. It needed to be small enough to use with a normal sized head, but the display needed to be big enough to actually read. I initially had wanted to hack the screen from a DVD player, as these are small and have a fairly good screen resolution, needed to for playing DVDs back. There were some useful examples, such as this one on Instructables from computerwiz_222 http://www.instructables.com/id/Use-your-Portable-DVD-Player-as-a-Monitor/ This was a great Instructable, but required the DVD player to be a model with a video-in connection, which many do not have. I didn't want to pay the full price for a new one to achieve this, so this would have meant getting lucky with a second-hand one. I couldn't easily find one on e-bay, but in the process discovered an alternative consumer product that was just what I was after as a source of a small display - in-car monitors! It turns out that cars use a range of monitors mainly within closed circuit TV reversing warning systems which need to be small enough to fit on car dashboards, or for in-car entertainment (ie using as as display on the back of seats, to shut your kids up on a journey!). They are an established product with a massive market, so there was a good range of sizes available including 2.5", 3.5", 4.5" and so on. They also crucially are available as a separate part for making up your own reversing camera system and come with a video inpit as standard - perfect! There were also loads available and they were cheap enough to buy new off ebay. The only compromise in using them is that the display quality is not intended for watcjing DVDs. It is just good enough to see if your about to mash up your car whilst parking. In the end, I bought a 7" screen, which was slightly larger than I had originally intended, but anything smaller would not have been legible due to the fairly low screen resolution. One thing I hadn't realised in advance is that because they are not made for connection as a computer screen, they only work with video line in. They almost all come with standard VGA connectors. Check this! However, although these RCA connectors are standard and allow easy connection, the screens are really being connected like a very small television. They don't come with computer drivers. This means that you can only connect them directly to a computer that has a specific line out. This usually only means computeres designed to allow you to connect them to big consumer TV screens, eg for gaming. Luckily, there is a handy and fairly cheap fix, which is to use a video convertor box. This takes an input from a standard VGA monitor output (this is the standard blue rhomboid connector for connecting projectors etc) and converts it into the video line signal that the mini monitor needs. Here's what they look like. They are powered by USB Anyway, these screens are very handy, dead easy to get hold of and reasonably cheap. I recommend considering them as a cheap and cheery solution. Step 10: Techy - Building the visual interface Stare deep into the collective brain... One of the key features I wanted for the Psychic Fortune Reader was that it be possible to see into its mind in real time as it is scanning the collective thoughts of the Twitter conversation. The screen on its head is a window into its brain. It also needed to have a simple form box area to allow users to interact by entering their Twitter username. Visualising the discussion I wanted the visualisation is to be a randomised animated something, but I wasn't sure what would work. While wandering about the web trying to get ideas, I came across a rather good visualisation example by Jer Thorp. Respect to him for putting out such a clear example. His visualisation is essentially using Twitter to get a word list, then presenting this by displaying these word at random positions on the screen. Here's his very admirable and handy example. http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter Jer's example has a simple white text on black and works by calculating the screen size, then randomly placing the text within those boundaries. I played with this code. I had not one, but four subsets of data types: words, hashtags, usernames and URLs. I gave each of these a distinguishing colour and size range. For each type of data, the words are displayed with a distinct colour and the size ranges between a min and max value. This worked quite nicely. Here is a visualisation of a discussion at MuseumNext in Amsterdam May 2013 Interaction elements of the interface The other need was for a user input area. This was handled by a convenient Processing library called ControlP5, written by Andreas Schlegel, another person deserving of respect for their free sharing of this very handy library. www.sojamo.de/libraries/controlP5/ The form is extremely simple and is a backing banner band, a text input and a text label... Iterations To get to the final visual interface design above, it was developed in stages. The first stage was monochrome, based on Jer Thorp's code. These four screenshots show the rather cumulative white-out effect that this original script produced. This was good, but not intelligible enough... This was developed to the eventual four-colour display, with greater control over variable sizes and a much faster fade to black, which exposes the words much more distinctly and clearly overall. This example below is a test reading at Museums and the Web 2013. It appears much more clear because it is a screen shot of a reasonably high screen resolution on a desktop PC display. When scaled down the words were unreadable, so the font size had to be dramatically increased to be legible on the smaller, lower-resolution car monitor. You can also see that the form design is not yet finished at this stage. Step 11: Techy - The full Processing code (and GitHub link) By far the most important part of the Psychic Fortune Teller is its psychic brain, written in Processing. The full code for the psychic brain is on GitHub for free reuse under GNU GPL. You should refer to this for forking or copying the code as it will get any updates I bother to make. https://github.com/rosemarybeetle/psychic-fortune-teller The code below is the full Processing sketch at time of writing, with basic notes that show where some of the features discussed in this Instructable are featured in the code. It has quite a lot of information in the code comments, so here I am merely signposting the broad sections of code and what they do. The idea is that if you only want to reuse some features, you can find the code block you need, hack it up as you like and ignore the rest. Note that there are a number of imported libraries, so you need to include these. Terms of use = use it freely. I hope it helps you build stuff :) More or less you can do what you like, except try to copyright it or restrict reuse by others of this code, or your new code based on it. It is also based in part on other people's efforts before me. Respect to them. If you manage to make any use of it, I'll be pleased and suggest you put yours back out there. Here are some credits... Acknowledgments Twitter4j Yusuke Yamamoto (and others I believe?) Twitter4j is a java library that does the connection and transaction handling between Processing and Twitter. This is what enables simple connection to harvest the tweet content, and to send tweets, both from withing the Processign brain. EINDRUCKSVOLL. github.com/yusuke/twitter4j/network GURU text-to-speech Nikolaus Gradwohl The GURU text to speech library for Processing, is a key bit of code. It is what allows the Psychic Fortune Teller to talk to you. www.local-guru.net/blog/pages/ttslib ControlP5 Andreas Schlegel ControlP5 is a Processing library used to handle creation and control of user interfaces in the Processing draw() window. It's used for the twitter username entry box www.sojamo.de/libraries/controlP5/ Visualisation JER THORP The visualisation of words on screen is based on an example sketch by Jer. blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter Full sketch with some interpretation Version 9. This is the Psychic brain Processing sketch at the time of release of this Instructable. Any amendments will be on the Git repo https://github.com/rosemarybeetle/psychic-fortune-teller Credits // ----------------------- // ---- // PSYCHIC FORTUNE TELLER // @rosemarybeetle 2013 // http://makingweirdstuff.blogspot.com // version 9 /* ----------------------- This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ---------------------- */ // // This sketch is the mind control of Psychic Fortune Teller, an automaton that can read the collective mind of twitter // It has a Processing brain connected to a Twitter app, connecting via OAUTH // It harvests tweets from predefined searchs // Deconstructs the weet content into words, hashtags, usernames and urls // Then uses these to create fortune readings, which it speaks using text-to-speeach // it also tweets a summary. // // RESPECT to... // // JER THORP - Visualisation is based on his code example // see http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter // Awesome! // // The people behind twitter4j // see https://github.com/yusuke/twitter4j/network // using here, version 3.03 // NOTE - you have to have the twitter4j library installed in the libraries folder for this to work! // You need to register your app to get OAUTH keys for Twitter4j // You can put them in a separate tab in your sketch // // Andreas Schlegel - controlP5 GUI Library // see http://www.sojamo.de/libraries/controlP5/ // For positioning see (also @@@ Andreas Schlegel @@@) - // https://code.google.com/p/controlp5/source/browse/trunk/examples/controlP5button/controlP5button.pde?r=6 // ---- // Nikolaus Gradwohl for the GURU text to speech library for Processing // see http://www.local-guru.net/blog/pages/ttslib // ----------------------- // ----- initialisation // >>>>>> boolean serialCheckInt=true; boolean grabtweetCheckInt=true; boolean loadSettingsFirstLoadFlag=true; boolean loadstopWordsCheckInt=true; // <<<<<< end load flags // >>>>> fortune variables initialisations int tweetTextOutro = int (random(99)); String tweetSendTrigger ="fireTweet"; String fortuneGreeting = "I have stared deep into the hive mind. "; String fortune = ""; String fortuneSpoken = ""; int widthRandomiser = 120; // <<<<<< // >>>>>> gui variables init... String tfUserCurrent =""; // used to check what is in the username text box String tfTextCurrent =""; // used to check what is in the free-text text box int valFocus = 0; // default color focusBackgroundColor = color (255, 255, 00); color focusOffBackgroundColor = color (0, 0, 0); color focusOffColor = focusBackgroundColor ; color focusColor = focusOffBackgroundColor; color clPanel = color(70, 130, 180); // <<<<<< // >>>>>> ArrayLists to hold all of the words that we get from the imported tweets ArrayList stopWords = new ArrayList(); ArrayList cleanTweets = new ArrayList(); ArrayList words = new ArrayList(); ArrayList hashtags = new ArrayList(); ArrayList usernames = new ArrayList(); ArrayList urls = new ArrayList(); ArrayList tweetster = new ArrayList(); String uberWords [] = new String[0]; //massive array to build up history of words harvested String uberHashtags [] = new String[0]; //massive array to build up history of hashtags harvested String uberUsers [] = new String[0]; //massive array to build up history of users harvested String uberUrls [] = new String[0]; //massive array to build up history of urls harvested String queryString = ""; // String queryType = ""; // ArrayList fortFrags1 = new ArrayList(); ArrayList fortFrags2 = new ArrayList(); ArrayList fortFrags3 = new ArrayList(); ArrayList fortFrags4 = new ArrayList(); // <<<<<< Variables for admin and tweettexts - eg Array for containing imported admin settings from Google spreadsheet (init with default settings) String adminSettings [] = { "#hivemind", "@rosemarybeetle", "weird", "100", "50000", "h", "500", "Psychic Hive-Mind Fortune Reader", "Greetings Master. I am a-woken" }; String tweetTextIntro=""; String readingSettingText=""; int panelHeight = 60; int border = 40; int boxY = 515; int boxWidth = 270; int boxHeight = 40; int columnPos2_X = 310; // >>>>>> grabTweets Timer settings >>>>>>>>>>> float grabTime = millis(); float timeNow = millis(); String stamp = year()+"-"+month()+"-"+day()+"-"+hour()+"-"+minute();// <<<<<< Set up GUI interface-building library (ControlP5) // >>>>>> GUI library and settings import controlP5.*; // import the GUI library ControlP5 cp5; // creates a controller (I think!) ControlFont font; controlP5.Button b; controlP5.Textfield tf; controlP5.Textlabel lb; // <<<<<<< Set up text-to-speech library (GURU) // >>>>>>> import GURU text-to-speech library import guru.ttslib.*; // NB this also needs to be loaded (available from http://www.local-guru.net/projects/lib/ttslib-0.3.zip) TTS tts; // create an instance called 'tts' // <<<<<<< // >>>>>>> import standard processing Serial library import processing.serial.*; Serial port; // create an instance called 'port' // <<<<<<< // >>>>>> needed to stop Twitter overpolling from within sendTweet float tweetTimer = 5000; // wait period (in milliseconds) after sending a tweet, before you can send the next one float timerT=millis(); // temporary timer for sendTweet float delayCheck; //delayCheck; // THIS IS IMPORTANT. it i what stops overpollin g of the Twitter API // <<<<<< End of main initialisation Main SETUP() function... void setup() { tts = new TTS(); // create text to speech instance tts.speak(adminSettings[8]);// preloaded, not web println (" adminSettings 1 " + adminSettings); // @@ DEBUG STUFF for (int i = 0 ; i < adminSettings.length; i++) { println("adminSettings["+i+"]= "+adminSettings[i]); // @@ DEBUG STUFF } updateDisplayVariables(); try { loadRemoteAdminSettings(); // loads Twitter search parameters from remote Google spreadsheet println ("adminSettings 2 "+adminSettings); tts.speak("I am connected to the web. Master.Your commands have been loaded into my brain"); // @@ DEBUG STUFF - SPOKEN OUT. ONLY WORKS IF CONNECTION WORKS } catch (Exception e) { tts.speak("I am sorry. I am not able to connect to the web. Your commands have not been loaded into my brain master"); // @@ DEBUG STUFF } loadRemoteStopWords();// load list of stop words into an array, loaded from a remote spreadsheet // >>>>>>> screen size and settings.... size(screen.width-border, screen.height-border);// USE THIS SETTING FOR EXPORTED APPLICATION IN FULLSCREEN (PRESENT) MODE background(0); // SET BACKGROUND TO BLACK // <<<<<<< // >>>>> Make initial serial port connection handshake println(Serial.list());// // @@ DEBUG STUFF - display communication ports (use this in test for available ports) try { port = new Serial(this, Serial.list()[0], 115200); // OPEN PORT TO ARDUINO } catch (ArrayIndexOutOfBoundsException ae) { // if errors println ("-------------------------"); println ("STOP - No PORT CONNECTION"); println ("Exception = "+ae); // print it println ("-------------------------"); println ("-------------------------"); } // <<<<<<< buildAdminPanel(); smooth(); grabTweets(); // Now call tweeting action functions... println ("finished grabbing tweets"); println (); println (); } // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of setup() <<<<<<<<<<<<<<<<<<<<<<<<<< Main LOOP() function void draw() { int panelTop= height-panelHeight; buttonCheck("HELLO"); // on screen check button every loop timeNow=millis(); try { println (); if ((timeNow-grabTime)>float(adminSettings[4])) { grabTweets(); } // >>>>>> Draw a faint black rectangle over what is currently on the stage so it fades over time. fill(0, 30); // change the latter number to make the fade deeper (from 1 to 20 is good) rect(0, 0, width, height-panelHeight); // <<<<<< // >>>>>>> WORDS // Draw a word from the list of words that we've built int i = (int (random (words.size()))); String word = words.get(i); println ("word = "+word+" #"+i); // <<<<<<< // >>>>>>> HASHTAGS //Draw a hashtag from the list of words that we've built int j = (int (random (hashtags.size()))); String hashtag = hashtags.get(j); // <<<<<<< // >>>>>> USERNAMES //Draw a username from the list of words that we've built int k = (int (random (usernames.size()))); String username = usernames.get(k); // <<<<<< // >>>>>> URLS //Draw a url from the list of words that we've built int l = (int (random (urls.size()))); String url = urls.get(l); // <<<<<< //------------- // >>>>> Put url somewhere random on the stage, with a random size and colour fill(255, 255, 0, 255); textSize(random(30, 40)); text(url, random(width)-widthRandomiser, random(panelTop)); // // <<< SEND URL TO THE SCREEN // >>> SENDs HASHTAG TO THE SCREEN WITH DIFFERENT SIZE fill(255, 0, 0, 255); textSize(random(40, 45)); text("#"+hashtag, random(width)-widthRandomiser, random (panelTop)); // <<< END SEND HASHTAG# // >>>SEND WORD TO SCREEN ALSO WITH DIFFERENT SETTINGS textSize(random(45, 60)); fill(255, 255); text(word, random(width)-widthRandomiser, random (panelTop)); // <<< END SEND WORD // >>> SEND USERNAME TO SCREEN fill(0, 255, 22, 255); textSize(random(35, 45)); text("@"+username, random(width)-widthRandomiser, random (panelTop)); // <<< END SEND USERNAME // -------------- // following is for text boxes background. tfUserCurrent=tf.getText() ; //check the text box content every loop println ("tfUserCurrent= "+tfUserCurrent); // @@ DEBUG STUFF } catch (Exception e) { } finally { println ("inside DRAW()"); } checkSerial() ; // check serial port every loop } Function SENDTWEET() - sends tweets! // >>>>>>>>>>>>>>>>>>>>>>>> SEND THAT TWEET >>>>>>>>>>>>>>> void sendTweet (String tweetText) { if ((tfUserCurrent.equals(""))!=true) { // THE BOX CAN'T BE EMPTY updateDisplayVariables(); //@@@ timerT=millis(); // reset the timer each time if (timerT-delayCheck>=tweetTimer) // this is needed to prevent sending multiple times rapidly to Twitter // which will be frowned upon! { delayCheck=millis(); // RESET A TIMER println("tweet being sent"); // @@ DEBUG STUFF println("tfUserCurrent = "+ tfUserCurrent); // @@ DEBUG STUFF tweetTextIntro = readingSettingText; // INITIALISE THE INTRO TEXT VARIABLE... readFortune(tweetText); tts.speak(fortuneSpoken); println("tweet Send actions complete over"); // @@ DEBUG STUFF println(); //@@@ ConfigurationBuilder cb2 = new ConfigurationBuilder(); // ------- NB - the variables twitOAuthConsumerKey, are in a seperate tab cb2.setOAuthConsumerKey(twitOAuthConsumerKey); cb2.setOAuthConsumerSecret(twitOAuthConsumerSecret); cb2.setOAuthAccessToken(twitOAuthAccessToken); cb2.setOAuthAccessTokenSecret(twitOAuthAccessTokenSecret); Twitter twitter2 = new TwitterFactory(cb2.build()).getInstance(); try { Status status = twitter2.updateStatus(fortune); println("Successfully tweeted the message: "+fortune + " to user: [@" + status.getText() + "]."); // @@ DEBUG STUFF delayCheck=millis(); } catch(TwitterException e) { println("Send tweet: " + e + " Status code: " + e.getStatusCode()); } // end try ; } } else { tts.speak("You have not entered your Twitter user nayme. Sorry. I cannot reed your fortune. without this") ; // THE BOX WAS EMPTY } } // <<<<<<<<<<<<<<<<<<<<<<<<< END SEND TWEETS <<<<<<<<<<<<<<< Function GRABTWEETS() - this is the main harvesting function // >>>>>>>>>>>>>>>>>>>>>>>>> GRAB THOSE TWEETS >>>>>>>>>>>>> void grabTweets() { color cl3 = color(70, 130, 180); fill (cl3); rect(0, (height/2)-120, width, 90); fill(0, 25, 89, 255); textSize(70); text("Reading the collective mind...", (width/8)-120, (height/2)-50); // THE ALERT FOR UPDATE CHECKING PAUSE loadRemoteAdminSettings(); // GET THE LATEST ADMIN FROM GOOGLE SPREADSHEET //Credentials ConfigurationBuilder cbTest = new ConfigurationBuilder(); // ------- NB - the variables twitOAuthConsumerKey, etc. ARE IN A SEPARATE SHEET cbTest.setOAuthConsumerKey(twitOAuthConsumerKey); cbTest.setOAuthConsumerSecret(twitOAuthConsumerSecret); cbTest.setOAuthAccessToken(twitOAuthAccessToken); cbTest.setOAuthAccessTokenSecret(twitOAuthAccessTokenSecret); Twitter twitterTest = new TwitterFactory(cbTest.build()).getInstance(); try { // TRY ALLOWS ERROR HANDLING FOR EXCEPTIONS... Query query = new Query(queryString); // this is default you check the first of 4 admin settings, but should be extended to include passing a selctor param query.count(int(adminSettings[3])); // count is the number of tweets returned per page QueryResult result = twitterTest.search(query); // gets the query int ll=1; // @@ DEBUG STUFF for (Status status : result.getTweets()) { // EXTRACT THE TWEETS String user = status.getUser().getScreenName();// GET THE TWITTER USERNAME usernames.add(user); // ADD TO THE ARRAYLIST FOR USERNAMES String msg = status.getText(); // EXTRACT THE TWEET TEXT println ("tweet #"+ll); // @@ DEBUG STUFF println("@" + user); // @@ DEBUG STUFF println("Text of tweet=" + status.getText()); // @@ DEBUG STUFF println ("-----------"); ll++; // @@ DEBUG STUFF (INCREMENT) //Break the tweet into words String[] input = msg.split(" "); // BREAK DOWN THE TWEET USING SPACES AS A DELIMITER for (int j = 0; j < input.length; j++) { cleanTweets.add(input[j]); // CLEANTWEETS IS A STORE FOR TWEET WORDS WITH STOP WORDS REMOVED for (int ii = 0 ; ii < stopWords.size(); ii++) { if (stopWords.get(ii).equals(input[j])) { cleanTweets.remove(input[j]); // THIS WORD IS A STOP WORD - REMOVE IT! println("Word removed due to matched stopword: "+input[j]); // @@ DEBUG STUFF } // end if } //end for (ii++) //stopword c }// end clean this msg }// end of all tweet cleaning println ("cleanTweets = "+cleanTweets); for (int k = 0; k < cleanTweets.size(); k++) { if ((cleanTweets.get(k).equals(queryString))!= true) { println ("(cleanTweets.get(k) <"+cleanTweets.get(k)+".equals(queryString))"+queryString+"!= true"); words.add(cleanTweets.get(k)); if (words.size() >int(adminSettings[6])) { words.remove(0); } // keeps aray to a finite length by dropping off first element as new one is added // >>>>>> make the list of hashtags String hashtag= cleanTweets.get(k); String hashtagArray[] = hashtag.split("#"); if (hashtagArray.length>1) { //println ("inside checker"); hashtags.add(hashtagArray[1]); int v=words.size()-1; words.remove(v); if (queryType.equals("hashtag")) { if (hashtagArray[1].equals("#"+queryString)) { hashtags.remove(hashtagArray[1]); } else if (hashtags.size() >int(adminSettings[6])/10) { hashtags.remove(0); } // keeps aray to a finite length by dropping off first element as new one is added } println ("hashtagArray["+k+"]= "+hashtagArray[1]); } // <<<<<<< // >>>>>>> set up list of usernames String username= cleanTweets.get(k); String usernameArray[] = username.split("@"); // println ("usernameArray = "); //println (usernameArray); if (usernameArray.length>1) { int vv=words.size()-1; // takes out the username by removing last entry in words() words.remove(vv);// // println ("usernameArray["+j+"]= "+usernameArray[1]); } if (usernames.size() >int(adminSettings[6])/6) { usernames.remove(0); } // keeps aray to a finite length by dropping off first element as new one is added // <<<<<<<< // >>>>>>>> set up urls >>>>>> String url = cleanTweets.get(k); String urlArray[] = url.split("h"); if (urlArray.length>1) { String urlArray2[] = urlArray[1].split("t"); if (urlArray2.length>2) { urls.add(url); int vvv=words.size()-1; words.remove(vvv); } else if (urls.size() >int(adminSettings[6])/6) { urls.remove(0); } // keeps aray to a finite length by dropping off first element as new one is added // <<<<<<<<<< end // >>>>>>>>>> } }; } println ("WORDS.SIZE () = "+words.size()); println ("words = "+words); println ("@@@@@@@@@@@@@@@@@@@@@@@"); // >>>>>>> create text log file of words from pyschic scanning >>>>>>>>> for (int p =0;p { uberWords = append (uberWords, words.get(p).toString()); } uberWords = append (uberWords, "WORDS UPDATE REFRESH COMPLETED"); uberWords = append (uberWords, " "); saveStrings ("words-"+stamp+".txt", uberWords); // <<<<<< end word text log file // >>>>>> create log file of users for (int jj =0;jj { uberUsers = append (uberUsers, "@"+usernames.get(jj).toString()); } saveStrings ("users-"+stamp+".txt", uberUsers); // <<<<<<<<< end user text log file // >>>>>> create log file of hashtags for (int jj =0;jj { uberHashtags = append (uberHashtags, "#"+hashtags.get(jj).toString()); } saveStrings ("hashtags-"+stamp+".txt", uberHashtags); // <<<<<<<<< end hashtag text log file // >>>>>> create log file of urls for (int jj =0;jj { uberUrls = append (uberUrls, urls.get(jj).toString()); } saveStrings ("urls-"+stamp+".txt", uberUrls); // <<<<<<<<< end url text log file } //end try ?? catch(TwitterException e) { println("TEST query tweet: " + e + " Status code: " + e.getStatusCode()); } // end try/catch grabTime=millis(); // reset grabTime if (loadSettingsFirstLoadFlag==true) { loadSettingsFirstLoadFlag =false; // //this is the line that will cause subsequqnt updates to remove the first word(0) } cleanTweets.clear(); tweetster.clear(); } // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end grabTweets() <<<<<<<< Function BUTTONCHECK() - checking for interaction void buttonCheck(String tweetTextIntro) { if (b.isPressed()) { println("button being pressed"); sendTweet ("digital (onscreen) Button MOUSE"); b.setWidth(50); // action for onscreen button press } } // <<<<<<<<<<<<<<<<<<<<<<< end of BUTTONCHECK // >>>>>>>>>>>>>>> check the open serial port >>>>>>>>>> Function CHECKSERIAL() - checks for data from Arduino void checkSerial() { println (); //println ("inside checkSerial()"); try { // >>>>>> see if the port is sending you stuff while (port.available () > 0) { String inByte = port.readString(); println ("Safe from OUSIDE IF . inByte = "+inByte); int w=int(random(150)); b.setWidth(w); println (); port.clear(); sendTweet ("physical Button"); } } // end try catch (Exception e) { println ("Check serial exception = "+e); } } // <<<<<<<<<<<<<<<<<<<<< end checkSerial <<<<<<<<<<<<<<<<<<<<< // >>>>>>>>>>>>>>>>>>> load remote admin settings >>>>>>>>>>>>>> Function LOADREMOTESETTINGS() - pulls control data from Google spreadsheetsdata void loadRemoteAdminSettings () { try { String checkRandomSpeech = adminSettings[8]; adminSettings = loadStrings("https://docs.google.com/spreadsheet/pub?key=0AgTXh43j7oFVdFNOcGtMaXZnS3IwdTJacllUT1hLQUE&output=txt"); if ((checkRandomSpeech.equals(adminSettings[8]))!=true) { tts.speak(adminSettings[8]); } for (int i = 0 ; i < adminSettings.length; i++) { println("adminSettings["+i+"]= "+adminSettings[i]); } // end for if (adminSettings[5].equals("h")) { println ("use hashtag for search"); queryString = adminSettings[0]; queryType = "hashtag"; } if (adminSettings[5].equals("u")) { println ("use username phrase for search"); queryString = adminSettings[1]; queryType = "username"; } if (adminSettings[5].equals("s")) { println ("use search term for search"); queryString = adminSettings[2]; queryType = "search term"; } updateDisplayVariables(); // now load load fortune fragments String frag1 []= loadStrings ("https://docs.google.com/spreadsheet/pub?key=0AgTXh43j7oFVdDQ3cUZ5Y2RMTm9RSXNrdElZTjN5R1E&output=txt"); for (int ff1=0; ff1 { fortFrags1.add(frag1[ff1]); println ("Fortune Frag1 = "+fortFrags1.get(ff1)); } String frag2 []= loadStrings ("https://docs.google.com/spreadsheet/pub?key=0AgTXh43j7oFVdGFQLTFhMUVqTTlkTjlRVUN4c3JtOGc&output=txt"); for (int ff2=0; ff2 { fortFrags2.add(frag2[ff2]); println ("Fortune Frag2 = "+frag2[ff2]); println ("Fortune Frag1 = "+fortFrags2.get(ff2)); } String frag3 []= loadStrings ("https://docs.google.com/spreadsheet/pub?key=0AgTXh43j7oFVdFE0Qm1yYmhyYWJETVJsSHJIOGFMQ3c&output=txt"); for (int ff3=0; ff3 { fortFrags3.add(frag3[ff3]); println ("Fortune Frag3 = "+frag3[ff3]); } String frag4 []= loadStrings ("https://docs.google.com/spreadsheet/pub?key=0AgTXh43j7oFVdG9KTnhLS2Zvbk5HNXp2RmRpeUZtTUE&output=txt"); for (int ff4=0; ff4 { fortFrags4.add(frag4[ff4]); println ("Fortune Frag4 = "+frag4[ff4]); } // end if } catch (Exception e) { println ("no CONNECTION"); } } // >>>> LOADREMOTESTOPWORDS() - imports the stopword filter list void loadRemoteStopWords () { try { String stopWordsLoader [] = loadStrings("https://docs.google.com/spreadsheet/pub?key=0AgTXh43j7oFVdFByYk41am9jRnRkeU9LWnhjZFJTOEE&output=txt"); if (loadstopWordsCheckInt==true) { for (int i = 0 ; i < stopWordsLoader.length; i++) { //stop stopWords.add(stopWordsLoader[i]); println("stopWords["+i+"]= "+stopWords.get(i)+". Length now: "+stopWords.size()); } loadstopWordsCheckInt=false; } } catch (Exception e) { println("jjjjjjjjjjjjj"); } } Function KEYRELEASED() - makes keyboard "enter/return" press fire tweet (testing only) void keyReleased() { if (key==TAB) { println ("Tab key released"); //tfToggleFocus(valFocus); } else if ((key==ENTER )|(key == RETURN)) { sendTweet("pressed return"); } } Function TFTOGGLEFOCUS - Ignore this. used for testing void tfToggleFocus (int val) { /*if (val==0) { tf.setFocus(true); tf.setColorBackground(focusBackgroundColor); tf.setColor(focusColor); valFocus=1; } else if (val==1) { tf.setFocus(false); tf.setColorBackground(focusOffBackgroundColor); tf.setColor(focusOffColor); valFocus=0; }*/ tf.setFocus(true); tf.setColorBackground(focusBackgroundColor); tf.setColor(focusColor); } Function UPDATEDISPLAYVARIABLES() - updates variables with admin settings... void updateDisplayVariables() { // Reading the mind queryString String currentHashtag = adminSettings [0]; String displayHashtag = "hashtag = "+adminSettings [0]+" "; if (adminSettings[0]=="") { displayHashtag=""; } String currentUserName = adminSettings [1]; String displayUserName = "@username = "+adminSettings [1]+" "; if (adminSettings[1]=="") { displayUserName=""; } String currentSearchTerms = adminSettings [2]; String displaySearchTerms = "search = "+adminSettings [2]; if (adminSettings[2]=="") { displayUserName=""; } readingSettingText = "Reading the hive mind for "+queryType+"= "+ queryString; color cl = color(70, 30, 180);// not in use color cl2 = color(70, 230, 180);//not in use fill (clPanel); //rect(30, boxY+15, width, 105); fill(0, 0, 0, 255); textSize(40); //text(readingSettingText, 10, boxY+40); //rect(0, boxY+13, width, 1); textSize(40); text("@", 2, boxY+33); fill (clPanel); rect(columnPos2_X, boxY-10, width, 50); fill(0, 0, 0, 255); textSize(35); //text(adminSettings[7], columnPos2_X+30, boxY-25); text(" //displayHashtag+displayUserName+displaySearchTerms; } Function BUILDADMINPANEL() - create the form interface void buildAdminPanel() { int panelTop = height-panelHeight; fill (clPanel); rect(0, panelTop, width, panelHeight); // >>>>>>> set up fonts //PFont font = createFont("arial",20); font = new ControlFont(createFont("arial", 100), 40); // <<<<<<< // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> set up GUI elements >>>>>>>>>>>>>>>>>>>> noStroke(); cp5 = new ControlP5(this); // adds in a control instance to add buttons and text field to noStroke(); tf = cp5.addTextfield(""); tf.setPosition(border, boxY); tf.setSize(boxWidth, boxHeight); tf.setColorBackground(focusBackgroundColor); tf.setColor(focusColor); tf.setFont(font); tf.setFocus(true); //tf.setAutoClear(true); tf.captionLabel().setControlFont(font); // @@@ // create a new button with name 'Tell my Fortune' b = cp5.addButton("but", 20, 100, 50, 80, 20); b.setId(2); // id to target this element b.setWidth(250); // width b.setHeight(25); b.setPosition(border, boxY+100); b.captionLabel().setControlFont(font); b.captionLabel().style().marginLeft = 1; b.captionLabel().style().marginTop = 1; b.setVisible(true); b.isOn(); b.setColorBackground(focusOffBackgroundColor); // @@@ // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of GUI <<<<<<<<<< // >>>>>>>> } Function READFORTUNE() - The biggie - this concocts the fortunes... void readFortune (String tweetText) { int picW1 = int(random (words.size())); String fortuneWord1= words.get(picW1); int picW2 = int(random (words.size())); String fortuneWord2= words.get(picW2); int hash = int(random (hashtags.size())); String fortuneHash= hashtags.get(hash); int urler = int(random (urls.size())); String fortuneUrl= urls.get(urler); int userer = int(random (usernames.size())); String fortuneUser = usernames.get(userer); int frag1Int =int (random (fortFrags1.size())); String fraglet1 = fortFrags1.get(frag1Int); int frag2Int =int (random (fortFrags2.size())); String fraglet2 = fortFrags2.get(frag2Int); int frag3Int =int (random (fortFrags3.size())); String fraglet3 = fortFrags3.get(frag3Int); int frag4Int =int (random (fortFrags4.size())); String fraglet4 = fortFrags4.get(frag4Int); fortune = "Psychic summary for @"+tfUserCurrent + ". for: #"+queryString+". "+ fortuneWord1+", "+ fortuneWord2+", #"+fortuneHash+ ", @"+fortuneUser+", "+fortuneUrl+". Enjoy/RT"; println ("just before fortune spoken"); fortuneSpoken = "Hello. "+tfUserCurrent+". "+adminSettings[7]+ ". "+fortuneGreeting +". Here. you are. Your Psychic Hive Mind. Fortune. based on reading .the collective mind of. "+queryString+". is. "+fraglet1+". "+ fortuneWord1+". "+ fraglet2+". "+fortuneWord2+". "+fraglet3+". hashtag."+fortuneHash+ ". "+fraglet4+". Twitter user."+fortuneUser+". Thank you. I have tweeted a psychic summary of this reading to your twitter account. Moove along now. " ; println ("fortuneSpoken= "+fortuneSpoken); } Step 12: The Psychic Fortune Teller reading and its tweet summary - test example This is recording of a pre-conference test fortune reading. It gives a pretty good idead of what the Psychic Fortune Teller readings sound like. It a test of the randomising fortune teller logic of the Psychic Hive-Mind Fortune Teller automaton. This was ecorded in early May 2013, just prior to taking to MuseumNext in Amsterdam, a European museum technology conference ( museumnext.org ) The psychic mind-reading is being generated from a search of the live twitter data with an API call for search term "museumnext" http://search.twitter.com/search.json?q=%23museumnext The subtitles show what it is speaking. The words in red are being harvested from Tweets in real time. The rest of the words, shown in black, are pre-scripted, but randomised text from the logic engine. The full text of the tweet is: " Hello rosemarybeetle. I hope you are very well and thank you for stopping by. I have stared deep into the hive mind. Here you are. Your psychic hive mind fortune, based on reading the collective mind of museumnext is: It could be that city and no's . There perhaps are #amsterdam . Find out more about the work done by twitter user @javiercelaya Danke. I have tweeted a psychic summary of this reading to you twitter account. Move along now " This spoken fortune includes two random terms ( city and Nos) a hashtag ( #amsterdam ) and a user name @javiercelaya The psychic brain is actually a Twitter app. The account used to register the Twitter app (Rosemarybeetle Labs) also sends a tweet summary with the two random terms, hashtag and username, but also a random URL from the discussion. Although they tweet well, URLs are not included in the full spoken fortune reading, because generally URLs are unintelligible when spoken by text-to-speech engines! The URL it picked at random was an Arts and Health South West website news item. Rather superbly this was about research into participation in museums and the arts and the findings that "visiting museums is positively associated with higher levels of happiness” This is a lovely example the psychic Fortune Teller demonstrating the the power of social discovery, that randomised connections make (if in a rather weird way!!)Step 13: Further information, references, credits, etc. Acknowledgments As ever, this is built on the open shared skills of others - respect! Twitter4j - Processing library for connecting to Twitter Yusuke Yamamoto (and others I believe?) Twitter4j is a java library that does the connection and transaction handling between Processing and Twitter. This is what enables simple connection to harvest the tweet content, and to send tweets, both from withing the Processign brain. EINDRUCKSVOLL. github.com/yusuke/twitter4j/network GURU - text-to-speech library for Processing Nikolaus Gradwohl The GURU text to speech library for Processing, is a key bit of code. It is what allows the Psychic Fortune Teller to talk to you. www.local-guru.net/blog/pages/ttslib ControlP5 - interface-building library for Processing Andreas Schlegel ControlP5 is a Processing library used to handle creation and control of user interfaces in the Processing draw() window. It's used for the twitter username entry box www.sojamo.de/libraries/controlP5/ Visualisation - Processing sketch for graphically display text list files JER THORP The visualisation of words on screen is based on an example sketch by Jer. blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter Keyboard hacking RANDY SARAFAN (Randolfo) The keyboard hacking started by reading this explanation of how he hacked open a keyboard to use the keys as inputs - super clear Instructable. instructables.com/id/Hacking-a-USB-Keyboard/ MuseumNext Conference appearance Thanks to JIM RICHARDSON and JASPER VISSER for agreeing to see what could be hacked together as an exhibition piece for the MuseumNext conference. The Psychic Fortune Teller debuted there in Amsterdam in May 2013. museumnext.org/ More information on my Making Weird Stuff blog Much of this Instructable first appeared on my blog Making Weird Stuff as it was being developed. There is some extra stuff not included here too... Tag cloud of data terms used This post shows a breakdown of terms used at the conference MuseumNext 2013. makingweirdstuff.blogspot.co.uk/2013/05/what-psychic-fortune-teller-read-from.html Original concept idea in a post in March 2013 This post is amusing to see how far the concept developed. More detailed post on text-to-speech using guru library and Google spreadsheet A more detailed post on this. Previous Instructables Twitr_janus Twitr_janus is a previous project from which some of the Psychic Fortune Teller tech was developed. It is a web-controlled data-driven puppet. instructables.com/id/How-to-make-a-remote-control-sentient-web-puppet-b/

          6 Schritt:Schritt 1: Die Projektionsrahmen Schritt 2: Einstellung des Projektors Schritt 3: Der Vorsprung Schritt 4: Feststellung der Bewegung Schritt 5: Finden Sie Dinge, die Menschen zu lieben Schritt 6: Das Ergebnis

          Seit Valentinstag naht, dachte ich, das wäre eine angemessene Projekt über :-) schreiben Das Projekt wurde beabsichtigt, "etwas tun" mit den leeren Fenstern im Erdgeschoss im Gebäude waren Ich habe mein Studio. Das Endergebnis ist eine Projektion auf kleine Stücke von Transparentpapier ("paper Pixel"), die eine Herzform zeigt. Das Herzform verwandelt sich in Worten, wenn jemand vor dem Fenster (unter Verwendung eines Kinect erkannt) stehen. Es zeigt dann Dinge, die Menschen lieben: ein Programm, schabt Twitter für Nachrichten von der Form "Ich liebe ... '. Von diesen Nachrichten die Bedingungen, zu den Punkten (Katzen, Wochenenden, Bermuda, etc.) werden in einem Herzen shape.Step 1 analysiert und in Passform: Das Projektionsrahmen Ich wollte die Leinwand als sehr transparent und leicht, wie es in der Luft schwebt. Dafür baute ich einen Holzrahmen gespannt und transparenten Nylonfaden zwischen beiden Seiten horizontal. Hängenden Gewichte auf beiden Seiten des Fadens hält, verhindert, dass sie eine Lichtbogenbildung nach unten. Ich schneide Stücke von Transparentpapier (auf Niederländisch: "kalkpapier ', konnte ich die richtige Übersetzung in Englisch nicht gefunden), und faltete sie rund um die Nylonfäden, was zu einem Raster von" Pixel "hängt in der air.Step 2: Einstellung up des Projektors Ich wollte der Vorsprung so nah an dem Fenster wie möglich zu sein. Daher sind die Papier Pixel von hinten beleuchtet, so dass kein Raum ist vor der Projektionsrahmen erforderlich. Ich habe einen Projektor auf den Boden und verwendet einen Spiegel, der die Projektion auf der Projektionsfläche reflektiert. Der Projektor ist ein BenQ von etwa € 300. Für meine Installation keine hohe Auflösung noch hohe Leuchtkraft benötigt wurde (es sei denn, Sie wollen die Projektion in hellen Tageslicht sichtbar sein). Wie ein Spiegel Ich habe eine Plexiglas Acrylspiegel von 40cmx40cm. Der Vorteil dieses Materials im Vergleich zu Glas das Gewicht: es ist viel leichter, was praktisch ist, wenn die Installation muss woanders hin transportiert werden. Darüber hinaus ist die kleine Bauform, die den Spiegel in den richtigen Winkel hält gehalten werden konnte Licht und simple.Step 3: Das Projektions Projektion eines Bildes über den Spiegel auf den Zettel in Verformung führen. Dies wird durch den Spiegel selbst verursacht wird, durch die Tatsache, daß die Papierstücke nicht in perfekter Ausrichtung, und durch die Tatsache, daß einige der Blätter Papier kräuseln ein wenig. Daher muss das projizierte Bild in der Weise, dass die resultierende Projektion gleich dem Originalbild verformt werden. Ich schrieb ein einfaches Werkzeug, das Rechtecke auf dem Papier Pixel projiziert. Die Software erlaubt die Ecken jedes Rechtecks ​​mit den Ecken der Stücke von Papier ausgerichtet werden (dies wird von Hand durchgeführt und ist sehr mühsam: für jedes Pixel jeder der vier Ecken angepasst werden müssen). Das Video auf der Seite Einführung zeigt diesen Vorgang. Sobald die Verformung für jedes Quadrat bekannt ist, können die Zeichen auf die gleiche Weise verformen, so dass die Zeichen in der Projektions aussehen wie die, die in dem Originalbild. Die Bilder oben zeigen die verformt projizierten Bildes. Wenn projiziert, sind die Quadrate rechteckigen wieder, und die Charaktere aussehen normal.Step 4: Feststellung der Bewegung Zu erkennen, dass eine Person zu Fuß durch den Vorsprung, habe ich die Kinect , ein Motion-Sensing-Gerät. Die Kinect ist in der Lage, eine Tiefe-Bild, das praktisch ist, in dieses Projekt, da ich wollte, die Projektion auf Menschen zu Fuß durch oder stehen vor dem Fenster zu reagieren, aber nicht an den Autos und Motorräder vorbei auf der Straße, ein zu produzieren weiter weg wenig. Mit ein wenig Code (in Bearbeitung) ein den Rahmen aus dem Kinect lesen und herausfiltern, Bewegung in einem Bereich von 0,5 bis 2 Meter Abstand von der Projektion. Wenn etwas vor der Projektion erkannt wird, der Vorsprung sich von einem Herzform, die aus ausgefüllte Quadrate ("Pixel"), zu einer Herzform mit characters.Step 5 gefüllt: Finden Sie Dinge, die Menschen zu lieben Die Worte, die verwendet werden, um die Herzform füllen von Twitter kommen. Unter Verwendung des Twitter-Streaming-API und die Java -Bibliothek Twitter4J Ich schrieb ein Programm, das Tweets aus dem öffentlichen Twitter-Timeline die Worte "Ich liebe" enthält liest. Dies wird jede Minute oder so gemacht. Aus diesen tweets das Wort direkt nach der "Ich liebe" genommen wird, es sei denn, es ist ein "Stopp-Wort" (wie "ein", "eine", "die", etc.). Um die Herzform Ich muss Wörter unterschiedlicher Länge von 2 bis 8 Zeichen zu füllen. Wenn neue Wörter zur Verfügung stehen, werden sie in der Herzform ersetzt, so dass der Vorsprung ständig ändert und nur selten die gleiche words.Step 6: Das Endergebnis Unser Gebäude befindet sich direkt neben einem Museum, so viele Leute weitergeben. Es hat Spaß gemacht und spannend zu sehen, wie die Menschen auf der Installations reagiert. Das nächste Mal muss ich ein Fenster ohne Rahmen, dass Blöcke die Projektion in der Mitte :-)

            10 Schritt:Schritt 1: Wählen Sie einen Vogel-Haus-Design- Schritt 2: Rohstoffe Sammeln Schritt 3: Setzen Sie die Vogel-Haus- Schritt 4: Passen Sie das Vogelhaus für den Raspberry Pi Schritt 5: Bringen Sie die IR-Näherungssensor Schritt 6: Installieren Raspberry PI OS und erforderliche Software Schritt 7: Installieren Sie den Raspberry Pi Kamera Schritt 8: Erstellen Sie einen Twitter Account für Ihre Bird Feeder Schritt 9: Schreiben Sie die Tweeting Vogel-Zufuhr-Programm Schritt 10: zurücklehnen und genießen Sie die Show!

            Dieser Sommer meiner 5 Jahre alten Sohn und ich wollte an einem Projekt, Spaß, Bildungs-, und im Zusammenhang mit der Natur funktionieren würde. Während Sie einen schönen Colorado Sommerabend auf Oma und Opa das Deck beobachten alle Kolibris kämpfen um 6 Punkte auf ihre Kolibrizufuhr, kam es an uns. Wir bauen ein Vogelhäuschen, die Nahaufnahme Bilder der Vögel und bucht sie auf Twitter dauert! Wir hatten unsere Arbeit für uns. Wir überprüfen, was andere auf instructables erstellt haben und fand diesen Beitrag Bild Capturing Bird Feeder. Da wir bereits eine Raspberry Pi und Pi die Kamera wir beschlossen, unsere eigenen Spin auf diese großartige Idee zu nehmen. Diese Instructable wird Ihnen helfen, Ihre ganz eigene tweeting Vogelhäuschen zu bauen, so dass Sie auch die Bilder aus der lokalen Vögel in Ihrem Hals des Waldes zu genießen. Zur Klärung der Mehrdeutigkeit, bedeutet das Vogelhäuschen nicht Twitter / twitər / (Verb) - geben einen Anruf aus wiederholt Licht zitternde Töne. Das Vogelhäuschen fotografiert Gastvögel, während sie essen und Beiträge diese Bilder und einen Vogel bezogene Beschriftung auf den Social-Media-Website Twitter . Schritt 1: Wählen Sie einen Vogel-Haus-Design- Es gibt viele Instructables für den Aufbau einer Vogelhaus. Blättern Sie durch die Voliere Instructables und finden, das Sie wirklich mögen. Bei der Suche nach dem perfekten einem, bedenken Sie diese Richtlinien: Auch wenn wir machen eine tweeting Vogel-Feeder, brauchen wir ein Vogelhaus, die Raspberry Pi und Pi die Kamera von außen Elementen zu schützen. Wählen Sie eines, das Sie ein "Fenster" großen Sichtbereich machen können; ansonsten Ihre Fotos aus dem Inneren der Voliere nicht in der Lage, den gesamten Vogel zu Ihrer Feeder erfassen. Eine, die Sie ändern können, um eine große Plattform zu bauen wählen (mindestens 6 "x 4"), um das Vogelfutter zu halten. Wählen Sie eines, das Sie ein Dach über dem Essen haben, da das Essen nicht in der überdachten Bereich, wo der Raspberry Pi ist erlaubt. Vögel nicht wirklich gerne nass oder verdorbenen Samen. Schritt 2: Rohstoffe Sammeln Montieren Sie alle Ihre Materialien. Montieren Sie alle Materialien für die Voliere Sie ausgewählt haben, im Anschluss an ihre Anweisungen. Raspberry Pi Raspberry Pi Modell B Kamera 4 GB (oder höher) SD-Karte IR Näherungssensor (Ich habe diese ein http://www.adafruit.com/product/164 ) Raspberry Pi Raspberry Pi Netzkabel Fall (jede Fall, dass ein bietet Raum, um die Pi-Kamera Flachbandkabel und 3 Leitungen von der Pi Bord an die IR Näherungssensor ausgeführt) Miniature WiFi USB-Modul (Ich habe diese ein http://www.adafruit.com/products/814 ) Schritt 3: Montieren Sie den Vogel Haus Folgen Sie den Anweisungen auf dem Bird Sie die birdhouse.Step 4 montieren ausgewählt: Passen Sie das Vogelhaus für den Raspberry Pi Nun ist es Zeit, um die Vogelhaus anpassen. Wir werden dies durch Zugabe einer Schale, um das Vogelfutter zu halten, die Schaffung eines großen Fenster, so dass die IR-Näherungssensor kann Vögel zu erfassen und die Kamera kann Bilder in voller Länge zu erfassen, so dass ein Dach oder Unterstand, um den Vogelfutter decken zu tun, und auch schützen die Raspberry Pi aus den Elementen, und machen eine Plattform, um für den Raspberry Pi. Schneiden Sie ein 6 "breit und 4" tief von 0,5 "Hoch Stück Holz für die Plattform. Das Vogelfutter wird auf dieser Plattform platziert werden, so dass Sie eine groß genug, um einen Haufen von Samen passen und auch für Vögel bieten Platz brauchen stehen, um zu essen. Befestigen Sie die Plattform an der Vorderseite der Voliere. Erstellen Sie ein Sichtfenster auf der Vorderseite der Voliere direkt vor der Plattform zentriert ist. Das Sichtfenster sollte 1/4 "über der Plattform und sein 5" beginnen tall durch 5 "breit. Erstellen Sie ein Dach oder Unterschlupf, die über die Plattform erstreckt. Befestigen Sie das Dach oder Unterschlupf zu Ihrem Vogelhäuschen, so dass sie die gesamte Plattform hält die Samen abdeckt. Schneiden Sie ein Stück Holz 2 "von 4" bis 5 ". Dadurch wird eine erhöhte Plattform für den Raspberry Pi und IR-Näherungssensor ist. Befestigen Sie den Raspberry Pi-Plattform in der Voliere mit dem Sichtfenster, 1 zentriert" -2 "ab die vor dem Fenster. Ich legte auch ein Stück Glas über den Betrachtungsbereich um den Raspberry Pi aus Wasser und Tiere, die in der Vogelzufuhr bekommen zu schützen. Denken Sie daran, um die IR-Abstandssensor an der Außenseite des Glases, da legen die IR wird nicht durch Glas zu gehen. Schritt 5: Bringen Sie die IR-Näherungssensor In diesem Schritt werden wir das Sharp IR Näherungssensor zu befestigen. Der Sensor wird mit drei Leitungen: rot, schwarz und weiß. Befestigen Sie das rote Kabel an + 5V (Pin 2) Bringen Sie das schwarze Kabel an Ground (Pin 6) Bringen Sie den weißen Draht an GPIO 4 (Pin 7) Raspberry Pi Version 2 Pinout Foto von PinballSP Schritt 6: Installieren Raspberry PI OS und erforderliche Software Es gibt eine Menge von Tutorials für den Aufbau eines Raspberry Pi auf RaspberryPi.org . Von der Downloads -Seite herunterladen Raspbian. Sie können Ihre Lieblings-Linux-Variante wählen. Ich habe auch eine tweeting gebaut Vogelhäuschen auf Arch Linux. Schreiben Sie das Bild auf der SD-Karte, legen Sie die SD-Karte in den Raspberry Pi und starten es anschließend. Melden Sie sich als Benutzer pi und führen Sie die folgenden Befehle sudo apt-get update sudo apt-get upgrade sudo apt-get install python-setuptools sudo sudo easy_install pip pip installieren twython sudo apt-get install python-dev sudo apt-get install python rpi.gpio Achten Sie darauf, die richtige Version von Python installiert. Ich habe Python 2.7.8. Führen Sie diesen Befehl, um zu sehen, welche Version Sie installiert haben. python2 --version Konfigurieren Sie Ihren Raspberry Pi zu Ihrem WLAN-Netzwerk zu verbinden. Stellen Sie sicher, es schließt sich automatisch das Wireless-Netzwerk bei der Inbetriebnahme. Schritt 7: Installieren Sie den Raspberry Pi Kamera Schalten Sie Ihre Raspberry Pi und ziehen Sie das Netzkabel. Schließen Sie das Flachbandkabel des Kameramoduls an den CSI-Anschluss, der direkt hinter dem Ethernet-Anschluss Schließen Sie das Netzkabel und melden Sie sich nach Ihrer Raspberry Pi bootet öffnen Raspi-config-Werkzeug aus der Klemme sudo Raspi-config Wählen Sie Aktivieren Kamera und drücken Sie Enter Wählen Sie Fertig stellen und starten Sie den Raspberry Pi, wenn sie aufgefordert werden. Sie können eine hilfreiche ansehen Video erstellen Twitter Account für Ihr Vogel-Zufuhr: veranschaulicht, wie Sie die Kamera auf RaspberryPi.org Schritt 8 installieren Erstellen Sie ein neues Konto auf Twitter für Ihr Vogelhäuschen. Nach der Erstellung des neuen Kontos navigieren Sie https://dev.twitter.com/ und melden Sie sich ab dem Pull-Down in der oberen rechten Ecke, wählen Sie My Applications dann auf Neue App Schaltfläche Füllen Sie alle erforderlichen Felder aus. Geben Sie Ihrem neuen Anwendung Lesen & Schreiben Zugriffsebene Berechtigungen das Kontrollkästchen, um Lassen Sie diese Anwendung verwendet werden, um Logge Dich bei Twitter Notieren Sie Ihren API-Schlüssel, API Secret, Zugriffstoken und Access Token Geheimnis. Sie müssen in diesen Werten in die Python-Programm eingeben. Schritt 9: Schreiben Sie die Tweeting Vogel-Zufuhr-Programm In diesem Schritt werden Sie das Schreiben der Python-Programm, das die Magie hinter der tweeting Vogel-Feeder ist. Erstellen Sie ein neues Verzeichnis für unsere Python-Programm mkdir / home / pi / tweeting_birdfeeder cd / home / pi / tweeting_birdfeeder / Erstellen Sie eine neue Datei für das Python-Programm nano birdie-tweet.py die Berechtigungen der Datei ändern chmod 755 birdie-tweet.py Get birdie-tweet.py von https://github.com/reimey/tweeting-bird-feeder oder die Inhalte des Programms in birdie-tweet.py kopieren #! / Usr / bin / env python ################################################## ##################### # # Birdie Tweet # Nimmt ein Bild von einem Vogel, wenn er an der Vogelzufuhr und tweets es um Twitter ist. # # Dieses Programm erfordert python2 und twython # # Autor: Mark Reimer # Datum: 3. August 2014 ################################################## ##################### von twython import Twython von Unterprozess import Anruf Importzeit Importzufalls Import RPi.GPIO als GPIO # Initialisieren GPIO GPIO.setmode (GPIO.BCM) GPIO.setup (04, GPIO.IN) # GPIO4 ist Pin 7 # Twitter Token APP_KEY = '' APP_SECRET = '' ACCESS_TOKEN = '' ACCESS_TOKEN_SECRET = '' # Wie viel Zeit in Sekunden an, bevor der Suche nach einem anderen Vogel schlafen SLEEP_DURATION = 30 # Nachrichten bei Twitter zwitschern zu bedienen Nachrichten = [] messages.append ("Der frühe Vogel fängt den frischen Samen. #birds #birdwatching") messages.append ("Dieser Vogel gerade einen selfie. #birds #birdwatching") messages.append ("Vielen Dank für den Besuch der tweeting Vogel-Feeder. #birds #birdwatching") messages.append ("Ein weiterer glücklicher Vogel serviert. #bird #birds #birdwatching") messages.append ("Wer ihre Federn zerzaust? #bird #birds #birdwatching") messages.append ("Zeig mir deine Birdie. #birds #birdwatching #bird") messages.append ("A #bird am Anleger ist zwei Tweets. #bird #birds #birdwatching") messages.append ("Frei wie ein Vogel. #birdwatching #birds #bird") messages.append ("Intelligenz ohne Ehrgeiz ist ein Vogel ohne Flügel. -Salvador Dali #birdwatching") messages.append ("Ein Vogel sitzt auf einem Baum ist nie Angst der Branche brechen, weil ihr Vertrauen nicht auf dem Ast, aber auf eigene Flügel. -Unknown") messages.append ("Ich denke, wir als zu viel des guten Glücks des Frühbucher und zu wenig das Pech der frühen Wurm. -FDR #birdwatching") messages.append ("Haltet fest an Träume, denn wenn Träume sterben, das Leben ist ein gebrochenes-winged Vogel, der nicht fliegen kann. -Langston Hughes #birds #birdwatching") messages.append ("Der Glaube ist der Vogel, der das Licht sich anfühlt, wenn die Morgendämmerung ist noch dunkel. -Rabindranath Tagore #birdwatching #birds") messages.append ("Ein Fisch kann einen Vogel lieben, aber wo würden sie leben? -Drew Barrymore #birds #birdwatching") messages.append ("Wenn Sie ein Paradiesvogel nicht fangen, besser einen nassen Henne. -Nikita Chruschtschow #bird #birdwatching") messages.append ("Einige Zeitungsartikel sind fit nur um den Boden des Vogelkäfige säumen. #birdwatching #birds #bird") messages.append ("Einige Vögel sollen nicht in Käfigen gehalten werden. Ihre Federn sind einfach zu hell. -Stephen König #birdwatching #birds") messages.append ("Du bist so eitel, werden Sie wahrscheinlich denken, daß diese selfie ist über Sie. #birdwatching #birds") messages.append ("Um die Vögel ist es notwendig, ein Teil des Schweigens zu werden. -Robert Lynd #birdwatching #birds") messages.append ("Er stellt eine notwendige Freude an Dingen, die fliegen müssen, um zu essen. -Wendell Berry #birds #birdwatching #bird") # Warten, Näherungssensor while True: if (GPIO.input (04)): versuchen: # Ein Foto machen. Ich bestieg die Kamera auf den Kopf mit dem Flachbandkabel nach oben entwickelt. So dass ich die Möglichkeit, das Bild vertikal zu spiegeln. rufen ("/ opt / vc / bin / raspistill -e jpg --vflip -w 320 -h 320 100 -q -o /tmp/snapshot.jpg" shell = True) # Logge Dich bei Twitter twitter = Twython (APP_KEY, APP_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) # Stellen Sie eine Status-Update mit einem Bild Foto = open ("/ tmp / snapshot.jpg ',' rb ') r = random.randint (0, len (Nachrichten) -1) message = Nachrichten [r] twitter.update_status_with_media (Status = Nachricht, media = Foto) Ausnahme: print ("Unerwarteter Fehler:") # Schlaf, so dass mehrere Bilder werden nicht von der gleichen Vogel genommen time.sleep (SLEEP_DURATION) sonst: time.sleep (0,25) 5. Speichern Sie die Datei und beenden nano 6. Wenn Sie kopieren, in den Source-Code oben, denken Sie daran, zurück zu gehen und aktualisieren Sie die Laschen oder Abstands seit Python ist streng über spacing.Step 10: zurücklehnen und genießen Sie die Show! Manchmal dauert es eine Weile, für Vögel zu entdecken, und starten Sie einen neuen Vogel-Feeder. Hab einfach Geduld. Sie werden kommen. Neulich habe ich fing diese hungrige Eichhörnchen auf Kamera Essen einige Vogelfutter.

              11 Schritt:Schritt 1: Der Wasserteil. Schritt 2: Arduino + Ethernet-Schild Schritt 3: Schaltpläne Schritt 4: Relaiskarte Schritt 5: Manuelle Steuerung Schritt 6: Connectors Schritt 7: Arduino Sketch Schritt 8: Web-Schnittstelle Schritt 9: Wireless + Scripting Schritt 10: Voila. Schritt 11: Twitter

              [Edit: Ich habe die Hardware-Teil kompakter durch die Verwendung eines Relais Schild. Wenn Sie sich mit 4 Relais oder weniger zu planen, dann schauen Sie hier ...] Dies ist mein erster Beitrag so ... werden brutal! Ich habe einen kleinen Hof mit einem sehr seltsame Form, gut ... L-förmigen wirklich und nicht genug Druck am Wasserhahn in der Lage sein, um es in einem Rutsch Wasser sein. Also musste ich 3 Sprinkler Untersysteme, die nur auf einer eingeschaltet werden kann zu einem Zeitpunkt erstellen. Ich sourced 3 Gardena Ventile aber weigerte sich, für ihre dumpfen "Computer" Husten bis das zusätzliche Geld (nicht sicher, warum sie nennen es ein Computer btw). Außerdem Steuerung der Ventile über einen Browser war der Bär Mindest ich erwarten würde und Gardena diese Funktion leider nicht anbieten. (Mein Freund) DD-WRT erlaubt mir sogar wieder einen alten Router von mir und machte die ganze Sache drahtlose ... Arduino Zeit, sage ich ... Als Bonus am Ende dieser instructable meine Skripte, die auto drehen Sie die Sprinkler ein- und ausschalten, prüfen Sie die Wettervorhersage (so dass ich nicht den Rasen zu wässern, wenn es bald regnen) und melden Sie sich ihre Aktivität auf Twitter eingefügt I . Viel Spaß! Hier sind die Teile, die ich für dieses Projekt verwendet: - Verschiedene Leitungen / Schlauchadapter (von Gardena) - 3 x 24v Bewässerungsventil (von Gardena) - 1 x Arduino Board - 1 x Ethernet-Abschirmung ( www.nuelectoronics.com ) - 1 x Relaiskarte (die ich herumliegen, ein kleineres Board / a Relaisabschirmung - mit mindestens 3 Relais - ausreichend gewesen wäre) - 1 x 220 V -> 24 V AC Transformator (von ebay) - 1 x 10 V DC Adapter (a Recycling-Ladegerät) - 1 x-Router (Buffalo WHR-G125) mit DD-WRT ( http://www.dd-wrt.com ) - 2 x momentaner Druckknopf - 1 x Netzschalter - Ein paar Meter von Ethernet-Kabel. Schritt 1: Der Wasserteil. Die Ventile sind sehr einfach zu bedienen. Sie sind standardmäßig geschlossen und auf magische Weise durch Einschalten ihrer Magnete mit 24V AC geöffnet zu werden. Ich fand dieses Transformators bei eBay für nicht sehr viel. 230V AC -> 24 V AC (habe ich erwähnt, bin ich in Europa?), Das tun wird. Schritt 2: Arduino + Ethernet-Schild Früher habe ich ein Arduino (ATmega328) mit einer Ethernet-Schild aus www.nuelectronics.com. 3 digitale Stifte Steuerung 3 Relais, die die 24-V-AC durchgelassen. A 4. Digitalstift ist für den Boden der Einfachheit halber verwendet, wirklich (der Anschluss, der mit dem Relais Board kam hatte bequem 3 Relais + Boden auf 4 benachbarten Stiften ... wenn das Sinn macht ...). Eine alte Handy-Ladegerät gibt mir 10V DC, die ich an den Arduino durch die Vin + GND-Pins zu bekommen. Schließlich habe ich ein paar Tasten zur manuellen Steuerung. Ich benutze den Analogeingang Trick (verschiedene Widerstandswerte zu unterschiedlichen analogen liest für jede Taste). Am Ende habe ich nur eine von ihnen. Schritt 3: Schaltpläne - Arduino Ethernet Shield. - 3 Relais auf den digitalen Stiften (die tatsächliche Verbindung zu den Relais ist nicht so einfältig, wie dieses Diagramm als ich eine ganze Relaiskarte). - 2 Taster. Schritt 4: Relaiskarte Die Relaiskarte benötigt ein wenig Saft und nicht durch eine 9V-Batterie betrieben werden. Das Netzteil liefert fand ich 10v 05.A und das ist genug. Als Bonus können auch die Befugnisse der Arduino. Ich habe ein Ethernet-Kabel, um die Relaiskarte zu den Ventilen zu verbinden. Aufgrund der großen Nachfrage ist hier ein bisschen mehr auf "Relaiskarten": Ein Relais ist ein mechanischer Schalter, der durch eine Spannung, die nicht mit der typischen Mikrospannung kompatibel lassen können. In meinem Fall musste ich mein Arduino zum Öffnen und Schließen eines Schalters auf meinem 24-V-Wechselstromkreis (die, die die Ventile steuert). Die "Rechnungsseite" eines Relais wird durch einen Transistor, um den Mikrocontroller Stifte verbunden ist, angetrieben. Ich meine arduino Stifte (Boden + 3 Pins) verbunden ist, um den Eingangsanschluss der Platine, die wiederum verbindet mich mit Transistoren. Es stellte sich heraus, dass die Arduino Pins waren nicht stark genug, um die Relaisspulen zu fahren, damit ich ein externes Netzteil mit der Platine verbunden auch. Das Arduino Pins steuern die Transistoren Grundlagen und die Kraft geht durch die Transistoren und die Spulen kommt aus dem optionalen externen Netzteil (sonst kommt aus dem Arduino Stifte selbst). Dies ist ein sehr Standard-Setup und Relaiskarten (auch als Relaismodule bekannt), ob diese eine, zwei oder mehr Relais schlagen, wird immer bieten die folgenden: - Steuerstifte (Boden + 1 Stift pro Relais) zu Ihrem arduino verbinden. - Externe Stromversorgung Stifte (Boden + Vcc) zu, wenn notwendig, verwendet werden. - 3 Anschlüsse pro Relais: Sie die mittlere (Common) und einem der beiden anderen zu verwenden, ob Sie wollen, dass die gesteuerte Schaltung auf Schließer (NO) oder normalerweise geschlossen (NC), wenn das Relais nicht mit Strom versorgt. Ich sourced die 8 Relais-Platine auf ebay (Suche nach 'arduino Relaismodul ", sortiert nach Preis, finden Sie die besten eine, die Ihren Bedürfnissen entspricht, das heißt, die durch genügend Volt & Ampere lassen können - in der Regel sie verschiedene V & A-Kombinationen für AC und DC haben -). Schritt 5: Manuelle Steuerung A * sehr * billig Schaltkasten. Basic-On / Off-Schalter und ein paar Tasten zu einem Analog-Pin des Arduino verbunden. Voila. Ich erkenne jetzt, dass die weißen und schwarzen Kabel sind beide Ground. Könnte das gleiche mit 3 Adern getan haben, na ja ... Schritt 6: Connectors Das Ethernet-Kabel an die Ventile angeschlossen. Schritt 7: Arduino Sketch Ich hackte ein Beispiel Skizze, die mit dem Schild kam. Ich habe arduino 0017 (ziemlich altmodisch, ich weiß ...), so sollte dieser Code mit jemand mit Revision 17 und höher kompatibel sein (sollte eine Menge Leute sein!). Schnell Kommentare: - Der folgende Code schaltet den Pull-up-Widerstand des analogen Eingangs. Eine gute Sache zu wissen. pinMode (analogInPin, INPUT); digital (analogInPin, HIGH); // Auf Pull-up Widerstand schalten - Ich habe einen Scheck über die Größe des Puffers, der die Seite hält, so dass Sie einen Hinweis, dass schlimme Dinge passiert, wenn der Puffer zu klein war, haben. - Die manuelle Taste schaltet durch die Ventile. - Das Web-Interface kann ein- / auszuschalten beliebige Kombination von Ventilen. - Die Ventile werden off automagisch nach 20 Minuten (in Sekunden kann geändert werden, Zeit, 0 deaktiviert die Funktion) eingeschaltet. Schritt 8: Web-Schnittstelle Ich die IP 192.168.74.6 gab meiner Arduino. Zeigt mit dem Browser auf sie sollten Sie etwas wie das Bild oben. Beachten Sie die ausgefallenen Farbgebung. ;-) Schritt 9: Wireless + Scripting Nun, für die Kirsche auf dem Kuchen. 1. W- Wie Sie wahrscheinlich bereits wissen, ist DD-WRT ein Open-Source-Firmware für Router. Es installiert schön auf meinem alten Büffel und ich konnte die Büffel in einen WiFi-Client, der auf meine WiFi-Netzwerk verbunden und dient als Brücke für jedes Gerät physisch in den (ehemaligen) Fräser verstopft drehen. Arduino + ethershield ist da keine Ausnahme und kann nun genutzt werden, um drahtlos ... Google ist dein Freund und die Schlüsselwörter "DD-WRT Wireless Bridge". 2. Skript-Schnittstelle Dies sollte nicht als eine große Überraschung kommen, aber ich werde es trotzdem erwähnen. Die Ventile können über die Befehlszeile mit wget gesteuert werden. Dies ermöglicht es, die für Scripting, Cron-Jobs etc ... Wenn Sie beispielsweise am Ventil # 1 zu drehen, verwenden Sie folgenden Befehl: wget '192.168.74.6/?cmd=2' Schritt 10: Voila. Schritt 11: Twitter Ihr Bewässerungssystem ist nun installiert. Es wird von einem cron-Job auf meinem Home-Server (Linux-Rechner mit Ubuntu) crontrolled. Die Sprinkler sind an einer drehte sich nach dem anderen, 3 mal pro Woche, es sei denn regen wird für den nächsten Tag angekündigt. Jede Aktion wird protokolliert und zu einem Faden twitter gesendet. Hier ist die Magie (in bash): - Crontab.txt: fügen Sie diese Zeilen in die crontab Ihrer Lieblings-Server. - Weather.sh: www.weather.com verbindet. Ändern Sie Ihren Standort ("wo" im Skript). - Twit.sh: sendet ein Trottel. Ändern Sie Ihren Benutzernamen + Passwort - Sprinkler.sh: schaltet Sprinkler auf anf aus, überprüfen Sie die Wettervorhersage und sendet twits.

                38 Schritt:Schritt 1: Konzeptionelle Entwicklung Schritt 2: Flussdiagramm der Interaktion Schritt 3: Einrichten der Raspberry Pi Schritt 4: Sammelt Components Schritt 5: Batterielademechanismus Schritt 6: Elektronik Schaltkreis für die zwei Tasten Schritt 7: Einrichten der Kamera Schritt 8: Kodierung in Pygame Schritt 9: Erstellen Sie das Elektronik-Anker Schritt 10: LASER die Panels Armature Schritt 11: Ankersystem Schritt 12: Lackierung der Außenplatten eine hellgraue Schritt 13: Befestigen der Bodenplatte mit dem Anker Schritt 14: Die Pappe Prototype Panels Schritt 15: Lasercut-Panels Schritt 16: Saubere Kanten auf der Bandschleifmaschine Schritt 17: Lackierung Kanten und TouchUp Schritt 18: Fertige Platten Schritt 19: Kleber Bildschirmhalter Schritt 20: Befestigen Sie Platten Schritt 21: Spackle Touchup Schritt 22: Die Magnete auf Panels Schritt 23: Magnete, um den Anker Schritt 24: Epoxy Magnets Schritt 25: Arm, um den Anker Schritt 26: 3D-Druck der Hände Schritt 27: Tippen Sie auf die Hände Schritt 28: Stellen Sie die Arme abnehmbar Schritt 29: Lackplatten für die Köpfe Schritt 30: Maske und Lasercut-Gesicht Schritt 31: Touchup Stirnkanten Schritt 32: Spray-Farbe Gesicht Schritt 33: Touchup Gesicht Schritt 34: Erstellen Sie den Anker für den Kopf Schritt 35: Befestigen Sie Ankerplatten auf den Kopf Schritt 36: Spackle Kopf Schritt 37: Schlusselektronik Schritt 38: Fertig !!

                SelfiesBot ist ein Twitterbot, die ... Selfies dauert! Die Twitter-Feed für selfiesbot hier . SelfiesBot ist eine Skulptur, die einen Raspberry Pi verwendet, um ein Foto zu machen, in der Vorschau und dann schreiben sie ihre Twitter-Account. Diese Instructable geben Details der Software, Elektronik und physikalischen Aufbau mit SelfiesBot beteiligt. Dies ist mit Abstand das komplexeste Instructable dass ich written.Step 1: Konzeptionelle Entwicklung Wie alle meine Kunstprojekte, verbrachte ich viel Zeit damit, diese ein durch. SelfiesBot ist das Kronjuwel von meinem Bot Collective - eine Reihe von Twitterbots. Jeder Bot hat einen "Körper" (eine skulpturale Shell) und ein "Gehirn" (ein Mikrokontroller, die Tweets sendet), so dass die kollektive eine Reihe von Netzwerkleistung zu Kunstobjekten. SelfiesBot nimmt das Phänomen der "selfie" und legt es in automatisierter Form. Der Bot nimmt ein Bild von sich selbst ... oder doch? Druckknöpfe machen betreiben. Ein Spiegeleffekt stattfindet, wie es aussieht unendlich in die eigene Vorschaumonitor. Ich entdeckte zwei Dinge früh: 1. Die Leute wollen Pose neben SelfiesBot -, so dass die menschliche selfies meme weiter. 2. Ich entdeckte schnell, dass Bilder allein nicht sehr überzeugend. So, ich SelfiesBot geändert, so dass es verbindet jedes Foto mit Zufallstext, die von Twitter abgeschabt, die die #selfies hashtag verwendet Tweets. Die Menschen wissen nicht, was der Text, so SelfiesBot wirkt als eine Art Roulette-Rad von collagierten Bild & text.Step 2: Flussdiagramm der Interaktion Ich teilte das Projekt in drei Phasen: Elektronik Unter Verwendung des GPIO hat SelfiesBot eine Reihe von Schaltflächen, die Sie fotografieren, speichern Sie sie, kannst du sie und löschen lassen. Software Mit Python und die Befehlszeilenumgebung, um SelfiesBot Schnittstellen mit der Elektronik mit einer einfachen Benutzeroberfläche können Sie Bilder aufnehmen, verwalten Sie sie und tweeten sie. Herstellung SelfiesBot ist eine Skulptur, die die Elektronik und Softwarehäuser, sie zu verstecken. Ich baute die Grundlagen der Elektronik und dann die Software. Was war äußerst hilfsbereit war die Schaffung dieser Flussdiagramm, das die Interaktion der Tasten und verschiedene UI-Bildschirme zeigt. Es hätte einfach diesen Schritt überspringen, aber oh, war ich glücklich, vor mir Diagramm, wenn die Codierung der Oberfläche nicht in Python.Step 3: Einrichten des Raspberry Pi Es gibt mehrere Dinge, die wir mit dem Raspberry Pi tun möchten: 1. Grundkonfiguration 2. Installation des GPIO 3. Einen Twitterbot 4. Erstellen Sie Ihre Python-Skript Autostart Glücklicherweise habe ich Instructables für jeden dieser Schritte geschrieben. I Einsatz der Autostart-Code am Ende, da ich wollte, die Software, die in der Shell-Umgebung vor der Verriegelung mich in Autostart erhalten. Ich begann mit den Schritten 1-3. Ich sparte Schritt 4 für ganz am Ende, nach der Prüfung des Zeitpunkts und der Interaktion mit Freunden und colleagues.Step 4: Sammeln Components Ich habe eine fast doppelte Reihe von Komponenten wie die meine Black Box Timelapse - diese Schritte sind in der Nähe zu identisch mit meinem vorherigen Instructable. Hier ist der Komponentenliste: - Raspberry Pi - Kleine TFT-Monitor, die ich bestellt von Adafruit für 45 € . - Wiederaufladbare Batterie 12V - USB-Batterie, die 2A ausgibt. Derzeit verwende ich dieses von Adafruit , das war zuverlässig ist, dachte ein bisschen schwer - Eine 12V Stromversorgung über USB Versorgung. Da muss ich 12V für den Monitor laufen und wollen 3 USB-Anschlüsse (wifi Dongle, USB und Tastatur), und weil die Raspberry Pi läuft nur 2, macht ein Hub Sinn. Plus, es spart Akkulaufzeit für den Raspberry Pi. - Cinch-Stecker-zu-Mann-Koppler - Micro USB für den Betrieb aus, um die Batterie - Perf Pension mit 3-Stufen-Schalter, führt zum Aufladen und GPIO. - GPIO über den Raspberry Cobbler * Dieser 12V-Batterie am Ende hatten Probleme mit dem USB-Ausgang. Ich hatte gehofft, haben eine Batterie laufen die Show, aber die Raspberry Pi landete Spick den Strombedarf, wenn die Kamera ein Bild und dann würde die Batterie einen Spannungsabfall verursachen, wodurch der Raspberry Pi zu rebootStep 5: Batterielademechanismus Der Elektronikteil dieses Instructable ist nicht so gut entwickelt, wie ich möchte. Ich werde auf diese in die Zukunft zu verbessern. Die perf Bord verwendet sowohl eine einfache Ladeschaltung für die 12V-Batterie und zwei Tasten für die Interaktion Kontrolle. Diese Marke der Batterie hat eine die gleiche Ein- und Ausgangsbuchse, so dass ich in Ordnung gebracht einen einfachen Mechanismus, der einen Drei-Stufen-Schalter hat. In der oberen Position, die 12V-Batterie versorgt den Monitor über den Video-Kabel. In der unteren Position, wird es für das Ladegerät aussehen, als Buchse. In der neutralen oder Mittelposition, wird keine Leistung aktiv sein. Ich binde alle Gründe zusammen (Video, Akku, Ladegerät) und der Schalter wird die positive Leitung der Batterie entweder an den Videomonitor, das Ladegerät oder nichts zu verbinden. Der USB-Batterie ist nicht Teil dieser Kreislauf und hat eine Ein / Aus-switch.Step 6: Elektronik Schaltkreis für die zwei Tasten Dies ist eine ziemlich straightfoward Elektronikschaltung. Früher habe ich zwei Tasten und zwei Leuchtdioden um das Menüsystem zu steuern. Diese Komponenten sind in meiner Verwendung des GPIO mit dem Raspberry Pi Instructable abgedeckt, so lesen Sie bitte durch, um herauszufinden, mehr darüber, wie Sie ein einfaches Drucktaste und LED mit dem Raspberry Pi. (Nur für den Fall, das Schaltbild oben) .Schritt 7: Einrichten der Kamera Für die Kamerahalterung, ich 3D-gedruckten dieses Kamerahalter, aus einer früheren Instructable, die ich geschrieben und legte es auf einem kleinen Stativ, die sich um eine der Hände SelfiesBot gewickelt werden kann. Ich würde empfehlen, mit dem PiCamera Python-Modul für die Verwendung der Raspberry Pi. Die Implementierungsdetails sind in meinem SelfiesBot GitHub-Repository - fühlen Sie sich frei, um sie herunterzuladen und mit ihm spielen. Eine Sache, die ich mit Hilfe der entdecken Raspberry Pi-Kamera-Modul ist, dass es zu 250 mA erfolgt der Macht, so ursprünglich I wurde unter Verwendung eines minderwertigen Batterie und wenn der Strom würde Spike würde der Akku seine Leistung an die Raspberry Pi fallen, Erzwingen eines reboot.Step 8: Kodierung in Pygame Einmal hatte ich die ganze Basis-Software auf dem Raspberry Pi installiert, nahm der SelfiesBot Code von einem Tag zu schreiben. Ich habe die Pygame Umwelt als meine Interaktionsmodell, mit meinem Flussdiagramm, um durch die verschiedenen Bildschirme für Tasteneingabe navigieren. Die SelfiesBot GitHub-Repository hat den gesamten Code in es. Entwicklung war mühsam, aber nach meiner Interaktion flowchat war kritisch mit seinen Vorschlägen ein glatter Programmiererfahrung. Die LEDs leuchten nur auf, wenn Sie eine der Tasten gedrückt halten, so dass Sie wissen, dass die Elektronikschaltung ist eigentlich working.Step 9: Erstellen Sie das Elektronik-Anker Alle 9 Artikel anzeigen Das Gehäuse für die Elektronik ist oft der schwierigste Teil aller Elektronik-Projekt - und eine, die in der Regel übersehen wird. Das erste, was ich tat, wurde ein Anker für die gesamte Elektronik eingebaut. Das dauerte ein paar Iterationen, etwas Pappe Prototyping, aber schließlich ich nagelte ihn. Die wesentlichen Bestandteile sind: 1. die Batterien - diese müssen leicht zugänglich sein, so dass sie wieder aufgeladen werden kann. 2. die Raspberry Pi - das ist in dort begraben, aber ich möchte in der Lage sein manchmal ziehen Sie die SD-Karte 3. a 12V USB-Hub, der Befugnisse eine drahtlose Tastatur, die WiFi-Dongle und eine kleine USB-Laufwerk in dem die Bilder gespeichert werden sollen. Der kleine USB-Laufwerk ist auch etwas, was ich will, um Zugang zu haben. 4. Die GPIO und die verschiedenen angebundenen Elektronik kommen durch die Hinter 5. Video-Monitor (wird dieses Ende wird an der Fläche angebracht ist) und kann von dem Rest der Komponenten in dem Anker gelöst werden. 6. Viele Kabel Ich wünschte, ich hätte eine bessere Dokumentation dieser Schritt, da es wichtig war, aber hoffentlich haben Sie die Idee. Ich sichern Sie die Batterien mit Klettverschluss. Alles andere ist in verschiedener Holzblöcke statt. Sie werden ein schönes Foto am Ende der Instructable.Step 10 sehen: LASER die Panels Armature Basierend auf den Abmessungen der Elektronik Anker kam ich mit einem zweiten Anker, der das Exoskelett des SelfiesBot ist. Die Elektronik-Anker liegt eingebettet in diese ein und kann vollständig entfernt werden, um zu arbeiten / fixieren die Elektronik. Wir werden später bringen Sie die Außenplatten auf diese armature.Step 11: Ankersystem Mit Hilfe eines brad Nagelpistole, aneinander befestigt ich die exoskelton Anker. Auch ohne eine Spannvorrichtung, landet es ist ziemlich quadratisch, zumindest gut genug, um das Äußere panels.Step 12 halten: Malen Sie die Außenverkleidungen eine hellgraue Früher habe ich 1/8 "Birke für die Außenflächen SelfiesBot. Ich war viel einfacher, eine große Tafel zu malen als Handmalerei viele kleinere, so malte ich eine graue Farbe, bevor Laser-Schneiden der Platte Stücke habe ich 1 Grundierung und 2 Schichten mit niedrigem VOC Latex-Farbe. Ich habe auch eine Basis für SelfiesBot, das ein 3/8 "Stück Holz ich zuerst diese lasergeschnitten und dann malte dieses zur gleichen Zeit wie die 1/8". Wood.Step 13 war: Bringen Bodenplatte mit dem Anker Ich habe ein paar Brad Nägel richtig tack den Anker an Ort und Stelle. Dann brachte ich die Bodenplatte des eingebauten Anker mit mehreren Schrauben an der bottom.Step 14: Sammel Prototype Panels Alle 7 Artikel anzeigen Ich verbrachte viel Zeit auf dieser Stufe. Die Knöpfe, zwei LEDs, und mehr: Die Rückplatte benötigt, um die Elektronik zu passen. Laser- Karton war schnell und billig, so Stunden Iteration waren-wert it.Step 15: Lasercut-Panels Basierend auf den Karton Prototypen, Lasercut ich die Platten. Da sie vor dem Schneiden gemalt wurden, musste ich sein super-vorsichtig, um die Schnitte right.Step 16 bekommen: Clean Kanten auf der Bandschleifmaschine Die Kanten wurden verbrannt, wie immer mit einem Laser-Cutter. Ich malte diese schließlich weiß, aber ich brauchte, um die Brandflecken zu reduzieren, so dass ich zu reinigen die Ränder mit einem Bandschleifer. Sie können diesen Sand von Hand, wenn Sie nicht über dieses Tool in Ihrem Shop. Schritt 17: Lackierung Kanten und TouchUp Ich malte die Kanten weiß, zuerst setzen auf eine Grundierung. Ich habe auch touchups auf die zusätzliche Brandflecken auf dem grauen. Wie Sie sich vorstellen können, war dieser Schritt sehr viel mehr, als es aussieht. Ich umarmte bald die zen von painting.Step 18: Fertige Platten Nach vielen Stunden, beendete ich die Platten. Sie kamen aus großen Schritt 19: Kleber Bildschirmhalter I lasergeschnittenen eine Halterung für den TFT-Monitor basierend auf Messungen mit einer Schieblehre und verklebt es auf die Platte dann. Ich kann das Videokabel an der Oberseite des Monitors oder an der Seite der Raspberry Pi für die einfache Entfernung zu lösen, so dass der Monitor bleibt immer in der Frontplatte verschachtelt. Der Bildschirm Druck passt sauber in die holder.Step 20: Befestigen Sie Platten Verwenden der Stiftnagler mit einem 5/8 "Nagel, ich methodisch befestigt die linke, Seiten- und Frontplatten mit dem Anker. Die weißen Kanten notwendig, um perfekt ausrichten. Dies erforderte viel patience.Step 21: Spackle Touchup Jetzt hatte ich wenig brad Nagellöcher everwhere. Ein bisschen von Spachtelmasse und TouchUp Farbe leicht behoben this.Step 22: Magnets Panels Die obere und die Rückwände sind abnehmbar mit Magneten. I Laser-geätzten Löcher für die Magnete und Einpressen sie in den Unterseiten dieser beiden panels.Step 23: Magneten, um den Anker Setzt man die Magnete an den Ankern wurde mehr Arbeit. Mit Hilfe eines lasergeschnittenen Führungs und einen Transfer Punsch, bohrte ich Löcher in den Anker, die perfekt zu den Magneten auf der panels.Step 24 auszurichten: Epoxy Magnets Dann habe ich einen Klecks Epoxid, um die Magnete in die armature.Step 25 kleben: Arm, um den Anker SelfiesBot hat riesigen Arme - wie Sie im Bild sehen kann. Ich legte sie mit dieser Schraube Mikrofon Stück, das passende Gewinde hat. Verwendung einer Transfer Punsch, markierte ich die Bohrlöcher bohrte sie aus und dann verschraubt sie durch. Schritt 26: 3D-Druck der Hände Alle 8 Artikel anzeigen Ausgehend von einem rohen Skizze, arbeitete ich mit Autodesk Fusion 360 Experten, Taylor Stein , diese Roboterhände für SelfiesBot entwerfen. Nicht nur sie sehen toll aus - jeden Roboter sollte Klaue Händen haben - aber sie auch als eine Möglichkeit, greifen die flexible Kamerahalterung dienen. Wir haben einige Details zu den Fingern, um ihm eine mechanische Optik und 3D gedruckt Loch für Gewindeschneiden für die Schwanenhals arm.Step 27: Tippen Sie auf die Hände Mit Hilfe eines Gewindeschneidsatz, tippte ich die 3D-gedruckte Hand, um die Schraubengewinde für einen 2-Fuß-Schwanenhals lassen. Der Arm ist die gleiche, wie die Art, wie einem Mikrofonständer. Ich fand das 2 'Langversion bei McMaster-Carr .Schritt 28: Stellen Sie die Arme abnehmbar Der Schwanenhals hat in sehr fest an ihrer Basis eingeschraubt werden, sonst ist es zu frei dreht. Dadurch entstand ein Problem, bei dem unter die Arme ein und aus war schwierig. Die Drehmaschine kam die Rettung! Ich machte einen Koppler mit einer Stellschraube, die für die schnelle Anbringen und Abnehmen des Arms aus dem Körper ermöglicht. Dies hat eine Weile gedauert, aber jetzt ist es sehr bequem, SelfiesBot Arme schnell removable.Step 29 zu machen: Lackplatten für die Köpfe Ich werde durch diese nächsten Schritte sausen, weil sie mehr oder weniger das gleiche Verfahren wie das, was ich für die Karosserieteile haben sind. Ich entwarf 4 verschiedene Köpfe für SelfiesBot. Sie müssen nur die blaue glücklich in den Rest dieses Instructable sehen. Pre-Lackplatten für die Köpfe, bevor Laserschneiden. Noch einmal, ich benutze 1/8 "Birke ply.Step 30: Maske und Lasercut-Gesicht Ich später keuchte der geätzten Bereich des Gesichts, so verwendet grüne Malerband, um die Funktionen, die ich später zu malen maskieren. Der Rest der Felder I ohne Abdeckband geschnitten und diese werden am Ende bildet ein Achteck shape.Step 31: Touchup Stirnkanten Ich reinigte die Kanten mit dem Bandschleifer, dann verwendet, weiße Farbe für die Kanten. Ich tat TouchUp Malerei für die faces.Step 32: Spray paint Gesicht Ich habe eine Grundierung und dann Allzweck Silber Sprühfarbe für das Gesicht Detail. Es dauerte mehrere Mäntel für diese zu arbeiten, da das verbrannte Holz aus dem Laserschnitt weniger als ideal für die paint.Step 33: Touchup Gesicht Nach einem leichten Schleifen, bewarb ich mich TouchUp Farbe auf das Gesicht von SelfiesBot. Schritt 34: Erstellen Sie den Anker für den Kopf Wie mit dem Körper, verwendet das Gesicht eines Ankers, die ich zusammen mit einem brad nailer.Step 35: Befestigen Sie Ankerplatten auf den Kopf Alle 7 Artikel anzeigen Ich sorgfältig befestigt die Platten des Kopfes auf den Anker mit dem Gehirn Nagler. Entscheidend ist es, klare Linien zwischen der Vorderseite des Kopfes (der Fläche) und den benachbarten Platten zu bekommen, denn das ist, was in jedem tweeted Fotografie durch SelfiesBot.Step 36 erscheinen: Spackle Kopf Ich gespachtelt und berührte die Löcher aus dem nailer.Step 37: Schlusselektronik Die Endmontage SelfiesBot gemeint Verpackung die gesamte Elektronik im Körper. Ich hatte kaum genug Platz, um diese fit zu machen, aber es hat am Ende gut funktioniert. Aber barely.Step 38: Fertig !! Das war eine lange Instructable. Wie bei meinem Black Box Timelapse Instructable, verbrachte ich mehr Zeit dokumentieren Fertigung und weniger auf die Elektronik-Montage, als ich haben sollte (das nächste Mal, versprochen). Insgesamt ging das Projekt groß. Fast jeder liebt SelfiesBot. Erfahrungen und Probleme: 1. Das Finden der richtigen Größe Elektronikleitungen war knifflig. Zum Beispiel wollte ich ein 6-Zoll-langen USB-Mikrokabel, aber diese waren fast unmöglich, auf die Spur. 2. Ich habe ein 75 cm langes Kabel für die Kamera (von eBay bestellt). Es ist sehr empfindlich und ich habe nie eine gute Lösung dafür gefunden. Ich habe ein Backup-Kabel, aber es gibt keine wirkliche Zugentlastung für das Kamerakabel. 3. Die Schwanenhals Armen machte es viel weniger tragbar als Ich mag. Ursprünglich hatte ich gehofft, dass SelfiesBot würde in meinem Rucksack passen, aber die Arme sind sperrig für einfachen Transport. An einem gewissen Punkt, würde Ich mag, um den Arm Mechanismus neu zu gestalten, um es einfacher zu bedienen. Ich hoffe, das war nützlich Instructable Sie können SelfiesBot hier folgen: SelfiesBot Und du hast mich (Scott Kildall) finden Sie hier: www.kildall.com/blog kildall

                  9 Schritt:Schritt 1: Was Sie von diesem erhalten kann - die Grundelemente, die Twitr_janus Arbeit zu machen Schritt 2: Mit Verarbeitung auf die Bahn auf Befehle hören (mit vollständigen Code) Schritt 3: Unter Verwendung Arduino physische Aktionen auf der Grundlage der Steuerdaten empfangen werden (mit Code) Schritt 4: Wie Twitr_janus spricht mit Text-to-Speech (in Bearbeitung) Schritt 5: Entwerfen der Puppenkopf Schritt 6: Geben Twitr_janus Sicht und mit einer Webcam Augapfel zu hören Schritt 7: Die vollständige körperliche Elektroniksysteme im Inneren des Kopfes Schritt 8: Mögliche Wege, um auf die Konzepte, die Twitr_janus zeigt bauen Schritt 9: Mehr Informationen, Broschüren und Links

                  Wie man ein physisches Objekt über das Web nur mithilfe gemeinsamer Web-Services und deren zugänglichen Daten-Feeds, mit einigen zusätzlichen Open-Source-Zeug zu entschlüsseln und diese Daten zu manipulieren, und letztendlich auf die Daten zu bewegen und zu steuern physikalische Hardware zu manipulieren. Twitr_janus - ein Prototyp Web gesteuerte Marionette Diese Instructable beschreibt Twitr_janus - eine Marionette machte ich zu sehen, ob es möglich, mash up kostenlose digitale Web-Services (Twitter, Google Spreadsheets und Formen, Netvibes und Skype) mit Open-Source-Hardware und Code (Arduino Sprache und Umgebung, Herstellung und der damit verbundenen Verarbeitung war Bibliotheken) und nutzen sie, um ein Objekt über das Internet zu manipulieren. Es stellte sich heraus, dass es tatsächlich möglich war! Sehen Sie, wie Twitr_janus funktioniert und sehen Sie, wie Sie diese Ideen verwenden, um eigene ferngesteuerte physische Objekte zu bauen. Es wurde von der preiswerten, leicht verfügbar Sachen gebaut, einige davon geborgen. Ich machte eine Marionette, weil ich nur komisch, gruselig Dinge. Die Prinzipien es zeigt, könnte leicht angewendet werden, um alle möglichen anderen Gegenstände konnte man selbst bauen zu steuern. Hier ist Twitr_janus in Aktion, selbst zu beschreiben und wie es funktioniert ... Zusammenfassung dessen, was sie tun können ... Ein Puppenspieler kann aus der Ferne Kommunikation über das Internet mit Twitr_janus 'Daten-aktivierte Kopf. Die Puppe kann: sprechen tweets seine Twitter-Konto gesendet sprechen mehr Sätze, die Eingabe als Text in einer Google-Tabelle gewesen in ein Feld bewegen, seine Kiefer in der Zeit mit seiner Rede, mit einer Autotür-Schlossantrieb (Linearmotor) von Arduino kontrolliert die Audio-Ausgabe in Steuerdaten konvertiert, um Lippen synchronisierten Bewegungsposition seiner Fernbedienung Augäpfel mit Arduino gesteuerten Mikroservos von Daten aus Feldern in der gleichen Google Spreadsheet getrieben von einer Steuerungsschnittstelle in einem Netvibes-Seite gehostet befohlen werden auslösen - erstellt von Hosting eine gehackte Version der Standard-Google Eingabeformular (durch Änderung der Form html, um die Daten-Werte zu beschränken, sondern fahren die Google einreichen script hat. remote über das Internet mit Skype geweckt werden, um auf Sehen und Hören über eine HD-Videokamera drehen verwenden Sie die Webcam, damit der Puppenführer, um zu sehen, was die Puppe Auge betrachten kann sehen, verwenden Sie die Webcam eingebaute Mikrofon, damit der Puppenführer zu hören, was die Puppe kann Hinweis zu hören - das instructable ist eine Zusammenfassung der wichtigsten Schritte, wurden in den Aufbau einer Arbeits, datengesteuerte physisches Objekt beteiligt. Es werden die Konzepte und erläutert die Möglichkeiten, seine Funktionen gemacht werden, um zu arbeiten, aber nicht in kleinste Detail zu gehen. Weitere detaillierte und vollständige Beschreibung der einzelnen Schritte sind auf meiner in Beiträge machen Weird Stuff Blog Es gibt viele von ihnen - zu viele für einen Instructable. Wo aber relevant, werden diese eingehenden Gesprächen auf den Stufen hier verlinkt. Eine sehr kurze Zusammenfassung des Projektes ist auch hier zur Verfügung: makingweirdstuff.blogspot.co.uk/2012/11/twitrjanus-overview-november-2012.html Verarbeitung und Aruino Code erstellt, damit es funktioniert ist auf GitHub verfügbar (so gerade Datei-Downloads). Für Details siehe die Schritte weiter unten in diesem Instructable. Seien Sie gewarnt, es ist so in etwa wie meine körperliche Handarbeit gefertigt. Entschuldigung an Programmierer puristisch. Es ist frei für Ideen geteilt, aber enthält etwas links über Funktionen und Schnipsel, die entwickelt wurden, aber nicht notwendigerweise verwendet. Einige wurden in den Skizzen links, so dass alles, was das Kopieren nicht zu empfehlen. Einige davon können nützlich sein. Es ist auf der Oberseite des Open-Source anderer Leute Sachen gebaut, so nehmen, was Sie verwenden können. Dieses Projekt wurde zunächst als ein Arbeitsdatengesteuerte Objekt Prototyp zeigen, an der Hacking Workshop gezeigt: "Slack Day" am Museum Computer Network, Seattle 2012. Ich bin zu dem Hinzufügen zu Instructables, da gibt es jede Menge Leute hier, die zumindest einige der es nützlich finden könnten. Fühlen Sie sich frei zu hacken und Ideen zu modifizieren hier. Ich habe viel gelernt, dies zu tun aus den verschiedenen Open-Source-Communities, insbesondere Arduino und Processing.

                    19 Schritt:Schritt 1: Planung Schritt 2: Materialien Schritt 3: Schneiden Sie Tyvek Schritt 4: Bereiten Sie Beutel Stücke Schritt 5: Schneiden Hauptteil der Tasche Schritt 6: Nähen Sie Registerkarten im Ort Schritt 7: Stichseitennähte für die Wassertrichter Schritt 8: Envision, wie Ihr Wasserbehälter zusammen kommen, Schritt 9: Sie erste Linie der Naht bis zum Boden des Pflanzgefäßes befestigen Schritt 10: Bereiten Sie, um den zweiten Rand des Bodens des Pflanzmaschine nähen Schritt 11: Fertig Nähen der Boden der Tasche Schritt 12: Nähen Sie die Seiten der Tasche Schritt 13: Coat Nähte in Wasserbehälter mit Nahtabdichtung Schritt 14: Grafiken erstellen Schritt 15: Fügen Sie Clips und Karton Schritt 16: Pflanzen Sie Ihre Pflanzer Schritt 17: Wasser Ihre Anlage Schritt 18: Empfehlungen für den Erfolg mit Ihrem Pflanzer Schritt 19: Schließen Sie Ihre Anlage an einem Zaun oder einer ähnlichen Struktur.

                    Alle 24 Artikel anzeigen Nähen Sie eine FRUIT FENCE Bag für Ihre fruchtende Pflanze. Fruit Fence Pflanzer Clip auf Stadt Zäune. Diese Taschen sind so konzipiert, über die Größe von einem kleinen Busch zu unterstützen größeren Fruchtpflanzen. Eine interne Wasserbehälter hilft, die Zeit zwischen dem Gießen zu verlängern. Je nach Anlage, Wetter und Konstruktion kann der Wasserbehälter die Anlage für 1-3 Wochen zu hydratisieren. * Macht eine Tasche, die äquivalent zu einem 3-Gallonen-Behälter ist und soll für 1-2 Jahre dauern. Die Tasche besteht aus wiederverwertbarem Material. * Full Sack wiegt etwa 30 Pfund, wenn bewässert. * Bag Abmessungen können für kleinere oder größere Pflanzen verändert werden. Geeignet für Heidelbeeren, und andere Zwerg Sorten von 3-6 Jahre alten Bäumen. Obststräucher werden Befruchtung und Beschneiden Pflege, von Ästen und Wurzeln, wie für die Anlage geeignete erfordern. Kleine Taschen können Erdbeeren und viele andere Pflanzen zu unterstützen. Weil diese Pflanzen an Zäunen, Geländern oder Clip auf, macht es möglich, nicht ausgelastete Stadtraum zu nutzen und helfen, Pflanzen Zugriff mehr Sonnenschein. Es gibt einen twitter-basierten Kommunikationsservice für Ihre Pflanzgefäße, willkommen, einen Hashtag für Ihre Pflanzer zu erstellen und es auf Ihre Tasche und den Service nutzen, um Tweets auf die Pflege Ihrer Anlage, verwandt ist, das Sie mit einer Reihe teilen sich anmelden bist du von freiwilligen Betreuern. Besuchen http://www.fruitfence.us um Ihre Pflanzer registrieren. Kodex ist auf Github und ist mit NodeJS, mongo und googledocs bauen, wenn Sie an das Hosting Ihrer eigenen Service sind. Weitere Infos: www.fruitfence.usFRUITFENCE

                      6 Schritt:Schritt 1: Ersatzteile Schritt 2: Thingspeak Setup Schritt 3: wifi + Upload-Code-Set Schritt 4: Fügen Sie die Sensoren + Batterie Schritt 5: Fazit Schritt 6: Updates

                      Hallo allerseits, . envloysis ist ein Online-Aktualisierung Umfeldanalyse "Bug". Diese winzigen mobilen Gerät eine Verbindung zu den WLAN-Netzwerk und Uploads Sensordaten in die Cloud und Grafiken Ihrer Daten, auch tweets Sie, wenn etwas falsch ist. es ist auch löten frei, zu bauen. keine vorherige elektrischen / Programmierkenntnisse erforderlich. Kosten sind $ 17 ~ . sie kann mit rohen analogen Sensoren wie LDR Lichtschranke (Lichtsensor) NTC thermisor (Temperatur), Boden-Sonden (Anlage Wasserstand), Feuchtesensor, gebaut werden Flammenmodul usw. im Grunde alles, was Sie können, um einen Mikrocontroller zu verbinden. Sie können fast alles wifi erstellen mit diesen einfachen Komponenten; ein Türalarm, eine Sonnenverfolger, Thermometer, sind Möglichkeiten sind endlos. . Ich arbeite in einem Restaurant. Wir haben 6 Kühlschränken und 1 große Gefriertruhe. die Eigentümer des Unternehmens fragte mich, ob es möglich war, aufnehmen / Upload Sensordaten. das ist, wo die Idee kam. es ist noch nicht abgeschlossen und offen für Erweiterungen (insbesondere Batterie), aber wir können jetzt Daten, die wir noch nie zuvor gesehen zu sammeln. . envolysis kann als einfache kostengünstige Analysegerät für Restaurants und andere Unternehmen gleichermaßen für alle, die in ihr Heimat drahtlos überwachen wünscht, verwendet werden, oder. - Ich bin auch der Entwicklung dieses Systems zur Anlagenüberwachung.

                        6 Schritt:Schritt 1: Benötigte Hardware Schritt 2: Verdrahtung: Grundeinstellung Schritt 3: Anschluss cont'ed Schritt 4: Vorbereitung der Magie Schritt 5: Die kodierenden Schritt 6: Ergebnisse und Schlussfolgerung

                        Diese instructable dreht sich alles um die Überwachung des Zustands der Relais mit einem Raspberry Pi. In dem besonderen Fall werden wir einen Blick auf eine anspruchsvolle Telegärtner Doorline Pro-Gegensprechanlage, die zwei potenzialfreie Relais hält. Normalerweise diejenigen verwendet werden, um einen elektrischen Türöffner oder eine Türklingel, sondern zusammen mit einem Raspberry Pi verwendet werden, um Twitter-Nachrichten senden, werden ausgelöst. Also, warum sollte man brauchen einen zwitschern Sprechanlage? - Nun, zunächst einmal sind Sie nicht nur das Senden tweets begrenzt. Theoretisch könnten Sie Kick off jede Raspberry Pi-Projekt, so dass Sie nur durch Ihre Kreativität begrenzt;) Wir entschieden uns für zwitschern zu gehen, da die Doorline Pro-Gegensprechanlage kommt mit einem integrierten Bewegungssensor, die konfiguriert werden können, um die beiden verfügbaren Relais auszulösen. Stellen Sie sich weg von zu Hause und jemand versucht, in Ihr Haus zu brechen: Die Gegensprechbewegungssensor würde das Relais auslösen würde die Raspberry Pi die Zustandsänderung zu erkennen und nehmen Sie ein Bild tweeting es neben einer Warnmeldung und Zeitstempel. Wenn Ihr Gegensprechanlage ist mit einem Touchscreen mit einer Code-Lock-Funktion (wie die Doorline Pro tut) ausgestattet können Sie auch installieren Sie es an der Haustür des super-geheime Serverfarm. Immer wenn jemand Typen in der (richtigen) PIN Auslösung des Türöffners, die Raspberry Pi würde ein Bild / Video zu nehmen und melden Sie die Aktivität. Natürlich könnten Sie auch tun, nur so zum Spaß und Trigger-Feuerwerk / Nebelmaschine / Falltür usw. :) Diese instructable funktioniert mit jeder Gegensprechanlage mit Relais, sondern um das Beste aus ihm die Gegensprechanlage soll erweiterte Funktionen wie ein Bewegungssensor, Codefunktion oder einem integrierten Telefonsystem enthalten bekommen ausgestattet zu arbeiten.

                          13 Schritt:Schritt 1: Wie es funktioniert Schritt 2: Sie benötigen nur ... Schritt 3: Schließen Sie die Arduino und WiFly an einen Computer Schritt 4: Anschließen des LED Schritt 5: Die Wahl gut Suchbegriffe Schritt 6: Laden Sie den Code Schritt 7: Programmschritt 1: SPI UART Schritt 8: Programmierung Schritt 2: Verbindung zu einem drahtlosen Netzwerk Schritt 9: Programmierung Schritt 3: Suchen Twitter mit TCP / IP-Port 80 Schritt 10: Programmierung Schritt 4: RGB-LED- Schritt 11: Programmierung 5: Berechnung der Welt Mood Schritt 12: Erstellen der Box Schritt 13: Viel Spaß!

                          Wie ist die Welt das Gefühl jetzt? Die Box sagt. Präsentiert von: einem Arduino, einem WiFly Wireless-Modul, ein RGB-LED, Twitter.com und einer 9V-Batterie. Ich bin ein Nachrichten-Junkie. Ich will alles, was los ist in der Welt so schnell wie es passiert einfach. Ich möchte aufwachen und wissen sofort, wenn etwas Großes hat über Nacht passiert. Aber ich bin ein außerordentlich vielbeschäftigter Mann; Ich habe keine Zeit, um News-Feeds zu lesen; Lesen dieser Schlagzeile, die ich kannte oder nicht interessieren schon an der Zeit, die ich nie bekommen zurück! Nein. Was ich brauche, ist eine Möglichkeit, um in ständigem Kontakt mit Ereignissen der Welt, wie sie sich entfalten, benachrichtigt, wenn etwas Großes passiert, und sich bewusst sein, von allem schneller als das Bewusstsein selbst vorgenommen werden! ... Eine Möglichkeit, einen Einblick in die kollektive menschliche Bewusstsein als Erweiterung meines eigenen zu bekommen. Etwas, das ich nicht haben, um ständig zu überprüfen oder abzufragen, sondern, wie ein Teil meines Körpers, wird es mir zu sagen, wenn sie Schmerz empfinden oder allgemein brauchen meine Aufmerksamkeit ... ließ mich Zeit, um mit anderen Dinge auf . Und so stelle ich: die Welt Stimmung in einer Box! Das Arduino ist direkt mit einem drahtlosen Netzwerk über das WiFly Modul, ständig auf der Suche nach Twitter Tweets mit emotionaler Gehalt, fasst die Tweets für jede Emotion, tut etwas Mathematik und dann verblasst die Farbe der LED, um die aktuelle Welt Stimmung zu reflektieren; Red für Wut, Gelb für Happy, Rosa für Liebe, Weiß für Angst, Grün für Envy, Orange für die Überraschung, und Blau für Traurigkeit. Wenn eine unerwartet hohe Anzahl von Tweets einer bestimmten Emotion gefunden werden, dann wird die LED blinkt, um uns auf die Möglichkeit, eine Welt, die dieses Ereignis ungewöhnlich starke emotionale Reaktion hervorgerufen hat alarmieren. Zum Beispiel, ein Weltkatastrophe und es kann Blau oder Rot (Traurigkeit oder Wut) zu blinken, wenn der starke Lieblings verliert einen großen Fußball-Spiel kann es zu Orange (Überraschung), verblassen ... und wenn es blinkt weiß, ist das kollektive menschliche Geist Gefühl extreme Angst, und es ist wahrscheinlich am besten, verstecken sich in einem Schrank gehen und sitzen es aus, warten auf sonnigeren Himmel und eine Rückkehr zu Gelb oder Rosa. ... OK, ich bin nicht so viel los.

                            5 Schritt:Schritt 1: Schritt 2: Schritt 3: Schritt 4: Schritt 5:

                            Entwickler und Fairgoods Teammitglied Rosemary zeigt uns, wie hashtag Geschenk-Tags mit dem Linolschnitt Drucktechnik zu machen.

                              8 Schritt:Schritt 1: Sammeln Sie Ihre Materialien Schritt 2: Erstellen Sie Ihre Garduino Schritt 3: Aktualisieren Sie # 1: Remote-Sensoren Schritt 4: Update # 2: Relaisboxen Schritt 5: Aktualisieren Sie # 3: Neue Software Schritt 6: Aktualisieren Sie # 4: Wireless Control Schritt 7: Update # 5: Twitter Ihr Garten Schritt 8: Nützliche Projekt Notizen

                              Vor ein paar Monaten bin ich auf zwei große instructables. Die erste war die Garduino, ein Arduino kontrolliert Garten, damit Sie zu Hause Pflanzen wachsen. Die zweite war die Tweet-a-Watt, ein Projekt, das Sie, wie Sie Ihr Zuhause mit Energieverbrauch Xbees und Twitter zu überwachen lehrt. Ich las über diese beiden Projekte hier bei Instructables und in Make Magazine, Vol 18 . Ich dachte, es wäre großartig, diese beiden Projekte zu verbinden und bauen selbst einen Innengarten, die ich von der Arbeit über Twitter könnte überwachen. So begann ein Abenteuer im Garten-und Elektronik, die mir viel beigebracht und mich viel länger als vielleicht es sollte. Zum Glück für Sie, ich werde alle Schritte zu notieren, so dass Sie sofort loslegen können. Vielleicht werden Sie Follow-up mit diesem Projekt und aktualisieren Sie Ihren Garten oder nutzen Sie diese als Leitfaden für die an einem ähnlichen Projekt zu starten. So oder so, ich hoffe, du wirst lassen Sie mich wissen, was Sie bekommen. Wenn du bereit bist, dann zum nächsten Schritt zu gehen und beginnen den Prozess! Edit: Bitte lesen Sie den Code jetzt auf GitHub veröffentlicht - https://github.com/chrisgilmerproj/garduino-upgrade

                                8 Schritt:Schritt 1: Verbinden Sie Ihren Funken Kern! Schritt 2: Machen Sie eine ThingSpeak Konto Schritt 3: ThingSpeak apps Set - ThingHTTP Kern Schritt 4: ThingSpeak apps Set - ThingHTTP Twitter Schritt 5: Richten Sie ThingSpeak apps - TweetControl Schritt 6: Lassen Sie uns testen, ob ThingSpeak richtig eingerichtet! Schritt 7: Der Code Schritt 8: Tweet entfernt!

                                Letzten Freitag hatte ich einen Wechsel zu täuschen um mit einem Funken Kern bei FabLab Breda im Instructables Bauen Nacht November. Ein Freund wollte steuern eine LED über Twitter, denn, ob das funktioniert, er kann die ganze Welt zu kontrollieren! Also mein Ziel, damit es funktioniert war es :) Leider stellte sich heraus, um eine echte Schmerzen zu mit Twitter zu arbeiten. Wir wollten eine direkte "Verbindung" mit Twitter zu machen und nicht mit anderen Websites oder Dienstleistungen. Es stellte sich heraus, dass ist nicht mehr möglich, da ein Upgrade ihrer Twitter-API zu 1,1! So, die uns verlassen auf der Suche nach anderen Code-Beispiele. Eine Menge Leute haben etwas zu tweets über ihre Funken Core oder Display Tweets auf einer LCD-Anzeige zu senden, aber keiner von ihnen waren sehr hilfreich für uns. Wir fanden dann CheerLights durch ioBridge Labs . Sie nutzen ThingSpeak die Twitter-API zu behandeln. Ihre Setup-Methode nicht vollständig zwar arbeiten, und der Code hatte auch ein wenig verändert werden. Hat einige Modifikationen, um ihre Verfahren und in dieser Instructable werde ich erklären, wie man alles so einrichten, biegen Sie kann eine LED ein und aus über Twitter! :) Alles, was Sie gehen zu müssen, sind es: ein Funke Kern mit USB-Kabel ein Computer ein Twitter-Account und vorzugsweise einem Tablet oder Smartphone

                                  8 Schritt:Schritt 1: Gehen verrückt über die Möglichkeiten! Schritt 2: Holen Sie sich Ihre Sachen zusammen Schritt 3: Hallo Funken Schritt 4: Verbindung zu twitter Schritt 5: Der Code Schritt 6: Die Elektronik Schritt 7: Der Fall Schritt 8: Verbesserungen

                                  Alle 19 Artikel anzeigen Hallo Kolleginnen und Entscheidungsträger! Wollten Sie schon immer Ihre Beleuchtung zu steuern, und die Farbe der Beleuchtung über das Internet? Dies ist die instructable für Sie! VortoLight ist ein Open-Source-Internet der Dinge Lampe mit personalisierten Lichtbedingungen und die Anmeldung. Automatisch optimale Lichtverhältnisse für eine gemütliche Nacht oder Vorbereitung auf eine Prüfung. Es können alle Arten von Mitteilungen zeigen (mail, Bewegung, Temperatur, socialmedia, Anrufe, tritt ein Astronaut Raum (Ich bin total ernst), etc) durch unterschiedliche Farben. VortoLight ist wie ein DIY PhilipsHue. Die Philips Hue ist super nett. Sie können die Farben der Lampe zu wechseln oder die es in einem bestimmten Modus (Light Personalisierung sie es nennen). Das einzige Problem: $$ €. Also dachte ich, - "das besser sein könnte!" (Oder zumindest mehr Spaß als Einschrauben der Glühbirne und getan;)). Dafür bin erstellt VortoLight (Vorto bedeutet "Wort" in Esperanto). Es ist wirklich einfach zu machen - auch für die nicht-kodierende-und / oder Elektronik-Leute! VortoLight durch Twitter gesteuert. Wenn Sie einen Filter (#VortoLight) und einen Trigger (zB Rot) Tweet Die Lampe leuchtet rot. Das ist schon ziemlich cool, oder? Aber hier ist der Funke: warum sollten Sie nicht Dinge twittern automatisch lassen? So können Sie Ihre Lampe entsprechend reagieren? [Play Video] Diese Version (v7) Funktionen; Leuchtvarianten: • Cozy (statisch) • Studie (statisch) • Lesen (statisch) • Romantische (statisch) • Industrie (statisch) • off Hinweise: • Rot (statisch) • Grün (statisch) • Blau (statisch) • Purple (statisch) • Rosa (statisch)

                                    8 Schritt:Schritt 1: Erste Schritte Schritt 2: Wie Sie Ihre Twitter App License Schritt 3: Holen Sie CodeBird Schritt 4: Einrichten der Webcam Schritt 5: Testen Sie die Webcam Schritt 6: Erstellen des PHP-Datei Schritt 7: Anschließen "webcam.php" und "pictweet.php" Schritt 8: Finishing Up

                                    Jetzt, da wir ein LAMP Server Set-up, können wir Web-Projekten zu schaffen! Das erste Projekt werden wir machen, ist ein Programm, das automatisch ein Bild tweet von unserer Webcam, wenn wir drücken Sie "Snap Photo".

                                      9 Schritt:Schritt 1: Benötigte Hardware Schritt 2: Installieren Sie den LM465 und eine Lampe Schritt 3: Installieren Sie die CM11A Schritt 4: Installieren Heyu Schritt 5: Holen Sie sich einen Twitter-Account für Ihren Computer Schritt 6: Holen Sie sich einen Schlüssel und Geheimnis von Twitter Schritt 7: Laden Sie meine Python-Skript und Benutzer hinzufügen Schritt 8: Führen Sie das Python-Skript Schritt 9: Erweitern Sie Ihr Setup

                                      Das Ziel dieses Instructable ist, Ihnen zu zeigen, wie Sie Ihr Home-Beleuchtung (oder Geräte) mit X10 zu automatisieren, Setup Ihren Computer, um die Geräte zu steuern, und dann bekommen Twitter, um die Kontrolle zu tun. Die Erfahrung mit Python, der Linux-Befehlszeile, und Twitter ist Entwickler API wird dazu beitragen, diese Instructable leichter zu verstehen. Diese Instructable ist Teil der "Adafruit Make It Tweet Challenge", so, wenn es vor dem 30. Juni 2011. Bitte stimme ab Ja, es ist, dass X-10. Das Unternehmen mit dem Super ärgerlich, auffällige Werbebanner, die werden überall verkauft creepy verwendet, stalker-würdig, vertreibt Videokameras auch Home-Automation-Geräte, und sie sind billig! Hinweis: X-10 ist das Unternehmen, und X10 ist das Protokoll. Ich werde versuchen, es gerade zu halten.

                                        7 Schritt:Schritt 1: Halten Sie einen Ersatz-Mail-Konto. Schritt 2: Twitter-Account einrichten. Schritt 3: Downloaden und installieren Sie twidge Schritt 4: Senden Tweets. Schritt 5: Erste Tweets. Schritt 6: Sicherheits-Reporting-System. Schritt 7: Das Experimentieren mit gmail.

                                        Dies getan für eine ganze Weile und ich liebe es. Echt Computer Automatisierung. Dies ist ein instructable auf Ihre Linux-Computer zu erhalten, um twiiter über die Kommandozeile für beide senden und empfangen Tweets zugreifen. Das Tolle daran ist, wird es auf einem System ohne GUI zu arbeiten. Eine ältere Computer wäre perfekt für dieses Projekt. In der Tat laufen ich meine tweeting Computer ohne Monitor und auf die tweeting Computer via ssh. Sie können sogar erhalten tweets und schalten Sie sie in Befehle an die vom Computer ausgeführt werden. Das erspart einen Port zu Ihrem Netzwerk zu öffnen, um darauf zuzugreifen. Sie gab gerade genug, um mit zu arbeiten. Ein weiterer instructable, aber man konnte Software eine Art, wie die Dr. Eliza Programm auf fast eine natürliche Sprachschnittstelle hinzuzufügen. Dies könnte eine automatisierte Hilfe oder sogar eine Art automatische Antwort Chatzeile sein. Man könnte noch einen Schritt weiter gehen und die tweeting Computer Befehle an andere Rechner hinter Firewalls, ohne einen Hafen oder menschliche Eingriffe alle über einen Twitter-Account oder Konten zu eröffnen. Hinweis: Twidge ist für den Apple Macintosh zur Verfügung und Sie könnten wahrscheinlich fast die gleiche Batch-Dateien .. kann Microsoft Windows-Computer in der Lage, die gleiche Sache mit einem Programm namens "tweetc" zu tun. Sie auf jeden Fall muss man verschiedene Batch-Dateien, obwohl zu verwenden. (Nicht Gegenstand dieser instructable). Update: Sie Ihre eigenen twiiter Stellen wie Server: http://www.instructables.com/id/Statusnet-the-Twitter-clone-setup/

                                        Seiten: « Zurück 1 2 Nächster »