Werbung
Wollten Sie schon immer einmal zu einem persönlichen Empfang nach Hause kommen? Mit einem Raspberry Pi und ein paar einfachen Komponenten können Sie! In diesem einfachen Projekt verwenden wir einen Reed-Schalter, um beim Öffnen einer Tür eine Themenmelodie auszulösen. Wir werden hier einen Raspberry Pi als Controller verwenden, obwohl Sie fast jeden verwenden können anderer Mikrocontroller $ 5 Mikrocontroller: Arduino, Raspberry Pi Zero oder NodeMCU?Früher war es so, dass man, wenn man einen Computer haben wollte, sein Haus umbuchen musste, um dafür zu bezahlen. Jetzt können Sie einen für einen Abraham Lincoln bekommen. Weiterlesen für dieses Projekt mit der gleichen Schaltung. Hier ist eine Demo.
Du wirst brauchen
Sie werden wahrscheinlich bereits alle Teile besitzen, die Sie dafür benötigen, mit Ausnahme des Reed-Schalters, der zwischen 2 und 3 US-Dollar liegt, oder Sie können ein 5er-Paket für etwas mehr als 8 US-Dollar erhalten Hier.
- Ein Raspberry Pi (jedes Modell wird dafür funktionieren).
- 1 x 220 Ohm Widerstand.
- 1 x 1K Ohm Widerstand.
- 3 x 10K Ohm Widerstand.
- 1 x Magnetischer Reedschalter.
- 1 x LED.
- 2 x Drucktastenschalter.
- Steckbrett.
- Anschlusskabel.
- Computerlautsprecher oder ähnliches.
Wir werden den Raspberry Pi verwenden, um ein Lied abzuspielen, wenn der Raum betreten wird, und eine Schaltung mit Tasten auf unserem Steckbrett entwerfen, um es mit einer Verzögerung zu aktivieren und das Programm zu stoppen.
Dieses Projekt wurde hauptsächlich zum Spaß erstellt und behandelt die Grundlagen für viele Anwendungen in DIY Hausautomation Home Automation Guide Mit Raspberry Pi und ArduinoDer Markt für Hausautomation ist mit teuren Verbrauchersystemen überflutet, die nicht miteinander kompatibel und teuer in der Installation sind. Wenn Sie einen Raspberry Pi und einen Arduino haben, können Sie im Grunde das Gleiche erreichen bei ... Weiterlesen und auch DIY Haussicherheit Suchen Sie nach einer DIY Home Security System-Lösung? Versuchen Sie eines davonIm Zeitalter der digitalen Technologie und der immer angeschlossenen Hardware sollte die Einrichtung eines Heimsicherheitssystems über die Kunst hinausgehen, eine alarmförmige Box an die Wand zu hängen. Weiterlesen
Anfangen
Beginnen wir mit unserer Schaltung. Stellen Sie sicher, dass Ihr Pi nicht mit Strom versorgt wird, und richten Sie Ihre Schaltung folgendermaßen ein:
Die LED ist an Pin 7 unseres Pi angeschlossen. Die beiden Druckknopfschalter sind an den Stiften 11 und 13 angebracht, und der Reedschalter ist mit Stift 15 verbunden. Unsere Leistung geht an Pin 1 (3v3) und Pin 6 (Gnd).
Stellen Sie sicher, dass alles genau am richtigen Ort ist.
Während Sie dieses Projekt testen, kann es hilfreich sein, den Reed-Schalter vor sich zu halten, damit Sie ihn problemlos ein- oder ausschalten können. In diesem Fall war der Reedschalter bereits über der Tür installiert. Sobald Ihr Projekt läuft, können Sie den Schalter entweder vorübergehend mit an Ihrer Tür befestigen Klebeband, oder wenn Sie sich sicherer fühlen, können Sie es für die zukünftige Verwendung dauerhafter anbringen Projekte!
Verbinden Sie den 3,5-mm-Klinkenausgang Ihres Pi mit Ihrem Lautsprechersystem. Sobald alles zusammengesetzt ist, sollte es ungefähr so aussehen:
Beachten Sie, dass das hier verwendete Steckbrett seine Stromschienen hat, umgekehrt zum obigen Fritzing-Diagramm.
Schalten Sie jetzt Ihren Pi ein und greifen Sie mit SSH darauf zu, damit wir auf das Terminal zugreifen können. Wenn Sie sich nicht sicher sind, wie Sie dies tun sollen, diese Anleitung Einrichten Ihres Raspberry Pi für die kopflose Verwendung mit SSHDer Raspberry Pi kann SSH-Befehle akzeptieren, wenn er mit einem lokalen Netzwerk verbunden ist (entweder über Ethernet oder Wi-Fi), sodass Sie es einfach einrichten können. Die Vorteile von SSH gehen über das tägliche Screening hinaus ... Weiterlesen kann dir helfen. Wenn Sie Ihren Raspberry Pi mit Monitor, Maus und Tastatur verwenden, überspringen Sie diesen Schritt und öffnen Sie das Terminal.
Bevor Sie beginnen, sollten Sie überprüfen, ob Sie auf dem neuesten Stand sind. Art sudo apt-get update
in das Terminal.
Jetzt können wir unseren Pi dazu bringen, mit unserer Schaltung zu sprechen.
Testen unseres Setups
Lassen Sie uns zunächst unsere Schaltung mit einem einfachen Programm überprüfen. Wenn Sie sicher sind, dass Sie bisher alles richtig verkabelt haben, können Sie diesen Schritt überspringen, obwohl ich ihn empfehlen würde, da er später Kopfschmerzen ersparen kann.
Wenn Sie noch nie in Python programmiert haben und sich ein wenig entmutigt fühlen, gibt es eine Vielzahl von Möglichkeiten tolle Websites Die 5 besten Websites zum Erlernen der Python-ProgrammierungMöchten Sie Python-Programmierung lernen? Hier sind die besten Möglichkeiten, Python online zu lernen, von denen viele völlig kostenlos sind. Weiterlesen Das kann Ihnen den Einstieg erleichtern.
Erstellen Sie im Terminal ein neues Skript:
nano test.py.
Fügen Sie nach dem Öffnen diesen Code zur Datei hinzu und drücken Sie Strg-C, um den Vorgang zu beenden. Folgen Sie dabei dem Dialogfeld Speichern:
#Dieser Code wurde für einen Artikel auf www geschrieben. MakeUseOf.com von Ian Buckley. RPi importieren. GPIO als GPIO. Importzeit. GPIO.setwarnings (False) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) während True: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): print ("Button on GPIO 11") time.sleep (1 ) wenn (GPIO.input (13) == 1): Druckzeit ("Button on GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): Druckzeit ("Button on GPIO 15") .sleep (1) GPIO.cleanup ()
Dieser Code liest den Wert der Schaltflächen und druckt auf dem Bildschirm, wenn sie sich ändern. Die beiden Drucktasten haben Pulldown-Widerstände, sodass sie beim Drücken HIGH melden. Der Reed-Magnetschalter meldet HIGH, wenn der zugehörige Magnet geschlossen ist.
Führen Sie das Programm aus:
python test.py
Sie sollten sehen, dass die LED aufleuchtet und ein Bericht auf dem Bildschirm angezeigt wird, wenn Sie Ihre beiden Tasten drücken und den Magneten von Ihrem Reed-Schalter wegziehen. Wenn Sie beim Drücken der Tasten keine Rückmeldung erhalten, überprüfen Sie Ihre Schaltkreise erneut und stellen Sie sicher, dass alles so angeschlossen ist, wie es sein sollte. Wenn Sie mit dem Testen fertig sind, drücken Sie STRG-C um das Programm zu stoppen.
Jetzt können wir ein einfaches Programm zusammenstellen, um unseren Türsensor einzustellen, auszulösen und zurückzusetzen. Wir werden den Code in Teilen durchgehen und kurz erklären, was jeder Teil tut. Wenn Sie jedoch den vollständigen Code sehen möchten, scrollen Sie nach unten, um ihn vollständig zu sehen.
Wir müssen zunächst einige Module importieren:
Rpi importieren. GPIO als GPIO. importiere pygame.mixer. Importzeit.
Wir werden die verwenden Pygame Modul, um unsere Musik zu spielen. Es wird standardmäßig mit Raspbian Jessie geliefert und ist eine großartige Bibliothek für alles, was Sie zum Erstellen von Python-Spielen und vielen anderen benötigen erstaunliche Projekte Wie man einen Raspberry Pi Twitter Bot bautTwitter ist das weltweit größte Repository für Kurznachrichten von Personen, die nichts zu sagen haben - und das jetzt Auch Sie können mit einem automatisierten Twitter-Bot, der von Ihrem Computer unterstützt wird, zu diesem epischen Projekt beitragen Himbeere... Weiterlesen .
Wir werden eine Variable namens verwenden aktiv um zu entscheiden, ob unser System aktiv ist oder nicht. Definieren Sie einige Funktionen, die dies für uns tun:
def activeSetup (): global aktiv aktiv = 0 print ("Derzeit nicht aktiv") def activeState (): global aktiv, wenn aktiv == 1: aktiv = 0 GPIO.output (7, GPIO.LOW) print ("Derzeit nicht aktiv") elif active == 0: print ("Aktivierung in 10 Sekunden") für x im Bereich (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) print ("Derzeit Aktiv ") else: return.
Die erste Funktion erstellt hier eine Variable mit dem Namen aktivund setzt es auf 0. Wenn Sie dem aktiven Status einen numerischen Wert geben, können Sie ihn entsprechend nummerieren, wenn Sie Ihr Programm später auf verschiedene aktive Status skalieren möchten. Obwohl es möglicherweise nicht die beste Python-Programmierung der Welt ist, wird es für dieses Projekt mehr als ausreichen.
Die zweite Funktion prüft beim Aufruf, ob das System aktiv ist (oder aktiv == 1). Wenn dies der Fall ist, wird das System auf nicht aktiv gesetzt (aktiv == 0), schaltet die LED aus und druckt auf der Konsole. Ist dies nicht der Fall, erhalten Sie einen Countdown von 10 Sekunden, um den Raum zu verlassen, in dem die LED blinkt, bevor Sie eingeschaltet bleiben, um anzuzeigen, dass das System aktiv ist.
Jetzt können wir eine Funktion definieren, die unseren Reed-Magnetschalter überwacht:
def watchDoor (): globales Spielen = False während True: wenn aktiv == 1 und GPIO.input (15) == 1 und Spielen == False: Spielen = True pygame.mixer.music.play () wenn GPIO.input (13) == 1: print ("Stopptaste gedrückt: Beenden") pygame.mixer.music.stop () break wenn GPIO.input (11) == 1:: activeState () time.sleep (0.5)
Wir erstellen hier eine weitere Variable namens spielen - Dies dient einfach dazu, das Programm zu stoppen, das versucht, wiederholt zu spielen, wenn der Schalter ausgelöst wird.
Innerhalb der while-Schleife startet die erste if-Anweisung die Musik (von der wir noch keine haben, aber keine Sorge, sie kommt). Die Musik wird nur gestartet, wenn das System aktiv ist, der Reed-Schalter geöffnet ist und noch nicht abgespielt wird.
Die zweite if-Anweisung bezieht sich auf unseren Exit-Button. Wenn diese Taste gedrückt wird, stoppt die Musik und das Programm wird beendet.
Die dritte if-Anweisung dient zum Umschalten, ob das System aktiv ist oder nicht. Das time.sleep Die Funktion hier besteht darin, das Lesen mehrerer Tasten beim Drücken zu verhindern.
Jetzt ist es Zeit, die Pins von Pi einzurichten.
GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, initial = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)
Wenn Sie zuvor mit dem Pi experimentiert haben, sollte Ihnen dies bekannt sein. Das initial = GPIO.LOW Das Argument im Setup von Pin 7 setzt es auf niedrig, sobald es initialisiert wird.
Jetzt können wir unsere Funktion aufrufen, die das System so einstellt, dass es beim Start des Programms nicht aktiv ist.
activeSetup ()
Musik Maestro!
An diesem Punkt sollten wir über die Musik nachdenken, die gespielt werden soll. Sie können jede gewünschte Musikdatei auswählen, aber wir werden vorerst für jeden etwas auswählen. Wenn Sie sich YouTube ansehen, sind Sie wahrscheinlich bereits mit Kevin MacLeods Musik vertraut. Laden wir eine fantastische Melodie von ihm herunter "Einäugiger Maestro". Dies, zusammen mit einem Großteil der Musik auf seiner Website, ist unter Creative Commons lizenziert, und es gibt viele gute Gründe Was ist Creative Commons und nichtkommerzielle Nutzung?Was ist Creative Commons? Was bedeutet "nichtkommerzielle Nutzung"? Erfahren Sie mehr über Creative Commons-Lizenzen und deren Funktionsweise. Weiterlesen Inhalte mit diesen Lizenzen für Ihre Projekte zu verwenden.
Zurück in unserem Code müssen wir den Pygame-Mixer starten und unsere Melodie laden.
pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Einäugiger Maestro.mp3" pygame.mixer.music.load (Name) print ("Loaded track -" + str (Name))
Die erste Zeile dieses Blocks leitet das ein Pygame Rührgerät. Das letzte Argument in den Klammern ist der Puffer, der die Latenz steuert, in der der Sound abgespielt wird. Wenn Sie später bei der Musikwiedergabe eine abgehackte Wiedergabe feststellen, erhöhen Sie diese Zahl auf 4096. Die Einstellungen funktionieren auf einem Pi 3 problemlos.
Wenn Sie Ihre Musikdatei in ein anderes Verzeichnis als Ihr heruntergeladen haben door.py Programm müssen Sie den vollständigen Pfad in den Klammern angeben, wenn Sie die Namensvariable definieren.
Jetzt müssen Sie nur noch eine Schleife einrichten, die darauf wartet, dass wir das Programm entweder aktivieren oder beenden.
while True: if (GPIO.input (13) == 1): print ("Stopptaste gedrückt: Beenden") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()
Diese while-Schleife wartet auf eine Eingabe von einer der Schaltflächen und beendet oder ändert den Status entsprechend in aktiv. Wenn der aktive Zustand 1 wird, wird der watchDoor Die zuvor definierte Funktion wird aufgerufen und beim nächsten Öffnen der Tür wird unsere Melodie abgespielt. Wir rufen auch an GPIO.cleanup () Das Zurücksetzen unserer Pins beim Beenden ist im Allgemeinen eine gute Vorgehensweise für alle Programmierungen auf dem Raspberry Pi.
Das ist alles, was wir tun müssen, um dieses Projekt zum Laufen zu bringen. Hier ist der vollständige Code:
RPi importieren. GPIO als GPIO. importiere pygame.mixer. Importzeit def activeSetup (): global aktiv aktiv = 0 print ("Derzeit nicht aktiv") def activeState (): global aktiv wenn aktiv == 1: aktiv = 0 GPIO.output (7, GPIO.LOW) print ("Derzeit Nicht Aktiv ") elif aktiv == 0: print (" Aktivierung in 10 Sekunden ") für x im Bereich (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) print ("Derzeit aktiv") else: return def watchDoor (): globales Spielen = False während True: wenn aktiv == 1 und GPIO.input (15) == 1 und Spielen == False: spielen = Wahr pygame.mixer.music.play () wenn GPIO.input (13) == 1: print ("Stopptaste gedrückt: Beenden") pygame.mixer.music.stop () break wenn GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, initial = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) activeSetup () pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Einäugiger Maestro.mp3" pygame.mixer.music.load (Name) print ("Loaded track -" + str (name)) während True: if (GPIO.input (13) == 1): print ("Stop-Taste gedrückt: Beenden") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()
Wenn Sie hier nach unten gescrollt haben, um den vollständigen Code sofort abzurufen, müssen Sie die Musik trotzdem auf Ihren Pi herunterladen, damit sie funktioniert!
Jetzt sollten Sie ein funktionierendes Welcome Home-Thema haben! Befestigen Sie Ihren Reed-Schalter an Ihrer Tür und probieren Sie ihn aus. Peinliches Tanzen ist optional, wird aber empfohlen.
Dieses Projekt behandelte die Grundlagen für viele Formen der Überwachung, Sicherheit und Automatisierung von Häusern und hat hoffentlich auch Spaß gemacht!
Nun, da Sie so weit gekommen sind, warum dort aufhören? Sie können weitere Titel hinzufügen und das Programm einen zufällig aus einer Liste auswählen lassen. Du könntest Relais hinzufügen Erste Schritte mit GPIO Auf einem Raspberry PiWenn Sie der Meinung sind, dass der Arduino cool ist, warten Sie einfach, bis Sie einen Raspberry Pi in die Hände bekommen - diese Dinge sind erstaunlich. Sie sind nicht nur ein voll funktionsfähiger Computer, sondern haben auch einen ... Weiterlesen und andere Objekte bei der Eingabe auslösen lassen. Wenn Sie ein Heimmusiksystem haben, warum nicht für jeden Raum einen Titelsong?
Entwerfen Sie Ihre persönliche Willkommensnachricht? Waren Sie auf andere Weise erfinderisch mit Reedschaltern in Ihrem Haus? Wenn ja, hinterlassen Sie im Kommentarbereich unten einen Kommentar zu dem, was Sie planen oder bereits getan haben!
Ian Buckley ist freiberuflicher Journalist, Musiker, Performer und Videoproduzent und lebt in Berlin. Wenn er nicht schreibt oder auf der Bühne steht, bastelt er an DIY-Elektronik oder Code in der Hoffnung, ein verrückter Wissenschaftler zu werden.