Spela ditt eget tema när du går in i rummet med hallon Pi

Har du någonsin velat komma hem till ett personligt välkomnande? I det här enkla Raspberry Pi-projektet använder vi en reed switch för att utlösa en melodi när en dörr öppnas.

Har du någonsin velat komma hem till ett personligt välkomnande?  I det här enkla Raspberry Pi-projektet använder vi en reed switch för att utlösa en melodi när en dörr öppnas.
Annons

Har du någonsin velat komma hem till ett personligt välkomnande? Med en Raspberry Pi och några enkla komponenter kan du! I det här enkla projektet använder vi en reed-omkopplare för att utlösa en temtonning när en dörr öppnas. Vi ska använda en Raspberry Pi som regulatorn här, men du kan använda nästan alla andra mikrokontroller $ 5 Microcontrollers: Arduino, Raspberry Pi Zero eller NodeMCU? $ 5 Microcontrollers: Arduino, Raspberry Pi Zero, eller NodeMCU? Det var vanligt att om du ville ha en dator skulle du behöva remortgage ditt hus för att betala för det. Nu kan du få en för en Abraham Lincoln. Läs mer för detta projekt med samma krets. Här är en demo.

Du kommer behöva

Du kommer sannolikt redan att ha alla de delar du behöver för att göra detta utom reed switchen, vilket är ungefär $ 2-3, eller du kan få ett paket med 5 för drygt $ 8 här.

  • En Raspberry Pi (någon modell kommer att fungera för detta).
  • 1 x 220 ohm motstånd.
  • 1 x 1K ohm motstånd.
  • 3 x 10K ohm motstånd.
  • 1 x magnetomkopplare.
  • 1 x LED.
  • 2 x tryckknappsbrytare.
  • Bakbord.
  • Hook-up-kablar.
  • Datorhögtalare eller liknande.

Vi använder Raspberry Pi för att spela en sång när rummet är inmatat, och utforma en krets med knappar på vår brödbräda för att aktivera det i en fördröjning och stoppa programmet.

Det här projektet, medan det görs mestadels för skojs skull, täcker grunderna för många applikationer i DIY-hemautomatisering. Hemautomatiseringsguide Med Raspberry Pi och Arduino Hemautomatiseringsguide med Raspberry Pi och Arduino Hemautomatiseringsmarknaden översvämmas med dyra konsumentsystem, inkompatibla med en en annan och dyr att installera. Om du har en Raspberry Pi och en Arduino, kan du i princip uppnå samma sak på ... Läs mer och också DIY hemförsörjning Letar du efter en DIY Home Security System Solution? Prova en av dessa som letar efter en DIY Home Security System Solution? Prova en av dessa I en ålder av digital teknik och alltid ansluten hårdvara bör det sättas upp en koncept för att skapa en alarmformad låda på väggen. Läs mer

Raspberry Pi 3 Modell B Moderkort Raspberry Pi 3 Modell B Moderkort Köp nu På Amazon $ 29.99

Komma igång

Låt oss börja med att göra vår krets. Se till att din Pi är unpowered, och sätt upp din krets så här:

Fritzing Antecknad HQ

Lysdioden är ansluten till stift 7 på vår pi. De två tryckknappsbrytare är fästa på stiften 11 och 13 och reed-omkopplaren ansluts till stift 15. Vår ström går till stift 1 (3v3) och stift 6 (Gnd).

stiftdiagram

Var noga med att kontrollera att allt är på rätt ställe.

Medan du testar detta projekt kan det bidra till att hålla din svängbrytare framför dig så att du enkelt kan växla på eller av. I detta fall installerades reed-omkopplaren ovanför dörren. När ditt projekt är igång kan du antingen tillfälligt koppla omkopplaren till din dörr med hjälp av tejp, eller om du känner dig mer säker kan du fästa det mer permanent för användning i framtida projekt!

reed switch installerad

Anslut 3, 5 mm jackutgången från Pi till ditt högtalarsystem. När allt är satt ihop ska det se ut så här:

hela inställningen korrekt

Observera att brödbrädet som används här har strömmen rails motsatt till Fritzing-diagrammet ovan.

Nu starta din Pi, och få åtkomst till den med SSH så vi kan komma åt terminalen. Om du inte är säker på hur du gör det här, gör du den här guiden. Ställa in din Raspberry Pi för huvudlös användning med SSH Ställa in din Raspberry Pi för huvudlös användning med SSH Raspberry Pi kan acceptera SSH-kommandon när du är ansluten till ett lokalt nätverk (antingen via Ethernet eller Wi-Fi), så att du enkelt kan konfigurera den. Fördelarna med SSH går utöver att störa den dagliga skärningen ... Läs mer kan hjälpa dig. Om du använder din Raspberry Pi med en bildskärm, mus och tangentbord, hoppa över det här steget och öppna terminalen.

Innan du börjar, är det värt att kontrollera om du är uppdaterad. Skriv sudo apt-get update till terminalen.

Nu kan vi fortsätta att få vår Pi att prata med vår krets.

Testa vår inställning

Till att börja med kan vi kolla vår krets med ett enkelt program. Om du är säker på att du har kopplat upp allt så långt kan du hoppa över det här steget, men jag rekommenderar det eftersom det kan spara huvudvärk senare.

Om du aldrig har programmerat i Python tidigare och känner dig lite skön, finns det en mängd bra webbplatser De 5 bästa hemsidorna för att lära dig Python-programmering De 5 bästa webbplatserna för att lära dig Python-programmering Under det senaste decenniet har Python programmeringsspråk exploderat i popularitet bland programmerare inom alla områden av kodning. Från webbutvecklare till videospeldesigners till inbyggda verktygsskapare har många fallit i ... Läs mer som kan hjälpa dig att komma igång.

I terminalen skapar du ett nytt skript:

 nano test.py 

När du är öppen lägger du till den här koden i filen och trycker på Ctrl-C för att avsluta, efter dialogrutan Spara:

 #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() 

Denna kod läser värdet på knapparna och skriver ut till skärmen när de ändras. De två tryckknapparna har dragmotstånd, så de rapporterar HÖG när de trycks in. Rörmagnetomkopplaren rapporterar HIGH när den medföljande magneten är nära.

switchar

Kör programmet:

 python test.py 

Du ska se LED-lampan och en rapport till skärmen när du trycker på dina två knappar och dra bort magneten från din reed-brytare. Om du inte får feedback när du trycker på knappar, kontrollera din krets igen och se till att allt är anslutet som det borde vara. När du är klar med testet trycker du på CTRL-C för att stoppa programmet.

Nu kan vi sätta ihop ett enkelt program för att ställa in, utlös och återställ vår dörrgivare. Vi kommer att gå över koden i delar och förklara kortfattat vad varje del gör, men om du vill se hela koden bläddra ner för att se den presenteras i sin helhet.

Vi måste börja med att importera några moduler:

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

Vi använder Pygame- modulen för att spela vår musik. Det kommer som standard med Raspbian Jessie och är ett bra bibliotek för allt du behöver för att göra Python-spel och många andra fantastiska projekt. Hur man bygger en hallon Pi Twitter Bot Hur man bygger en hallon Pi Twitter Bot Twitter är världens största förråd av korta meddelanden från människor som inte har något att säga - och nu kan du också bidra till det episka projektet med en automatiserad Twitter-bot som drivs av din hallon ... Läs mer.

Vi ska använda en variabel som heter aktiv för att bestämma om vårt system är aktivt eller ej. Låt definiera ett par funktioner som kommer att göra detta för oss:

 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 

Den första funktionen här skapar en variabel som heter aktiv och ställer in den till 0. Om du planerar att senare skala upp ditt program för att ha olika aktiva tillstånd kan du numrera dem i enlighet därmed. Även om det kanske inte är den bästa Python programmeringen i världen, kommer det mer än tillräckligt för detta projekt.

Den andra funktionen när den kallas kontrollerar om systemet är aktivt (eller aktivt == 1 ). Om det är så ställer det systemet in för att inte vara aktivt ( aktivt == 0 ), stänger av lysdioden och skrivs ut till konsolen. Om det inte är det ger det dig en 10 sekunders nedräkning för att lämna rummet där lampan blinkar, innan du fortsätter att visa att systemet är aktivt.

Nu kan vi definiera en funktion som kommer att se vår reed magnet switch:

 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) 

Vi skapar en annan variabel här kallad spelning - det här är helt enkelt för att stoppa programmet som försöker börja spela upprepade gånger när strömbrytaren utlöses.

Inuti stundslingan startar den första if-uppgiften musiken (som vi inte har någon av ännu, men inte oroa dig, det kommer). Det låter bara musiken starta om systemet är aktivt, omkopplaren är öppen, och den spelar inte upp.

Den andra om uttalandet är för vår exitknapp. Om den här knappen trycks ner stoppar musiken och programmet avslutas.

Den tredje om uppgiften är att byta om systemet är aktivt eller inte. Time.sleep- funktionen här är att förhindra att flera knappar läses när den trycks in.

Nu är det dags att ställa upp Pi-stiften.

 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) 

Om du har gjort några experiment med Pi innan det borde vara bekant för dig. Det ursprungliga = GPIO.LOW- argumentet i Pin 7-inställningen sätter den till låg så snart den initialiseras.

Nu kan vi ringa vår funktion som gör att systemet inte är aktivt när programmet startar.

 activeSetup() 

Music Maestro!

Vid denna tidpunkt bör vi börja tänka på musiken att spela. Du kan välja vilken musikfil du vill, men vi ska välja något tillgängligt för alla för tillfället. Om du tittar på YouTube är du förmodligen redan bekant med Kevin MacLeods musik. Låt oss ladda ner en fantastisk melodi av honom som heter "One-eyed Maestro". Detta, tillsammans med mycket av musiken på hans webbplats, är licensierad under Creative Commons, och det finns många bra skäl. Vad är Creative Commons, och ska du använda den? Vad är Creative Commons, och ska du använda det? Creative Commons är en uppsättning licenser som automatiskt ger dig tillåtelse att göra olika saker, till exempel återanvända och distribuera innehållet. Låt oss ta reda på mer om det och hur du använder det. Läs mer för att använda innehåll med dessa licenser för dina projekt.

Tillbaka i vår kod måste vi starta Pygame mixern och ladda vår melodi.

 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)) 

Den första raden i det här blocket initierar Pygame- mixern. Det sista argumentet i parenteserna är bufferten som styr latensen i vilken ljudet spelas. Om du upplever illa uppspelning senare när musiken spelas, försök att öka detta nummer till 4096. Inställningarna eftersom de fungerar utan problem på en Pi 3.

Om du hämtade din musikfil i en annan katalog till ditt door.py- program måste du ge hela sökvägen inuti parenteserna när du definierar namnsvariabeln.

Nu är allt som finns kvar att sätta upp en slinga som väntar på oss att antingen ställa in programmet aktivt eller avsluta det.

 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() 

Denna stundslinga väntar på en inmatning från endera knappen och avslutar eller ändrar tillståndet till att fungera i enlighet med detta. Om aktivitetsstatus blir 1, blir den funktionen WatchDoor som vi definierats tidigare kallad och nästa gång dörren öppnas kommer vår melodi att spelas. Vi ringer också GPIO.cleanup () för att återställa våra pinnar vid utgången, vilket i allmänhet är en bra övning för all programmering på Raspberry Pi.

Det är allt vi behöver för att få detta projekt igång, här är koden i sin helhet:

 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() 

Om du rullar ner här för att ta tag i hela koden direkt, kom ihåg att du fortfarande behöver ladda ner musiken på din Pi för att den ska fungera!

Nu borde du ha ett fungerande välkommen hemtema! Fäst din svängbrytare till din dörr och prova den. Pinsamt dans är valfritt men rekommenderat.

Projektet täckte grunderna för många former av hemövervakning, säkerhet och automation, och det var förhoppningsvis roligt också!

Nu när du har kommit så långt, varför stanna där? Du kan lägga till fler spår och få programmet att välja ett slumpmässigt ur en lista. Du kan lägga till ett relä Komma igång med GPIO På en Raspberry Pi Komma igång med GPIO På en Raspberry Pi Om du, trots att Arduino var cool, vänta bara tills du tar händerna på en Raspberry Pi - dessa saker är fantastiska. Förutom att vara en fullt fungerande dator, har de också en ... Läs mer och få andra objekt att utlösas vid inmatning. Om du har ett hemmabiosystem, varför inte ha en temansång för varje rum?

Kommer du att utforma ditt eget personliga välkomna hem meddelande? Har du varit uppfinningsrik med reedbrytare i ditt hem på andra sätt? Om så är fallet, lämna en kommentar om vad du planerar eller redan har gjort i kommentarfältet nedan!

In this article