Speel je eigen themafunctie wanneer je de kamer met Raspberry Pi betreedt
Heb je ooit thuis willen komen voor een persoonlijk welkom? Met een Raspberry Pi en een paar eenvoudige componenten, kunt u! In dit eenvoudige project gebruiken we een reed-schakelaar om een themafoon te activeren wanneer een deur wordt geopend. We zullen hier een Raspberry Pi als controller gebruiken, hoewel je bijna elke andere microcontroller $ 5 Microcontrollers zou kunnen gebruiken: Arduino, Raspberry Pi Zero of NodeMCU? $ 5 Microcontrollers: Arduino, Raspberry Pi Zero of NodeMCU? Vroeger moest je, als je een computer wilde hebben, je huis opnieuw betalen om het te betalen. Nu kunt u er een krijgen voor een Abraham Lincoln. Lees Meer voor dit project met hetzelfde circuit. Hier is een demo.
Je zal nodig hebben
Je hebt waarschijnlijk al alle onderdelen die je nodig hebt om dit te maken, behalve de reed-schakelaar, die rond de $ 2-3 ligt, of je kunt hier een pakket van 5 krijgen voor iets meer dan $ 8.
- Een Raspberry Pi (elk model zal hiervoor werken).
- 1 x 220 Ohm weerstand.
- 1 x 1K Ohm weerstand.
- 3 x 10K Ohm weerstand.
- 1 x magnetische reed-schakelaar.
- 1 x LED.
- 2 x drukknopschakelaar.
- broodplank.
- Aansluitkabels.
- Computerluidspreker of vergelijkbaar.
We zullen de Raspberry Pi gebruiken om een nummer te spelen wanneer de ruimte wordt ingevoerd, en een circuit ontwerpen met knoppen op ons breadboard om het met een vertraging te activeren en het programma te stoppen.
Dit project, hoewel voornamelijk gemaakt voor de lol, behandelt de basis voor vele toepassingen in doe-het-zelf domotica Home Automation Guide met Raspberry Pi en Arduino Home Automation Guide met Raspberry Pi en Arduino De domotica markt wordt overspoeld met dure consumentensystemen, incompatibel met één een andere en kostbaar om te installeren. Als je een Raspberry Pi en een Arduino hebt, kun je in feite hetzelfde bereiken op ... Lees meer en ook doe-het-zelf-beveiliging op huis Bent u op zoek naar een doe-het-zelf beveiligingssysteemoplossing? Probeer een van deze op zoek naar een doe-het-huis beveiligingssysteem oplossing? Probeer een van deze In het tijdperk van digitale technologie en altijd verbonden hardware, zou het opzetten van een huisbeveiligingssysteem de kunst van het plaatsen van een alarmvormige doos aan de muur overstijgen. Lees verder
Raspberry Pi 3 Model B Moederbord Raspberry Pi 3 Model B Moederbord Nu kopen bij Amazon $ 34,49
Ermee beginnen
Laten we beginnen met het maken van ons circuit. Zorg ervoor dat je Pi niet-aangedreven is en stel je circuit zo in:
De LED is verbonden met pin 7 op onze pi. De twee drukknopschakelaars zijn bevestigd aan pennen 11 en 13 en de reed-schakelaar is verbonden met pen 15. Onze kracht gaat naar pin 1 (3v3) en pin 6 (Gnd).
Zorg ervoor dat u controleert of alles op de juiste plaats staat.
Terwijl je dit project aan het testen bent, kan het helpen om je reed-schakelaar voor je te houden, zodat je hem gemakkelijk kunt in- of uitschakelen. In dit geval was de reed-schakelaar al boven de deur geïnstalleerd. Zodra uw project in gebruik is, kunt u de schakelaar tijdelijk op uw deur bevestigen met behulp van tape, of als u meer zelfvertrouwen heeft, kunt u deze permanent bevestigen voor gebruik in toekomstige projecten!
Verbind de 3,5 mm jack-uitgang van je Pi met je luidsprekersysteem. Als alles eenmaal is samengesteld, ziet het er ongeveer zo uit:
Merk op dat het hier gebruikte breadboard zijn power rails heeft, andersom naar het Fritzing diagram hierboven.
Schakel nu je Pi in en open hem via SSH, zodat we toegang hebben tot de terminal. Als u niet zeker weet hoe u dit moet doen, deze handleiding Uw Raspberry Pi instellen voor gebruik zonder hoofd met SSH Uw Raspberry Pi instellen voor gebruik zonder hoofd met SSH De Raspberry Pi kan SSH-commando's accepteren wanneer deze is aangesloten op een lokaal netwerk (via Ethernet of Wi-Fi), zodat u het gemakkelijk kunt instellen. De voordelen van SSH gaan verder dan het verstoren van de dagelijkse screening ... Read More kan u helpen. Als u uw Raspberry Pi gebruikt met een monitor, muis en toetsenbord, slaat u deze stap over en opent u de terminal.
Voordat u begint, is het de moeite waard om te controleren of u op de hoogte bent. Type sudo apt-get update
naar de terminal.
Nu kunnen we doorgaan om onze Pi te laten praten met ons circuit.
Onze installatie testen
Om te beginnen, laat ons circuit controleren met behulp van een eenvoudig programma. Als je er zeker van bent dat je tot nu toe alles goed hebt aangesloten, kun je deze stap overslaan, hoewel ik het zou aanraden omdat het je later hoofdpijn kan besparen.
Als je nog nooit eerder in Python hebt geprogrammeerd en je een beetje ontmoedigd voelt, zijn er een groot aantal geweldige websites. De 5 beste websites om Python te leren programmeren De 5 beste websites om Python te leren programmeren Wil je Python-programmeren leren? Dit zijn de beste manieren om Python online te leren, waarvan vele volledig gratis zijn. Lees meer dat u kan helpen om te beginnen.
Maak in de terminal een nieuw script:
nano test.py
Voeg na het openen deze code toe aan het bestand en druk op Ctrl-C om te stoppen, na het opslaan dialoogvenster:
#Deze code is geschreven voor een artikel op www.MakeUseOf.com door Ian Buckley. import RPi.GPIO als GPIO importtijd 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 ("Knop op GPIO 15 ") time.sleep (1) GPIO.cleanup ()
Deze code leest de waarde van de knoppen en drukt naar het scherm wanneer ze veranderen. De twee drukknoppen hebben pull-down weerstanden, dus ze geven HOOG aan als ze worden ingedrukt. De reed-magneetschakelaar meldt HOOG wanneer de bijbehorende magneet dichtbij is.
Start het programma:
python test.py
U zou de LED moeten zien oplichten en een melding op het scherm moeten krijgen wanneer u op uw twee knoppen drukt en de magneet wegtrekt van uw reed-schakelaar. Als je geen feedback krijgt wanneer je op de knoppen drukt, controleer je je circuits opnieuw en zorg je ervoor dat alles is aangesloten zoals het hoort. Druk op als u klaar bent met testen CTRL-C om het programma te stoppen.
Nu kunnen we een eenvoudig programma samenstellen om onze deursensor in te stellen, te activeren en opnieuw in te stellen. We zullen de code in delen bespreken en in het kort uitleggen wat elk onderdeel doet, maar als je de volledige code wilt zien, scroll dan naar beneden om het volledig gepresenteerd te zien.
We moeten beginnen met het importeren van enkele modules:
importeer Rpi.GPIO als GPIO import importtijd pygame.mixer
We zullen de gebruiken pygame module om onze muziek te spelen. Het komt standaard met Raspbian Jessie en is een geweldige bibliotheek voor alles wat je nodig hebt voor het maken van Python-spellen en vele andere fantastische projecten. Hoe een Raspberry Pi te bouwen Twitter Bot Hoe een Raspberry Pi te bouwen Twitter Bot Twitter is 's werelds grootste opslagplaats van korte berichten van mensen met niets te zeggen - en nu kun jij ook een bijdrage leveren aan dat epische project met een geautomatiseerde Twitter-bot, mogelijk gemaakt door je Raspberry ... Lees meer .
We gaan een variabele gebruiken genaamd actief om te beslissen of ons systeem actief is of niet. Laat een paar functies definiëren die dit voor ons zullen doen:
def activeSetup (): globaal actief actief = 0 print ("Huidig niet actief") def activeState (): algemeen actief indien actief == 1: actief = 0 GPIO.output (7, GPIO.LOW) print ("Momenteel niet actief ") elif active == 0: print (" Activeren in 10 seconden ") voor x binnen bereik (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 ("Actief Actief") anders: ga terug
De eerste functie maakt hier een variabele met de naam actief, en stelt het in op 0. Door de actieve status een numerieke waarde te geven, betekent dit dat als u van plan bent uw programma later op te schalen om verschillende actieve toestanden te hebben, u ze overeenkomstig kunt nummeren. Hoewel het misschien niet de beste Python-programmering ter wereld is, is het meer dan voldoende voor dit project.
De tweede functie wanneer deze wordt aangeroepen, controleert of het systeem actief is (of actieve == 1). Als dit het geval is, wordt het systeem ingesteld op niet actief (actieve == 0), schakelt de LED uit en drukt af naar de console. Als dit niet het geval is, krijgt u een aftelling van 10 seconden om de ruimte te verlaten waarin de LED knippert, voordat deze blijft branden om aan te geven dat het systeem actief is.
Nu kunnen we een functie definiëren die onze reed-magneetschakelaar bekijkt:
def watchDoor (): global playing playing = False while True: indien actief == 1 en GPIO.input (15) == 1 en spelen == False: spelen = True pygame.mixer.music.play () if GPIO.input (13) == 1: print ("Stopknop ingedrukt: afsluiten") pygame.mixer.music.stop () pauze als GPIO.input (11) == 1: activeState () time.sleep (0.5)
We creëren hier een andere variabele genaamd spelen - dit is er gewoon om het programma te stoppen proberen herhaaldelijk te spelen wanneer de schakelaar wordt geactiveerd.
In de while-loop start de eerste if-opdracht de muziek (die we nog niet hebben, maar geen zorgen maken, die komt eraan). Het laat alleen de muziek starten als het systeem actief is, de reed-schakelaar open is en het nog niet speelt.
De tweede if-instructie is voor onze exit-knop. Als u op deze knop drukt, stopt de muziek en wordt het programma afgesloten.
De derde if-instructie is om te schakelen tussen het feit of het systeem actief is of niet. De time.sleep de functie is hier om te voorkomen dat meerdere toetsen worden gelezen als erop wordt gedrukt.
Nu is het tijd om de pinnen van Pi op te zetten.
GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, eerste = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)
Als je al eerder met de Pi hebt geëxperimenteerd, zou dit je bekend moeten voorkomen. De eerste = GPIO.LOW argument in pin 7's setup zet het laag zodra het geïnitialiseerd is.
Nu kunnen we onze functie bellen die ervoor zorgt dat het systeem niet actief wordt wanneer het programma start.
ActiveSetup ()
Muziek Maestro!
Op dit punt moeten we gaan nadenken over de muziek die we moeten spelen. Je kunt elk gewenst muziekbestand kiezen, maar we zullen voorlopig voor iedereen iets kiezen dat voor iedereen beschikbaar is. Als je naar YouTube kijkt, ben je waarschijnlijk al bekend met de muziek van Kevin MacLeod. Laat downloaden een fantastisch deuntje van hem genoemd “Eenogige Maestro”. Dit, samen met een groot deel van de muziek op zijn site, is gelicenseerd onder Creative Commons, en er zijn veel goede redenen Wat is Creative Commons en moet je het gebruiken? Wat is Creative Commons en moet je het gebruiken? Creative Commons is een verzameling licenties die u automatisch toestemming geeft om verschillende dingen te doen, zoals hergebruik en distributie van de inhoud. Laten we er meer over te weten komen en hoe het te gebruiken. Lees meer om inhoud met deze licenties te gebruiken voor uw projecten.
Terug in onze code moeten we de Pygame-mixer starten en ons deuntje laden.
pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Eenogig Maestro.mp3" pygame.mixer.music.load (naam) print ("Geladen track - "+ str (naam))
De eerste regel van dit blok initieert de pygame mixer. Het laatste argument tussen haakjes is de buffer die de latentie regelt waarin het geluid wordt afgespeeld. Als je later een schokkerige weergave krijgt wanneer je muziek wordt afgespeeld, probeer dit nummer dan te verhogen naar 4096. De instellingen werken zonder problemen op een Pi 3.
Als u uw muziekbestand hebt gedownload naar een andere map naar uw door.py programma, moet u het volledige pad tussen de haakjes opgeven wanneer u de naamvariabele definieert.
Nu hoeft u alleen nog een lus in te stellen die wacht op ons om het programma actief te maken of het programma te verlaten.
while True: if (GPIO.input (13) == 1): print ("Stopknop ingedrukt: afsluiten") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () doorbreken GPIO.cleanup ()
Deze while-lus wacht op een invoer van een van beide knoppen en verlaat of wijzigt de status dienovereenkomstig. Als de status van actief 1 wordt, dan is de watchDoor functie die we eerder hebben gedefinieerd, wordt gebeld en de volgende keer dat de deur wordt geopend, wordt onze melodie afgespeeld. We bellen ook GPIO.cleanup () om onze pinnen bij afsluiten te resetten, wat over het algemeen een goede oefening is voor alle programmering op de Raspberry Pi.
Dat is alles wat we moeten doen om dit project operationeel te krijgen, hier is de code volledig:
import RPi.GPIO als 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 ("Momenteel niet actief") elif active == 0: print ("Activeren in 10 seconden") voor x binnen bereik (0,10): GPIO.output (7, GPIO.HIGH) tijd .sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) print ("Actief Actief") anders: return def watchDoor (): global spelen spelen = False while True: indien actief == 1 en GPIO.input (15) == 1 en spelen == False: spelen = True pygame.mixer.music.play () if GPIO.input (13) == 1 : print ("Stopknop ingedrukt: afsluiten") pygame.mixer.music.stop () pauze als GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO .setup (7, GPIO.OUT, initiaal = 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 = "Een oogje d Maestro.mp3 "pygame.mixer.music.load (naam) print (" Loaded track - "+ str (name)) while True: if (GPIO.input (13) == 1): print (" Stopknop ingedrukt : Exiting ") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () doorbreekt GPIO. opruimen()
Als je hierheen bent gescrold om de volledige code meteen te pakken, houd er dan rekening mee dat je de muziek nog steeds naar je Pi moet downloaden voordat hij kan werken!
Nu zou je een goed functionerend welkomthema moeten hebben! Bevestig uw reed-schakelaar aan uw deur en probeer het uit. Gênante dansen is optioneel, maar wordt aanbevolen.
Dit project behandelde de basis voor vele vormen van thuismonitoring, beveiliging en automatisering, en hopelijk was het ook leuk!
Nu dat je zover bent gekomen, waarom zou je daar stoppen? Je zou meer nummers kunnen toevoegen en het programma willekeurig uit een lijst kunnen kiezen. Je zou een relais kunnen toevoegen. Aan de slag met GPIO Op een Raspberry Pi Aan de slag met GPIO Op een Raspberry Pi Als je de Arduino cool vond, wacht dan even tot je een Raspberry Pi hebt gevonden - deze dingen zijn geweldig. Behalve dat het een volledig functionele computer is, hebben ze ook een ... Lees Meer en worden andere objecten geactiveerd bij binnenkomst. Als u een muzieksysteem voor thuis hebt, kunt u voor elke kamer een themanummer gebruiken?
Ga je je eigen persoonlijke welkomstboodschap ontwerpen? Ben je op andere manieren inventief geweest met reed-schakelaars in je huis? Zo ja, laat een opmerking achter over wat u van plan bent of al hebt gedaan in de opmerkingen hieronder!
Ontdek meer over: Home Automation, Raspberry Pi.