7 Schritt:Schritt 1: Materialien Schritt 2: Elektronik Schritt 3: Mechanical Design Schritt 4: Arduino Sketch - Cube Solving Algorithm Schritt 5: Python GUI Schritt 6: Verbinden sie alle - Serielle Kommunikation Schritt 7: So verwenden Sie

    Also hier ist ein Projekt, das ich gearbeitet habe für eine Weile ... Dieser Roboter, die ein Zauberwürfel zu lösen, kann mit Arduino. Ich habe gelernt, wie man einen Rubiks Cube lösen im letzten Jahr, und ich war auch in Arduino, so schließlich landete ich mit einer Idee zu meiner eigenen Zauberwürfel Löser zu machen. Wie viele Menschen auf der Suche nach "Zauberwürfel Solver" auf Google, einer der ersten Roboter ich fand, war der gekippten Twister Design von Hans Andersson: Ich sah mich auf einige andere Zauberwürfel Löser, aber ich wegen seiner (relativen) Einfachheit mochte diesen Entwurf, also baute ich eine ähnliche Version davon mit Popsicle Sticks, einem Arduino und 2 Servos. Am Ende nimmt meine Roboter ca. 20 Minuten, um den Würfel Staat und solve.Step 1 eingeben: Baustoffe Elektronik: - Arduino UNO R3 - 2 Servos (I verwendet Hitec HS-311 ist) - Drähte - USB Kabel Sie können alle diese Teile aus jeder Robotik Laden zu bekommen. Ich habe sie von canadarobotix.com Hardware: - Popsicle Sticks - Holzspieße - Dünnes Sperrholz - Holzrad (Spieß muss in das Loch zu passen) - Heißkleber - Papierhandtuchrolle Software: - Arduino IDE - (Algorithmen in C ++) - Python 2.7+ und Tkinter - (GUI) - PyserialStep 2: Elektronik Verdrahtung der Servos an den Arduino ist ziemlich einfach 1. Schließen Sie die gelbe (Signal) Drähte von den Schub- und Dreh Servos an Pin 6 bzw. 9. 2. Schließen Sie die positiven und negativen Leitungen an den 5V-Stromquelle und Masse. Manchmal hatten die Servos Nervosität, so dass ich denke, ein paar Kondensatoren könnten die current.Step 3 geglättet haben: Mechanical Design Ich sah ein paar Entwürfe, sondern ließ sich auf dem Tilted Twister, weil es nur erforderlich, 2 Servos für den Betrieb, die als komplexe mechanisch wie andere Roboter wie der nicht war CubeStormer. Also hier ist, wie der Mechanismus funktioniert im Grunde: 1. Eine Plattform hält und dreht den Würfel. 2. Der Arm drückt und hält den Würfel. Als ich versuchte, den Solver zu bauen, habe ich versucht, Bauanleitung hier folgen: Aber ich war ziemlich faul und nicht folgen Sie den Anweisungen, also machte ich eine hölzerne Nachbildung mit ein paar Veränderungen. Ich habe nicht jeden Schritt der Build-Prozess dokumentiert, aber ich glaube, Sie können die geneigten Twister-Design mit ein paar Veränderungen zu reproduzieren: 1. Slanted klebt an den Würfel von Hängenbleiben zu vermeiden. 2. Um die Armgelenken zu bauen, - Ich bohrte ein Loch in Enden der Popsicle Sticks. - Ich schnitt 2 cm von einem Holzstäbchen. - Ich habe den Spieß in den Stöcken - Geklebte Holzräder, die als Scheiben an jedem Ende zu handeln. Ehrlich Aufbau der physische Löser war viel schwieriger und komplexer, als ich erwartet hatte, so dass, wenn Sie irgendwelche Fragen auf, wie ich baute die Solver, nur ask.Step 4: Arduino Sketch - Cube Solving Algorithm [Code: https://github.com/matt2uy/Cube-Solver] Also im Grunde der Code schrieb ich verwendet Kombinationen drückt hält und Plattformdrehungen um Algorithmen, um den Würfel gelten. Es gibt 3 Teile meines Codes: die algortihm, GUI (Geben Sie cube Zustand) und die serielle Kommunikation Beginnen wir mit dem beginnen Arduino Sketch. Es benutzt im Grunde Algorithmen, um die Cube-Farben manipulieren: 1. Es gibt 6 char-Arrays jeweils für Seite des Würfels. 2. Mit einem Grund Schicht für Schicht-Methode von den Zauberwürfel zu lösen, eine Funktion, cube_decide () machte ich, geht, dass in jeder Phase oder den Cube Lösungsprozess. 3. Innerhalb jeder Stufe wie cube_decide_cross () (die Lösung des grenz), würde das Programm für bestimmte Standorte von Farben in dem Würfel zu überprüfen, und wenn ein Algorithmus mit der Bedingung, würfel-Notation wie "U" (Up) oder abgestimmt gesamten Algorithmen, wie fix_cross_instance_1 () würde ausgeführt werden. 4. Der Würfel Notation und Algorithmen steuern die Servofunktionen wie push_cube () oder rotate_one (). Hier ist eine grundlegende Übersicht über die Codestruktur (Abstraktionsschichten): Cube Entscheiden Funktionen <Cube Algorithmen <Cube verschieben Funktionen <Servo-Funktionen <Move-Funktion Ein wichtiger Durchbruch ich hatte, war, dass ich tatsächlich Bewegungen des Würfels simuliert im Programm. Das Programm ordnet die Werte in den Arrays zu simulieren und Würfeldrehung. Auf diese Weise kann das Programm den Würfel bewegen zu simulieren, bevor es physisch führt it.Step 5: Python GUI Ich brauchte eine bessere Möglichkeit der Eingabe der Würfel Staat als direkte Eingabe sie in die Arduino Sketch, so bekam ich die Idee der Schaffung einer GUI von diesem Roboter: Denn ich bin neu zu machen Tkinter GUI (Graphical User Interface) und wollte nicht zu einem von Grund auf neu zu machen, fand ich ein Tic Tac Toe-GUI hier: http://www.dzone.com/snippets/gui-tic- tac-toe-weniger ... Dann drehte ich die 3x3-Anordnung von Tasten in etwas einen Würfel ähnlich und fügte ein paar Knöpfe. Ich habe auch Schaltflächen, die Farbe jedesmal, wenn sie angeklickt wurden verändern sollte. Schließlich machte ich 5 weitere Fenster, die Pop-up würde eine nach der anderen, und übertragen Sie die in ein lokales Array in das Skript eingegeben Farben. Allerdings, ich schlug den Code zusammen in einem Durcheinander, da ich einfach kopieren und eingefügt 6 separaten Fenstern, mit fast identischen Funktionen. Alle Vorschläge, wie ich konnte bereinigen Sie den Code sind willkommen Schritt 6: Verbinden sie alle - Serielle Kommunikation! Sobald der Algorithmus in der Arduino Sketch und die Python-GUI bereit waren, brauchte ich etwas, etwas, das den Würfel Zustand von der GUI gesammelt verwenden und übertragen sie an die Arduino Sketch würde. Nachdem die Skizze die Daten empfängt, kann er den Würfel Zustand durch die Algorithmen setzen und den Würfel physisch zu lösen. Um das zu tun, habe ich eine Bibliothek namens pyserial, die hilft, meine Python-Skript kommunizieren mit dem Arduino über eine serielle Schnittstelle. Im Grunde ist dies, wie ich kodiert die die serielle Kommunikation: 1. Nach den Würfelfarben wurden in der GUI in eingegebenen Send_Cube_State.py, in einen String umgewandelt ich die Daten 2. Verwendet ein "Handshake", die in diesem Fall die Arduino sagt dem Computer, es ist bereit, dann den Computer überträgt die Daten an den Roboter. 3. Der Arduino wandelt die in Zeichen, die auf Arrays in der Skizze zugeordnet sind, erhalten String. 4. Nun, da die Würfelfarben wurden erfolgreich aus dem Computer auf die Arduino übertragen, die Würfelfarben können durch die Algorithmen zu setzen und zu lösen, die Rubiks cube.Step 7: So verwenden Sie Wenn Sie versuchen, den Roboter selbst zu bauen sind, oder einfach nur versuchen, den Code, hier ist eine Checkliste, um Ihnen zu helfen: 1. Downloaden und installieren Sie diese Pakete und Anwendungen - Arduino IDE (http://arduino.cc/en/Main/Software) - Python 2.7 (Tkinter ist enthalten) (https://www.python.org/downloads/) - Pyserial (https://pypi.python.org/pypi/pyserial) 2. Laden Sie die Quelldateien hier: https://github.com/matt2uy/Cube-Solver 3. Kopieren Sie Cube_Solver.cpp auf die Arduino IDE. 4. Stecken Sie das Arduino in und laden Sie die Skizze. 5. Gleich nach dem Hochladen, beachten Sie die serielle Port-Nummer in der unteren rechten Ecke. (Siehe Bild oben) 6. In Send_Cube_State.py, ändern Sie die Adresse in der Leitung 18, um die Zahl auf der IDE lassen. (Siehe Bild oben) 7. Öffnen Sie die Eingabeaufforderung (Windows) oder Terminal (Mac / Linux) 8. Sie in das Verzeichnis, wo Sie setzen in die Quelldateien gehen: - Mit dem Befehl 'cd', zum Beispiel: - CD 'path / to / Cube-Solver' 9. Führen Sie das Skript mit .py: python send_cube_state.py 10. Wenn Sie sehen, eine Reihe von "y ist als Druck auf dem Bildschirm: - Warten Sie ca. 5 Sekunden - Verlassen Sie mit Strg-C oder Befehl-C - Wiederholen Sie Schritt 9 erneut. - Es sollte ein GUI, das zeigt sein. 11. Geben Sie die Cube Farben in der richtigen Orientierung: Farbe in Vorder | auf Top Farbe 1. Yellow | Blau 2. Weiß | Grüne 3. Blau | Weiß 4. Rot | Weiß 5. Green | Weiß 6. orange | Weiß 12. Setzen Sie den Würfel in der Solver in der Orientierung hier zu sehen: http://goo.gl/tSqSpp 13. Klicken Sie auf 'Lösen Sie!' 14. Wenn das nicht funktioniert: - Kopieren Sie Cube_Solver_No_GUI.cpp auf die Arduino IDE - Im Einklang 32-54, geben Sie die Cube-Farben in der gleichen Konvention wie in Schritt 11. - Führen Sie Schritt 12 - Laden Sie die Skizze auf das Arduino.$(function() {$("a.lightbox").lightBox();});

      4 Schritt:Schritt 1: Einrichten des New Pi mit NOOBS Schritt 2: Aktivieren WiFi mit dem Wi-Pi-Adapter und die Einrichtung VNC Schritt 3: Die QuoteMachine.py Python-Skript Schritt 4: Customizing Die Quote Machine

      Vor kurzem erhielt ich eine neue Raspberry Pi und wollte eine Einführung zu Raspberry Pi-Projekt zu erstellen. Meine Pi enthalten einen 16x2 LCD-Display und ein WLAN-Pi-Karte, damit ich schuf die Wireless-Raspberry Pi Powered Joke Machine. Drücken Sie einfach die Tasten und die Maschine wird Nachschlagen eines Einzeiler und blättern Sie durch sie. (Schuldbekenntnis hier ... Ich hatte gedacht, es wäre nett, eine Schreibtisch-Spielzeug, das inspirierende und pädagogische berühmten Zitate angezeigt werden könnte ... die Joke-Maschine kann dies tun zu schaffen, aber als ich fand, ich könnte genauso gut zu generieren ein -liners, beschloss ich, das wäre mehr Spaß sein :-)) Dieser Schritt für Schritt Instructable führt Sie durch den Prozess der Einrichtung eines neuen Raspberry Pi, Hinzufügen der die PiFace Steuerung und Anzeige LCD, die WIPI drahtlosen und das Python-Skript zur Verfügung gestellt, die bis TheQuoteMachine.py Witze und Zitate auf einem kostenlosen Dienst namens iheartquotes sieht .com. es wird auch beschrieben, wie Sie Ihren Pi, ohne Notwendigkeit für eine Tastatur oder Anzeige unter Verwendung von VNC Remote-Zugriff zuzugreifen. Benötigen Sie folgende Teile Raspberry Pi Model B 8G Sd Karte mit NOOBS installiert Pi Mikro-USB-Kabel und Adapter WIPI WiFi-Adapter (oder Ethernet-Kabel) PiFace Steuerung und Anzeige - LCD Display mit 7 Tasten und einen IR-Chip Während der Installation finden Sie eine USB möchte beinhaltet Tastatur, ein HDMI-Kabel und Monitor-Projekt box - hatte ich eine alte Uhr-Geschenk-Box herum Benötigte Werkzeuge Blechscheren, um Schlitze in Projektfeld Dremel Stil Werkzeug geschnitten, um ein Loch für das LCD-Display und glatte Kanten Etikettiermaschine Sharpie zur Marke geschnitten Projektfeld Vinylklebstreifen Hier ist ein Video von der Joke-Maschine in Aktion: Schritt 1: Einrichten des New Pi mit NOOBS A Raspberry Pi kommt mit "Do it Yourself Füllen", ist, dass Sie entscheiden, welche Linux-Variante Sie es wollen. Eine einfache Möglichkeit, dies zu tun ist, um eine NOOBS SD-Karte verwenden, um Linux zu installieren NOOBS steht für New Out of the Box Software. Sie können eine vorinstallierte NOOBS SD-Karte zu kaufen (was ich für dieses Projekt verwendet) oder laden Sie Ihre eigenen von http://www.raspberrypi.org/downloads. Ich verband ein HDMI-Kabel, Netzteil und USB-Tastatur (kein Ethernet ist für NOOBS erforderlich) Wenn NOOBS bootet, war ich mit den folgenden Optionen zu installieren vorgestellt: Archlinux - eine konfigurierbare Linux-Distribution nicht für Neulinge OpenELEC empfohlen - Offene Embedded Linux Entertainment Center (OpenELEC) eine kleine Linux-Distribution soll ein Media Center Pidora sein - Pidora ist ein Fedora Remix für den Raspberry Pi Computer RaspBMC optimiert - der XBOX Media Center-Schnittstelle Raspbian (empfohlen) Raspbian ist ein freies Betriebssystem, basierend auf Debian für die optimierte Raspberry Pi Hardware RiscOS - RISC OS ist ein britischer Betriebssystem speziell für den ARM-Prozessor entwickelt, Ich hob die empfohlene Raspbian Linux-Variante Nachdem die Formatierung abgeschlossen habe ich den Konfigurationsbildschirm zu: Wechsel von der Standard-ID und das Kennwort des pi / Himbeere Aktiviert ssh von den erweiterten Optionen (mehr über SSH später) Next Ich lief den Befehl startx rufen Sie die grafische Desktop- Schritt 2: Aktivieren WiFi mit dem Wi-Pi-Adapter und die Einrichtung VNC Konfigurieren der WLAN- Ich folgte diesen Anweisungen, um das Wireless-Netzwerk konfigurieren, mit Kommandozeilen-Anweisungen. Im Grunde sind die Schritte, um: sudo nano / etc / network / interfaces füllen Sie WPA-SSID "SSID" und WPA-PSK "password" Neustart Das Wi-Pi funktioniert super, und es gibt ein schönes blau leuchten, wenn es kommuniziert. Nach dem Neustart wurde eine Verbindung zu meinem Netzwerk gemacht und ich war in der Lage, das Internet aus dem Pi surfen. Ich habe auch Winscp von meinem Windows 7 Box auf der Pi, mehr über die nächsten zu verbinden. Mit Ihrem Pi ohne dedizierten Monitor und Tastatur über VNC Weiter richte ich VNC, so dass ich meine Pi von meinem normalen Laptop-Computer zugreifen. VNC ist ein Prozess, der mich zu Grafische Anwendungen ohne Anschluss-Bildschirm bis zum Pi selbst zu verwenden. Hier ist, wie es eingerichtet Installieren vncserver indem Sie diesen Befehl auf dem Pi: sudo apt-get install tightvncserver der VNC-Server, indem Sie den Befehl starten (das erste Mal, wenn Sie führen Sie es fordert Sie auf, einen VNC-Passwort zu erstellen) vncserver herunterladen vncviewe r für Ihren Laptop (oder Desktop) Computer anschließen von Ihrem Laptop mit Hilfe der IP-Adresse und den Port des VNC Server (und die Sie oben erstellt Passwort) VNC verwenden, wenn Sie nicht über ein Überwachungsgerät auf dem Pi haben, können Sie entweder Einrichten der Pi so vncserver beim Booten automatisch gestartet wird, oder eine Verbindung zum pi mit Hilfe ssh oder WinSCP auf Kommandozeilen-Stil, um die Pi anmelden und den Server zu starten. Schritt 3: Die QuoteMachine.py Python-Skript TheQuoteMachine.py ist in Python geschrieben Python ist bereits auf dem Raspberry Pi installiert, so dass auf meine Quote Machine Skript ausführen müssen Sie einfach das Skript von instructables.com (um Ihre Raspberry Pi) Download Erstellen Sie ein Verzeichnis bin, um Ihre Lieblings-Skripts speichern mkdir / home / pi / bin Kopie TheQuoteMachine.py / home / pi / bin ausführbar machen indem Sie den Befehl chmod + x /home/pi/bin/TheQuoteMachine.py Installieren Sie die PiFace Bedien- und Anzeige Beispiel-Code Der Bildschirm PiFace Steuerung und Anzeige LCD kommt mit einigen Zitate Statt Witze Wenn Sie eine der berühmten Zitate bekommen würde (es gibt viele Sorten finden Sie hier) anstelle von One-Liners aus dem Joke Machine, machen zwei einfache Änderungen an TheQuoteMachine.py Ändern Sie die "Quelle" auf dieser Linie verwendet: c.setopt (c.URL, 'http://iheartquotes.com/api/v1/random?source=oneliners') Ersetzen Sie die Quellennamen diese Zeile lineout = re.sub (r '\ [oneliners. *', '', lineout) Run The Quote Machine beim Start: Um die QuoteMachine.py Script automatisch beim Systemstart ausgeführt haben, gibt es mehrere Möglichkeiten, wie Sie es tun können, aber die folgenden Werke auch von diesem instructable laden Sie die Datei "quoteStart". quoteStart ruft TheQuoteMachine.py kopieren Sie sie laufen /etc/init.d folgt vor, um es ausführbar chmod + x /etc/init.d/quoteStart Test machen Sie das Skript ausführen, um sicherzustellen, wird es keine Probleme beim Neustart Zeit registrieren Sie den Befehl beim Start, indem Sie den Befehl ausführen: sudo update-rc.d quoteStart Standard Humor: Ein Kommentar über Humor, als meine Schwester bemerkte ich gepostet diese Erfindung auf Facebook, sie war ein wenig besorgt ... "Das könnte schlecht sein !! ! " Ich denke, dass war ihr Kommentar ... aber sie war weniger besorgt, als ich versicherte ihr, die von der Maschine erzeugten Joke Witze sind nicht meine Witze ;-) Vielen Dank für dein meiner Instructable, ich hoffe, Sie haben Spaß Aufbau Ihrer eigenen Witz-Maschine haben. Viel Glück auf all Ihre Projekte!

        6 Schritt:Schritt 1: Teileliste Schritt 2: Python-Installation und Setup Roboterbasis Schritt 3: Arduino und Bluetooth-Wiring Schritt 4: Android App Schritt 5: Testen Sie unsere Roboter Schritt 6: Fazit

        Dieser Lehrgang baut auf einer früheren Instructable basiert - Gebäuderoboter mit Raspberry Pi und Python Ziel ist es, ein Beispiel, wie das Einrichten eines seriellen Bluetooth-Verbindung mit einem Arduino Raspberry Pi Roboter zu steuern, zu präsentieren. Aber lassen Sie uns noch einen Schritt weiter und fügen Sie Python, um Töne auf der Grundlage der Befehle, die über Bluetooth gesendet generieren. Also im Grunde werden wir Nachrichten von einem Android App über Bluetooth an einen Arduino senden, dann leiten die Nachrichten von Arduino (USB) an den Raspberry Pi, wo Python wird Klängen auf der Grundlage dieser Meldungen zu spielen. So ein Beispiel wäre es, die Roboter einen Befehl wie vorwärts bewegen zu senden und haben es ein paar coole Roboter spielen Geräusche aus dem Raspberry Pi. So können beginnen ... Schritt 1: Stückliste Wir werden die gleichen Teile von diesem vorherigen Lernprogramm für die Roboterbasis zu verwenden. (Robot Base, Raspberry Pi, Arduino Uno, Motortreiber, Batterie, usw.) http://www.instructables.com/id/Building-robots-with-Raspberry-Pi-and-Python/ Und wir werden die folgenden Teile in die Liste aufzunehmen. Bluetooth-Modem http://www.zagrosrobotics.com/shop/item.aspx?itemid=883 Speaker Eine bestimmte Art der Aktivlautsprecher mit einem 3,5 Lautsprecheranschluss Schritt 2: Python-Installation und Setup Roboterbasis Ältere Versionen des Raspbian Bild haben Probleme mit der Sound-Ausgabe an die Lautsprecherbuchse 3,5 hatte, so empfiehlt es sich, die Noobs v1.2.1 Bild später zu installieren oder. NOOBS Es gibt eine Menge von Informationen über das Einrichten und Konfigurieren des Raspbian Bild hier Python ist vorinstalliert, aber wir können unsere Python-Version mit Hilfe der Klemme zu prüfen, zu überprüfen. Kopieren und Einfügen in die LXterm python --version Für die Beispiele werden wir über sie gehen wird empfohlen, Python-Version 2.6 zu verwenden. *** Wenn Python ist nicht auf Ihrem System installiert ist, kann man mit apt-get gewährt Ihren Raspberry Pi ist mit dem Internet verbunden ist. *** Kopieren und Einfügen in die LXterm sudo apt-get install python2.6 Auch für die Beispiele in diesem Tutorial werden wir brauchen, um einige der abhängigen Bibliotheken für unsere Skripte zur Arbeit zu installieren. Kopieren Einfügen in der LXterm sudo apt-get install python-Serien Auch Sie können oder können nicht den Raspberry Pi ist Ausgang mit dem 3,5-Audio-Buchse mit der Befehlszeile Kopieren Einfügen in der LXterm amixer cset numid = 3 1 Nächstes laden Sie die Sounddateien unten dann fügen Sie einen Ordner mit der Bezeichnung Sounds auf "/ home / pi" und fügen Sie die WAV-Dateien, um sie (Ex. /home/pi/Sounds/forward.wav) Sound-Dateien Nächstes Download und fügen Sie die folgende Python-Skript zu "/ home / pi" zagbot-bt.py Jetzt müssen wir das Python-Skript ausführbar mit chmod Befehl machen Kopieren und fügen Sie in LXterm sudo chmod + x /home/pi/zagbot-bt.py Das Programm sollte nun ausführbar sein. Nächstes Download und Upload der folgenden Skizze mit der Arduino IDE 1.0.4 oder höher, Sie Uno Arduino. Arduino Robot Base-Sketch zagbotbt.ino Wenn Sie mit Arduino und seine IDE vertraut sind, können Sie auf hier zu lesen. Arduino Arduino und Bluetooth Verdrahtung: Und schließlich, um dem Schaltplan für den Aufbau der Stromversorgung des Roboters base.Step 3 beziehen sich vor Nachdem Sie die Roboterbasis zusammengesetzt haben, ist der nächste Schritt zu verdrahten Ihre Arduino Uno an die Bluetooth Silvermate. Da werden wir, mit dem USB-Anschluss, um Daten zu empfangen. Wir werden die Software-Serien Bibliothek verwenden, um eine weitere serielle Schnittstelle an das Arduino Uno hinzufügen, um die Bluetooth-Daten zu empfangen. Hier ist der Schaltplan. * Wenn Ihr Bluetooth-Modul ist anders als die, die ich vorgeschlagen habe Sie in der Dokumentation, oder Datenblätter, die mit Ihrem Bluetooth-Modul für die korrekte Installation verbunden sind. * Arduino PIN (TX) 2 - Silvermate RX Arduino PIN (RX) 3 - Silvermate TX Arduino PIN 5V - Silvernate VCC Arduino PIN GND - GND Silvernate Silvermate CTS - Silvermate RTSStep 4: Android App Hier ist eine einfache Android App, die String-Befehle via Bluetooth an unsere Arduino Uno sendet. Von groben können Sie immer schreiben Sie APK besitzen um eine erweiterte Schnittstelle enthalten mit Ihrer Telefone Beschleunigungsmesser oder Touchscreen mit Schieberegler für die Motorgeschwindigkeit und Richtung. Übertragen Sie die APK auf die SD-Karte auf Ihrem Handy oder Tablet und verwenden Sie eine App wie ES Datei-Explorer, um den Zugang in die SD-Karte zu erhalten und Installieren der APK. ES Datei Tutorial - http://www.youtube.com/watch?v=myOW8YrcSzg Max_Control App - https://www.box.com/s/8b06bcee9ec84ec70a72 Schritt 5: Testen Sie unsere Roboter Nun, da die Hardware und Software das Setup abgeschlossen ist, können wir den Roboter zu testen. Schließen Sie alle USB und Netzkabel an der Roboterbasis, Raspberry Pi und Lautsprecher. Starten Sie die zagbot-bt.py durch einen Doppelklick auf die Datei oder über die Kommandozeile in LxTerm Kopieren und Einfügen in LxTerm python /home/pi/zagbot-bt.py *** Wenn Sie Fehler oder Probleme mit der Verbindung zu Python Arduino haben, können Sie Linie 7 in zagbot-bt.py "/ dev / ttyACM0", was auch immer Port zugeordnet ist, Sie Arduino bearbeiten. Sie können dies, indem Sie in / dev auf dem Raspberry Pi, dann Einstecken in Ihrem Arduino und Kontrolle für alle neuen zugewiesenen Ports überprüfen. *** Next starten Sie die App von Ihrem Android-Gerät Sie sollten nun in der Lage, den Roboter zu steuern und zu hören, Geräusche aus dem Raspberry Pi ist. Editieren Sie das Python-Datei, um eigene Sounds hinzufügen, oder bearbeiten Sie die Arduino Sketch, um die Steuerung zu ändern. Schritt 6: Fazit Ich hoffe, Sie konnten Ihre Raspberry Pi Roboter auf Ihr Android-Gerät zu verbinden, und beginnen zu verstehen, wie man Python in Ihre Zukunft Roboter-Projekten verwenden. Ich schlage vor, Blick auf die Python-Dokumentation Seite für weitere Beispiele und Leitfäden. Hier ist ein kleines Video von der Roboter fertig.

          5 Schritt:Schritt 1: Elektrischer Anschluss Schritt 2: Schalten Sie den Serial Console Schritt 3: Testen des GPS Schritt 4: Schreiben Sie Ihre eigenen Python App Schritt 5: Mit einem kleinen LCD-Display

          Zuvor baute ich ein Projekt, bei dem ich eine Verbindung Neo-6M zu einem Arduino , aber dieses Mal wollte ich zeigen, wie ein GPS mit dem Raspberry PI verwenden. Nun gibt es mehrere USB-Lösungen und Anwendungen, die mit ihnen arbeiten, aber ich wollte zeigen, wie Sie € 20 GPS-Modul mit aa serielle UART nutzen, und Python-Code, um die NMEA-Strings zu decodieren. Dann können Sie Ihre eigenen GPS-Schnittstelle schreiben, oder kombinieren Sie die Daten mit Google Maps. Benötigen Sie folgende Teile: Raspberry PI (alle Versionen) Neo-6M GPS Buchse auf Buchse Jumpers Raspberry Pi Zubehör wie a> 1a 5V Netzteil, SD-Karte, Tastatur, Maus und einem HDMI-Monitor aus irgendeinem RPI Projekt benötigt. Schritt 1: Elektrischer Anschluss Der erste Schritt ist, das GPS-Modul auf die Himbeere PI verbinden. Es gibt nur 4 Drähte (F bis F), so ist es eine einfache Verbindung. Neo-6M RPI VCC zu Pin 1, die 3,3 V ist TX an Pin 10, der RX ist (GPIO15) RX auf Pin 8, das ist TX (GPIO14) Auf Pin 6, der GndStep 2 GND: Schalten Sie den Serial Console Standardmäßig verwendet die Raspberry Pi der UART als serielle Konsole. Wir müssen weg von diesem Funktionalität drehen, so dass wir die UART für eigene Anwendung verwenden. Öffnen Sie ein Terminal-Sitzung auf dem Raspberry Pi. Das erste, was wir tun werden, ist ein Backup der Datei cmdline.txt, bevor wir sie zu bearbeiten. sudo cp /boot/cmdline.txt /boot/cmdline_backup.txt und drücken Sie Enter. Das müssen wir cmdlint.txt bearbeiten und entfernen Sie die serielle Schnittstelle. Geben Sie sudo nano /boot/cmdline.txt und drücken Sie Enter. Löschen console = ttyAMA0,115200 und speichern Sie die Datei, indem Sie Strg X, Y, und die Eingabetaste. Geben Sie nun in sudo nano / etc / inittab und drücken Sie Enter. Finden ttyAMA0 durch Drücken von Strg W und die Eingabe ttyAMA0 auf der Suchlinie. Wenn sie feststellt, dass die Linie, drücken Sie nach Hause, legen Sie ein Symbol # auskommentieren Sie diese Zeile, und Ctrl X, Y, die Eingabetaste, um zu speichern. Geben Sie sudo reboot und drücken Sie Enter, um den Pi.Step 3 neu zu starten: Testen des GPS Bevor wir schreiben unsere eigenen Code, lassen Sie testen Sie die GPS indem Sie einige Programme aus dem Regal. Öffnen Sie eine Terminalsitzung, und geben Sie sudo apt-get gpsd gpsd-Clients installieren und drücken Sie Enter. Danach installiert, lassen Sie uns beginnen die serielle Schnittstelle: Geben Sie stty -F / dev / ttyAMA0 9600 und drücken Sie Enter. Starten Sie jetzt RaPS: Geben Sie sudo gpsd / dev / ttyAMA0 -F /var/run/gpsd.sock und drücken Sie Enter. Jetzt angezeigt werden, indem Sie CGPS -s und drücken Enter.Step 4: Schreiben Sie Ihre eigenen Python App Nun, da ich weiß, das GPS-Modul funktioniert, möchte ich meine eigene Software zu schreiben, so dass ich auf die Werte lese ich handeln. Demnächst ...... Schritt 5: Mit einem kleinen LCD-Display Die besten Ergebnisse erzielen, muss ein GPS-Sensor im Freien zu sein. Aber ich möchte wirklich nicht zu ziehen meine 42 "HDMI Monitor draußen. Ich werde das Hinzufügen einer 2,8" LCD bald zu diesem Projekt!

            11 Schritt:Schritt 1: Werkzeuge und Materialien Schritt 2: Die Basis Schritt 3: Der Arm Schritt 4: Das Scharnier Schritt 5: Montage des Basis Schritt 6: Der Boom Schritt 7: Das Rückkopplungssystem Schritt 8: Final Assembly Schritt 9: Die Elektronik Schritt 10: Der Arduino Sketch Schritt 11: Das Python-Skript

            Alle 7 Artikel anzeigen Dies ist eine einfache arduino basierend Seismograph, der die Daten sammelt, um ein Python-Skript, das die Daten leben Grafiken und können es auf plotly exportieren senden. Diese Seismograph ist ziemlich empfindlich, kann es eine Person springt daneben zu erkennen. Die seismograph meist aus Holz und verwendet eine einfache arduino Schaltung, um die Daten aufzuzeichnen. Sie können sehen, eine plotly Graph von mir springt daneben hier . Schritt 1: Werkzeuge und Materialien Materialien Eine 7 1/2 "x 18 1/2" Piece of 3/4 "oder 1/2" Sperrholz Zwei 16 1/2 "Pieces of 2 1/2 X 3/4" Holz Zwei 7 1/2 "Pieces of 2 1/2 X 3/4 "Holz One 13" Piece of 2 "x 2" One 4 "Piece of 2" x 2 "Schrauben 1/8 "X 18" der Stahlstange ein Kugelfestplatte Magnet Angelschnur oder Thin Kabel 2 "x 2" Stück 1/4 "Metall Gravel Arduino Brotschneidebrett- LM6386-N Jumper Wires Python mit pygame und plotly Bibliothek (siehe letzte Schritt) Tools Heißklebepistole Bohrmaschine und Bohrer Bench Grinder Zentrum PunchStep 2: The Base Um die Basisstart durch Aneinanderreihung der vier 2 1/2 "x 3/4" Holzstücke, um ein Rechteck zu machen, wie gezeigt werden. Weiter eine Vorbohrung 3/8 "vom Rand der kürzeren Holzstücken und in die Enden der längeren Stücke Schließlich schrauben Sie die vier Stücke zusammen mit den Vorbohrungen tho machen ein Rechteck. Schritt 3:. Der Arm Um den Arm zu Beginn durch Bohren drei 1/16 "Löcher etwa 3/4" auseinander in der Mitte des 4 machen "Stück 2X2 (siehe zweites Bild). Weiter eine Vorbohrung in der Spitze des 13" 2X2 und das entgegengesetzte Ende der 4 "2X2 aus den drei Löchern. Schließlich schrauben Sie die beiden Stücke mit der Pilotbohrung, um eine L-Form zu machen. Schritt 4: Das Scharnier Um das Scharnier Start durch Bohren eines Loches mit einem 7/64 "Bit so tief wie der spitze Teil des Bits in der Mitte des Metallstück zu machen. Dann bohren Sie ein Loch, das groß genug für eine Schraube ist es, wenn etwa 1 übergeben / 4 "von der Kante weg und wiederholen Sie für die gegenüberliegende Kante. Schließlich schrauben Sie die Metallplatte in den Arm 4 "von unten (siehe letztes Bild) .Schritt 5: Montage des Basis Um die Basis montieren Schraube gerade die L-förmige Arm in die Mitte der kürzeren Kante der Stück Sperrholz mit Vorbohrungen. Schritt 6: Der Boom Alle 7 Artikel anzeigen Beginnen Sie mit sharping einem Ende der 1/8 "Stange mit einem Schleifbock oder Dremel. Dann wurde unter Verwendung der Mitte-Stanzmarkierung ein Loch ca. 2 1/2" aus dem unsharpened Ende der Stange und dann bohren Sie ein 1/16 " Loch wenn die Stange (siehe zweites Bild). Dann schneiden Sie 2 1/2 'dünner Kabel oder Angelschnur und Futter über einen Zoll, obwohl das Loch Sie gerade gebohrt und dann biegen Sie die ein Zoll Teil des Drahtes so dass es parallel zu der Stab und Klebeband er einrastet (zweites Bild). Danach, Heißkleber die Festplatte Magneten anstelle wie in der zweiten und dritten Bild gezeigt. Jetzt werden wir beginnen, das Gegengewicht, zuerst die Kugel halbieren und Bohrer eine 1/8 "Loch in der Mitte von einer der Hälften. Nächste Folie die unsharpened Ende der Stange durch das Loch in der Kugel, bis sie die das Klebeband hält das Kabel an Ort und Stelle und dann Heißkleber die Halbkugel statt (vorletzte Bild) erreicht. Schließlich füllen Sie die Halbkugel auf der Stange mit Kies oder Sand und Heißkleber die beiden Hälften zusammen. Schritt 7: Das Rückkopplungssystem Um die Rückkopplungssystem machen, starten, indem Sie diesem instructable bis zu Schritt drei. Weiter führen die Leitung vom Boom wenn die Löcher in den Arm, wie im zweiten Bild gezeigt und dann säumen das spitze Ende des Auslegers mit der flachen Loch in der Metallplatte, wie im dritten Bild gezeigt und stellen Sie die Kabel bis zum Boom waagerecht und stellen Sie den oberen Teil des Armes durch Lösen der oberen Schraube und Bewegen der Spitze des Armes, bis sich der Ausleger gerade. Schließlich messen, wie hoch über dem Boden der Magnet auf dem Ausleger ist und subtrahieren die Höhe des Transformators sowie 1/8 "und schneiden Sie einen 2X2, die Länge und dann Heißkleber der Transformator an einem Ende der 2X2. Schritt 8: Final Assembly Alle 7 Artikel anzeigen Beginnen Sie mit der Schlange, die 2X2 mit dem Transformator mit dem Magneten auf dem Ausleger und Kennzeichnung, dass vor Ort mit einem Filzstift. Als nächstes bohren Sie zwei Führungsbohrungen in der Gegend Sie gerade markiert und in das Ende der 2X2 und schrauben Sie dann die in 2X2 mit den Vorbohrungen zu Ort. Danach schrauben Sie die Sperrholz-Plattform auf die 2 1/2 "x 3/4" Basis mit einer Schraube in jedem corner.Step 9: Die Elektronik Beginnen Sie mit der Befestigung Drahtbrücken an den Transformator und dann haken Sie den Arduino, wie in dem ersten Bild durch Einhängen des Mikrofons mit den Leitungen vom transformer.Step 10 gezeigt: Die Arduino Sketch Sobald Sie hochgeladen haben, die Skizze, um den Arduino öffnen Sie die serielle Monitor, wenn alles, was Sie sehen, ist, X, wenn die Seismographen nicht bewegt, dann brauchen Sie nicht, etwas (Bild 3) zu ändern. Wenn Zahlen sind abwechselnd an der seriellen Schnittstelle (Bild 2) ersetzen Sie dann 581 in der if-Anweisung mit dem größeren der beiden Zahlen auf dem seriellen Port und 580 mit dem kleineren. Schritt 11: Das Python-Skript Um das Python-Skript verwenden müssen pygame und plotly Bibliotheken und eine plotly Konto. Um das Skript funktioniert müssen Sie nur noch auf "serielle Schnittstelle" on line drei mit der seriellen Schnittstelle Arduino verbunden ist, um die in der unteren linken Ecke des Arduino-IDE zu finden sind zu ersetzen. Sie haben auch auf "Benutzername" mit Ihrem Benutzernamen und plotly API-Schlüssel mit Ihrem plotly API-Schlüssel gefunden zu ersetzen hier .

              3 Schritt:Schritt 1: Der Python-Programm Schritt 2: Der Raw-Code Schritt 3: Bearbeiten des Codes

              Sehen Sie dieses Video in HD! Diese instructable zeigen Ihnen, wie man die instructables Roboter starten Sie das Harlem Shake (mit Musik), und, wenn die Bass-Tropfen, machen die ganze Anblick verrückt. Internet Explorer und Firefox-Versionen Demnächst. Dies ist nur für Chrome für jetzt. Was haben Sie zu machen? Ich habe ein Python-Programm, das 914 Zeilen lang, der automatisch an die Website, die Sie es zu programmieren ist (es geht direkt auf instructables.com, wenn Sie sich nicht an meine Schritte, um den Code zu bearbeiten) und macht die Website mach den Harlem Shake. Im instructables Version, ist sie die instructables Roboter starten Sie den Tanz und dann alles andere schließt sich. Wie haben Sie es geschafft? Ich machte es, indem sie jeden Tag ein wenig Zeit, um über das Programm zu arbeiten. Ich bin nur zu lernen, java, so verbrachte ich stundenlang auf der Suche durch python-Handbücher und Code-Verzeichnisse. Meine Pläne entwickelt, wie ich daran gearbeitet und es zu einer 914 Linie langes Programm (ich fand ein paar Abkürzungen) ging von einer 12.000 Linie Kür. Woher hast du es? Ich habe diese ganze Projekt zu Hause, ein paar Stunden aus meiner Hausaufgaben Zeit darauf (schlechte Idee). Ich musste außerschulische Aktivitäten, Hausaufgaben und das Projekt auszugleichen, in der Tat, ich wahrscheinlich werden jetzt tue mein AP Informatik Hausaufgaben ... Was haben Sie gelernt? Im Laufe dieses Projektes, ich ziemlich viel gelernt, eine ganze neue Sprache (abgesehen von Ähnlichkeiten zu Java). Ich lernte auch eine Menge aus, dass ihr meinem Programm zu debuggen. Als eine neue Python-Programmierer, hatte ich viele Fehler, die ich hatte, um zu arbeiten und zu lernen. Ich bin sehr stolz, dass ich dieses Programm durchgeführt, bevor die Harlem Schütteln wurde ein Ding der Vergangenheit. Wenn ich es wieder tun hätte, würde ich versuchen, den Code zu komprimieren, so dass es wäre einfacher zu programmieren. Schritt 1: Der Python-Programm Dies dauerte viele Stunden in Anspruch, aber konstruktive Kritik wäre toll, besonders wenn Sie ein Python-Programmierer, die helfen können, um den Code zu kondensieren sind. Im Folgenden ist der Python-Code: Import ctypes Importzeit Import-Webbrowser webbrowser.open ('http://www.instructables.com') LONG = ctypes.c_long DWORD = ctypes.c_ulong ULONG_PTR = ctypes.POINTER (DWORD) WORD = ctypes.c_ushort Klasse MOUSEINPUT (ctypes.Structure): _fields_ = (("dx", LONG) ('dy', LONG) ('mouseData', DWORD), ('dwFlags', DWORD), ("Zeit", DWORD), ('dwExtraInfo', ULONG_PTR)) Klasse KEYBDINPUT (ctypes.Structure): _fields_ = (("WVK ', WORD), ('wScan', WORD), ('dwFlags', DWORD), ("Zeit", DWORD), ('dwExtraInfo', ULONG_PTR)) Klasse HARDWAREINPUT (ctypes.Structure): _fields_ = (('uMsg', DWORD), ('wParamL', WORD), ('wParamH', WORD)) Klasse _INPUTunion (ctypes.Union): _fields_ = (('mi', MOUSEINPUT) ('ki', KEYBDINPUT) ('hallo', HARDWAREINPUT)) Klasse INPUT (ctypes.Structure): _fields_ = (("Typ", DWORD), ("Union", _INPUTunion)) def Sendinput (* Eingänge): nInputs = len (Eingänge) LPINPUT = INPUT * nInputs pInputs = LPINPUT (* Eingänge) cbSize = ctypes.c_int (ctypes.sizeof (INPUT)) Rück ctypes.windll.user32.SendInput (nInputs, pInputs, cbSize) INPUT_MOUSE = 0 INPUT_KEYBOARD = 1 INPUT_HARDWARD = 2 def Input (Struktur): wenn isinstance (Struktur, MOUSEINPUT): Rück INPUT (INPUT_MOUSE, _INPUTunion (mi = Struktur)) wenn isinstance (Struktur, KEYBDINPUT): Rück INPUT (INPUT_KEYBOARD, _INPUTunion (ki = Struktur)) wenn isinstance (Struktur, HARDWAREINPUT): Rück INPUT (INPUT_HARDWARE, _INPUTunion (hallo = Struktur)) erhöhen Typeerror ("Kann-Input-Struktur nicht zu schaffen! ') WHEEL_DELTA = 120 XButton1 = 0x0001 XButton2 = 0x0002 MOUSEEVENTF_ABSOLUTE = 0x8000 MOUSEEVENTF_HWHEEL = 0x01000 MOUSEEVENTF_MOVE = 0x0001 MOUSEEVENTF_MOVE_NOCOALESCE = 0x2000 MOUSEEVENTF_LEFTDOWN = 0x0002 MOUSEEVENTF_LEFTUP = 0x0004 MOUSEEVENTF_RIGHTDOWN = 0x0008 MOUSEEVENTF_RIGHTUP = 0x0010 MOUSEEVENTF_MIDDLEDOWN = 0x0020 MOUSEEVENTF_MIDDLEUP = 0x0040 MOUSEEVENTF_VIRTUALDESK = 0x4000 MOUSEEVENTF_WHEEL = 0x0800 MOUSEEVENTF_XDOWN = 0x0080 MOUSEEVENTF_XUP = 0x0100 def MouseInput (Fahnen, x, y, Daten): Rück MOUSEINPUT (x, y, Daten, Merker, 0, None) VK_LBUTTON = 0x01 # Linke Maustaste VK_RBUTTON = 0x02 # Rechte Maustaste VK_CANCEL = 0x03 # Control-Break-Verarbeitung VK_MBUTTON = 0x04 # Mittlere Maustaste (Drei-Tasten-Maus) VK_XBUTTON1 = 0x05 # X1 Maustaste VK_XBUTTON2 = 0x06 # X2 Maustaste VK_BACK = 0x08 # RÜCKTASTE VK_TAB = 0x09 # TAB-Taste VK_CLEAR = 0x0C # CLEAR-Taste VK_RETURN = 0x0D # ENTER-Taste VK_SHIFT = 0x10 # SHIFT-Taste VK_CONTROL = 0x11 # STRG-Taste VK_MENU = 0x12 # ALT-Taste VK_PAUSE = 0x13 # PAUSE-Taste VK_CAPITAL = 0x14 # Feststelltaste VK_KANA = 0x15 # IME Kana-Modus VK_HANGUL = 0x15 # IME Hangul-Modus VK_JUNJA = 0x17 # IME Junja Modus VK_FINAL = 0x18 # IME endgültigen Modus VK_HANJA = 0x19 # IME Hanja-Modus VK_KANJI = 0x19 # IME Kanji-Modus VK_ESCAPE = 0x1B # ESC-Taste VK_CONVERT = 0x1C # IME convert VK_NONCONVERT = 0x1D # IME nonconvert VK_ACCEPT = 0x1E # IME akzeptieren VK_MODECHANGE = 0x1F # IME-Modus Änderungsanforderung VK_SPACE = 0x20 # LEER VK_PRIOR = 0x21 # PAGE UP-Taste VK_NEXT = 0x22 #-ab-Taste VK_END = 0x23 # END-Taste VK_HOME = 0x24 # HOME-Taste VK_LEFT = 0x25 # links-Taste VK_UP = 0x26 # OBEN-TASTE VK_RIGHT = 0x27 #-rechts-Taste VK_DOWN = 0x28 #-unten-Taste VK_SELECT = 0x29 # SELECT-Taste VK_PRINT = 0x2A # Taste PRINT VK_EXECUTE = 0x2B # EXECUTE-Taste VK_SNAPSHOT = 0x2C # Druck-Taste VK_INSERT = 0x2D # INS-Taste VK_DELETE = 0x2E # DEL-Taste VK_HELP = 0x2F # HELP-Taste VK_LWIN = 0x5B # Linke Windows-Taste (Natural Keyboard) VK_RWIN = 0x5C # rechten Windows-Taste (Natural Keyboard) VK_APPS = 0x5D # Taste Anwendungen (Natural Keyboard) VK_SLEEP = 0x5F # Computer-Sleep-Taste VK_NUMPAD0 = 0x60 # Numerische Tastatur Taste 0 VK_NUMPAD1 = 0x61 # Numerische Tastatur Taste 1 VK_NUMPAD2 = 0x62 # Numerische Tastatur Taste 2 VK_NUMPAD3 = 0x63 # Ziffernblock 3 Schlüssel VK_NUMPAD4 = 0x64 # Numerische Tastatur Taste 4 VK_NUMPAD5 = 0x65 # Numerische Tastatur Taste 5 VK_NUMPAD6 = 0x66 # Numerische Tastatur 6 Schlüssel VK_NUMPAD7 = 0x67 # Numerische Tastatur Taste 7 VK_NUMPAD8 = 0x68 # Numerische Tastatur Taste 8 VK_NUMPAD9 = 0x69 # Numerische Tastatur Taste 9 VK_MULTIPLY = 0x6A # Multiply Schlüssel VK_ADD = 0x6B Taste # hinzufügen VK_SEPARATOR = 0x6C # Separator Schlüssel VK_SUBTRACT = 0x6D # Subtrahieren Schlüssel VK_DECIMAL = 0x6E # Dezimaltaste VK_DIVIDE = 0x6F # Dividieren Schlüssel VK_F1 = 0x70 # Taste F1 VK_F2 = 0x71 # Taste F2 VK_F3 = 0x72 # Taste F3 VK_F4 = 0x73 # Taste F4 VK_F5 = 0x74 # Taste F5, VK_F6 = 0x75 # Taste F6 VK_F7 = 0x76 # Taste F7 VK_F8 = 0x77 # Taste F8 VK_F9 = 0x78 # Taste F9 VK_F10 = 0x79 # F10-Taste VK_F11 = 0x7A # F11-Taste VK_F12 = 0x7B # F12-Taste VK_F13 = 0x7C # F13-Taste VK_F14 = 0x7D # F14-Taste VK_F15 = 0x7E # F15-Taste VK_F16 = 0x7F # F16-Taste VK_F17 = 0x80 # F17-Taste VK_F18 = 0x81 # F18-Taste VK_F19 = 0x82 # F19-Taste VK_F20 = 0x83 # F20-Taste VK_F21 = 0x84 # F21-Taste VK_F22 = 0x85 # F22-Taste VK_F23 = 0x86 # F23-Taste VK_F24 = 0x87 # F24-Taste VK_NUMLOCK = 0x90 # NUM-Taste VK_SCROLL = 0x91 # Rollen-Taste VK_LSHIFT = 0xA0 # linke Shift-Taste VK_RSHIFT = 0xA1 # rechte Shift-Taste VK_LCONTROL = 0xA2 # linke Steuerungstaste VK_RCONTROL = 0xA3 # rechte Steuerungstaste VK_LMENU = 0xA4 # linke Menütaste VK_RMENU = 0xA5 # rechte Menütaste VK_BROWSER_BACK = 0xA6 # Browser Zurück-Taste VK_BROWSER_FORWARD = 0xA7 # Browser Vorwärts-Taste VK_BROWSER_REFRESH = 0xA8 # Browser Refresh-Taste VK_BROWSER_STOP = 0xA9 # Browser Stop-Taste VK_BROWSER_SEARCH = 0xAA # Browser Suchschlüssel VK_BROWSER_FAVORITES = 0xAB # Browser Favoriten Schlüssel VK_BROWSER_HOME = 0xac # Browser starten und die Home-Taste VK_VOLUME_MUTE = 0xAD # Volume Mute-Taste VK_VOLUME_DOWN = 0xAE # Taste Lautstärke verringern VK_VOLUME_UP = 0xAF # Taste Lautstärke erhöhen VK_MEDIA_NEXT_TRACK = 0xB0 # Next Track-Taste VK_MEDIA_PREV_TRACK = 0xB1 # Vorherige Titelschlüssel VK_MEDIA_STOP = 0xB2 # Stopp Medienschlüssel VK_MEDIA_PLAY_PAUSE = 0xB3 # Play / Pause-Taste Medien VK_LAUNCH_MAIL = 0xB4 # Starten Sie Mail-Taste VK_LAUNCH_MEDIA_SELECT = 0xB5 # Wählen Sie die Medientaste VK_LAUNCH_APP1 = 0xB6 # Anwendung starten 1 Taste VK_LAUNCH_APP2 = 0xB7 # Anwendung starten 2 Schlüssel VK_OEM_1 = 0xBA # Wird für sonstige Zeichen; sie kann durch Tastatur variieren. # Für die US-Standardtastatur, die ';:' drücken VK_OEM_PLUS = 0xBB # Für jedes Land / die Region, die '+' Taste VK_OEM_COMMA = 0xBC # Für jedes Land / die Region, die "," Schlüssel VK_OEM_MINUS = 0xBD # Für jedes Land / die Region, die "-" Taste VK_OEM_PERIOD = 0xBE # Für jedes Land / die Region, die '.' Schlüssel VK_OEM_2 = 0xBF # Wird für sonstige Zeichen; sie kann durch Tastatur variieren. # Für die US-Standardtastatur, die "/?" Schlüssel VK_OEM_3 = 0xC0 # Wird für sonstige Zeichen; sie kann durch Tastatur variieren. # Für die US-Standardtastatur, die '`~' drücken VK_OEM_4 = 0xDB # Wird für sonstige Zeichen; sie kann durch Tastatur variieren. # Für die US-Standardtastatur, die "[{'key VK_OEM_5 = 0xDC # Wird für sonstige Zeichen; sie kann durch Tastatur variieren. # Für die US-Standardtastatur, die '\ |' drücken VK_OEM_6 = 0xDD # Wird für sonstige Zeichen; sie kann durch Tastatur variieren. # Für die US-Standardtastatur, die ']}' Schlüssel VK_OEM_7 = 0xDE # Wird für sonstige Zeichen; sie kann durch Tastatur variieren. # Für die US-Standardtastatur, die "einfachen Anführungszeichen / doppelten Anführungszeichen 'Schlüssel VK_OEM_8 = 0xDF # Wird für sonstige Zeichen; sie kann durch Tastatur variieren. VK_OEM_102 = 0xE2 # Entweder die spitze Klammer-Taste oder der Backslash-Taste auf der RT-102-Tasten-Tastatur VK_PROCESSKEY = 0xE5 # IME PROCESS Schlüssel VK_PACKET = 0xE7 # verwendet, um Unicode-Zeichen übergeben, als ob sie Tastatureingaben waren. Die VK_PACKET Schlüssel ist das Low-Wort eines 32-Bit-Virtual Key-Wert für nicht-Tastatureingabemethoden verwendet. Für weitere Informationen siehe Anmerkung in KEYBDINPUT, Sendinput, WM_KEYDOWN und WM_KEYUP VK_ATTN = 0xF6 # Attn Schlüssel VK_CRSEL = 0xF7 # CrSel Schlüssel VK_EXSEL = 0xF8 # EXSEL Schlüssel VK_EREOF = 0xF9 # Erase EOF Schlüssel VK_PLAY = 0xFA # Play-Taste VK_ZOOM = 0xFB # Zoom-Taste VK_PA1 = 0xFD # PA1 Schlüssel VK_OEM_CLEAR = 0xFE # Löschen-Taste KEYEVENTF_EXTENDEDKEY = 0x0001 KEYEVENTF_KEYUP = 0x0002 KEYEVENTF_SCANCODE = 0x0008 KEYEVENTF_UNICODE = 0x0004 KEY_0 = 0x30 KEY_1 = 0x31 KEY_2 = 0x32 Taster 3 = 0x33 KEY_4 = 0x34 KEY_5 = 0x35 KEY_6 = 0x36 KEY_7 = 0x37 KEY_8 = 0x38 KEY_9 = 0x39 KEY_A = 0x41 KEY_B = 0x42 KEY_C = 0x43 KEY_D = 0x44 KEY_E = 0x45 KEY_F = 0x46 KEY_G = 0x47 KEY_H = 0x48 KEY_I = 0x49 KEY_J = 0x4A KEY_K = 0x4B KEY_L = 0x4C KEY_M = 0x4D KEY_N = 0x4E KEY_O = 0x4F KEY_P = 0x50 KEY_Q = 0x51 KEY_R = 0x52 KEY_S = 0x53 KEY_T = 0x54 KEY_U = 0x55 KEY_V = 0x56 KEY_W = 0x57 KEY_X = 0x58 KEY_Y = 0x59 KEY_Z = 0x5A Importserien Import-Codecs Import ctypes Importzeit von Zeit import Schlaf Send = ctypes.windll.user32.SendInput PUL = ctypes.POINTER (ctypes.c_ulong) Klasse KeyBdInput (ctypes.Structure): _fields_ = [("WVK", ctypes.c_ushort) ("wScan", ctypes.c_ushort) ("dwFlags", ctypes.c_ulong) ("Zeit", ctypes.c_ulong) ("dwExtraInfo", PUL)] Klasse HardwareInput (ctypes.Structure): _fields_ = [("uMsg" ctypes.c_ulong) ("wParamL", ctypes.c_short) ("wParamH", ctypes.c_ushort)] Klasse MouseInput (ctypes.Structure): _fields_ = [("dx", ctypes.c_long) ("dy" ctypes.c_long) ("mouseData", ctypes.c_ulong) ("dwFlags", ctypes.c_ulong) ("Zeit", ctypes.c_ulong) ("dwExtraInfo", PUL)] Klasse Input_I (ctypes.Union): _fields_ = [("ki", KeyBdInput) ("mi", MouseInput) ("Hallo", HardwareInput)] Klasse Input (ctypes.Structure): _fields_ = [("Typ", ctypes.c_ulong) ("ii", Input_I)] def PressKey (hexKeyCode): Extra = ctypes.c_ulong (0) II_ = Input_I () ii_.ki = KeyBdInput (hexKeyCode, 0x48, 0, 0, ctypes.pointer (extra)) x = Input (ctypes.c_ulong (1), II_) ctypes.windll.user32.SendInput (1, ctypes.pointer (x), ctypes.sizeof (x)) def ReleaseKey (hexKeyCode): Extra = ctypes.c_ulong (0) II_ = Input_I () ii_.ki = KeyBdInput (hexKeyCode, 0x48, 0x0002, 0, ctypes.pointer (extra)) x = Input (ctypes.c_ulong (1), II_) ctypes.windll.user32.SendInput (1, ctypes.pointer (x), ctypes.sizeof (x)) def KeybdInput (Code, Fahnen): Rück KEYBDINPUT (Code, Code, Fahnen, 0, None) def HardwareInput (Nachricht, Parameter): Rück HARDWAREINPUT (Nachricht & 0xFFFFFFFF, Parameter & 0xFFFF, Parameter >> 16 & 0xFFFF) def Mouse (Fahnen, x = 0, y = 0, Daten = 0): Rück Input (MouseInput (Fahnen, x, y, Daten)) def Keyboard (Code, Flaggen = 0): Rück Input (KeybdInput (Code, Fahnen)) def Hardware (Nachricht, Parameter = 0): Rück Input (HardwareInput (Nachricht, Parameter)) #pressFunctions ################## def PA (): PressKey (KEY_A) def PB (): PressKey (KEY_B) def PC (): PressKey (KEY_C) def PD (): PressKey (KEY_D) def PE (): PressKey (KEY_E) def PF (): PressKey (KEY_F) def PG (): PressKey (KEY_G) def PH (): PressKey (KEY_H) def PI (): PressKey (KEY_I) def PJ (): PressKey (KEY_J) def PK (): PressKey (KEY_K) def PL (): PressKey (KEY_L) def PM (): PressKey (KEY_M) def PN (): PressKey (KEY_N) def PO (): PressKey (KEY_O) def PP (): PressKey (KEY_P) def PQ (): PressKey (KEY_Q) def PR (): PressKey (KEY_R) def PS (): PressKey (KEY_S) def PT (): PressKey (KEY_T) def PU (): PressKey (KEY_U) def PV (): PressKey (KEY_V) def PW (): PressKey (KEY_W) def PX (): PressKey (KEY_X) def PY (): PressKey (KEY_Y) def PZ (): PressKey (KEY_Z) def PCTRL (): PressKey (VK_CONTROL) def Pshift (): PressKey (VK_SHIFT) def PCOLON (): PressKey (VK_OEM_1) def PQUOTE (): PressKey (VK_OEM_7) def POPENBRACKET (): PressKey (VK_OEM_4) def PCLOSEBRACKET (): PressKey (VK_OEM_6) def PBACKSLASH (): PressKey (VK_OEM_2) def PPLUS (): PressKey (VK_OEM_PLUS) def PMINUS (): PressKey (VK_OEM_MINUS) def P0 (): PressKey (KEY_0) def P1 (): PressKey (KEY_1) def P2 (): PressKey (KEY_2) def P3 (): PressKey (Taster 3) def P4 (): PressKey (KEY_4) def P5 (): PressKey (KEY_5) def P6 (): PressKey (KEY_6) def P7 (): PressKey (KEY_7) def P8 (): PressKey (KEY_8) def P9 (): PressKey (KEY_9) def PSPACE (): PressKey (VK_SPACE) def PENTER (): PressKey (VK_RETURN) def PPERIOD (): PressKey (VK_OEM_PERIOD) def PCOMMA (): PressKey (VK_OEM_COMMA) def PFOREWARDSLASH (): PressKey (VK_OEM_5) def PF12 (): PressKey (VK_F12) ################################ #releaseFunctions ################# def RA (): ReleaseKey (KEY_A) def RB (): ReleaseKey (KEY_B) def RC (): ReleaseKey (KEY_C) def RD (): ReleaseKey (KEY_D) def RE (): ReleaseKey (KEY_E) def RF (): ReleaseKey (KEY_F) def RG (): ReleaseKey (KEY_G) def RH (): ReleaseKey (KEY_H) def RI (): ReleaseKey (KEY_I) def RJ (): ReleaseKey (KEY_J) def RK (): ReleaseKey (KEY_K) def RL (): ReleaseKey (KEY_L) def RM (): ReleaseKey (KEY_M) def RN (): ReleaseKey (KEY_N) def RO (): ReleaseKey (KEY_O) def RP (): ReleaseKey (KEY_P) def RQ (): ReleaseKey (KEY_Q) def RR (): ReleaseKey (KEY_R) def RS (): ReleaseKey (KEY_S) def RT (): ReleaseKey (KEY_T) def RU (): ReleaseKey (KEY_U) def RV (): ReleaseKey (KEY_V) def RW (): ReleaseKey (KEY_W) def RX (): ReleaseKey (KEY_X) def RY (): ReleaseKey (KEY_Y) def RZ (): ReleaseKey (KEY_Z) def RCTRL (): ReleaseKey (VK_CONTROL) def RSHIFT (): ReleaseKey (VK_SHIFT) def RCOLON (): ReleaseKey (VK_OEM_1) def rquote (): ReleaseKey (VK_OEM_7) def RCOLON (): ReleaseKey (VK_OEM_1) def rquote (): ReleaseKey (VK_OEM_7) def ROPENBRACKET (): ReleaseKey (VK_OEM_4) def RCLOSEBRACKET (): ReleaseKey (VK_OEM_6) def RBACKSLASH (): ReleaseKey (VK_OEM_2) def RPLUS (): ReleaseKey (VK_OEM_PLUS) def RMINUS (): ReleaseKey (VK_OEM_MINUS) def R0 (): ReleaseKey (KEY_0) def R1 (): ReleaseKey (KEY_1) def R2 (): ReleaseKey (KEY_2) def R3 (): ReleaseKey (Taster 3) def R4 (): ReleaseKey (KEY_4) def R5 (): ReleaseKey (KEY_5) def R6 (): ReleaseKey (KEY_6) def R7 (): ReleaseKey (KEY_7) def R8 (): ReleaseKey (KEY_8) def R9 (): ReleaseKey (KEY_9) def RSPACE (): ReleaseKey (VK_SPACE) def MIETER (): ReleaseKey (VK_RETURN) def RPERIOD (): ReleaseKey (VK_OEM_PERIOD) def RCOMMA (): ReleaseKey (VK_OEM_COMMA) def RFOREWARDSLASH (): ReleaseKey (VK_OEM_5) def RF12 (): ReleaseKey (VK_F12) ################################## time.sleep (3) #Open Konsole ################################# PCTRL () Pshift () PJ () RCTRL () RSHIFT () RJ () ############################################# String = "javascript: (function () {Funktion c () {var e=document.createElement("link");e.setAttribute("type","text/css");e.setAttribute("rel","stylesheet");e.setAttribute("href",f);e.setAttribute("class",l);document.body.appendChild(e)}function h () {var e = document.getElementsByClassName (l); for (var t = 0; t <e.length; t ++) {document.body.removeChild (e [t])}} p () {var e=document.createElement("div");e.setAttribute("class",a);document.body.appendChild(e);setTimeout(function(){document.body.removeChild(e)},100)}function d (e) {return {height: e.offsetHeight, Breite: e.offsetWidth}} Funktion v (i) {var s = d (i); s.height zurückkehren> e && s.height <n && s.width> t && s.width <r} Funktion m (e) {var t = e; var n = 0; while (!! t) {n + = t.offsetTop; t = t.offsetParent} return n} Funktion g () {var e = Dokument .documentElement; if (!! window.innerWidth) {return window.innerHeight} else if {return e.clientHeight} return 0} Funktion y () {if (window.pageYOffset) {(e && isNaN (e.clientHeight)!) Rück window.pageYOffset} return Math.max (document.documentElement.scrollTop, document.body.scrollTop)} function E (e) {var t = m (e); Rückkehr t> = w && t <= b + w} Funktion S () {var e=document.createElement("audio");e.setAttribute("class",l);e.src=i;e.loop=false;e.addEventListener("canplay",function(){setTimeout(function(){x(k)},500);setTimeout(function(){N();p();for(var e=0;e<O.length;e++){T(O[e])}},15500)},true);e.addEventListener("ended",function(){N();h()},true);e.innerHTML=" <p> Wenn Sie dies lesen, ist es, weil Ihr Browser nicht über die Audio-Element unterstützen Wir empfehlen Ihnen, sich ein neues Browser bekommen </ p> <p> ";.. document.body.appendChild (e); e. play ()} x (e) {e.className + = "" + s + "" + o} function T (e) {e.className + = "" + s + "" + u [Math.floor (Math.random ( ) * u.length)]} Funktion N () {var e = document.getElementsByClassName (e); var t = new RegExp ("\\\\ b" + s + "\\\\ b"); for (var n = 0; n <e.length;) {e [n] .classname = e [n] .className.replace (t "")}} var e = 30; var t = 30; var n = 350; var r = 350; var i = "// s3.amazonaws.com/moovweb-marketing/playground/harlem-shake.mp3";var s =" mw-harlem_shake_me "; var o =" im_first "; var u = [ "im_drunk", "im_baked", "im_trippin", "im_blown"]; var a = "mw-strobe_light"; var f = "// s3.amazonaws.com/moovweb-marketing/playground/harlem-shake-style. CSS "; var l =" mw_added_css "; var b = g (); var w = y (); var C = document.getElementsByTagName (" * "); var k = null; for (var L = 0; L < C.length; L ++) {var A = C [L], und wenn (v (A)) {if (E (A)) {k = A; Pause}}} if (A === null) {Konsole. warnen ("einen Knoten in der richtigen Größe nicht gefunden Bitte versuchen Sie eine andere Seite..");} Rück c (); S (); var O = []; for (var L = 0; L <C.length ; L ++) {var A = C [L], und wenn (v (A)) {O.push (A)}}}) () ' time.sleep (3) für Buchstabe in STRING: #check Briefe if (Brief == 'a'): PA () RA () if (Brief == 'A'): Pshift () PA () RA () RSHIFT () if (Brief == 'b'): PB () RB () if (Brief == 'B'): Pshift () PB () RB () RSHIFT () if (Brief == 'c'): PC () RC () if (Brief == 'C'): Pshift () PC () RC () RSHIFT () if (Brief == 'D'): PD () RD () if (Brief == 'D'): Pshift () PD () RD () RSHIFT () if (letter == 'e'): PE () RE () if (letter == 'E'): Pshift () PE () RE () RSHIFT () if (Brief == 'f'): PF () RF () if (Brief == 'F'): Pshift () PF () RF () RSHIFT () if (Brief == 'g'): PG () RG () if (Brief == 'G'): Pshift () PG () RG () RSHIFT () if (Brief == 'h'): PH () RH () if (Brief == 'H'): Pshift () PH () RH () RSHIFT () if (Brief == 'i'): PI () RI () if (Brief == 'I'): Pshift () PI () RI () RSHIFT () if (Brief == 'j'): PJ () RJ () if (Brief == 'J'): Pshift () PJ () RJ () RSHIFT () if (Brief == 'k'): PK () RK () if (Brief == 'K'): Pshift () PK () RK () RSHIFT () if (Brief == 'l'): PL () RL () if (Brief == 'L'): Pshift () PL () RL () RSHIFT () if (Brief == "m"): PM () RM () if (Brief == 'M'): Pshift () PM () RM () RSHIFT () if (Brief == 'n'): PN () RN () if (Brief == 'N'): Pshift () PN () RN () RSHIFT () if (Brief == 'o'): PO () RO () if (Brief == 'O'): Pshift () PO () RO () RSHIFT () if (Brief == 'p'): PP () RP () if (Brief == 'P'): Pshift () PP () RP () RSHIFT () if (Brief == 'q'): PQ () RQ () if (Brief == 'Q'): Pshift () PQ () RQ () RSHIFT () if (Brief == 'r'): PR () RR () if (Brief == 'R'): Pshift () PR () RR () RSHIFT () if (Brief == 's'): PS () RS () if (Brief == 'S'): Pshift () PS () RS () RSHIFT () if (Brief == 't'): PT () RT () if (Brief == 'T'): Pshift () PT () RT () RSHIFT () if (Brief == 'u'): PU () RU () if (Brief == 'U'): Pshift () PU () RU () RSHIFT () if (Brief == 'v'): PV () RV () if (Brief == 'V'): Pshift () PV () RV () RSHIFT () if (Brief == 'w'): PW () RW () if (Brief == 'W'): Pshift () PW () RW () RSHIFT () if (Brief == 'X'): PX () RX () if (letter == 'X'): Pshift () PX () RX () RSHIFT () if (Brief == 'y'): PY () RY () if (Brief == 'Y'): Pshift () PY () RY () RSHIFT () if (Brief == 'z'): PZ () RZ () if (Brief == 'Z'): Pshift () PZ () RZ () RSHIFT () ################################## #Special Charaktere ############### if (Brief == '\\'): PFOREWARDSLASH () RFOREWARDSLASH () if (Brief == '*'): Pshift () P8 () R8 () RSHIFT () if (Brief == ':'): Pshift () PCOLON () RCOLON () RSHIFT () if (Brief == '' "): Pshift () PQUOTE () Rquote () RSHIFT () if (Brief == '('): Pshift () P9 () R9 () RSHIFT () if (Brief == ')'): Pshift () P0 () R0 () RSHIFT () if (Brief == '{'): Pshift () POPENBRACKET () ROPENBRACKET () RSHIFT () if (Brief == '}'): Pshift () PCLOSEBRACKET () RCLOSEBRACKET () RSHIFT () if (Brief == "" "): PQUOTE () Rquote () if (Brief == '/'): PBACKSLASH () RBACKSLASH () if (Brief == ';'): PCOLON () RCOLON () if (Brief == '='): PPLUS () RPLUS () if (Brief == '+'): Pshift () PPLUS () RPLUS () RSHIFT () if (Brief == '_'): Pshift () PMINUS () RMINUS () RSHIFT () if (Brief == '-'): PMINUS () RMINUS () if (Brief == '['): POPENBRACKET () ROPENBRACKET () if (Brief == ']'): PCLOSEBRACKET () RCLOSEBRACKET () if (Brief == '&'): Pshift () P7 () R7 () RSHIFT () if (Brief == '<'): Pshift () PCOMMA () RCOMMA () RSHIFT () if (Brief == '>'): Pshift () PPERIOD () RPERIOD () RSHIFT () if (Brief == ''): Pshift () P1 () R1 () RSHIFT () if (Brief == ","): PCOMMA () RCOMMA () if (Brief == '.'): PPERIOD () RPERIOD () ################################# #Numbers ######################### if (Brief == '0'): P0 () R0 () if (Brief == '1'): P1 () R1 () if (Brief == "2"): P2 () R2 () if (letter == '3'): P3 () R3 () if (Brief == '4'): P4 () R4 () if (Brief == '5'): P5 () R5 () if (Brief == '6'): P6 () R6 () if (Brief == '7'): P7 () R7 () if (Brief == '8'): P8 () R8 () if (Brief == '9'): P9 () R9 () ################################# #space ########################### if (Brief == ''): PSPACE () RSPACE () ################################# #Sumbit ########################## PENTER () MIETER () PF12 () RF12 () ################################# Schritt 2: Der Raw-Code Dies ist der Roh-Code zum direkten Einfügen. Um es auf diese Weise offen Chrom, drücken Sie "Strg" + "SHIFT" + 'J' Dann fügen Sie folgenden Code in die Konsole: javascript: (function () {Funktion c () {var e=document.createElement("link");e.setAttribute("type","text/css");e.setAttribute("rel","stylesheet");e.setAttribute("href",f);e.setAttribute("class",l);document.body.appendChild(e)}function h () {var e = document.getElementsByClassName (l); for (var t = 0; t <e.length; t ++) {document.body.removeChild (e [t])}} p () {var e=document.createElement("div");e.setAttribute("class",a);document.body.appendChild(e);setTimeout(function(){document.body.removeChild(e)},100)}function d (e) {return {height: e.offsetHeight, Breite: e.offsetWidth}} Funktion v (i) {var s = d (i); s.height zurückkehren> e && s.height <n && s.width> t && s.width <r} Funktion m (e) {var t = e; var n = 0; while (!! t) {n + = t.offsetTop; t = t.offsetParent} return n} Funktion g () {var e = Dokument .documentElement; if (!! window.innerWidth) {return window.innerHeight} else if {return e.clientHeight} return 0} Funktion y () {if (window.pageYOffset) {(e && isNaN (e.clientHeight)!) Rück window.pageYOffset} return Math.max (document.documentElement.scrollTop, document.body.scrollTop)} function E (e) {var t = m (e); Rückkehr t> = w && t <= b + w} Funktion S () {var e=document.createElement("audio");e.setAttribute("class",l);e.src=i;e.loop=false;e.addEventListener("canplay",function(){setTimeout(function(){x(k)},500);setTimeout(function(){N();p();for(var e=0;e<O.length;e++){T(O[e])}},15500)},true);e.addEventListener("ended",function(){N();h()},true);e.innerHTML=" <p> Wenn Sie dies lesen, ist es, weil Ihr Browser nicht über die Audio-Element unterstützen Wir empfehlen Ihnen, sich ein neues Browser bekommen </ p> <p> ";.. document.body.appendChild (e); e. play ()} x (e) {e.className + = "" + s + "" + o} function T (e) {e.className + = "" + s + "" + u [Math.floor (Math.random ( ) * u.length)]} Funktion N () {var e = document.getElementsByClassName (s); var t = new RegExp ("\\ b" + s + "\\ b"); for (var n = 0; n <e.length;) {e [n] .classname = e [n] .className.replace (t "")}} var e = 30; var t = 30; var n = 350; var r = 350 ; var i = "// s3.amazonaws.com/moovweb-marketing/playground/harlem-shake.mp3";var s =" mw-harlem_shake_me "; var o =" im_first "; var u = [" im_drunk ", "im_baked", "im_trippin", "im_blown"]; var a = "mw-strobe_light"; var f = "// s3.amazonaws.com/moovweb-marketing/playground/harlem-shake-style.css";var l = "mw_added_css"; var b = g (); var w = y (); var C = document.getElementsByTagName ("*"); var k = null; for (var L = 0; L <C.length; L ++) {var A = C [L], und wenn (v (A)) {if (E (A)) {k = A; Pause}}} if (A === null) {console.warn ("Could nicht finden, einen Knoten in der richtigen Größe Bitte versuchen Sie eine andere Seite ");.. Rück} c (); S (); var O = []; for (var L = 0; L <C.length; L ++) { var A = C [L], und wenn (v (A)) {O.push (A)}}}) () Schritt 3: Bearbeiten des Codes Um die Website geht es zu, drücken Sie "Strg" + "F" und geben Sie "http://www.instructables.com 'bearbeiten Nachdem Sie das tun, finden es und ändern Sie die URL Um die Musik, die spielt, drücken Sie "Strg" + "F" und geben Sie "s3.amazonaws.com/moovweb-marketing/playground/harlem-shake.mp3 'ändern Nachdem Sie das tun, finden es und ändern Sie die URL zu dem bevorzugten Songs.

                21 Schritt:Schritt 1: Ersatzteile Schritt 2: Schneiden Sie die Gehäuseteile mit einem Laserschneider Schritt 3: Setzen Sie die Falle Schritt 4: Malen Sie die Oberseite des Gehäuses Schritt 5: Montieren Sie die obere Platte Schritt 6: Malen Sie den Fall, Schritt 7: Erstellen Sie die LED-Platine Schritt 8: Bereiten Sie den Schalter Schritt 9: Montieren Sie die LED-Leiterplatte im Inneren des Gehäuses Schritt 10: Bereiten Sie den Raspberry Pi Schritt 11: Montieren Sie den Raspberry Pi im Inneren des Gehäuses Schritt 12: Installieren Sie die USB-Stromkabel Schritt 13: Bringen Sie die Gummifüße auf den Fall Schritt 14: Installieren Sie den Hauptschalter Schritt 15: Verbinden Sie die GPIO-Pins Schritt 16: Montieren Sie die WiFi-Antenne Schritt 17: Testen Sie die PirateBox Schritt 18: Viola! Der Raspberry Pi PirateBox ist abgeschlossen! Schritt 19: PirateBox Skins Schritt 20: Wie die Python-Programmen arbeiten Schritt 21: Errata und Hinweise

                A PirateBox ist ein Linux-basiertes System aufgebaut mit freier Software für den Raspberry Pi, die private Weitergabe von digitalen Inhalten zur Verfügung stellt. Die PirateBox erstellt ein lokales WLAN-Netzwerk, aus dem Internet unabhängig, mit anonymen File-Sharing und Chat-Funktionen. Ich wollte eine PirateBox machen und eine cool aussehende Fall dafür. Ich habe ein Laserschneider, um die Stücke des Falles von 1/8 "dicken Birkensperrholz geschnitten und malte es nach Fotos 1 und 2 gezeigt Ein kleines Python-Programm steuert benutzerdefinierte Hardware, die die Bögen über dem Schädel glühen macht, um zu sehen, wenn die PirateBox ist und läuft. Ein weiteres kleines Python-Programm steuert einen Druckknopfschalter, die, wenn die Raspberry Pi eingeschaltet leuchtet. Wenn der Schalter gedrückt wird, wird das Programm beendet die Raspberry Pi verhindern, dass die Probleme, die auftreten können, wenn Sie nur ziehen eine Lauf Raspberry Pi. Die "PirateBox Verdrahtungsplan" zeigt, wie die verschiedenen Komponenten auf die Raspberry Pi verbunden. Das zweite Diagramm und die schematische Show die Verdrahtung für die LED-Leiterplatte. Da die drei großen LEDs zeichnen mehr Leistung als der Raspberry Pi kann, wird die LED-Platine separat angetrieben und verwendet einen Optokoppler, um die LED-Schaltung aus dem Raspberry Pi getrennt zu halten. Die PirateBox kann mit verschiedenen Farbschemata, die in Schritt 19 gezeigt Skins erstellen lackiert werden. Diese instructable vorausgesetzt, dass Sie über Erfahrungen mit der Einrichtung und Führung eines Raspberry Pi, dass Sie Erfahrung Löten Komponenten auf Leiterplatten zu haben, und dass Sie Zugriff auf und die Erfahrung mit einem Laserschneider haben. Ich habe dies bei TechShop .Schritt 1: Teile Alle 29 Artikel anzeigen Folgende Teile werden benötigt, um den Raspberry Pi PirateBox konstruieren: Raspberry Pi Parts: 1 Raspberry Pi Model B 512 MB ​​RAM (Verfügbar auf Amazon oder Adafruit ID 998 ) (Bild 1) 1 16 GB SDHC-Karte der Klasse 4 (Foto 2) HK 1 Mini-USB-WLAN 150Mbps Wireless-Adapter 150M LAN 802.11n / g / b mit Antenne (erhältlich von Amazon) oder anderen unterstützten WiFi-Adapter für Raspberry Pi (Foto 3) 2 1 1/4 "# 4-40 Maschinenschrauben und Muttern (Foto 4) 6 1/4" Round Nylon Abstandshalter für # 4 oder # 6 Schrauben (photo 4) LED-Leiterplattenteile: 3 10mm Diffuse blauen LEDs ( Jameco Bestell-Nr. 2152147 ) (Foto 5) 3 47 Ohm 1/4 Watt-Widerstände (Foto 6) 1 USB-Buchse 4 Position Lot rechtwinkligen Durchgangsbohrung 4-Anschluss ( Jameco Bestell-Nr. 2096181 ) (Foto 7) 1 Adafruit Perma-Proto halber Größe Lochrasterleiterplatte ( Adafruit ID 571 ) (Foto 8) 1 NPN Optokoppler PS2501-1 ( Jameco Bestell-Nr. 320653 ) (Foto 9) 1 120 Ohm 1/4 Watt Widerstand (photo 10) 2 12 "Jumper Kabel (ein Ende männlich, ein Ende weiblich) ( Sparkfun Bestellnummer PRT-09385 ) (Foto 11) 24 AWG massiven Kern Schaltdraht (Foto 12) 2 3/8 "# 4-40 Maschinenschrauben ( runder Kopf) und Muttern (Foto 13) 2 Round Nylon Abstandshalter für # 4 Schraubengröße, 0,187 "Außendurchmesser 0,115" Innendurchmesser, 1/8 "Länge (Amazon Part B000FP7TY0) (Foto 13) Shutdown Schalterteile: 1 16mm Leuchtdrucktaster rot Taster ( Adafruit ID 1439 ) (Foto 14) Schrumpfschlauch (1/16 "Durchmesser) (Foto 15) 4 12" Jumper Kabel (ein Ende männlich, ein Ende weiblich) ( Sparkfun Bestellnummer PRT -09.385 ) (Foto 16) 1 470 Ohm 1/4 Watt Widerstand (Foto 17) Hardware für die Bildbaustein: 6 1/2 "# 4-40 Maschinenschrauben (Ich habe schwarze Nylonschrauben für die schwarzen Bildbausteinen und Zink Schrauben für die Silberbildbausteine) (Foto 19) 6 # 4-40 Maschinenschraubenmuttern (Bild 19) Kabel und Kabelmontage Hardware: 1 USB Typ A Stecker auf A Stecker Kabel (Foto 20) 1 USB Typ A Stecker auf Micro-USB-Stecker-Kabel (Foto 21) 2 USB-Netzadapter geben (5 Volt @ jeweils mindestens 1 Ampere) (Foto 22) 3 Nylon Kabelschellen für 3/16 "Durchmesser-Kabel ( Jameco Part # 173729 ) (Foto 23) 3 3/8 "# 6-32 Maschinenschrauben und Muttern (Foto 23) Short-Kabelbinder (Bild 24) Gehäuseteile: 4 Selbstklebende Gummi / Kunststoff-Füße / Stoßfänger (Höhe 1/4 ") (Foto 25) 1 18" x 24 "Blatt 1/8" (3 mm) Birkensperrholz 1 8 "x 3" Blatt 1/8 "Registrieren Beleuchtung Weiß 60% oder 40% Transparenz Acryl (Verfügbar ab TAP Plastics ) Oberflächenmaterialien: Malerband (Foto 26) Wohnung schwarze Sprühfarbe (Foto 27) Flache weiße Sprühfarbe (Foto 27) Metallisches Silber Sprühfarbe (Foto 27) Holzleim (Foto 28) Kleine Bürste (Foto 28) Verstellbare Spannband zum Aufkleben (Foto 29 ) Werkzeuge (nicht abgebildet): Laserschneider und Kupferstecher Lötkolben und Lötzinn Drahtschneider / Drahtscheren Abisolierzangen Spitzzange Schraubendreher (klein Philips Kopf) Heißluftgebläse, leichter, oder Spiele für die Schrumpfschlauch Ausrüstung für die Installation von Raspberry Pi-Software (nicht abgebildet): HDMI-fähige Computer-Monitor USB-Tastatur USB-Maus Ethernet cableStep 2: Schneiden Sie die Gehäuseteile mit einem Laserschneider Alle 9 Artikel anzeigen Der erste Schritt ist, um die Teile für den Fall von einem Blatt 1/8 "(3 mm) Birkensperrholz geschnitten. Ein 45-Watt- Epilog Laserschneider bei TechShop wurde verwendet, um ausgeschnitten und gravieren die Teile. Alle Gehäuseteile können aus einer 18 "x 24" Blatt des Sperrholzes geschnitten werden. Die Laser-Cutter-Einstellungen verwendet wurden, waren: Raster: Speed ​​30 Leistung 60 Vector: Speed ​​10 Power 85 Frequenz: 500 Die Fertigteile sind: Faceplate mit Augen (Foto 1). Oberseite des Gehäuses (Foto 2): Die Frontblende wird an diesem Teil angebracht werden. Unterseite des Gehäuses (Foto 3). Das Design beinhaltet Gravur, die zeigt, wo all die Elektronik montiert werden. Seite mit Ausschnitten für die Raspberry Pi LAN und USB-Anschlüsse und für den Hauptschalter (Bild 4). Es ist um den Ausschnitt Gravur, um sicherzustellen, dass der Schalter richtig ausgerichtet ist (Bild 5). Seite mit Aussparungen für die USB-Netzstromkabel (Bild 6). Zwei Seiten zur Längsseite des Gehäuses (Bild 7). Als nächstes wurde der Laser-Cutter verwendet, um ein Panel von 1/8 "40-60% transparent Zeichenbeleuchtung weißem Acryl geschnitten. Dieser Teil wird auf der Oberseite angebracht werden und wird verwendet, um das Licht von blauen LEDs zu diffundieren. Die Laser-Cutter-Einstellungen zum Schneiden des Acryl verwendet wurden, waren: Vector: Speed ​​10 Power 90 Häufigkeit: 2500 Der Schnitt Acrylteil in Bild 8 (mit dem Schutzpapier auf) und Foto 9 (mit dem Papier entfernt) gezeigt. Die Laserschneid Design-Dateien sind in der ZIP-Datei in diesem Schritt angeschlossen. Die Datei enthält CorelDraw (CDR) und Encasulated Postscript (.eps) Dateien für die designs.Step 3: Montieren Sie den Fall, Alle 8 Artikel anzeigen Sammeln Sie alle der Holzteile für den Fall, und richten Sie sie wie auf dem Foto 1. Stellen Sie sicher, dass die beiden Seitenteile mit den Ausschnitten gezeigt ausrichten, wie in Bild 2 und 3 gezeigt Werden diese nicht ausgerichtet sind, wie gezeigt, die Ausschnitte nicht richtig mit der Elektronik im Inneren des Gehäuses entsprechen. Mit einer kleinen Bürste, legte Holzleim auf die Kanten der Seitenteile und klemmen Sie sie zusammen, wie in Fotos 4 und 5 Clamp gerade genug, um das Zusammenhalten der Teile gezeigt, aber machen es nicht super eng und es wird schwierig, passen die oberen und unteren Platten auf. Sanft, Flip über den Fall und legte Kleber an den Rändern der Bodenplatte und schieben Sie sie an ihren Platz wie in Foto 6. Platz einige schwere Gegenstände auf den Ecken, wie in Bild 7 gezeigt und erlauben den Fall über Nacht trocknen. Die aufgeklebt wird der Fall in Foto 8.Step 4 gezeigt: Malen Sie die Oberseite des Gehäuses Alle 9 Artikel anzeigen Malen Sie die Frontplatte und Deckplatte wie folgt: Verwenden Sie schwarze Sprühfarbe, um die Frontplatte zu malen, wie in Bild 1 und 2. Mit den auf der Oberseite eingraviert als Führungslinien dargestellt (Foto 3), maskieren alle außer den Mittelteil mit Malerband (Foto 4). Sprühfarbe die betroffene Stelle mit weißen (Bild 5). Lassen Sie die Farbe trocknen und entfernen Sie das Band (Bild 6). Wenn Sie haben, den Rest bei der natürliche Holzfarbe sein wollen, überspringen Sie die restlichen Schritte. Maske der Teil der oberen Platte, wo die Frontplatte montiert werden (Bild 7). Setzen Sie die Frontplatte auf der Oberseite (Foto 8) und richten Sie sie mit den Befestigungslöchern. Stellen Sie sicher, dass keiner von dem Band an den Kanten sichtbar ist und entfernen Sie die Frontplatte und legen Sie sie beiseite. Sprühfarbe den freiliegenden Teil der Deckplatte und achten Sie auf die Kanten als auch die obere Oberfläche zu malen. Die fertige Platte wird in Foto 9.Step 5 gezeigt: Montieren Sie die obere Platte Montieren Sie die obere Abdeckung, wie folgt: Mit den 1/2 "# 4-40 Maschinenschrauben und Muttern (Foto 3), legen Sie die Maschinenschrauben in der jeder der Ecken der Frontplatte (Bild 1) und setzen Sie die Acrylglasplatte auf der Rückseite, wie in Bild 2 gezeigt, . Ziehen Sie die Muttern an alles an seinem Platz zu halten. Verwenden Sie die Maschinenschrauben und Muttern, um die Augen statt (Foto 4) zu halten. Schritt 6: Malen Sie den Fall, Alle 9 Artikel anzeigen Malen Sie den Rest des Gehäuses, um die obere Platte nach den Anweisungen unten entsprechen. Wenn Sie einen Fall mit dem natürlichen Holzfarbe, überspringen Sie diesen Schritt. Verwendung Malerband, Maske der Innenseite des Gehäuses wie in Fotos 1 und 2 gezeigt Sicherstellen, dass alle Befestigungslöcher in der Unterseite abgedeckt sind und das Band fest an den Löchern (Foto 3): Diese stellt sicher, dass Farbe nicht erhalten im Inneren des Gehäuses. Stellen Sie außerdem sicher, dass das Band fest gegen die Aussparungen an den Seiten gedrückt und das Band geht bis an die Spitze der Bänder an der oberen Kante (Bilder 4 und 5). Sprühfarbe den Boden und die Seiten des Gehäuses. Nachdem die Farbe vollständig getrocknet ist, Flip über den Fall und Sprühfarbe die oberen Kanten (Bilder 6 und 7). Lassen Sie die Farbe vollständig trocknen, und entfernen Sie dann die Malerband. Das gemalte Fall wird wie Fotos 8 und 9.Step 7 aussehen: Erstellen Sie die LED-Platine Alle 11 Artikel anzeigen Die LED-Platine sitzt unter der Frontplatte Acrylplatte und leuchtet, wenn der Raspberry Pi WiFi ist und läuft. Montieren Sie es wie folgt: Verwenden Sie das Diagramm als ein Führer, löten alle Komponenten auf die Leiterplatte. Löten Sie die Teile in dieser Reihenfolge: (1) Drähte, (2) Widerstände, (3), Optokoppler, (4) LEDs, und (5) der USB-Anschluss. Achten Sie auf die Optokoppler genau so, wie mit den Pin-Nummern in der Abbildung dargestellt löten (es wird ein kleiner Punkt auf dem Chip Pin 1 sein). Achten Sie außerdem darauf, die LEDs mit der richtigen Polarität löten, wie durch die "+" in der LED in der Abbildung dargestellt. Der längere Draht aus der LED kommen ist die positive (+) Draht. Nach dem Löten alle Komponenten, schneiden Sie die Drähte auf der Unterseite der Leiterplatte. Das fertige Leiterplatte in Foto 1 Solder die männlichen Enden von zwei der 12 "männlich / weiblich Schaltdrähte an der Leiterplatte dargestellt wie in Bild 2. Schneiden Sie die Drähte auf der Unterseite der Leiterplatte dargestellt. Das steckerfertige Board in Foto gezeigt 3. Der USB-Anschluss wird durch vier Lötverbindungen gehalten und benötigt zusätzliche Unterstützung, um sicherzustellen, es bricht nicht ab, wenn das Kabel gezogen wird. Verstärken Sie den Stecker durch Schneiden und Abisolieren von zwei kleine Drahtstücke, wie in gezeigt, Foto 4. Setzen Sie die Kabel um den USB-Anschluss und Lot in Platz als in Fotos 5 bis 9 gezeigt Schneiden Sie die Enden der Drähte auf der Unterseite der Leiterplatte. Achten Sie darauf, die Drähte parallel angeordnet, wie in Figur 8. Wenn gezeigt die Drähte werden auf diese Weise angeordnet ist, die keine Wirkung auf die Elektronik. Das vollständig ausgefüllte LED Pension ist im Foto 10.Step 8 gezeigt: Bereiten Sie den Schalter Alle 17 Artikel anzeigen Mit den folgenden Teilen: Druckknopfschalter (Bild 1), Schaltdrähte (Foto 2), 470 Ohm-Widerstand (Foto 3) und Schrumpfschlauch (Foto 4), bereiten Sie den Schalter: Cut vier Längen von Schrumpfschlauch wie in Bild 5 gezeigt von den männlichen Enden der Drahtbrücken (Foto 6) schneiden. Isolieren Sie die Enden von den Drähten (Foto 7). Schieben Sie den Schrumpfschlauch auf die Drähte (Foto 8). Verwendung photo 9 als Leitfaden zu den Anschlüssen auf dem Switch, den Widerstand anlöten an den Pluspol (+) Anschluss (Foto 10). Befestigen und löten Sie das rote Kabel an den Widerstand (Bilder 11 und 12). Cutoff das überschüssige Draht auf den Widerstand. Befestigen und löten Sie das schwarze Kabel an den Minuspol (-) Anschluss (Bilder 13 und 14) mit Foto 9 als Leitfaden. Befestigen und löten Sie die blauen Adern an die übrigen Anschlüsse (Foto 15). Schieben Sie den Schrumpfschlauch über den Widerstand und über die freiliegenden Adern an die Klemmen (Foto 16) gelötet. Verwenden Sie eine Heißluftpistole, leichter, oder ein Match um den Schlauch zu schrumpfen. Montieren Sie die LED-Leiterplatte im Inneren des Gehäuses: Das ausgefüllte Schalter in Foto 17.Step 9 gezeigt Mit Hilfe der 3/8 "Maschine # 4-40 Schrauben, Muttern, und 1/8" # 4 Nylon Abstandshalter In diesem Schritt wird die LED-Leiterplatte im Inneren des Gehäuses montiert werden (Bild 1) (Bild 2). Legen Sie zwei Maschinenschrauben von der Unterseite des Gehäuses in die Befestigungslöcher für die LED-Leiterplatte wie in Bild 3. Schieben Sie die Nylon-Abstandshalter auf die Schrauben (Foto 4) gezeigt. Setzen Sie die LED-Leiterplatte auf die Schrauben (Bild 5). Sichern Sie die LED-Platine mit den Muttern (Bild 6). Die Muttern leicht anziehen: Sie sollten nicht gorilla monkey engen dicht sein. Schritt 10: Bereiten Sie den Raspberry Pi Der erste Schritt bei der Vorbereitung der Raspberry Pi ist die Installation und Konfiguration der Software Raspbian. Laden Raspbian auf die SD-Karte. Anweisungen, wie Sie dies tun können, finden Sie hier . Setzen Sie die SD-Karte in den Schlitz an der Raspberry Pi. Schließen Sie den Raspberry Pi zu einer Anzeige, Tastatur, Maus, LAN mit Zugang zum Internet, und auf eine 5-Volt-USB-Netzteil, wie in der "Raspberry Pi Setup" Diagramm dargestellt. Starten Sie den Raspberry Pi und führen erstmals Konfiguration entsprechend den Anweisungen hier . Bei der Konfiguration Raspbian, nicht konfigurieren Sie die grafische Benutzerschnittstelle automatisch gestartet wird. Es ist eine gute Idee, das Passwort für den Raspberry Pi in dieser Zeit geändert werden. Der zweite Schritt ist die Installation und Konfiguration der Software PirateBox. . Starten Sie den Raspberry Pi und melden Sie sich Geben Sie die folgenden Befehle (beachten Sie, dass in der Liste der Befehle unten, kann der Befehl wget über zwei Zeilen aufgrund der Formatierung dieser instructable in Ihrem Browser spalten lassen - bis auf eine eingegeben werden das Kommando einzelne Zeile: wget und die ganze URL in Anführungszeichen). sudo apt-get update sudo apt-get -y install lighttpd sudo /etc/init.d/lighttpd Anschlag sudo update-rc.d lighttpd entfernen sudo apt-get -y install dnsmasq sudo /etc/init.d/dnsmasq Anschlag sudo update-rc.d dnsmasq entfernen sudo apt-get -y install hostapd sudo /etc/init.d/hostapd Anschlag sudo update-rc.d hostapd entfernen sudo apt-get -y installieren iw wget "https://s3-us-west-1.amazonaws.com/talk2bruce/instructables/piratebox/piratebox-ws_current.tar.gz" tar xzf piratebox-ws_current.tar.gz cd piratebox sudo mkdir -p / opt sudo cp -rv piratebox / opt sudo ln -s /opt/piratebox/init.d/piratebox /etc/init.d/piratebox sudo update-rc.d piratebox Standardwerte sudo /etc/init.d/piratebox Start Es wird eine Fehlermeldung nach dem letzten Befehl, dass die Netzwerkschnittstelle konnte nicht gestartet werden zeigt sein: Dieser Fehler tritt auf, weil das WiFi USB-Adapter ist nicht eingesteckt Dieser Fehler ist OK an dieser Stelle - es wird nicht nachteilig auf die PirateBox. . Es ist richtig, wenn die Raspberry Pi ist mit dem WiFi-Adapter eingesteckt ist neu gestartet. Der dritte Schritt ist, um die Python-Programm, das die LEDs leuchten wird, wenn die WiFi ist und läuft und die Python-Programm, das wird heruntergefahren die Raspberry Pi wenn der Druckknopf gedrückt wird installieren. Erstellen Sie das Verzeichnis, in dem die Python-Programme werden durch die folgenden Befehle an der Eingabeaufforderung befinden: cd / home / pi mkdir python_programs cd python_programs Geben Sie die folgenden zwei Befehle, um die Python-Programme zu bekommen: wget "https://s3-us-west-1.amazonaws.com/talk2bruce/instructables/piratebox/rpi_halt_btn.py" wget "https://s3-us-west-1.amazonaws.com/talk2bruce/instructables/piratebox/illuminate_leds.py" Mit einem Texteditor, bearbeiten Sie die Datei "/etc/rc.local" und fügen Sie die folgende Zeile an das Ende der Datei vor der Zeile mit "exit 0". Seit "/etc/rc.local" ist eine Systemdatei müssen Sie den Befehl sudo verwenden, wenn Sie starten Sie Ihren Editor - zum Beispiel "sudo nano /etc/rc.local". Die Codezeile Sie hinzufügen automatisch das Python-Programm, das die Abschaltung Taste überwacht starten. Stellen Sie sicher, das Und-Zeichen am Ende der Zeile setzen ("&"). python /home/pi/python_programs/rpi_halt_btn.py& Schließlich Verwendung sudo und einem Texteditor bearbeiten "/ etc / network / interfaces", um die Inhalte sehen aus wie genau das wie folgt aus: auto lo iface lo inet loopback iface eth0 inet dhcp # Allow-hotplug wlan0 iface wlan0 inet Handbuch # Wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface Standard inet dhcp post-up python /home/pi/python_programs/illuminate_leds.py In der letzten Zeile wird mit der Python-Programm, das die blaue LED leuchtet, wenn die WiFi ist und läuft. Der Raspberry Pi ist jetzt Setup! Shutdown der Raspberry Pi mit dem Befehl sudo halt und trennen Sie alle Kabel von der Himbeere Pi.Step 11: Montieren Sie den Raspberry Pi im Inneren des Gehäuses In diesem Schritt wird der Raspberry Pi im Inneren des Gehäuses montiert werden (Bild 1) mit Hilfe der 1 1/4 "Maschine # 4-40 Schrauben, Muttern, und die 1/4" # 4 oder # 6 Nylon Abstandshalter (Foto 2) . Setzen Sie die beiden Maschinenschrauben von der Unterseite des Gehäuses in die Befestigungslöcher für den Raspberry Pi wie in Bild 3. Schieben Sie drei Nylon-Abstandshalter auf jede Schraube gezeigt (Foto 4). Setzen Sie den Raspberry Pi auf die Schrauben und befestigen Sie sie mit den Muttern (Bild 5). Die Muttern leicht anziehen: Sie sollten nicht gorilla monkey engen dicht sein. Schritt 12: Installieren Sie die USB-Stromkabel Wie in Bild 1 dargestellt: Stecken Sie das USB-Kabel durch das Seitenausschnitt. Schließen Sie das USB-Kabel an den Raspberry Pi und LED-Platine. Verwenden Sie die 3/8 "# 6-32 Maschinenschrauben, Nylon Kabelschellen und Nüsse (Foto 2), um die USB-Kabel auf den Fall zu sichern. Dies Belastung für die USB-Anschlüsse auf der LED-Platine zu verringern und Raspberry Pi und verhindern, dass die Kabel nicht versehentlich herausgezogen. Verwenden Sie einen Kabelbinder (Foto 3), um die Kabel außerhalb des Gehäuses zu sichern (Bilder 4 und 5) .Schritt 13: Befestigen Sie die Gummifüße auf den Fall Klappen Sie den Fall auf (Bild 1). Mit Hilfe der Ecke Löcher als ein Führer, halten die Gummifüße (Foto 2) an der Unterseite des Gehäuses, wie in 3 und Fotos 4.Schritt 14 gezeigt: Installieren Sie den Hauptschalter Schrauben Sie den Kragen von der Druckknopfschalter. Legen Sie die Drähte und Schalter durch die Aussparung an der Seite des Gehäuses. Schieben Sie die Manschette über die Drähte und schrauben Sie ihn auf den Schalter, um den Schalter auf den Fall zu sichern. Die Gravur auf dem Fall können als Richtlinie verwendet werden, um sicherzustellen, dass sich der Schalter gerade sein. Die installierte Schalter in Foto 1.Schritt 15 gezeigt: Verdrahten Sie die GPIO-Pins Alle 9 Artikel anzeigen In diesem Schritt wird die LED-Leiterplatte und den Hauptschalter auf die GPIO-Pins auf dem Raspberry Pi, die ihre Funktion steuern, angeschlossen werden. Suchen Sie die GPIO-Anschlüsse in Foto 2. Mit Hilfe des "verdrahten PirateBox - Schritt 1" Diagramm als Leitfaden, schließen Sie die Kabel von der LED-Platine an die GPIO-Pins (Foto 3). Ein Python-Programm auf dem Raspberry Pi ausgeführt werden diese GPIO-Pins verwenden, um die LEDs leuchten, wenn die WiFi ist und läuft. Verwenden Sie eine Nylonkabelklemme und eine 3/8 "# 6-32 Maschinenschraube und Mutter, um die LED-Kabel an die Platine halten (Foto 4) Mit dem." Verdrahtung der PirateBox - Schritt 2 "Diagramm als Leitfaden, verbinden Sie den roten . und schwarzen Kabel vom Schalter auf die GPIO-Pins (Bild 5) Diese Drähte werden Macht, die LED in der Druckschalter bieten die LED leuchtet, wenn der Raspberry Pi ist eingeschaltet Mit der "Verdrahtung der PirateBox - Schritt 3".. Diagramm als Anleitung, schließen Sie die blaue Kabel vom Schalter auf die GPIO-Pins (Foto 6) Diese GPIO-Pins werden von einem Python-Programm in der Raspberry Pi überwacht werden:., wenn die Taste gedrückt wird, wird das Programm eine "halt" ausstellen Befehl zum Herunterfahren der Raspberry Pi. Die Verkabelung ist nun abgeschlossen Schritt 16: Montieren Sie die WiFi-Antenne Befestigen Sie die Antenne an den USB-WiFi-Adapter, wie in der 17 gezeigt photos.Step: Test der PirateBox Alle von der Baugruppe abgeschlossen ist und es ist jetzt an der Zeit, um die PirateBox testen. Stecken Sie den USB WLAN-Adapter in einen der USB-Anschlüsse auf der Raspberry Pi (Foto 1). Es spielt keine Rolle, welcher Port verwendet wird - entweder USB-Anschluss funktioniert. Stecken Sie die beiden USB-Kabel in den USB-Netzadapter und stecken Sie den Adapter in eine Steckerleiste oder in Unterputzdosen. Der Hauptschalter sollte (Foto 2) zu beleuchten. Warten Sie einige Minuten und die LED sollte leuchten (Foto 3). Dies zeigt an, dass das WiFi ist und auf dem Raspberry Pi läuft. Warten Sie eine zusätzliche Minute oder so zu sein, dass die PirateBox Software installiert ist und läuft, und dann eine Verbindung zum PirateBox Software mit einem Laptop oder Tablet, wie folgt: Gehen Sie in die WLAN-Einstellungen auf dem Laptop oder Tablet und eine Verbindung zur SSID Namen "PirateBox - Teilen Frei". Wenn verbunden, öffnen Sie einen Webbrowser und gehen Sie zu "http://192.168.77.1". Sie sollten eine Seite, die den Bildschirm aussieht. Drücken Sie den Hauptschalter. In ein oder zwei Minuten sollten die LEDs ausschalten anzeigt, dass der Raspberry Pi hat Herunterfahren und es ist sicher, die Macht (Foto 4) entfernen. Trennen Sie die Netzteile aus den Steckdosen. Die LED in der Hauptschalter ausgeschaltet werden soll (Bild 5). Testing ist nun abgeschlossen! Wenn die Dinge nicht richtig funktioniert, zuerst überprüfen, um Ihre Netzadapter richtig in der Steckdosenleiste oder Wandsteckdosen angeschlossen. Einige Verteilerkabel haben Leistungsschalter - sicherzustellen, dass die Steckerleiste eingeschaltet ist. Weiter die GPIO Verkabelung überprüfen. Das nächste, was zu prüfen, würde die Raspberry Pi-Software - Sie können den Raspberry Pi auf einen Monitor und eine Tastatur anschließen, um sicherzustellen, dass es richtig Booten - wenn nicht, ist die einfachste Sache zu tun, installieren Sie Raspbian und der Rest der Software. Wenn alles mit Ausnahme der LED-Platine arbeiten, dann überprüfen Sie die Verdrahtung auf der board.Step 18: Viola! Der Raspberry Pi PirateBox ist abgeschlossen! Setzen Sie den oben auf dem Gehäuse (Bild 1) und Viola! Der Raspberry Pi PirateBox ist nun abgeschlossen! Wenn der Raspberry Pi und LED-Leiterplatte eingeschaltet sind, wird der Netzschalter zu beleuchten (Foto 2). Wenn die WiFi ist und läuft die LEDs leuchten und nehmen Sie die Bögen über dem Schädel glühen (Bilder 3, 4 und 5). Warten Sie eine oder zwei Minuten und dann die PirateBox bereit für die Nutzer zu verbinden. Bei der Verwendung des PirateBox abgeschlossen, drücken Sie die leuchtende Schalter: dies wird die Raspberry Pi zur Abschaltung führen. Wenn die Bögen über dem Schädel stoppen glühend, ist es sicher, die Macht an den Raspberry Pi und LED-Schaltung board.Step 19 trennen: PirateBox Skins Alle 9 Artikel anzeigen Die PirateBox kann mit einer Vielzahl von Fellen hergestellt werden. Bilder 1 und 2 zeigen den Fall mit der natürlichen unlackierte Holz. Fotos 3 und 4 mit einem gelben Farbschema. Bilder 5 und 6 mit einem metallischem Silber Sprühfarbe: wenn metallische Silberfarbe wird mit der natürlichen Maserung des Holzes kombiniert, sieht der Fall ist, wie es ist aus gebürstetem Aluminium. Fotos 7, 8 und 9 zeigen einen blauen Farbschema mit einem schwarzen Totenkopf und ein 16mm Metalltaster mit blauer LED-Ring ( Adafruit ID 481 ). Die Möglichkeiten sind endlos! .step 20: Wie die Python-Programmen arbeiten Es gibt zwei benutzerdefinierte Python-Programme in diesem instructable verwendet, um den Raspberry Pi PirateBox erstellen. rpi_halt_btn.py Das erste Programm "rpi_halt_btn.py" wird während des Startvorgangs durch den Befehl gestartet python /home/pi/python_programs/rpi_halt_btn.py& in der "rc.local" Systemdatei. Das "&" am Ende des Befehls macht das Programm als separater Prozess, bis das Programm beendet laufen laufen hält. 1 Import RPi.GPIO als GPIO 2 import os 3 GPIO.setmode (GPIO.BCM) 4 GPIO.setup (25, GPIO.IN, pull_up_down = GPIO.PUD_UP) 5 print "\ nrpi_halt_btn: gestartet und wartet nun auf GPIO Halt-Taste gedrückt werden." 6. Versuch: 7 GPIO.wait_for_edge (25, GPIO.FALLING) 8 mit der Ausnahme KeyboardInterrupt: 9 GPIO.cleanup () 10 GPIO.cleanup () 11 os.system ("halt") Die Funktion jeder Zeile ist wie folgt: Zeile 1 importiert die Bibliothek, ein Python-Programm, um den Raspberry Pi ist GPIO-Pins verwenden können. Linie 2 importiert die Bibliothek, ein Python-Programm, um Systembefehle erteilen können. Zeile 3 zeigt die nachfolgende GPIO Funktionen die Definition der GPIO Pin-Nummern, die das Programm verwenden. Linie 4 Sätze GPIO-Pin 25 an ein Eingangspin und einen Pull-up-Widerstand für den Stift zu ermöglichen. Zeile 5 gibt eine Meldung auf der Konsole anzeigt, dass das Programm läuft. Wenn Sie einen Bildschirm während des Bootvorgangs an den Raspberry Pi angeschlossen haben, werden Sie diese Meldung auf der Konsole Bildschirm sehen. Zeilen 6 und 7 stellen das Programm warten, bis die Taste, bevor Sie fortfahren bis 10. Zeilen Zeile 8 und 9 stellen das Programm Stopp, wenn der Benutzer trifft Ctrl / C gedrückt wird - diese Linien für Debugging-Zwecke. Zeile 10 wird ausgeführt, nachdem die Taste, um GPIO-Pin 25 verbunden gedrückt wird. Diese Codezeile beendet alle GPIO Verarbeitung. Zeile 11 verwendet die Systembibliothek, die Raspbian "halt" Befehl. Der Befehl "halt" schaltet das System. illuminate_leds.py Das zweite Programm "illuminate_leds.py" wird durch den Befehl ausführen, post-up python /home/pi/python_programs/illuminate_leds.py in der Systemdatei "/ etc / network / interfaces". Die "Post-up" Befehl ausgeführt wird, wenn die Netzwerkschnittstellen vorhanden sind und laufen. In diesem Fall ist es, wenn die WiFi ist und läuft. 1 Import RPi.GPIO als GPIO 2 GPIO.setmode (GPIO.BCM) 3 GPIO.setup (23, GPIO.OUT) Die Funktion jeder Zeile ist wie folgt: Zeile 1 importiert die Bibliothek, ein Python-Programm, um den Raspberry Pi ist GPIO-Pins verwenden können. Linie 2 zeigt die nachfolgende GPIO Funktionen die Definition der GPIO Pin-Nummern, die das Programm verwenden. Linie 3 Sätze GPIO-Pin 23 an einen Ausgang und setzt den Wert auf niedrige wodurch die LED-Platine, die LEDs.Step 21 beleuchten: Errata und Hinweise Falsche Etikettierung In Schritt 3 Foto 1 und die Fotos in den Schritten 6 und 9, falsch ist die Gravur für den Kabelklemmen auf den Fotos. Die Etiketten "RPi" und "LED" werden umgekehrt. Die richtige korrekte Etikettierung in Fotos 1 und 2 zu diesem Schritt und die falsche in Foto 3. Die Design-Dateien für das Laserschneiden angebracht zu Schritt 2 korrekt dargestellt. Falsche suchen Foto In Bild 6 von Schritt 4 ist die bemalte Fläche, die etwas anders als der Rest der Fotos für den Schritt. Ich vermisste die ein Foto von dem Teil und verwendet einen Teil für einen anderen PirateBox I aufgebaut, wo ich klebte es etwas anders. PirateBox Software Nachdem ich begonnen, diese instructable dokumentieren, der Entwickler der Software geändert PirateBox seiner Umsetzung für die Raspberry Pi, um nicht mehr verwenden Raspbian sondern ArchLinux verwenden. Die ArchLinux Umsetzung ist mit den Anweisungen und Software, die ich für den Hauptschalter und die LED-Leiterplatte entwickelt, nicht vereinbar. Um sicherzustellen, dass die Raspbian Software bekannt, mit diesen Anweisungen zu arbeiten bleibt für diese instructable verfügbar, erhalten ich eine Kopie PirateBox Software und das ist, was im Schritt 10 mit dem Befehl heruntergeladen wget "https://s3-us-west-1.amazonaws.com/talk2bruce/instructables/piratebox/piratebox-ws_current.tar.gz" Als Referenz kann die Originaldatei mit dem Befehl zum Download bereit: wget "http://downloads.piratebox.de/piratebox-ws_current.tar.gz" Die offizielle PirateBox Website finden Sie hier: http://piratebox.cc/

                  1 Schritt:

                  <Iframe frameborder = 0 height = 377 src=http://player.vimeo.com/video/56589377 width = 500> </ iframe> Boxhead neu in Python von BenR auf Vimeo. Video Boxhead neu mit Python mit Tkinter Es ist ein fantastisch unterhaltsame Computerspiel namens Boxhead, wo im wesentlichen Sie und / oder eine zweite Person abzuwehren Horden von angreifenden Zombies und Devils mit verschiedenen Waffen. Für einen Computer Science-Klasse in diesem Jahr, die ich nehme, war der letzte Projekt, ein Computerspiel in Python mit Tkinter neu zu erstellen. Boxhead schien die logische Wahl zu sein und ich über dieses anschließend eingestellt. Ich hoffe, dass Sie genießen, was sie in so weit gedreht hat, und ich hoffe, mehr Waffen, Ebene mit Objekten und einen zweiten Spieler in der Zukunft hinzuzufügen. Ab sofort Boxhead kann nur kämpfen, mit einer Pistole und Minen, aber es wäre toll, um den Zugriff auf Schrotflinte und Raketen haben. Fühlen Sie sich frei, um den Code zu kopieren und spielen Sie oder fügen Sie Waffen. Denken Sie auch daran, dass das Programm und Bilder müssen im gleichen Ordner aufbewahrt werden und die Bilder werden in Unterordnern. Zum Beispiel die Boxhead Bilder sind in einem separaten Ordner als die Zombie Bilder. Die Zombies gehen in die "Zombies" Unterordner, Teufel in "Teufel", boxhead in "Boxhead" und mine / Blut / Teufel Angriff (gelbe Kugel) in "Spielelemente". Die Bedienelemente für die Bewegung sind "WASD", Pause "p", un-Pause "o", Wechsel zwischen Waffen "i" und "u". Am wichtigsten ist aber, "Raum" ist Feuer. Wenn Sie das Spiel spielen wollen alle Bilder benötigt, um zusammen mit dem Code verfügbar sind, gehen hier zusammen mit dem Code. # # Boxhead Von Ben Rothschild # Boxhead - eine Kopie der Original-Spiel in Python mit Tkinter # from Tkinter import * Einfuhrzufallsimportzeit import math window_height = 550 # gemacht Letzte Änderung 2012.12.14 stellen Sie die Fensterhöhe und -breite window_width = 800 X_Window_Buffer = 40 Y_Window_Buffer = 40 = Leinwand auf Keilrahmen (highlightthickness = 0, height = window_height, width = window_width) canvas.master.title ("Boxhead") canvas.pack () Main = canvas.create_rectangle (0,0, window_width, window_height, füllen = "# EBDCC7", belowThis = None) # schaffen die Grundfarbe ähnlich dem von der Boxhead Spiel pic = photoimage (width = window_width, height = window_height) canvas.create_image (0,0, image = Bild, Anker = NW) Zombie_Dict_Made = False # haben die Zombies und Boxhead geschaffen? boxhead_made = False Run_Game = True New_Level = False B_move_length = 2 # Einige der Spiel-Attribute diese Änderung und sind für die Erstkonfiguration verwendet. Die meisten würden besser in einem zentralen Spielklasse Zombie_per_move = 0,5 Devil_move = 1 sein Richtung = 1 shot_duration = 0,01 Zombie_Buffer = 30 = 15 kill_zone Number_of_Zombies = 5 total_devil_attacks = 0 = 0 blood_marks number_of_mines = 0 global pause_game # Pause das Spiel, wenn "P 'gedrückt wird oder starten Sie es, wenn' O 'wird pause_game gedrückt = False Mines_Dict = {} # hält alle Minen Zombie_Dict = {} # Wo die Zombies sind gehalten - Elemente gelöscht werden als Boxhead schießt sie Devil_Dict = {} # gleichen wie Zombie_Dict aber für Devils Dead_Zombie_List = [] Devil_Attack_Dict = {} # Die Kugeln, die die Devils mit Klasse Edge_limits (Objekt) anzugreifen: "" "Weist Grenzen in jeder x y-Richtung, um Objekte, so dass sie nicht aus der Lauf Spiel-Bildschirm "" "def __init __ (self): self.x_start = 2 * X_Window_Buffer - 20 self.y_start = 3 * Y_Window_Buffer -35 self.x_end = window_width - X_Window_Buffer - 20 self.y_end = window_height - Y_Window_Buffer - 20 Klasse Buffer ( Gegenstand): "" "Die Randpuffer für das Spiel" "" def __init__ (self, x_start, y_start, x_end, y_end, füllen): canvas.create_rectangle (x_start, y_start, x_end, y_end, füllen = fill) left_buffer = Buffer (0,0, (X_Window_Buffer), (Y_Window_Buffer + window_height), "Black") # erstellen alle Puffer Bilder right_buffer = Buffer((X_Window_Buffer+Window_Width),0,(Window_Width-(X_Window_Buffer)),((2*Y_Window_Buffer)+Window_Height), "Black") top_buffer = Puffer (0,0, (window_width-X_Window_Buffer), Y_Window_Buffer, "Black") bottom_buffer = Puffer (0, (window_height-Y_Window_Buffer), window_width, window_height, "Black") Klasse Blood (Objekt): "" "" def __init __ (self, x "Was passiert, wenn Sie etwas zu töten. Es schaffen ein Blutfleck auf den Koordinaten der getötet Zombie (n) / Devil (e) Sie sind am Anfang jeder neuen Ebene gelöscht", y): global base_for_blood self.image = photoimage (file = "images / game_elements / blood.gif") self.blood_spot = canvas.create_image (x, y, image = self.image) canvas.tag_lower (self.blood_spot) Leinwand .tag_lower (Main) Klasse MINE (Objekt): "" "Die Minen Klasse Pass auf, wo Sie Schritt." "" def __init __ (self, x, y): = self.photo photoimage (file = "images / game_elements / Bergwerk. gif ") self.image = canvas.create_image (x, y, image = self.photo) # Erstellen Sie ein schwarzes Rechteck für das Bergwerk Bild canvas.tag_lower (self.image) canvas.tag_lower (Main) self.destroy = False Selbst .x = x = y self.y def explodieren (self): "" "fest, ob ein Zombie oder Teufel ist nah genug an der Mine eingestellt. Wenn das wahr ist, dann testet, um zu sehen, ob ein Zombie oder Teufel in der größeren Umgebung getötet werden sollten "" "destroy_zombie = [] destroy_devil = [] self.exploded = False für the_zombie in Zombie_Dict: Zombie = Zombie_Dict [the_zombie] if abs (self.x - Zombie.x) <20 und abs (self.y - Zombie.y) <20: # Test, um zu sehen, wenn ein Zombie / Devil ist innerhalb der Box, die +/- 40 Pixel von der Mine x und y = True self.exploded self.destroy = True für the_devil in Devil_Dict: Devil = Devil_Dict [the_devil], wenn abs (self.x - Devil.x) <20 und abs (self.y - Devil.y) <20: self.exploded = True self.destroy = True, wenn self.exploded == True: explodieren = canvas.create_oval ((self.x - 80), (self.y - 80), (self.x + 80), (Selbst .y + 80) einzutragen, füllen = 'Orange') # der Radius der Explosion ist 80 canvas.update (), wenn self.exploded == True: zum Teufel in Devil_Dict: Devil = Devil_Dict [Teufel] # den Zombie, um ein In Liste gelöscht werden, da kann man nicht ändern, Wörterbücher beim Überqueren Sie sie, wenn abs (self.x - Devil.x) <80 und abs (self.y - Devil.y) <80: destroy_devil.append (Teufel) für Zombie in Zombie_Dict : Zombie = Zombie_Dict [Zombie], wenn abs (self.x - Zombie.x) <80 und abs (self.y - Zombie.y) <80: destroy_zombie.append (Zombie) für Artikel in destroy_zombie: # Löschen der Zombie / Devils in der Explosion canvas.delete (Zombie_Dict [Artikel] .zombie) gefangen del Zombie_Dict [Artikel] für Einzelteil in destroy_devil: canvas.delete (Devil_Dict [Artikel] .devil) del Devil_Dict [Option], wenn self.exploded == true : canvas.delete (explodieren) Klasse Zombie_Attack (Objekt): "" "Der gelbe Kreis, dass die Zombies verwendet, um Boxhead angreifen. Es hat eine Lebensdauer von 125 Fällen in der while-Schleife, bevor es verschwindet. Es sei denn, es Streiks boxhead und senkt Gesundheits boxhead die von vielen "" "def __init __ (self, x, y, x_vel, y_vel): self.x = x = y self.y self.image = photoimage (file =" Bilder /game_elements/devil_a.gif ") self.attack = canvas.create_image (self.x, self.y, image = self.image) self.x_vel = x_vel wenn self.x_vel> 0: # Wenn die Geschwindigkeit in diese Richtung ist nicht 0 Es addiert 1 zu der Geschwindigkeit, so dass es schneller als der Teufel, der sie erschossen self.x_vel + = 0,75, wenn self.x_vel <0:. self.x_vel - = .75 self.y_vel = y_vel wenn self.y_vel > 0: self.y_vel + = 0,75, wenn self.y_vel <0: self.y_vel - = .75 self.life_span = 125 def move (self): global boxhead1 self.x + = self.x_vel self.y + = self.y_vel canvas.coords (self.attack, self.x, self.y) self.life_span - = 1, wenn abs (self.x - boxhead1.x) <30 und abs (self.y - boxhead1.y) < 30: #Strike Boxhead, wenn innerhalb von 30 Pixel boxhead1.health - = 10 = 0 self.life_span Klasse Shot (Objekt): "" "Korrigieren, wo gun versuchte je nachdem, welche Richtung Boxhead ist. Wegen der Boxhead Bild die Koordinaten von wo die Waffe ist, wenn Boxhead dreht sich unterscheidet, dass wenn er mit dem linken Dreharbeiten in Bezug auf die ursprünglichen x, y Position in der oberen linken Ecke des Bildes "" "Klasse Stats (Objekt ): "" "Legt die Partitur label / info. Dies aktualisiert einmal pro Schleife auf der Basis aller Boxhead Attribute ab. Gesundheit und Punktzahl "" "def __init __ (self): global boxhead1 self.board = self.board = canvas.create_text (200,65) canvas.create_rectangle(X_Window_Buffer,Y_Window_Buffer,Window_Width-X_Window_Buffer,Y_Window_Buffer+20,fill="Red") def Update (self): health_string = str (boxhead1.health) score_string = str (boxhead1.score) level_string = str (boxhead1.level) gun_string = str (boxhead1.gun) ammo_string = str (boxhead1.ammo) score_board = "Health : "+ health_string +" "+" Score: "+ score_string +" "+" Level: "+ level_string +" "+" Gun: "+ gun_string +" "+" Ammo: "+ ammo_string canvas.delete (Selbst. board) self.board = canvas.create_text (230,52, text = score_board) Klasse Boxhead (Objekt): "" "Die Boxhead charecter. Schießen, verschieben, Minen legen etc. sind alle in der Klasse Boxhead contianed. Schließlich all der Pistole Details müssen auf thier eigenen Klasse verschoben werden, so dass Pistol Gun = (Bereich Schaden) und Minen = Gun (Radius, Beschädigung) schließlich sogar Shotgun = Gun (Bereich damange, arc_width) und so weiter "," "def __init __ (self): self.image_up = photoimage (file =" images / boxhead / bhup.gif ") # Das Bild ändert, wenn Boxhead nach oben unten links rechts self.image_down = photoimage (file =" images / boxhead / bhdown.gif ") self.image_left = photoimage (file =" images / boxhead / bhleft.gif ") self.image_right = photoimage (file =" images / boxhead / bhright.gif ") self.x = random.randrange (( (game_limit.x_start / 2) 15), game_limit.x_end) # einen zufälligen Startpunkt auf der rechten Seite des Feldes. Zombies beginnen auf der linken Hälfte. self.y = random.randrange (game_limit.y_start, game_limit. y_end) self.image = canvas.create_image (self.x, self.y, image = self.image_up) self.x_vel = 0 = 0 self.y_vel self.direction = 1 self.health = 100 # +5 Gesundheit hinzugefügt am Anfang jeder Ebene self.gun = "Pistol" self.level = 1 self.score = 0 self.ammo = "unendlich" self.pause = False self.bonus_score = 0 self.pistol_range = 150 # der Bereich der Pistole in Pixel self.mine_count = 0 # Wie viele Minen def links zu bewegen (self): global unterwegs if (self.x> = game_limit.x_end) und self.x_vel> 0: # Kann Bewegung in diese Richtung Boxhead oder wird er Streik der Kante des Spiels self.x_vel = 0, wenn self.x <= game_limit.x_start und self.x_vel <0: self.x_vel = 0 sonst: übergeben, wenn (self.y> = game_limit.y_end) und self.y_vel > 0: self.y_vel = 0 elif self.y <= game_limit.y_start und self.y_vel <0: self.y_vel = 0 sonst: pass self.x + = + = self.x_vel self.y self.y_vel Leinwand. coords (self.image, (self.x), (self.y)) def shot_coords_update (self): "" "aktualisieren Sie die Koordinaten, wo die Waffe sollte aus abgefeuert werden" "" Wenn self.gun == "Pistol" oder self.gun == 'Mines': gun_range = self.pistol_range globalen up global unten links global global rechten up.x_start = 10 + boxhead1.x up.y_start = -5 + boxhead1.y up.x_end = 11 + boxhead1. x up.y_end = boxhead1.y - (gun_range + 5) = down.x_start boxhead1.x - 10 down.y_start = 5 + boxhead1.y down.x_end = boxhead1.x - 9 down.y_end = gun_range + 5 + boxhead1 .y left.x_start = 15 + boxhead1.x left.y_start = boxhead1.y - 15 left.x_end = boxhead1.x - gun_range - 15 left.y_end = boxhead1.y -15 right.x_start = 5 + boxhead1.x rechts .y_start = 0 + boxhead1.y right.x_end = gun_range + 5 + boxhead1.x right.y_end = 1 + boxhead1.y wenn self.direction == 1: # welche Richtung Boxhead ist Tatsache, 1 = bis 2 = unten usw. boxhead1.shoot_coords (up.x_start, up.y_start, up.x_end, up.y_end) wenn self.direction == 2: boxhead1.shoot_coords (down.x_start, down.y_start, down.x_end, down.y_end), wenn Selbst .Direction == 3: boxhead1.shoot_coords (left.x_start, left.y_start, left.x_end, left.y_end) wenn self.direction == 4: boxhead1.shoot_coords (right.x_start, right.y_start, right.x_end, right.y_end) def pic (self): "" "Ändern Boxhead das Image auf der Basis der Richtung er sich bewegt" "" Wenn self.direction == 1: canvas.itemconfigure (self.image, image = self.image_up), wenn Selbst .Direction == 2: canvas.itemconfigure (self.image, image = self.image_down) wenn self.direction == 3: canvas.itemconfigure (self.image, image = self.image_left) wenn self.direction == 4: canvas.itemconfigure (self.image, image = self.image_right) def fire_gun (self): "" "Fires je nachdem, welcher Waffe, die Boxhead wird mit im Moment" "" global blood_marks, Blood_Dict self.bonus_score = 0 Dead_Zombie_List = [] which_zombie = 0 global Zombie_Dict kill_list = [] # die Librarys, die halten, was Zombie muss von Zombie_Dict kill_devil = [], wenn self.gun == "Pistol" gelöscht werden: self.bullet_image = canvas.create_rectangle(self.shoot_x_start,self.shoot_y_start,self.shoot_x_end+1,self.shoot_y_end+1,fill="Black") # Erstellen die Kugel canvas.update () für Each_Zombie in Zombie_Dict: Zombie = Zombie_Dict [Each_Zombie] # Test, ob jeder Zombie ist im Weg der Kugel, wenn self.direction == 1: wenn Zombie.y <self.shoot_y_start und Zombie .y> self.shoot_y_end und abs (Zombie.x - self.shoot_x_start) <25: kill_list.append (Each_Zombie) elif self.direction == 2: wenn Zombie.y> self.shoot_y_start und Zombie.y <self.shoot_y_end und abs (Zombie.x - self.shoot_x_start) <25: kill_list.append (Each_Zombie) elif self.direction == 3: Wenn Zombie.x <self.shoot_x_start und Zombie.x> self.shoot_x_end und abs (Zombie.y - self.shoot_y_start) <25: kill_list.append (Each_Zombie) elif self.direction == 4: wenn Zombie.x> self.shoot_x_start und Zombie.x <self.shoot_x_end und abs (Zombie.y - self.shoot_y_start) < 25: kill_list.append (Each_Zombie) für each_devil in Devil_Dict: Zombie = Devil_Dict [each_devil], wenn self.direction == 1: wenn Zombie.y <self.shoot_y_start und Zombie.y> self.shoot_y_end und abs (Zombie.x - self.shoot_x_start) <25: Zombie.health - = 26 # Lower Teufels Gesundheit durch 26, so dass es dauert 4 Schüsse, ein Teufel, während 1 für einen Zombie kill_devil.append (each_devil) elif self.direction == 2 schlagen: wenn Zombie.y> self.shoot_y_start und Zombie.y <self.shoot_y_end und abs (Zombie.x - self.shoot_x_start) <25: Zombie.health - = 26 kill_devil.append (each_devil) elif self.direction == 3: if Zombie.x <self.shoot_x_start und Zombie.x> self.shoot_x_end und abs (Zombie.y - self.shoot_y_start) <25: Zombie.health - = 26 kill_devil.append (each_devil) elif self.direction == 4: if Zombie.x> self.shoot_x_start und Zombie.x <self.shoot_x_end und abs (Zombie.y - self.shoot_y_start) <25: Zombie.health - = 26 kill_devil.append (each_devil) für Each_Zombie in kill_list: # Zerstören Sie die Zombie- von der Zombie_Dict und Leinwand Zeichen = Blut getötet werden (Zombie_Dict [Each_Zombie] .x, Zombie_Dict [Each_Zombie] .y) Blood_Dict [blood_marks] = Zeichen blood_marks + = 1 canvas.delete (Zombie_Dict [Each_Zombie]) del Zombie_Dict [Each_Zombie] boxhead1.score + = 1 self.bonus_score + = 1 für the_devil in kill_devil: mark = Blood (Devil_Dict [the_devil] .x, Devil_Dict [the_devil] .y) Blood_Dict [blood_marks] = Zeichen blood_marks + = 1, wenn Devil_Dict [the_devil]. Gesundheit <= 0: canvas.delete (Devil_Dict [the_devil]) del Devil_Dict [the_devil] boxhead1.score + = 1 self.bonus_score + = 1 canvas.delete (self.bullet_image) self.score + = (self.bonus_score / 3) wenn self.gun == 'Mines': # lag ein Bergwerk und geben Sie es mine.x = boxhead1.x und mine.y = boxhead1.y globalen number_of_mines wenn self.mine_count> 0: mine = mine (self.x Selbst .y) Mines_Dict [number_of_mines] = mine number_of_mines + = 1 self.mine_count - = 1 sonst: pass canvas.update () def Taste (self, key): "" "Schauen Sie sich die Eingabe von der Tastatur und passen Boxhead entsprechend. Bewegung = WASD Feuer = Raum Pistol = I Mines = U Pause = P = O Erneut aktivieren "" "Weltpresse, pause_game drücken = Taste drücken, wenn == 'w': self.x_vel = 0 = self.y_vel -B_move_length self.direction = 1, wenn Presse == 's': self.x_vel = 0 = self.y_vel B_move_length self.direction = 2, wenn Presse == 'a': self.x_vel = -B_move_length self.y_vel = 0 self.direction = 3, wenn Presse == 'd': self.x_vel = B_move_length self.y_vel = 0 self.direction = 4, wenn Presse == "Raum": self.fire_gun (), wenn Presse == 'p': pause_game = True, wenn Presse == 'o': pause_game = False, wenn Presse == 'i': self.gun = "Pistol" self.ammo = 'Unendlich' drücken, wenn == 'u': self.gun = 'Mines' self.ammo = Selbst. mine_count def shoot_coords (self, x_start, y_start, x_end, y_end): "" "Hilfe, um die Koordinaten der Grundlage von wo aus jeder Richtung zu schießen einstellen" "" self.shoot_x_start = x_start self.shoot_y_start = y_start self.shoot_x_end = x_end Selbst .shoot_y_end = y_end Klasse Zombie (Objekt): "" "ZOMBIES. Nichts wie ein Haufen von Zombies, die Sie um zu jagen. Boxhead ist schneller als Zombies, aber Zombies können diagonal bewegen "" "def __init __ (self): self.zup = photoimage (file =" images / Zombies / zup.gif ") # gibt es 8 Richtungen, die Zombies können in Selbst bewegen. Zdown = photoimage (file = "images / Zombies / zdown.gif") self.zleft = photoimage (file = "images / Zombies / zleft.gif") self.zright = photoimage (file = "images / Zombies / zright.gif ") self.zrightup = photoimage (file =" images / Zombies / zrightup.gif ") self.zrightdown = photoimage (file =" images / Zombies / zrightdown.gif ") self.zleftup = photoimage (file =" images / Zombies /zleftup.gif ") self.zleftdown = photoimage (file =" images / Zombies / zleftdown.gif ") self.x = random.randrange (game_limit.x_start, (game_limit.x_end- (game_limit.x_end / 2))) # erstellen Zombies in der linken Hälfte der Arena self.y = random.randrange (game_limit.y_start, game_limit.y_end) self.direction = 1 self.zombie = canvas.create_image (self.x, self.y, image = Selbst .zup) self.alive = True self.distance_to_b = 0 self.attacked = False def move (self, Ziel): "" "Diese Funktion wie Boxhead1.move prüft, um zu sehen, ob der Zombie wird die Kante des Spiels treffen, aber auch Tests, um zu sehen, ob der Zombie wird mit einem anderen Zombie davor zusammenstoßen. Dies hilft zu vermeiden, dass alle Zombies stapeln sich auf der jeweils anderen und froming wirklich dichte Zombie. Das ist, was das wirklich lange Codezeile unten testet "" "global boxhead1 which_zombie = 0 Kollision = False self.x_vel = 0 self.y_vel = 0 für which_zombie in Zombie_Dict: test_self = Zombie_Dict [which_zombie], wenn abs (self.x - boxhead1.x) - abs (boxhead1.x - test_self.x)> 0 und abs (self.x - boxhead1.x) - abs (boxhead1.x - test_self.x) <Zombie_Buffer und abs (self.y - boxhead1 .y) - abs (boxhead1.y - test_self.y)> 0 und abs (self.y - boxhead1.y) - abs (boxhead1.y - test_self.y) <Zombie_Buffer: Kollision = True anderes: übergeben, wenn Kollision = = True: pass elif Kollision == False: Wenn self.x <target.x: self.x_vel = Zombie_per_move wenn self.x> target.x: self.x_vel = -Zombie_per_move elif self.x == target.x: Selbst .x_vel = 0, wenn self.x> = window_width - 25: # x coords self.x_vel = -Zombie_per_move wenn self.x <= 0 + 5: self.x_vel = Zombie_per_move wenn self.y <target.y: self.y_vel = Zombie_per_move wenn self.y> target.y: self.y_vel = -Zombie_per_move elif self.y == target.y: self.y_vel = 0, wenn self.y> = window_height - 25: # y Koordinaten self.y_vel = - Zombie_per_move wenn self.y <= 0 + 5: self.y_vel = Zombie_per_move self.y + = + = self.y_vel self.x self.x_vel canvas.coords (self.zombie, (self.x), (self.y )) # Bewegen Sie den Zombie entsprechend basierend auf, ob er fahren soll oder ein anderer Zombie ist in seinem Weg anderes: pass def pic (self): "" "Aktualisieren Sie die Zombie-Bild basierend auf dem der 8 Richtungen, die sie auf Reisen", " "wenn self.y_vel <0 und self.x_vel == 0: canvas.itemconfigure (self.zombie, image = self.zup) wenn self.y_vel> 0 und self.x_vel == 0: canvas.itemconfigure (self.zombie , image = self.zdown) wenn self.x_vel <0 und self.y_vel == 0: canvas.itemconfigure (self.zombie, image = self.zleft) wenn self.x_vel> 0 und self.y_vel == 0: Leinwand .itemconfigure (self.zombie, image = self.zright) wenn self.y_vel> 0 und self.x_vel> 0: canvas.itemconfigure (self.zombie, image = self.zrightdown) wenn self.y_vel <0 und self.x_vel > 0: canvas.itemconfigure (self.zombie, image = self.zrightup) wenn self.y_vel> 0 und self.x_vel <0: canvas.itemconfigure (self.zombie, image = self.zleftdown) wenn self.y_vel <0 und self.x_vel <0: canvas.itemconfigure (self.zombie, image = self.zleftup) def Kontakt (self): "" "Dies ist, wie die Zombies zu tun Schäden an Boxhead. Wenn sie in Kontakt mit Boxhead com es zieht die Gesundheit von Boxhead "" ", wenn abs (boxhead1.x - self.x) <10 und abs (boxhead1.y - self.y) <10 und self.attacked == False: boxhead1 .Wohlbefinden - = 1 self.attacked = True anderes: self.attacked = False Klasse Devil (Objekt): "" "Der Teufel Class. Sie bewegen sich schneller als Zombies haben mehr Gesundheit und kann Boxhead durch Kollision mit ihm oder von ihm schießen "" "def __init __ (self) angreifen: self.x = random.randrange (game_limit.x_start, (game_limit.x_end- (game_limit.x_end / 2))) self.y = random.randrange (game_limit.y_start, game_limit.y_end) self.direction = 1 self.alive = True self.distance_to_b = 0 self.attacked = False self.attack_fire = 0 self.health = 100 self.dup = photoimage (file = "images / devils / du.gif") # 8 die Teufel Bilder self.ddown = photoimage (file = "images / devils / db.gif") self.dleft = photoimage (file = "images / devils / dl.gif") self.dright = photoimage (file = "images / devils / dr.gif") self.drightup = photoimage (file = "images / devils / dtr.gif") self.drightdown = photoimage (file = "images / devils / dbr.gif") self.dleftup = photoimage (file = "images / devils / dtl.gif") self.dleftdown = photoimage (file = "images / devils / dbl.gif") self.devil = canvas.create_image (self.x, self.y, image = self.dup) def bewegen (self, Ziel): "" "Die Teufels Bewegung ist die gleiche wie die Zombies außer dass Devils bewegen sich schneller" "" which_zombie = 0 Kollision = False self.x_vel = 0 self.y_vel = 0 für the_devil in Devil_Dict: test_self = Devil_Dict [the_devil], wenn abs (self.x - boxhead1.x) - abs (boxhead1.x - test_self.x)> 0 und abs (self.x - boxhead1.x) - abs (boxhead1.x - test_self.x) <Zombie_Buffer und abs (self.y - boxhead1.y) - abs (boxhead1.y - test_self.y)> 0 und abs (self.y - boxhead1.y) - abs (boxhead1.y - test_self.y) <Zombie_Buffer: Kollision = True anderes: übergeben, wenn Kollision == True: geben elif Kollision == False: Wenn self.x <target. x: = self.x_vel Devil_move wenn self.x> target.x: self.x_vel = -Devil_move elif self.x == target.x: self.x_vel = 0, wenn self.x> = window_width - 25: # x coords self.x_vel = -Devil_move wenn self.x <= 0 + 5: self.x_vel = Devil_move wenn self.y <target.y: self.y_vel = Devil_move wenn self.y> target.y: self.y_vel = -Devil_move elif self.y == target.y: self.y_vel = 0, wenn self.y> = window_height - 25: # y Koordinaten self.y_vel = -Devil_move wenn self.y <= 0 + 5: self.y_vel = Devil_move Selbst .y + = + = self.y_vel self.x self.x_vel canvas.coords (self.devil, (self.x), (self.y)) else: pass def pic (self): "" "Aktualisierung der Bild "" "Wenn self.y_vel <0 und self.x_vel == 0: canvas.itemconfigure (self.devil, image = self.dup) wenn self.y_vel> 0 und self.x_vel == 0: canvas.itemconfigure (Selbst .devil, image = self.ddown) wenn self.x_vel <0 und self.y_vel == 0: canvas.itemconfigure (self.devil, image = self.dleft) wenn self.x_vel> 0 und self.y_vel == 0 : canvas.itemconfigure (self.devil, image = self.dright) wenn self.y_vel> 0 und self.x_vel> 0: canvas.itemconfigure (self.devil, image = self.drightdown) wenn self.y_vel <0 und Selbst .x_vel> 0: canvas.itemconfigure (self.devil, image = self.drightup) wenn self.y_vel> 0 und self.x_vel <0: canvas.itemconfigure (self.devil, image = self.dleftdown) wenn self.y_vel <0 und self.x_vel <0: canvas.itemconfigure (self.devil, image = self.dleftup) def Kontakt (self): "" "Wenn ein Teufel in Kontakt mit boxhead es zieht mehr Gesundheit als ein Zombie würde" " "wenn abs (boxhead1.x - self.x) <10 und abs (boxhead1.y - self.y) <10 und self.attacked == False: boxhead1.health - = 2 self.attacked = True anderes: Selbst. angegriffen = False def Angriff (self, boxhead1): "" "Wenn der Teufel innerhalb von +/- 200 Pixel in der X und Y-Richtung dann einen Feuerball auf boxhead 1 Mal schießt es und wartet dann 45 Schleifen zu schießen agian" "" global total_devil_attacks wenn abs (boxhead1.x - self.x) <200 und abs (boxhead1.y - self.y) <200 und self.attack_fire> 45: d_attack = Zombie_Attack (self.x, self.y, self.x_vel , self.y_vel) Devil_Attack_Dict [total_devil_attacks] = d_attack total_devil_attacks + = 1 self.attack_fire = 0 sonst: self.attack_fire + = 1 def key_press (event): "" "Diese Funktion durchläuft alle Tastendrücke an das Boxhead1.key Funktion für die weitere Analyse "" "global pause_game drücken = event.keysym boxhead1.key (drücken), wenn Presse == 'o': pause_game = False def init_game_parts ():" "" Dies baut alle inital Spielelemente, die nur einmal unabhängig von der Anzahl der Ebenen erzeugt. Zum Beispiel ist es die Anzeigetafel "" "global nach oben, unten, rechts, links unten global global global rechts links globalen current_shot globalen game_limit globalen score_board globalen boxhead1 globalen Zombie_Dict globalen game_limit up = Shot () nach unten = Shot () links = Shot (erstellt ) rechts = Shot () current_shot = Shot () game_limit = Edge_limits () boxhead1 = Boxhead () score_board = Stats () def new_level (): "" "Für jede neue Ebene alle Devils und Zombies getötet wurden so neue erstellt werden müssen. Jedes Mal, 70% mehr Zombies sind "" build_zombie = 0 build_devil = 0 für i in range (Number_of_Zombies) aufgenommen ": im Bereich z = Zombie () Zombie_Dict [build_zombie] = z build_zombie + = 1 für i (int (Number_of_Zombies / 5) ): D = Devil () Devil_Dict [build_devil] = D build_devil + = 1 def main_loop (): "" "Die zentrale Funktion für das Spiel. Es gibt 2 while-Schleifen. Das innere ist nur für eine neue Ebene und dem äußeren gebrochen while-Schleife wird nur unterbrochen, wenn boxhead Matrizen und das Spiel ist vorbei "" "global New_Level, Run_Game, Zombie_Dict, Dead_Zombie_List, Number_of_Zombies, boxhead1 init_game_parts () # erstellen gesamte Spiel Bilder wie die Kantenpuffer während Run_Game == True: global Blood_Dict Blood_Dict = {} # ein neues leeres Blut Wörterbuch zu erstellen, wenn boxhead1.health <= 0: # boxhead gestorben - game over return '! Game Over Final Score: "+ str ( boxhead1.score) + 'Finale Level: "+ str ((boxhead1.level - 1)) else: new_level () boxhead1.health + = 5 # fügen +5 bis Boxheads Gesundheits jedem neuen Level boxhead1.mine_count + = int (Number_of_Zombies / 5) # Boxhead erhält 1/5 der Anzahl der Zombies of Mines Wenn es 5 Zombies Boxhead bekommt 1 Mine während New_Level == False:. # das loop-Ebene, die bis Boxhead stirbt oder alle der Zombie läuft / Devils wurden getötet New_Level = False "" "Verschiebt die Devils and Zombies" "" für the_zombie in Zombie_Dict: wenn pause_game = True: Zombie_Dict [the_zombie] .move (boxhead1) Zombie_Dict [the_zombie] .pic () Zombie_Dict [the_zombie] .contact ( ) für the_devil in Devil_Dict: wenn pause_game = True: Devil_Dict [the_devil] .move (boxhead1) Devil_Dict [the_devil] .attack (boxhead1) Devil_Dict [the_devil] .pic () Devil_Dict [the_devil] .contact () zerstören = [] "" "Der Angriff Bereich, dass die Devils shoot" "" Wenn pause_game = True: für d_attack in Devil_Attack_Dict: Devil_Attack_Dict [d_attack] .move (), wenn Devil_Attack_Dict [d_attack] .life_span <= 0: destroy.append (d_attack) für Artikel in zerstören: canvas.delete (Devil_Attack_Dict [Artikel] .attack) del Devil_Attack_Dict [Artikel] "" "Explode die Minen" "" mine_destroy = [] für die Mine in Mines_Dict: Mines_Dict [mine] .explode (), wenn Mines_Dict [mine ] .Destroy == True: mine_destroy.append (von mir) für die Minen in mine_destroy: canvas.delete (Mines_Dict [mine] .Bild) del Mines_Dict [mine] "" "Boxhead bewegt" "" Wenn pause_game = True: boxhead1. move () boxhead1.pic () boxhead1.shot_coords_update () score_board.update () time.sleep (0,02) # Schlaf für 1/100 Sekunde zwischen Schleifen canvas.update () If Len (Zombie_Dict) == 0 und len (Devil_Dict) == 0: # wenn sie beide = 0 wird eine neue Ebene erstellt New_Level = True, wenn boxhead1.health <= 0: = True New_Level Run_Game = False boxhead1.level + = 1 Number_of_Zombies = int (float (Number_of_Zombies ) * 1,7) # Erhöhung der Zahl der Zombies in jeder Runde für Blut in Blood_Dict: # gesamte Blut für die neue Runde canvas.delete (löschen Blood_Dict [Blut]) New_Level = False print 'Game Over! Final Score: "+ str (boxhead1.score) + 'Final Level:" + str (boxhead1.level - 1) # print das Endergebnis canvas.after (30, main_loop) canvas.master.bind (" ", Key_press) canvas.pack () canvas.mainloop ()

                    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.

                      8 Schritt:Schritt 1: Benötigtes Material Schritt 2: Löten der Adafruit Neopixel LED Schritt 3: Öffnen Sie die Lampen top Schritt 4: Stellen Sie die Lampe zum Anfassen Schritt 5: Starten Schließen des Lampen Schritt 6: Schließen Sie die Lampe und das Kabel Schritt 7: Die Programmierung des Zündkerzen Core oder Arduino Schritt 8: Testen Sie es!

                      IKEA ist sehr berühmt für seine minimalistisches Design und Einfachheit. Die Fryebo Lampe ist ein schönes Objekt speziell verwendbar, einfach und intuitiv. Im Anschluss an die gleiche Philosophie haben wir uns entschlossen, diese Lampe Hinzufügen eines Kreises von 24 LEDs im Inneren unter Beibehaltung der ursprünglichen Licht noch vorhanden smartify. Die Ergebnisse ist eine leistungsfähige intelligente Lampe, die über das Internet anmelde info und Alarme verbunden werden kann, wenn Sie in der Nähe vorbeigehen werden. Das Projekt basiert auf der VIPER IoT-Design-Suite, die von einem Schutzschild für Arduino und Funken und aus einer Reihe von Software, die einfache Programmierung Arduino und ähnliche Platten in Python ermöglicht zusammensetzt basiert. weitere Informationen über VIPER hier Schritt 1: Benötigtes Material Du brauchst: Die Fryebo Ikea-Lampe Der Funke Core oder Photon Platine (Arduino DUE kann auch verwendet werden) einem Adafruit Neopixel 24 LEDs Ring Der VIPER Suite Die TOI Schild Infos hier Schritt 2: Löten der Adafruit Neopixel LED nur löten drei Kabel in verschiedenen Farben auf dem Adafruit Vcc, GND und Eingabestifte. Verwenden Sie Farben, die leicht erkannt und mit den ausgewählten Stiften zugeordnet werden können. Halten Sie das Kabel lang mindestens 40 cm.Step 3: Öffnen Sie die Lampe oben Öffnen Sie vorsichtig die Lampe oben mit einem Schraubendreher oder Schneider, um die winzigen Stifte der Kunststoffmembran entsperren. vorsichtig sein, ist der Kunststoff sehr weich und man könnte die Lampe beschädigt werden. dieser Teil wird am Ende des Prozesses sichtbar sein. Löten Sie einen Draht auf der LED + Stift der Lampe zum Bord halten es mindestens 40cm long.Step 4: Stellen Sie die Lampe zum Anfassen Die TOIShield gehören ein Touch-Button-Verbindung, die metallische Oberfläche in einem kapazitiven Schaltfläche zu konvertieren. Wir sensorisierten den internen Teil der Lampe oben mit Aluminiumfolie mit einem Draht verbunden ist. Befestigen Sie das Kabel Folie zu der Lampe Innenteil mit Schnellkleber von doppelseitigen Klebeband Schritt 5: Starten Schließen des Lampen Führen Sie die Kabel durch eine der ursprünglichen elektronischen Platine Loch. übergeben dann den Draht durch die Innenbohrung der Plattenhalter. fest die Drähte, um die Schließung des lampStep 6 ermöglichen: Schließen Sie die Lampe und das Kabel schrauben Sie den Hals von oben führen Sie das Kabel durch die Löcher und führen Sie das Kabel durch die Lampe Hals. Wir haben Probleme vorbei all das Kabel durch den Hals hatte, so dass wir empfehlen, mindestens einen (zwei Werke besser) der ursprünglichen Lampenkabel geschnitten, um als Drähte Richtlinie betrachtet werden. Denken Sie daran, zwei Drähte mehr zu Ihrem Kabelsatz vor ziehen sie durch den Hals hinzuzufügen. Diese werden verwendet, um den Schnitt original cablesStep 7 ersetzen: Programmierung des Zündkerzen Core oder Arduino Mit VIPER können Sie bequem programmieren Arduino, UDOO und Funkenplatten in Python. Info auf VIPER hier http://bit.ly/kickviper Zunächst einmal müssen Sie, um das Board uploading darauf Viperize die VIPER Virtual Machine (siehe das Video) Öffnen Sie die VIPER IDE und laden Sie die zwei angehängte Dateien (schauen, wie kurz ist dies VIPER-Code) Klicken Sie auf Hochladen Schritt 8: Testen Sie es! Installieren Sie die VIPER App und öffnen Sie sie! Betreiben Sie Ihre Lampe durch das Arduino oder Spark-USB-Anschluss Entdecken Sie die VIPER-Geräte mit dem Netzwerk verbunden Wählen Sie die Lampe. Jedes Mal wenn Sie die Taste drücken wird die Lampe die Farbe nach dem Zufallsprinzip zu ändern. Sie können beginnen, bilden diese sehr einfache Beispiel-Code, um das Verhalten, das Sie für Ihren neuen Smart Mobile-Fryebo Lamp bevorzugen entwickeln Wenn du mehr über VIPER und zu TOI Things auf Internet Besuch wissen wollen http://bit.ly/kickviper

                        6 Schritt:Schritt 1: Richten Sie Ihre Raspberry Pi Schritt 2: Führen Sie Updates und Upgrades Schritt 3: Installieren pip Schritt 4: Installieren ystockquote Schritt 5: Schreiben Sie die Python-Skript Schritt 6: Führen Sie es, fertig!

                        Ich arbeite an einigen neuen Projekten mit immer Aktienkurs Daten aus dem Web, die verfolgt und über meine Raspberry Pi angezeigt wird arbeiten. Ich wollte, um das Setup auf, wie man diese mit Python zu tun zu teilen. Dieser kurze Instructable zeigt Ihnen, wie installieren Sie ein Lager Abfrage-Bibliothek, um (meist) in Echtzeit Aktienkurse mit Yahoo Finance API zu erhalten. Es gibt keinen GitHub beteiligt! Richten Sie Ihre Raspberry Pi: Sie können diese Aktienkurs-Sammlung Motor auf jedem Linux server.Step 1 verwenden Wenn Sie nicht bereits getan haben, werden Sie wollen, um eine Grundkonfiguration Ihres Raspberry Pi zu tun. Sie müssen Internetzugang für diese Software-Installation. Wenn Sie gerade erst angefangen, meine ultimative Raspberry Pi-Konfigurationshandbuch zum Laufen zu bringen. Ziehe ich mit ssh und bin mit Klemme auf einem Mac, aber so lange wie Sie Internet-Verbindung haben, werden Sie in Ordnung sein. Wir werden über die Befehlszeile für dieses Tutorial auf einem Raspberry Pi.Step 2: Führen Sie Updates und Upgrades Immer wenn Sie neue Bibliotheken zu Ihren Raspberry Pi fügen, wollen Sie zu aktualisieren und aktualisieren Sie Ihre Software-Pakete. Wir werden mit diesem Schritt beginnen. Eingeben sudo apt-get update dann sudo apt-get upgrade Wählen Sie Y, um fortzufahren, wenn Sie gefragt Sie finden das übliche Bildlauf von Linux sehen und muss einige Minuten warten. Aufstehen und nach jedem dieser commands.Step 3 einige Stretching: Installieren pip pip ist ein Paket-Manager und Installationsprogramm für Python . Wir wollen diese installiert, um die entsprechende Yahoo python stock Bibliotheken auf die Pi geladen zu bekommen. Eingeben: sudo apt-get install python-pip Wählen Sie Y, um fortzufahren, wenn Sie gefragt Dies wird ein paar minutes.Step 4 nehmen: Installieren ystockquote ystockquote ist ein Python-Modul , das können Sie ganz einfach sammeln Aktienkurse von Yahoo wird. Es tut dies relativ schnell, viel mehr, als BeautifulSoup , die eine weitere Möglichkeit, Bestandsdaten zu erhalten wäre. Eingeben: sudo pip ystockquote installieren Schritt 5: Schreiben Sie die Python-Skript Wir werden ein neues Verzeichnis und ein Python-Skript zu erstellen, um die Bestandsdaten zu erhalten. Eingeben: mkdir Stockquote cd Stockquote nano stockquote.py Dadurch öffnet sich die nano-Editor. Geben Sie in diesem folgenden 4-Zeilen Python-Skript Import ystockquote Tickersymbol = 'ADSK' ALLinfo = ystockquote.get_all (Tickersymbol) drucken Tickersymbol + "Preis =" + ALLinfo ["Preis"] cntrl-X, Y wird speichern Sie die .py Datei Schritt 6:. Führen Sie es, fertig! Jetzt führen Sie es. python stockquote.py Hier finden Sie die aktuelle Aktienkurs von Autodesk sehen. Kaufen! Kaufen! Kaufen! Ich hoffe, das war hilfreich! Scott Kildall Weitere Informationen über die meine Projekte, du hast mich hier zu finden: kildall oder www.kildall.com/blog

                          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

                            8 Schritt:Schritt 1: Inspiration Schritt 2: Tilt Schritt 3: Pan Schritt 4: Montage Schritt 5: Motor Driver Schritt 6: Fräsen und Tiefziehen Schritt 7: Server Schritt 8: Installierte

                            Basierend auf einem früheren Arbeit, die wir mit Megaphonen im öffentlichen Raum durchgeführt, wurden ich und meine Mitarbeiter, Radamés Ajna, eingeladen, in einer Ausstellung mit dem Titel teilnehmen Multitude , von Lucas Bambozzi und Andrea Caruso Saturnino kuratiert. Die Ausstellung wurde auf die Schriften von Antonio Negri und Michael Hardt und ihr Konzept der Vielzahl der Basis, und konzentrierte sich auf Werke, die Formen des Widerstands zu etablierten Macht und vorher festgelegten Kanäle Legitimationsanzugehen, während Denken von der Masse als eine Reihe von Singularitäten und einzigartige Identitäten, die sich gegenseitig in einem Prozess, der Macht, sondern auch Dissens kombiniert beeinflussen. Wir haben vorgeschlagen, eine Reihe von Roboterskulpturen die es ermöglicht, die Besucher in der Ausstellung, indem sie ihre Meinungen mit einem System, das anonyme SMS-Textnachrichten in voice.Step 1 drehen würde teilnehmen zu bauen: Inspiration Das Projekt wird auch von den öffentlichen Demonstrationen und Proteste, die in Brasilien im Jahr 2013 passiert ist, und den Versuch der Regierung, um die Nutzung von öffentlichen Räumen regulieren inspiriert. Genauer gesagt, es spielt mit den Mehrdeutigkeiten, die bei dem Versuch, das soziale Verhalten in dicht besiedelten städtischen Gebieten, in denen alltägliche Aktivitäten sind bereits gewalttätig und chaotisch definieren entstehen. Um einige dieser Zweideutigkeit und Gewalt zu vermitteln haben wir beschlossen, unsere Megaphone aus wie Waffen, die ausgerichtet und verwendet werden, um "Angriff" bestimmte Teile der Ausstellung space.Step 2 werden konnte: Tilt Alle 7 Artikel anzeigen Alles beginnt mit einer Skizze. . . Wir notierte ein paar Ideen für einfache Schwenk- und Neige-Systeme für unsere Megaphone, und beschlossen, eine einfache Konstruktion auf Basis von zwei Motoren und einem kastenartigen Tragstruktur aufzubauen. Kippen schien recht einfach, wir mussten einfach auf den Körper des Megaphon einen Weg zur Kopplung eines Motors. Verwendung eines Systems von Getriebe und Riemen Wir haben überlegt, aber in oder um das Design einfach zu halten und die Anzahl der beweglichen Teile, die brechen könnte zu minimieren, haben wir beschlossen, den Motor direkt heften sich an die Megaphone mit einige benutzerdefinierte 3D-gedruckte Teile. Diese wurden unter Verwendung Fusion360 entworfen und hergestellt, um perfekt mit dem Radius des Megaphon und die Zahnradzähne des Motors. Auf der Seite gegenüber dem Motor befestigt wir eine kurze Achse, die an einem Lager an der Seitenplatte befestigt ist. Wir entschieden uns, Dibond Aluminiumverbundplatten für die Neigungsunterstützungsstruktur verwenden, da es leicht, billig, stark genug, und leicht zu schneiden mit einem Omax waterjet.Step 3: Pan Alle 12 Artikel anzeigen Panning war ein wenig härter. Wir konnten nicht auf der Motorkupplung setzen, um das Gewicht des gesamten Neigungsstruktur unterstützt, so dass wir, um mit irgendeiner Art von Mechanismus zu halten, bis das Megaphon unabhängig von der Schwenkmotor. Eine erste Idee beteiligt mit ein paar halbkreisförmige Nuten, Schrauben und Kugellagern auf einer Festplatte zu halten, bis die Bodenstruktur und ermöglicht es, sich zu drehen. Wir nutzten die omax Wasserstrahl, einige Metallplatten geschnitten, um das auszuprobieren. Wir haben nicht mit Dibond, weil das Gewicht des Neigungsstruktur und Megaphon war genug, um zu biegen und falten den Dibond. Das funktionierte ok. Es geschwenkt, aber nur, wenn die feststehende Platte wurde genau parallel zum Boden. Jede Art von Variation dieses Winkels verursacht die Schrauben an den Enden der Nuten hängen bleiben. Offensichtlich muss dies in einem robusteren Weise erfolgen. Dies ist, wenn Paolo schlug vor, in Plattenspielern zu suchen. Lazy-Susan für den Gewinn! Dies bedeutete eine leichte Neugestaltung der pan-Strukturen und mehr Wasserstrahlen, aber das ist, was Rapid Prototyping geht! Wir hatten eigentlich zu entwerfen, eine Art umgekehrter Lazy-Susan-System seit Drehscheiben funktionieren am besten, wenn es Gewicht drängen ihre Platten zusammen und gegen ihren Lagern. Dadurch erhöhte sich die Gesamthöhe des gesamten Tragstruktur, aber machte es viel mehr robust und widerstandsfähig gegen unplanar conditions.Step 4: Baugruppen Alle 16 Artikel anzeigen Nachdem alle Stücke geschnitten und gedruckt, der Montage des Mechanismus war nicht schwer. Die meisten der Platten hatte eine Art der Komponente zu ihnen angebracht, wie Schalter oder Lager, so dass diejenigen, erhalten sie vor der Montage der Struktur befestigt ist. Dann werden 3 Seiten des Neigungsfeld zusammen, so dass das Megaphon aus, so dass wir in der Box zu erreichen, um die obere Platte in die Pfanne Mechanismus zu befestigen. Sobald dies alles zusammen, das Megaphon und die letzte Platte eingeschraubt zu werden. Wir haben alle Design-Dateien in gemeinsam genutzten unsere Fusion 360 Community-Seite . Schritt 5: Motor Driver Wir verwendeten 12V Autofensterantriebe, da sie recht kräftig, leicht zu finden, und in der Regel in Überschuss speichert billig. Wir haben diese für die U 9 € und 15 € U gekauft, und zur Zeit sind sie 20 € bei surpluscenterdepot.com. Einige der Demontage ist erforderlich, um die Motoren aus dem Auto-Fenster Linearbewegungsmechanismus zu erhalten benötigt, aber es ist nicht so schwer. Diese 12V-Motoren können bis zu 5A zu ziehen, wenn ins Stocken geraten, aber die Megaphone sie nur um 1,5 A zu ziehen, um 2A bewegen. Und auch wenn sie nach unten ausgerichtet ist, sind sie immer noch mit der vollen 12V super schnell, so dass wir beschlossen, einige PWM'ing, um ihre Geschwindigkeit ein wenig unter Kontrolle bringen. So, 12V, 2A bis 5A, PWM, und bidirektionale Steuer. . . führte uns zu diesem kleinen H-Brücken-Treiberschaltung: TLE-5206. Wir könnten Schneiden es ein wenig zu nahe mit dem Dauerstrom max spec, aber für diese Anwendung, wir nur mit einem 5A Stromversorgung für beide Motoren, so dass es wahrscheinlich in Ordnung. . . Hier ist unsere Schaltung zur Ansteuerung zwei davon, mit Endschalter. Die Platte wurde für eine Arduino Mega ADK gemacht, weil, wenn wir zuerst diese entworfen, waren wir der Hoffnung, die ADK verwenden, aber es kann für jede andere Art von Arduino mit 4 PWM Stifte und 4 digitale Eingangsanschlüsse hergestellt werden. Der Code für die Arduino ist im Grunde eine kleine Zustandsmaschine, die für Bewegungsbefehle von einem Android-Handy wartet, und aktiviert dann die Motoren, während die Aufmerksamkeit auf die Endschalter. Fräsen und Vakuumformen: hier ist der Mechanismus bei voller 12V speed.Step 6 getestet Alle 7 Artikel anzeigen So ist der Mechanismus war solide, aber wir waren immer noch die äußere Hülle, die das Ganze eher wie eine Waffe macht fehlt. Wir haben uns entschieden, es aus vakuumgeformten Polystyrol zu machen, weil es schien, einfach, leicht und billig. Wir modelliert die Schale in Fusion 360 und verwendet seine CAM Add-ons (CAM 360), um Werkzeugbahnen zum Fräsen einer Form zu erzeugen. Wir haben zunächst versucht, einen Master aus Styropor zu machen, aber es hielt Schmelzen oder Verformen während des Vakuumformverfahren, so dass wir schließlich Fräsen eines MDF-Master statt. Wir verwendeten eine hausgemachte Vakuumform-Setup ähnlich dem zu sehen hier . Vakuumformen war ziemlich einfach und macht Spaß. Lösen des Master von der Kunststoff war etwas schwieriger (wahrscheinlich wegen der Größe und Höhe unserer Objekt). Glücklicherweise Schneiden der Kunststoff mit einem Dremel in einigen strategisch wichtigen Orten geholfen loslassen mold.Step 7: Server Zusätzlich zu der Möglichkeit, SMS-Textnachrichten von Teilnehmern zu erhalten, auch setzen wir gemeinsam einen Mechanismus, der die Besucher ihre eigene Stimme zu verwenden, um Nachrichten für die Megaphone zum Entspannen bleibt erlaubt. Wir entkernt ein Megaphon und benutzt seinen Körper, um eine kleine Raspberry Pi-Server im Inneren zu verstecken. Dieser Server wurde so programmiert, dass Signale aus dem Megaphon Trigger, Sprach Rekord Menschen zu allen anderen Megaphonen in den Raum zu erhalten, und dann verteilen die aufgezeichnete Nachricht. Wir haben eines der Raspberry Pi ist GPIO-Pins, die Megaphon Trigger und einen USB-Soundkarte zu lesen, um das Megaphon eigenen Mikrofonsignal in die Raspberry Pi gelesen. Dieser Server war auch verantwortlich für die Verteilung der SMS-Textnachrichten an alle Megaphonen im ganzen Raum verstreut. Der Python-Code für den Server ist auf GitHub .Schritt 8: Installierte Alle 7 Artikel anzeigen Ein Megaphon Wandtafel und drei Roboter-Strukturen wurden auf der Messe in São Paulo installiert. Dies ist, wie sie aussahen installierte.

                              7 Schritt:Schritt 1: Steckbrett it! Schritt 2: Time to Code (! Yay) Schritt 3: Stellen Sie den Alarm Schritt 4: Mmm, Dessert Zeit Schritt 5: Laden Sie die Python-Code Schritt 6: Problembehandlung - bang bang! Schritt 7: Jenseits ...

                              Ich habe schließlich inmitten der High School und anderem beschlossen, etwas Spaß zu haben und meinen ersten instructable. Wenn Sie Feedback haben für mich Fragen Sie sie nach unten in den Kommentaren schreiben, und ich werde versuchen, sie zu beantworten. Diese instructable wird Sie durch das Erstellen einer Basisalarmsystem auf dem Arduino, sowie die mehr eine erweiterte Version mit dem Raspberry Pi und einer Webcam einrichten, werden Sie eine E-Mail mit einem Bild zu senden, wenn ein Eindringling erkannt wird. Ich werde mein Bestes versuchen, diese so einfach wie möglich für den Anfänger machen, die zwar nicht in die Feinheiten der, wie alles funktioniert bogging. Zum Beispiel werde ich Ihnen den Code für die Programme, aber nicht durch zu gehen, wie sie alle arbeiten - aber ich habe einige Kommentare im Code zu verlassen, so dass Sie es auf diese Weise / können sezieren. Wenn Sie ein Anfänger sind, empfehle ich versuchen, die Arduino-Version, die ein Spaß und einfach Projekt ist. Wenn Sie mehr Erfahrung oder wie Raspberry Pi haben, dann versuchen Sie die Webcam-Version. Welche Kapazität? Kapazität ist die Fähigkeit, eine elektrische Ladung, die meist in der Elektronik von Kondensatoren gesehen speichern. Jedoch speichert der Körper (oder Körper jeden Kreatur in diesem Fall) auch eine elektrische Ladung. Die Kapazität wird in Farad gemessen, nachdem Michael Faraday, ein britischer electrochemist des 19. Jahrhunderts benannt. Kapazitive Touchscreens und kapazitive Tasten in Smartphones und andere Geräte verwenden Kapazität zu sagen, wann und / oder in dem Sie berühren. Die kühle Sache über Kapazität als ein Sensor ist, können Sie keine Metallgegenstände benutzen, um zu sondieren und zu messen dafür.

                                6 Schritt:Schritt 1: Werkzeuge, Materialien und Ressourcen Schritt 2: Erstellen der Matrix Schritt 3: Anbringen der Matrix Schritt 4: Die Programmierung des Arduino Schritt 5: Die Programmierung des User Interface Schritt 6: Die Bedienung der Matrix, Fazit

                                Seit kurzem bin ich ein Arduino Uno, und es wurde schnell mein Lieblingsspielzeug. Nach dem Erlernen der Grundlagen, wie die Plattform betreibt, interessierte ich mich für die Anbindung der Arduino mit PCs. Nachdem ich eine große Anzahl von LED-Matrix-Projekte auf Instructables und den Rest der Bahn, schien die LED-Matrix wie eine perfekte Projekt, zu versuchen, mit einem Computer zu verbinden. Ich entschied mich für eine 3 x 3-Matrix zu bauen, weil ich dachte, es wäre am besten, klein zu beginnen (und ich hatte nicht genug LEDs für ein größeres). Außerdem ist 3 x 3 über die größte Größe ist es sicher, direkt aus dem Arduino anzutreiben, ohne eine externe Stromversorgung. Jedoch sollte der Entwurf für die Matrix und die Software in dieser Instructable ziemlich einfach maßstäblich bis zu 8 x 8 oder so, mit Hilfe eines externen 5 V-Stromversorgung und einige Transistoren sein. .

                                  8 Schritt:Schritt 1: Teileliste Schritt 2: Laden MICILE Software auf dem Arduino Schritt 3: Fügen Sie die Arduino Sensor Shield In den Uno Vorstands Arduino Schritt 4: Schließen Sie den Sensor an die Spannungsversorgung Schirm Schritt 5: Schließen Sie Stifte von Arduino zu Roboter-Hand Schritt 6: Laden Sie Robotic Hand Code Schritt 7: Nun versuchen die Industrieroboter-Arm Schritt 8: Laden Sie und führen Sie den Code

                                  Wir brauchten eine Plattform, um unsere neue MICILE / Arduino Benutzeroberfläche zu testen. Die Roboterhand und Arm schien etwas komplex genug, um wirklich geben dem Konzept einer umfassenden Training. Das Projekt erlaubt es uns, eine MICILE Tablet, ein Arduino Uno Board (und Sensorschutz) verwenden, um einfach steuern einen Roboterarm. Das Interface ist sauber und einfach. Wir denken, Sie werden feststellen, dass die die MICILE Tablet ist eine großartige Ergänzung zu jedem Arduino-Projekt. Der gesamte Code kann www.micile.com finden.

                                    5 Schritt:Schritt 1: Vorbereiten der Mikrofone Schritt 2: Platzierung und Wireless Schritt 3: Die Software Schritt 4: Verbesserungen und Änderungen Schritt 5: Wenn man von hier

                                    Haben Sie jemals das Bedürfnis, Ihre Sprechgewohnheiten zu verfolgen, steuern Sie Ihr Zuhause mit Ihrer Stimme, oder einfach von mehreren Mikrofonen aufnehmen auf einmal gefühlt? Dann haben Sie Glück! In diesem Instructable, erfahren Sie, wie installieren und nutzen ein Array von mehreren Mikrofonen gleichzeitig erfassen Rede von einzelnen Räume als Text. Gefällt Ihnen dieses Instructable? Vergessen Sie nicht, mit uns, ihm zu folgen Lieblings, und prüfen Sie uns auf Facebook ! Um dies zu tun, werden wir mit Hilfe des GStreamer Mediathek und CMU pocket Sprache-zu-Text-Dienstprogramm, läuft mit Python 2.7 auf Ubuntu 14.04. Dieses Setup ist erweiterbar - wenn Sie nicht auf der Suche nach Sprache-zu-Text-und stattdessen wollen einige andere Audio-Verarbeitung, hat GStreamer eine breite Palette von Plug-ins , die bis zu Ihrer Multi-Mikrofon-Array angeschlossen kann, um die Aufnahme zu tun, audio Füllstandsüberwachung, Frequenzanalyse und vieles mehr! Zeitaufwand: 1 Stunde Gesamtkosten (pro Stimme): 30 € per Kabel oder W-LAN 90 € Sie müssen (pro Stimme): USB-Soundkarte Dongle (billiger auf eBay ) - € 06.02 Richtmikrofon - 30 € 1/8 "male auf 1/4" female-Audio-Adapter (billiger auf eBay ) - € 05.01 Bluetooth Audio Transmitter (Optional) - € 30 Bluetooth Audio Receiver (Optional) - 25 € Female-to-Female-Audio-Adapter (optional) -. € 1 / ea Male-to-Male-Audio-Adapter (optional) - € 1 / ea. Extras: 10-Port USB Hub - 24 € Eine kurze Notiz über die optionale Wireless-System - es gibt eine Menge Möglichkeiten, um billiger Funkmikrofon Audio tun (wir persönlich ausprobiert dieses Clip-on-Ansager Mikrofon Setup für € 13 insgesamt), aber sie sind oft auf einen einzelnen Kanal begrenzt. Wenn Sie mehrere von ihnen zu kaufen, werden sie an alle Empfänger übertragen und Sie werden nicht genial, dass pro Zimmer Granularität zu bekommen. Lassen Sie uns an die Arbeit!

                                      10 Schritt:Schritt 1: Rohstoffe Sammeln Schritt 2: 3D-Druck die Enclosure Schritt 3: Draht-Leistungskreis Schritt 4: Fertig Wiring Schritt 5: SIM-Karte Schritt 6: Setup-SD-Karte Schritt 7: Setup WiFi und Desktop löschen Schritt 8: Fertig Software Installation Schritt 9: Installieren Sie TYOS Schritt 10: Setzen Alles zusammen

                                      Dieses Tutorial führt Sie von Anfang bis Ende bei der Konstruktion Ihrer eigenen Smartphone beenden. Sie werden von 3D-Druck starten einen Fall, dann Löten von Leiterplatten zusammen, Montage, und schließlich die Installation eines mobilen OS auf Ihr Telefon und mit Python, um es Ihr zu machen. Sie können mehr über das Projekt zu erfahren hackaday.io/project/5083 Kenntnisse erforderlich: Grund Löten Vertrautheit mit dem Raspberry Pi OR: Viel Zeit und Geduld

                                        5 Schritt:Schritt 1: Extra DC-Netzteil für Kraft gewidmet Schritt 2: Verbindungsdrähte für den Antrieb der Richtung des Motors. Schritt 3: BREAD BOARD zur Vereinfachung der Kabelverbindungen. Schritt 4: Code Snippet Python Probe machen Motor drehender One-way dann andere Schritt 5: Fehlersuche.

                                        Es existieren noch keine Beispiele, die ich richtig finde, dass, wie Sie einen einfachen DC-Motor arbeitet mit RaspberryPI bekommen. Dies ist ein einfaches Tutorial für "Wie man einen Motor wiederum zu machen." Roboter, Rollen, Förderanlagen, und allerlei Zeug dazu gebracht werden, bewegen Sie mit einfachen Raspberry-Code und wirklich preiswert RC-Racer wie Motoren werden. Die Teile dafür kann bei eBay für etwa 10 € (sicherlich unter 20 €) erworben werden. Das Projekt geht davon aus, haben Sie Zugriff auf Drähte, alte Stromversorgungen (ab Altgeräte gespült) und misc andere Gegenstände. Ich würde denken, dies zu sein, muss eine grundlegende in den Zeitschriften der Anleitungen haben. Nachdem es herauszufinden aus einem Zusammenfluss von verschiedenen Quellen und einige Hacker. Wir haben für Sie die einfache Schritte für das Erhalten einer Standard-Gleichstrommotor mit einem Python-Code-Snippet auf einer Raspberry Pi drehen. Hier ist eine youtube mit einem Arduino, nicht ganz das Gleiche: Was ist eine "H-Bridge" und wie funktioniert ein DC-Motor die Richtung ändern? {-} Wenn Sie einen Gleichstrommotor bis zu {+} Draht auf eine Leitung und Haken Draht auf der anderen Leitung, dreht der Motor eine bestimmte Richtung. Wenn man die Drähte an anderen Leitungen umzuschalten, dreht sich der Motor in die andere Richtung. Aber wie können wir "elektronisch" schalten Sie die elektrische Polarität mit Schaltungen Antwort. H-Bridge. Die Schaltungen für die H-Brücken sind nicht trivial für den Anfänger. Die L298N Modul ist eine einfache ready to rock and roll "dual" H-Brückenschaltung Bord. Das bedeutet, dass Sie die Möglichkeit, zwei Motoren in beiden Richtungen kontrollieren. Sie müssen die Modulplatine für diese. Parts: Controller: 5 PCS verdoppeln h-Brücke DC Schrittmotorantriebe Controller Board Modul Arduino L298N http://www.ebay.com/itm/231454411738 Double H-Brücke Laufwerk Chip: L298N Logical Spannung: 5V Betriebsspannung: 5V-35V Logical Strom: 0 mA-36mA Antriebsstrom: 2A (MAX einzige Brücke) Lagertemperatur: -20 bis +135 Max Leistung: 25W CHEAP DC MOTOR w / GETRIEBE Car Gear Motor TT Motor Robot http: //www.ebay.com/itm/2pcs-Intelligent-Car-Gear ... 100% nagelneu und hohe Qualität Betriebsspannung: 3 V ~ 12 V DC (empfohlen Betriebsspannung von etwa 6 bis 8 V) Maximales Drehmoment: 800gf cm min (3V) Leerlaufdrehzahl: 1.48 (3 V Zeit) Der Laststrom: 70mA ( 250mA MAX) (3V) Dieser Motor mit EMC, Anti-Interferenz-Fähigkeit. Der Mikrocontroller ohne Störungen. Größe: 7x2.2x1.8cm (ca.) REFERENZ: Eine weitere Anleitung tut so ziemlich dasselbe!

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