Spielen Sie Ihre eigene Themenmelodie, wenn Sie den Raum mit Raspberry Pi . betreten

| Von

raspi-Zimmer-Tür

Sie wollten schon immer mal wieder persönlich begrüßt werden? Mit einem Raspberry Pi und auch ein paar einfachen Komponenten können Sie das! In diesem einfachen Projekt verwenden wir einen Reed-Schalter, um beim Öffnen einer Tür ein Motivlied auszulösen. Wir werden hier einen Raspberry Pi als Controller verwenden, obwohl Sie für diesen Job fast jede Art anderer Mikrocontroller verwenden können, die genau dieselbe Schaltung verwenden. Unten ist ein Versuch.

Du wirst brauchen

Sie werden wahrscheinlich bereits alle Teile haben, die Sie benötigen, um dies herzustellen, mit Ausnahme des Reed-Knopfes, der etwa 2 – 3 kostet, oder Sie können ein Paket mit 5 Stück für etwas mehr als 8 US-Dollar erhalten.

  • Ein Raspberry Pi (jede Version hilft dabei).
  • 1 x 220 Ohm Widerstand.
  • 1 x 1K Ohm Widerstand.
  • 3 x 10K Ohm Widerstand.
  • 1 x Magnetischer Reedschalter.
  • 1x LED.
  • 2 x Druckknopfschalter.
  • Steckbrett.
  • Kabelfernsehen anschließen.
  • Computerlautsprecher oder vergleichbar.

Wir verwenden den Raspberry Pi, um eine Melodie zu spielen, wenn der Raum betreten wird, und machen eine Schaltung mit Schaltern auf unserem Steckbrett, um ihn bei einem Überfall zu aktivieren und das Programm zu stoppen.

Dieses Projekt ist zwar hauptsächlich zum Spaß gemacht, deckt aber die Grundlagen für viele Anwendungen in der Heimwerker-Hausautomation und zusätzlich zur Heimwerker-Haussicherheit ab

Beginnend

Beginnen wir mit unserer Schaltung. Sorgen Sie dafür, dass Ihr Pi nicht mit Strom versorgt wird, und richten Sie Ihre Schaltung wie folgt ein:

Fritzing kommentiertes HQ

Die LED ist mit Pin 7 auf unserem Pi verbunden. Die beiden Schalter sind an Pin 11 sowie 13 angeschlossen und auch der Reed-Taster an Pin 15. Unser Strom geht an Pin 1 (3v3) und Pin 6 (Gnd).

Pin-Diagramm

Stellen Sie sicher, dass sich jede Kleinigkeit an der idealen Stelle befindet.

Während Sie diese Aufgabe testen, kann es hilfreich sein, Ihren Reed-Schalter vor sich zu halten, damit Sie ihn bequem ein- oder ausschalten können. In diesem Fall wurde der Reed-Knopf derzeit über der Tür installiert. Sobald Ihr Projekt läuft, können Sie den Schalter entweder vorübergehend mit Klebeband an Ihrer Tür befestigen oder wenn Sie wirklich viel positiver fühlen, können Sie ihn für zukünftige Aufgaben dauerhafter anbringen!

Reedschalter verbaut

Verknüpfen Sie den 3,5-mm-Klinkenausgang Ihres Pi mit Ihrem Lautsprechersystem. Wenn alles zusammengebaut wird, muss es ungefähr so ​​aussehen:

ganze Einrichtung richtig

Beachten Sie, dass das hier verwendete Steckbrett seine Stromschienen die andere Methode zum Fritzing-Diagramm oben hat.

Schalten Sie derzeit Ihren Pi und die Zugänglichkeit über SSH ein, damit wir auf das Terminal zugreifen können. Wenn Sie sich nicht sicher sind, wie Sie dies tun sollen, kann Ihnen diese Übersicht helfen. Wenn Sie Ihren Raspberry Pi mit einem Display, einer Computermaus und einer Tastatur verwenden, verpassen Sie diesen Schritt und öffnen Sie das Terminal.

Bevor Sie loslegen, sollten Sie prüfen, ob Sie auf dem neuesten Stand sind. Nett

sudo apt-get update

direkt ins Unheilbare.

Derzeit können wir damit fortfahren, unseren Pi zu erhalten, der mit unserer Schaltung spricht.

Untersuchung unseres Setups

Lassen Sie uns zunächst unsere Schaltung mit einem Basisprogramm untersuchen. Wenn Sie sicher sind, dass Sie bisher jede Kleinigkeit richtig verdrahtet haben, können Sie diese Aktion vermeiden, obwohl ich sie auf jeden Fall vorschlagen würde, da sie später Migräne vermeiden kann.

Wenn Sie noch nie zuvor mit Python gearbeitet haben und sich auch wirklich ein wenig abgeschreckt fühlen, gibt es eine Vielzahl großartiger Websites, die Ihnen beim Einstieg helfen können.

Erstellen Sie im Unheilbaren ein brandneues Manuskript:

nano test.py

Fügen Sie diesen Code nach dem Öffnen zu den Dokumenten hinzu und drücken Sie Strg-C, um den Vorgang zu beenden, und folgen Sie der Diskussion zum Speichern:

#This code was written for an article on virtualworldnews.de 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 überprüft den Wert der Schaltflächen und wird bei der Transformation auf dem Bildschirm ausgegeben. Beide Tasten haben Pull-Down-Widerstände, so dass sie beim Drücken HIGH melden. Der Reed-Magnetschalter meldet HIGH, wenn er mit dem Magneten in der Nähe ist.

Schalter

Führen Sie das Programm aus:

python test.py

Sie müssen sehen, wie die LED aufleuchtet, sowie eine Meldung auf dem Display, wenn Sie Ihre beiden Schalter drücken und den Magneten weit von Ihrem Reed-Knopf ziehen. Wenn Sie beim Drücken von Schaltern keine Antworten erhalten, überprüfen Sie Ihre Verkabelung noch einmal und stellen Sie sicher, dass alles so verbunden ist, wie es sein sollte. Wenn Sie mit dem Screening fertig sind, drücken Sie STRG-C um das Programm zu beenden.

Prüfung

Jetzt können wir ein Basisprogramm zusammenstellen, um unseren Türsensor einzurichten, zu starten und auch zurückzusetzen. Wir werden den Code in Teilen besprechen und auch kurz erläutern, was jede Komponente tut. Wenn Sie jedoch den vollständigen Code sehen möchten, scrollen Sie nach unten, um ihn vollständig anzuzeigen.

Wir müssen mit dem Importieren einiger Module beginnen:

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

Wir werden die verwenden Pygame Modul zum Abspielen unserer Musik. Es ist typisch für Raspbian Jessie und ist eine hervorragende Bibliothek für alles, was Sie zum Erstellen von Python-Videospielen und verschiedenen anderen unglaublichen Projekten benötigen.

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

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 hier erzeugt eine Variable namens energisch , und setzt ihn auch auf 0. Wenn Sie dem energetischen Zustand einen numerischen Wert anbieten, bedeutet dies, dass Sie diese entsprechend nummerieren können, wenn Sie Ihr Programm später auf verschiedene energetische Zustände skalieren möchten. Obwohl es vielleicht nicht die besten Python-Shows weltweit sind, wird es für diese Aufgabe sicherlich mehr als ausreichen.

Die zweite Funktion prüft beim Aufrufen, ob das System energetisch ist (oder aktiv==1 . Wenn dies der Fall ist, stellt es fest, dass das System nicht aktiv ist ( aktiv==0 , wandelt die LED aus und druckt an die Konsole. Wenn dies nicht der Fall ist, bietet es Ihnen einen 10 2. Countdown, um den Bereich zu verlassen, in dem die LED blinkt, bevor Sie weiterhin anzeigen, dass das System energiegeladen ist.

Derzeit können wir ein Feature definieren, das unseren Reed-Magnet-Button sicherlich sehen 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 entwickeln hier eine zusätzliche Variable namens spielen — dies existiert nur, um das Programm zu stoppen, das wiederholt versucht, die Wiedergabe zu starten, wenn der Wechsel verursacht wird.

Innerhalb der while-Schleife beginnt die anfängliche if-Deklaration die Musik (von der wir noch keine haben, aber keine Sorge, sie kommt). Es erlaubt nur, dass die Songs starten, wenn das System aktiv ist, der Reed-Schalter geöffnet ist und es noch nicht spielt.

Die 2. if-Erklärung ist für unseren Verlassen-Button. Wenn diese Taste gedrückt wird, wird die Musik beendet und das Programm beendet.

Die dritte if-Anweisung dient zum Umschalten, ob das System energetisch ist oder nicht. Das zeit.schlaf Funktion hier besteht darin, mehrere Schalterüberprüfungen zu verhindern, wenn sie gedrückt wird.

Derzeit ist es an der 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 den Pi vorher ausprobiert haben, sollten Sie dies erkennen. Das first=GPIO.LOW Unstimmigkeiten im Setup von Pin 7 setzen ihn so schnell auf niedrig, wie er initialisiert wird.

Derzeit können wir unsere Funktion aufrufen, die das System beim Start des Programms auf nicht energisch setzt.

activeSetup()

Lieder Meister!

An diesem Punkt sollten wir anfangen, über die Musik nachzudenken, die gespielt werden soll. Sie können beliebige Musikdaten auswählen, aber wir werden in der Zwischenzeit etwas auswählen, das für jeden verfügbar ist. Wenn Sie YouTube sehen, kennen Sie sich wahrscheinlich bereits mit der Musik von Kevin MacLeod aus. Ermöglicht das Herunterladen und Installieren eines hervorragenden Songs von ihm namens „Einäugiger Meister“ Dies, zusätzlich zu vielen der Songs auf seiner Website, ist unter Creative Commons akkreditiert, und es gibt mehrere ausgezeichnete Faktoren, um Webinhalte mit diesen Lizenzen für Ihre Jobs zu verwenden.

wget

Zurück in unserem Code müssen wir den Pygame-Mixer starten und unseren Song tonnen.

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 allererste Zeile dieses Blocks beginnt die Pygame Rührgerät. Das letzte Argument in den Hosenträgern ist die Barriere, die die Latenz reguliert, in der das Geräusch abgespielt wird. Wenn Sie später bei der Wiedergabe Ihrer Songs eine abgehackte Wiedergabe feststellen, versuchen Sie, diese Zahl auf 4096 zu erhöhen. Die Einstellungen funktionieren ohne Probleme auf einem Pi 3.

Wenn Sie Ihre Musikdaten in ein anderes Verzeichnis auf Ihr Tür.py Programm müssen Sie sicherlich den vollständigen Kurs innerhalb der geschweiften Klammern angeben, wenn Sie die name-Variable angeben.

Jetzt müssen wir nur noch ein Schlupfloch aufstellen, das uns erwartet, das Programm entweder energetisch zu etablieren oder es zu verlassen.

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 beiden Schaltflächen und beendet oder ändert den Status bei Bedarf in aktiv. Wenn der energetische Zustand 1 wird, dann ist der UhrTür Funktion, die wir zuvor angegeben haben, wird aufgerufen und beim nächsten Öffnen der Tür wird unser Lied sicherlich abgespielt. Wir rufen zusätzlich an GPIO.cleanup() um unsere Pins bei der Abreise zurückzusetzen, was normalerweise eine großartige Praxis für alle Programme auf dem Raspberry Pi ist.

Das ist alles, was wir tun müssen, um diesen Job zu starten und auszuführen. Unten 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 Sie hier nach unten gescrollt haben, um sofort den vollständigen Code zu erhalten, denken Sie daran, dass Sie die Musik trotzdem herunterladen und auf Ihrem Pi installieren müssen, damit sie funktioniert!

Momentan brauchst du einen funktionierenden Willkommens-Residenz-Motiv-Song! Bringen Sie Ihren Reed-Schalter an Ihrer Tür an und probieren Sie es auch aus. Peinlicher Tanz ist optional, wird aber empfohlen.

Diese Aufgabe umfasste das Wesentliche für viele Arten von Hausverfolgung, Safety und Security sowie Automatisierung und hat mit etwas Glück auch noch Spaß gemacht!

Da Sie so weit gekommen sind, warum hier aufhören? Sie können weitere Titel hinzufügen oder das Programm willkürlich einen aus einer Liste auswählen. Sie könnten ein Relais hinzufügen und auch andere Objekte beim Eingang aktivieren. Wenn Sie ein Hausmusiksystem haben, warum haben Sie dann nicht einen Titelsong für jeden einzelnen Raum?

relais leuchtet

Werden Sie Ihre eigene persönliche Willkommensnachricht erstellen? Waren Sie auf andere Weise kreativ mit Reed-Schaltern in Ihrem Haus? Wenn ja, hinterlassen Sie im Kommentarbereich unten eine Bemerkung zu dem, was Sie beabsichtigen oder derzeit getan haben!

Wenn Sie dem energetischen Zustand einen numerischen Wert geben, können Sie diese entsprechend nummerieren, wenn Sie Ihr Programm später auf verschiedene aktive Zustände skalieren möchten. Es erlaubt nur, dass die Songs starten, wenn das System energisch ist, der Reed-Schalter offen ist und es auch noch nicht spielt. Jetzt können wir unsere Funktion aufrufen, die feststellt, dass das System beim Start des Programms nicht energisch ist. Jetzt muss nur noch ein Schlupfloch geschaffen werden, das darauf wartet, dass wir das Programm entweder aktivieren oder verlassen.[

Klicken Sie, um diesen Beitrag zu bewerten!
[Gesamt: 0 Durchschnitt: 0]

Andere verwandte Artikel

So aktualisieren Sie Ihre PS3-Festplatte

Die Videospielkonsole im Wohnzimmer hat sich für viele zu einem zentralen Medienzentrum entwickelt, was auf riesige Filmdownloads hinweisen kann. Ungeachtet…

So rooten Sie Ihren Chromecast

Wofür verwenden Sie Ihren Chromecast? Wahrscheinlich streamen Sie Inhalte von YouTube auf einen nicht-intelligenten Fernseher oder verwenden ihn als Spiegel…

Schreibe einen Kommentar