Spielen Sie Ihr eigenes Theme Melodie, wenn Sie den Raum mit Raspberry Pi betreten

Wollten Sie schon immer einmal zu einem persönlichen Empfang nach Hause kommen? In diesem einfachen Raspberry Pi-Projekt verwenden wir einen Reed-Schalter, um eine Melodie auszulösen, wenn eine Tür geöffnet wird.

Wollten Sie schon immer einmal zu einem persönlichen Empfang nach Hause kommen?  In diesem einfachen Raspberry Pi-Projekt verwenden wir einen Reed-Schalter, um eine Melodie auszulösen, wenn eine Tür geöffnet wird.
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 eine Melodie zu aktivieren, wenn eine Tür geöffnet wird. Wir werden einen Raspberry Pi als Controller hier verwenden, obwohl Sie fast jeden anderen Mikrocontroller $ 5 Microcontrollers: Arduino, Raspberry Pi Zero, oder NodeMCU verwenden könnten? $ 5 Mikrocontroller: Arduino, Raspberry Pi Null oder NodeMCU? Früher war es so, dass Sie, wenn Sie einen Computer haben wollten, Ihr Haus umbuchen mussten, um es zu bezahlen. Jetzt können Sie einen für einen Abraham Lincoln bekommen. Lesen Sie mehr für dieses Projekt mit der gleichen Schaltung. Hier ist eine Demo.

Du wirst brauchen

Sie werden wahrscheinlich bereits alle Teile besitzen, die Sie benötigen, außer den Reed-Schalter, der ungefähr $ 2-3 kostet, oder Sie können ein Paket von 5 für etwas über $ 8 hier bekommen.

  • 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 Magnetschalter.
  • 1 x LED.
  • 2 x Druckschalter.
  • Steckbrett.
  • Anschlusskabel.
  • Computer-Lautsprecher oder ähnliches.

Wir werden den Raspberry Pi verwenden, um ein Lied zu spielen, wenn der Raum betreten wird, und eine Schaltung mit Knöpfen auf unserem Steckbrett entwerfen, um es mit einer Verzögerung zu aktivieren und das Programm zu stoppen.

Dieses Projekt, während hauptsächlich für Spaß gemacht wird, deckt die Grundlagen für viele Anwendungen in DIY Hausautomation Guide mit Raspberry Pi und Arduino Home Automation Guide mit Raspberry Pi und Arduino Der Home Automation-Markt ist überflutet mit teuren Verbrauchersystemen, inkompatibel mit einem ein anderes und kostspieliges zu installieren. Wenn Sie einen Raspberry Pi und einen Arduino haben, können Sie im Grunde die gleiche Sache erreichen bei ... Lesen Sie mehr und auch DIY home security Suchen Sie nach einem DIY Home Security System Solution? Versuchen Sie, eine dieser DIY Home Security System Solution suchen? Probieren Sie eins davon aus Im Zeitalter der digitalen Technologie und der immer verbundenen Hardware sollte die Einrichtung eines Heimsicherheitssystems über die Kunst hinausgehen, eine alarmförmige Box an die Wand zu stellen. Weiterlesen

Raspberry Pi 3 Modell B Motherboard Raspberry Pi 3 Modell B Motherboard Jetzt kaufen bei Amazon 29, 99 €

Anfangen

Beginnen wir mit unserer Schaltung. Stellen Sie sicher, dass Ihr Pi nicht mit Strom versorgt wird, und richten Sie Ihre Schaltung wie folgt ein:

Fritzing Annotiertes Hauptquartier

Die LED ist an Pin 7 unseres Pi angeschlossen. Die zwei Druckknopfschalter sind an den Stiften 11 und 13 angebracht, und der Reedschalter ist mit dem Stift 15 verbunden. Unsere Energie fließt zu Stift 1 (3v3) und Stift 6 (Gnd).

Pin-Diagramm

Stellen Sie sicher, dass alles an der richtigen Stelle ist.

Während Sie dieses Projekt testen, kann es hilfreich sein, den Reed-Schalter vor sich zu halten, damit Sie ihn ein- oder ausschalten können. In diesem Fall wurde der Reedschalter bereits über der Tür installiert. Sobald Ihr Projekt in Betrieb ist, können Sie den Schalter entweder vorübergehend mit Klebeband an Ihrer Tür befestigen, oder wenn Sie sich sicherer fühlen, können Sie es für zukünftige Projekte fester anbringen!

Reedschalter installiert

Verbinden Sie den 3, 5 mm Klinkenausgang Ihres Pi mit Ihrem Lautsprechersystem. Sobald alles zusammengestellt ist, sollte es ungefähr so ​​aussehen:

das ganze Setup ist korrekt

Beachten Sie, dass das hier verwendete Steckbrett seine Stromschienen umgekehrt zum obigen Fritzing-Diagramm hat.

Schalten Sie nun 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, dieses Handbuch Einrichten Ihres Raspberry Pi für kopflose Verwendung mit SSH Einrichten Ihres Raspberry Pi für kopflose Verwendung mit SSH Der Raspberry Pi kann SSH-Befehle annehmen, wenn er mit einem lokalen Netzwerk verbunden ist (entweder über Ethernet oder Wi-Fi), so dass Sie es einfach einrichten können. Die Vorteile von SSH gehen über das tägliche Screening hinaus ... Read More kann Ihnen helfen. Wenn Sie Ihren Raspberry Pi mit einem Monitor, einer Maus und einer Tastatur verwenden, überspringen Sie diesen Schritt und öffnen Sie das Terminal.

Bevor Sie beginnen, sollten Sie prüfen, ob Sie auf dem neuesten Stand sind. Geben Sie sudo apt-get update in das Terminal ein.

Jetzt können wir weitermachen, damit unser Pi mit unserer Rennstrecke spricht.

Testen unserer Einrichtung

Um zu beginnen, überprüfen wir unsere Schaltung mit einem einfachen Programm. Wenn Sie sicher sind, dass Sie alles bis jetzt richtig verdrahtet haben, können Sie diesen Schritt überspringen, obwohl ich es empfehlen würde, da es später Kopfschmerzen ersparen kann.

Wenn Sie noch nie in Python programmiert haben und fühlen sich ein wenig verängstigt, gibt es eine Vielzahl von großen Websites Die 5 besten Websites zu lernen Python Programmierung Die 5 besten Websites Python Programmierung zu lernen Im Laufe des letzten Jahrzehnts ist die Python-Programmiersprache explodiert in der Popularität unter Programmierern in allen Bereichen der Codierung. Von Web-Entwicklern über Videospiel-Designer bis hin zu Inhouse-Tool-Machern sind viele Menschen in ... Read More eingetaucht, die Ihnen den Einstieg erleichtern.

Erstellen Sie im Terminal ein neues Skript:

 nano test.py 

Wenn Sie geöffnet sind, fügen Sie diesen Code zur Datei hinzu und drücken Sie Strg-C, um nach dem Speichern-Dialog zu beenden:

 #This code was written for an article on www.MakeUseOf.com by Ian Buckley. import RPi.GPIO as GPIO import time 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) while True: GPIO.output(7, GPIO.HIGH) if (GPIO.input(11)==1): print("Button on GPIO 11") time.sleep(1) if (GPIO.input(13)==1): print("Button on GPIO 13") time.sleep(1) if (GPIO.input(15)==1): print("Button on GPIO 15") time.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, so dass sie beim Drücken HIGH melden. Der Reed-Magnetschalter meldet HIGH, wenn sich der zugehörige Magnet in der Nähe befindet.

Schalter

Führen Sie das Programm aus:

 python test.py 

Sie sollten sehen, dass die LED aufleuchtet, und eine Meldung auf dem Bildschirm erscheint, 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 die Schaltung erneut und vergewissern Sie sich, dass alles ordnungsgemäß angeschlossen ist. 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 zu setzen, 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 wollen, scrollen Sie nach unten, um ihn vollständig zu sehen.

Wir müssen mit dem Import einiger Module beginnen:

 import Rpi.GPIO as GPIO import pygame.mixer import time 

Wir werden das Pygame- Modul benutzen, um unsere Musik zu spielen. Es ist standardmäßig mit Raspbian Jessie, und ist eine großartige Bibliothek für alles, was Sie für die Herstellung von Python-Spiele und viele andere erstaunliche Projekte Wie baut man eine Himbeer-Pi Twitter Bot Wie man eine Himbeer-Pi bauen Twitter Bot ist das weltweit größte Repository von kurzen Nachrichten von Leuten, die nichts zu sagen haben - und jetzt können auch Sie zu diesem epischen Projekt mit einem automatisierten Twitter-Bot beitragen, der von Ihrem Raspberry ... Read More.

Wir werden eine Variable namens active verwenden, um zu entscheiden, ob unser System aktiv ist oder nicht. Lassen Sie ein paar Funktionen definieren, die dies für uns tun:

 def activeSetup(): global active active=0 print("Currently Not Active") def activeState(): global active if active==1: active=0 GPIO.output(7, GPIO.LOW) print("Currently Not Active") elif active==0: print ("Activating in 10 seconds") for x in range(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("Currently Active") else: return 

Die erste Funktion erstellt hier eine Variable namens active und setzt sie auf 0. Wenn Sie dem aktiven Zustand einen numerischen Wert geben, bedeutet dies, dass Sie, wenn Sie später Ihr Programm auf verschiedene aktive Zustände erweitern möchten, diese entsprechend nummerieren können. Obwohl es nicht die beste Python-Programmierung der Welt ist, wird es für dieses Projekt mehr als ausreichen.

Die zweite Funktion überprüft beim Aufruf, ob das System aktiv ist (oder aktiv == 1 ). Ist dies der Fall, wird das System nicht aktiviert ( aktiv == 0 ), die LED wird ausgeschaltet und an der Konsole ausgegeben. Wenn dies nicht der Fall ist, gibt es einen Countdown von 10 Sekunden, um den Raum zu verlassen, in dem die LED blinkt, bevor er anschaltet, um anzuzeigen, dass das System aktiv ist.

Jetzt können wir eine Funktion definieren, die unseren Reedmagnetschalter beobachten wird:

 def watchDoor(): global playing playing = False while True: if active==1 and GPIO.input(15)==1 and playing == False: playing=True pygame.mixer.music.play() if GPIO.input(13)==1: print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if GPIO.input(11)==1: activeState() time.sleep(0.5) 

Wir erstellen hier eine weitere Variable namens playing - das ist einfach, um 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 (die wir noch nicht haben, aber keine Sorge, sie kommt). Es lässt nur die Musik starten, wenn das System aktiv ist, der Reed-Schalter offen ist und es nicht bereits spielt.

Die zweite if-Anweisung ist für 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. Die Funktion time.sleep dient dazu, das Lesen mehrerer Tasten beim Drücken zu verhindern.

Jetzt ist es an der Zeit, die Pins von Pi aufzustellen.

 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 du mit dem Pi experimentiert hast, sollte dir das bekannt sein. Das Argument initial = GPIO.LOW in der Konfiguration von Pin 7 setzt es auf Low, sobald es initialisiert ist.

Jetzt können wir unsere Funktion aufrufen, die das System beim Start des Programms nicht aktiv werden lässt.

 activeSetup() 

Musik Maestro!

An diesem Punkt sollten wir anfangen, über die Musik nachzudenken, die wir spielen sollen. Sie können eine beliebige Musikdatei auswählen, aber wir wählen zunächst etwas aus, das für alle verfügbar ist. Wenn Sie sich YouTube ansehen, kennen Sie wahrscheinlich Kevin MacLeods Musik. Lasst uns eine fantastische Melodie herunterladen, die "One-eyed Maestro" heißt. 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 sollten Sie es verwenden? Was ist Creative Commons, und sollten Sie es verwenden? Creative Commons ist eine Sammlung von Lizenzen, die Ihnen automatisch die Erlaubnis geben, verschiedene Dinge zu tun, wie die Wiederverwendung und Verteilung des Inhalts. Lass uns mehr darüber erfahren und wie man es benutzt. Lesen Sie mehr, um 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 = "One-eyed Maestro.mp3" pygame.mixer.music.load(name) print("Loaded track - "+ str(name)) 

Die erste Zeile dieses Blocks initiiert den Pygame- Mixer. Das letzte Argument in den Klammern ist der Puffer, der die Latenz steuert, mit der der Sound abgespielt wird. Wenn Sie später bei der Wiedergabe Ihrer Musik eine abgehackte Wiedergabe bemerken, versuchen Sie, diese Zahl auf 4096 zu erhöhen. Die Einstellungen, so wie sie funktionieren, funktionieren ohne Probleme auf einem Pi 3.

Wenn Sie Ihre Musikdatei in ein anderes Verzeichnis Ihres Door.py- Programms heruntergeladen haben, müssen Sie den vollständigen Pfad in den Klammern angeben, wenn Sie die Namensvariable definieren.

Nun müssen wir nur noch eine Schleife einrichten, die darauf wartet, dass wir das Programm entweder aktiv setzen oder beenden.

 while True: if(GPIO.input(13)==1): print("Stop button pressed: Exiting") 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. Wenn der Status von active zu 1 wird, wird die zuvor definierte watchDoor- Funktion aufgerufen und beim nächsten Öffnen der Tür wird unsere Melodie abgespielt . Wir rufen auch GPIO.cleanup () auf, um unsere Pins beim Beenden zurückzusetzen, was im Allgemeinen eine gute Übung für alle Programmierung auf dem Raspberry Pi ist.

Das ist alles, was wir tun müssen, um dieses Projekt zum Laufen zu bringen. Hier ist der vollständige Code:

 import RPi.GPIO as GPIO import pygame.mixer import time def activeSetup(): global active active=0 print("Currently Not Active") def activeState(): global active if active==1: active=0 GPIO.output(7, GPIO.LOW) print("Currently Not Active") elif active==0: print ("Activating in 10 seconds") for x in range(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("Currently Active") else: return def watchDoor(): global playing playing = False while True: if active==1 and GPIO.input(15)==1 and playing == False: playing=True pygame.mixer.music.play() if GPIO.input(13)==1: print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if 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 = "One-eyed Maestro.mp3" pygame.mixer.music.load(name) print("Loaded track - "+ str(name)) while True: if(GPIO.input(13)==1): print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if(GPIO.input(11)==1): activeState() time.sleep(0.5) if(active==1): watchDoor() break GPIO.cleanup() 

Wenn du hier runterscrollst, um sofort den kompletten Code zu erhalten, bedenke, dass du die Musik trotzdem auf deinen Pi herunterladen musst, damit er funktioniert!

Jetzt solltest du ein funktionierendes Willkommens-Thema haben! Befestigen Sie Ihren Reed-Schalter an Ihrer Tür und probieren Sie es aus. Peinliches Tanzen ist optional, aber empfehlenswert.

Dieses Projekt umfasste die Grundlagen für viele Formen der Heimüberwachung, Sicherheit und Automatisierung und hoffentlich auch Spaß!

Jetzt wo du so weit gekommen bist, warum hörst du dort auf? Sie können weitere Titel hinzufügen und das Programm aus einer Liste zufällig auswählen lassen. Sie könnten ein Relais hinzufügen Erste Schritte mit GPIO auf einem Raspberry Pi Erste Schritte mit GPIO auf einem Raspberry Pi Wenn Sie das Arduino war cool, warten Sie, bis Sie Ihre Hände auf einem Raspberry Pi bekommen - diese Dinge sind erstaunlich. Sie sind nicht nur ein voll funktionsfähiger Computer, sondern auch ... Read More und lassen bei der Eingabe weitere Objekte auslösen. Wenn Sie ein Heimmusiksystem haben, warum nicht ein Titellied für jedes Zimmer haben?

Werden Sie Ihre persönliche Welcome-Home-Nachricht entwerfen? Waren Sie auf andere Weise mit Reed-Schaltern in Ihrem Haus erfinderisch? Wenn ja, hinterlassen Sie einen Kommentar zu dem, was Sie gerade planen oder getan haben, im Kommentarbereich!

In this article