Afspil dit eget temmelodi, når du kommer ind i lokalet med Raspberry Pi

  • Joseph Goodman
  • 0
  • 4950
  • 30
Reklame

Har du nogensinde ønsket at komme hjem til en personlig velkomst? Med en Raspberry Pi og et par enkle komponenter kan du! I dette enkle projekt vil vi bruge en reed-switch til at udløse en tematune, når en dør åbnes. Vi bruger en Raspberry Pi som controller her, selvom du kunne bruge næsten enhver anden mikrokontroller $ 5 Microcontrollers: Arduino, Raspberry Pi Zero, eller NodeMCU? $ 5 Mikrocontrollere: Arduino, Raspberry Pi Zero eller NodeMCU? Det plejede at være tilfældet, at hvis du ville hente en computer, skulle du videresende dit hus for at betale for det. Nu kan du få en til en Abraham Lincoln. til dette projekt ved hjælp af det samme kredsløb. Her er en demo.

Du får brug for

Du vil sandsynligvis allerede eje alle de dele, du har brug for for at gøre dette undtagen reed-kontakten, som er omkring $ 2-3, eller du kan få en pakke på 5 til lidt over $ 8 her.

  • En Raspberry Pi (enhver model fungerer til dette).
  • 1 x 220 Ohm modstand.
  • 1 x 1K Ohm-modstand.
  • 3 x 10K Ohm-modstand.
  • 1 x Magnetisk afbryder.
  • 1 x LED.
  • 2 x Tryk på knappen.
  • breadboard.
  • Tilslutningskabler.
  • Computerhøjttaler eller lignende.

Vi bruger Raspberry Pi til at afspille en sang, når rummet kommer ind, og designe et kredsløb med knapper på vores brødbræt for at aktivere den med en forsinkelse og stoppe programmet.

Dette projekt dækker det mest for sjov, og dækker det grundlæggende for mange anvendelser i DIY-hjemmeautomatisering Hjemmeautomatiseringsguide med Raspberry Pi og Arduino Hjem-automatiseringsvejledning med Raspberry Pi og Arduino Hjemme-automatiseringsmarkedet er oversvømmet med dyre forbrugersystemer, uforenelige med et en anden og kostbar at installere. Hvis du har en Raspberry Pi og en Arduino, kan du dybest set opnå det samme ved ... og også DIY-hjemmesikkerhed Leder du efter en DIY-hjemmesikkerhedssystemløsning? Prøv en af ​​disse på udkig efter en DIY-hjemmesikkerhedssystemløsning? Prøv en af ​​disse i en alder af digital teknologi og altid tilsluttet hardware, hvis du skulle oprette et hjemmesikkerhedssystem, skal det overstige kunsten at sætte en alarmformet kasse på væggen.

Kom godt i gang

Lad os begynde med at lave vores kredsløb. Sørg for, at din Pi ikke er i kraft, og indstil dit kredsløb sådan:

LED'et er tilsluttet pin 7 på vores pi. De to trykknapafbrydere er fastgjort til stifterne 11 og 13, og vippekontakten forbindes til pin 15. Vores magt går til pin 1 (3v3) og pin 6 (Gnd).

Sørg for at kontrollere, at alt er på det rigtige sted.

Mens du tester dette projekt kan det hjælpe med at holde dit vippekontakt foran dig, så du nemt kan slå det til eller fra. I dette tilfælde var vippekontakten allerede installeret over døren. Når dit projekt er i gang, kan du enten tilslutte kontakten midlertidigt til din dør ved hjælp af bånd, eller hvis du føler dig mere selvsikker kan du vedhæfte den mere permanent til brug i fremtidige projekter!

Tilslut 3,5 mm-jackudgangen fra din Pi til dit højttalersystem. Når alt er samlet, skal det se sådan ud:

Bemærk, at brødbrættet, der bruges her, har dets strømskinner omvendt til Fritzing-diagrammet ovenfor.

Tænd nu din Pi, og få adgang til den ved hjælp af SSH, så vi kan få adgang til terminalen. Hvis du ikke er sikker på, hvordan du gør dette, indstiller denne guide Opsætning af din Raspberry Pi til hovedløs brug med SSH Opsætning af din Raspberry Pi til hovedløs brug med SSH Raspberry Pi kan acceptere SSH-kommandoer, når den er tilsluttet et lokalt netværk (enten af ​​Ethernet eller Wi-Fi), så du nemt kan konfigurere det. Fordelene ved SSH går ud over at forstyrre den daglige screening ... kan hjælpe dig. Hvis du bruger din Raspberry Pi med en skærm, mus og tastatur, skal du springe over dette trin og åbne terminalen.

Før du går i gang, er det værd at kontrollere, om du er opdateret. Type sudo apt-get-opdatering ind i terminalen.

Nu kan vi gå videre til at få vores Pi til at tale med vores kredsløb.

Test vores opsætning

Til at begynde med, lad os tjekke vores kredsløb ved hjælp af et simpelt program. Hvis du er sikker på, at du har kablet alt sammen lige indtil videre, kan du springe dette trin over, selvom jeg vil anbefale det, da det kan spare hovedpine senere.

Hvis du aldrig har programmeret i Python før og føler dig lidt afskrækket, er der en række gode websteder De 5 bedste websteder til at lære Python-programmering De 5 bedste websteder til at lære Python-programmering Vil du lære Python-programmering? Her er de bedste måder at lære Python online, hvoraf mange er helt gratis. der kan hjælpe dig med at komme i gang.

Opret et nyt script i terminalen:

nano test.py

Når den er åben, tilføj denne kode til filen, og tryk på Ctrl-C for at afslutte, efter gem dialog:

# Denne kode blev skrevet til en artikel på www.MakeUseOf.com af Ian Buckley. import RPi.GPIO som GPIO importtid 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) mens sandt: GPIO.output (7, GPIO.HIGH) hvis (GPIO.input (11) == 1): udskriv ("Knap på GPIO 11") time.sleep (1) if (GPIO.input (13) == 1): print ("Knap på GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("Button on GPIO 15 ") time.sleep (1) GPIO.cleanup () 

Denne kode læser værdien af ​​knapperne og udskriver på skærmen, når de ændres. De to trykknapper har trækkende modstande, så de rapporterer HØJT, når de trykkes ned. Reedmagnetkontakten rapporterer HØJ, når dens ledsagende magnet er tæt.

Kør programmet:

python test.py

Du skal se lysdioden oplyse og en rapport til skærmen, når du trykker på dine to knapper og trækker magneten væk fra din røromskifter. Hvis du ikke får feedback, når du trykker på knapper, skal du kontrollere dit kredsløb igen og sørge for, at alt er tilsluttet, som det skal være. Når du er færdig med at teste, skal du trykke på CTRL-C for at stoppe programmet.

Nu kan vi sammensætte et simpelt program til at indstille, udløse og nulstille vores dørsensor. Vi vil gennemgå koden i dele og kort forklare, hvad hver del gør, selvom du vil se den fulde kode rulle ned for at se den præsenteret i sin helhed.

Vi er nødt til at starte med at importere nogle moduler:

importer Rpi.GPIO som GPIO-import pygame.mixer-importtid 

Vi bruger PyGame modul til at afspille vores musik. Det leveres som standard med Raspbian Jessie, og er et fantastisk bibliotek til alt hvad du har brug for for at lave Python-spil og mange andre fantastiske projekter. Sådan bygger du en Raspberry Pi Twitter Bot Sådan bygger du en Raspberry Pi Twitter Bot Twitter er verdens største arkiv med korte beskeder fra folk med intet at sige - og nu kan du også bidrage til det episke projekt med en automatiseret Twitter-bot, drevet af din Raspberry ... .

Vi vil bruge en variabel, der hedder aktiv at beslutte, om vores system er aktivt eller ej. Lad os definere et par funktioner, der gør dette for os:

def activeSetup (): global aktiv aktiv = 0 print ("Aktuelt ikke aktiv") def activeState (): global aktiv hvis aktiv == 1: aktiv = 0 GPIO.output (7, GPIO.LOW) print ("Aktuelt ikke aktiv" ") elif active == 0: print (" Aktivering i 10 sekunder ") for x inden for rækkevidde (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO .LAV) time.sleep (0.5) aktiv = 1 GPIO.output (7, GPIO.HIGH) print ("Aktuelt aktiv") andet: returner 

Den første funktion opretter her en navngivet variabel aktiv, og sætter det til 0. At give den aktive tilstand en numerisk værdi betyder, at hvis du senere planlægger at opskalere dit program til at have forskellige aktive tilstande, kan du nummerere dem i overensstemmelse hermed. Selvom det måske ikke er den bedste Python-programmering i verden, vil det mere end være tilstrækkeligt til dette projekt.

Den anden funktion, når den kaldes, kontrollerer, om systemet er aktivt (eller aktiv == 1). Hvis det er tilfældet, indstiller det systemet til ikke at være aktivt (aktiv == 0), slukker LED'en og udskriver til konsollen. Hvis det ikke er tilfældet, giver det dig en nedtælling på 10 sekunder for at forlade det rum, hvor LED-en blinker, inden du forbliver på for at vise, at systemet er aktivt.

Nu kan vi definere en funktion, der vil se vores rørmagnetafbryder:

def watchDoor (): global afspilning = Falsk mens sand: hvis aktiv == 1 og GPIO.input (15) == 1 og spiller == Falsk: spiller = Sand pygame.mixer.music.play () hvis GPIO.input (13) == 1: print ("Stop-tasten er trykket: afslutter") pygame.mixer.music.stop () pause, hvis GPIO.input (11) == 1: activeState () time.sleep (0.5) 

Vi opretter en anden variabel her kaldet spille - dette er der bare for at stoppe programmet, der prøver at starte afspilning gentagne gange, når afbryderen udløses.

Inden i løkkenet mens den første sætning starter musikken (som vi ikke har noget af endnu, men ikke at bekymre dig, den kommer). Den lader kun musikken starte, hvis systemet er aktivt, reed-kontakten er åben, og den ikke allerede spiller.

Den anden hvis erklæring er til vores exit-knap. Hvis der trykkes på denne knap, stopper musikken, og programmet afslutter.

Den tredje hvis erklæring er til at skifte, om systemet er aktivt eller ej. Det time.sleep funktion her er at forhindre flere knaplæsninger, når der trykkes på den.

Nu er det på tide at opsætte Pi's pins.

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) 

Hvis du har foretaget nogen eksperimenter med Pi, før dette burde være kendt for dig. Det indledende = GPIO.LOW argument i pin 7's opsætning sætter det til lavt, så snart det er initialiseret.

Nu kan vi kalde vores funktion, der indstiller systemet til ikke at være aktivt, når programmet starter.

Activesetup () 

Music Maestro!

På dette tidspunkt bør vi begynde at tænke på musikken, der skal spilles. Du kan vælge en hvilken som helst musikfil du ønsker, men vi skal vælge noget tilgængeligt for alle lige nu. Hvis du ser YouTube, er du sandsynligvis allerede fortrolig med Kevin MacLeods musik. Lad os downloade en fantastisk melodi af ham kaldet “Enøjet Maestro”. Dette sammen med meget af musikken på hans websted er licenseret under Creative Commons, og der er mange gode grunde. Hvad er Creative Commons, og skal du bruge det? Hvad er Creative Commons, og skal du bruge det? Creative Commons er et sæt licenser, der automatisk giver dig tilladelse til at gøre forskellige ting, såsom genbrug og distribution af indholdet. Lad os finde ud af mere om det, og hvordan vi bruger det. at bruge indhold med disse licenser til dine projekter.

Tilbage i vores kode skal vi starte Pygame-mixeren og indlæse vores melodi.

pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "One-eyed Maestro.mp3" pygame.mixer.music.load (navn) print ("Loaded track - "+ str (navn)) 

Den første linje i denne blok initierer PyGame mixer. Det sidste argument i parenteserne er den puffer, der styrer den latenstid, som lyden spilles i. Hvis du oplever hakket afspilning senere, når din musik afspilles, kan du prøve at øge dette antal til 4096. Indstillingerne, da de fungerer uden problemer på en Pi 3.

Hvis du downloadede din musikfil til et andet bibliotek end dit door.py program, skal du angive den fulde sti inden i parenteserne, når du definerer navnevariablen.

Nu er det eneste, der er tilbage at gøre, at opsætte en løkke, der venter på, at vi enten indstiller programmet aktivt eller afslutter det.

mens sandt: hvis (GPIO.input (13) == 1): udskriv ("Stop-tasten er trykket: afslutter") pygame.mixer.music.stop () brydes hvis (GPIO.input (11) == 1): activeState () time.sleep (0.5) hvis (aktiv == 1): watchDoor () bryde GPIO.cleanup () 

Dette mens løkke venter på et input fra en af ​​knapperne og afslutter eller ændrer tilstanden til aktiv i overensstemmelse hermed. Hvis aktivtilstanden bliver 1, er watchDoor funktion, vi definerede tidligere, bliver kaldt op, og næste gang døren åbnes, vil vores melodi blive spillet. Vi ringer også GPIO.cleanup () at nulstille vores ben ved udgang, hvilket generelt er en god praksis for al programmering på Raspberry Pi.

Det er alt, hvad vi skal gøre for at få dette projekt i gang, her er koden fuldt ud:

import RPi.GPIO som GPIO import pygame.mixer importtid def activeSetup (): global aktiv aktiv = 0 print ("Aktuelt ikke aktiv") def activeState (): global aktiv hvis aktiv == 1: aktiv = 0 GPIO.output ( 7, GPIO.LOW) print ("Aktuelt ikke aktiv") elif active == 0: print ("Aktivering i 10 sekunder") for x inden for intervallet (0,10): GPIO.output (7, GPIO.HIGH) tid .sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) aktiv = 1 GPIO.output (7, GPIO.HIGH) print ("Aktuelt aktiv") andet: return def watchDoor (): global at spille = False mens True: hvis aktiv == 1 og GPIO.input (15) == 1 og spiller == False: playing = True pygame.mixer.music.play () hvis GPIO.input (13) == 1 : print ("Stop-tasten er trykket: afslutter") pygame.mixer.music.stop () -brud, hvis 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-eye d Maestro.mp3 "pygame.mixer.music.load (navn) udskrivning (" Indlæst spor - "+ str (navn)) mens sandt: hvis (GPIO.input (13) == 1): udskriv (" Stop-tasten er trykket på : Afslutende ") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO. Ryd op() 

Hvis du rullede ned her for at få fat i den komplette kode med det samme, skal du huske, at du stadig bliver nødt til at downloade musikken til din Pi for at den skal fungere!

Nu skal du have en fungerende velkomsttema-melodi! Sæt din vifteafbryder på din dør, og prøv den ud. Pinlig dans er valgfri, men anbefales.

Dette projekt dækkede det grundlæggende for mange former for hjemmetilsyn, sikkerhed og automatisering, og forhåbentlig var det også sjovt!

Nu hvor du er kommet så langt, hvorfor stoppe der? Du kan tilføje flere numre og få programmet til at vælge et tilfældigt fra en liste. Du kan tilføje et relæ Kom godt i gang med GPIO på en Raspberry Pi Kom godt i gang med GPIO på en Raspberry Pi Hvis du selvom Arduino var sej, skal du bare vente til du får hænderne på en Raspberry Pi - disse ting er fantastiske. Ud over at være en fuldt funktionsdygtig computer har de også en… og har andre objekter udløst ved indrejse. Hvis du har et hjemmemusiksystem, hvorfor ikke have en temasang til hvert værelse?

Vil du designe din egen personlige velkomsthjemmeddelelse? Har du været opfindsom med reed-switches i dit hjem på andre måder? I så fald skal du efterlade en kommentar om, hvad du planlægger eller allerede har gjort i kommentarfeltet nedenfor!




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.