reklama
Chtěli jste někdy přijet domů k osobnímu přivítání? S Raspberry Pi a několika jednoduchými komponenty můžete! V tomto jednoduchém projektu použijeme jazýčkový spínač ke spuštění melodie motivu při otevření dveří. Jako regulátor použijeme Raspberry Pi, i když byste mohli použít téměř cokoli jiný mikrokontrolér Mikrokontroléry 5 $: Arduino, Raspberry Pi Zero nebo NodeMCU?Bývalo to tak, že pokud jste chtěli získat počítač, museli byste za něj zaplatit, přerozdělit dům. Nyní můžete získat jednu pro Abraham Lincoln. Přečtěte si více pro tento projekt využívající stejný obvod. Zde je ukázka.
Budete potřebovat
Pravděpodobně již vlastníte všechny součásti, které potřebujete, s výjimkou rákosového přepínače, který je kolem 2–3 $, nebo můžete získat balíček 5 za pouhých 8 USD tady.
- Raspberry Pi (jakýkoli model pro to bude fungovat).
- 1 x 220 Ohm rezistor.
- 1 x 1K Ohm rezistor.
- Rezistor 3 x 10 K Ohm.
- 1 x magnetický jazýčkový spínač.
- 1 x LED.
- 2 x tlačítkový spínač.
- Prkénko.
- Připojovací kabely.
- Počítačový reproduktor nebo podobně.
Když vstoupíme do místnosti, použijeme Raspberry Pi pro přehrání písně a navrhneme obvod s tlačítky na naší prkénku, abychom ji aktivovali zpoždění, a program zastavíme.
Tento projekt, i když je vyroben převážně pro zábavu, pokrývá základy mnoha aplikací v systému Windows Domácí automatizace pro kutily Průvodce domácí automatizací s Raspberry Pi a ArduinoTrh domácí automatizace je zaplaven drahými spotřebitelskými systémy, nekompatibilními navzájem a nákladnou instalací. Pokud máte Raspberry Pi a Arduino, můžete v podstatě dosáhnout totéž na ... Přečtěte si více a také DIY domácí bezpečnost Hledáte DIY řešení domácí bezpečnosti? Zkuste jeden z nichVe věku digitální technologie a vždy připojeného hardwaru by nastavení domácího bezpečnostního systému mělo překonat umění umisťovat na zeď alarmovou krabici. Přečtěte si více
Začínáme
Začněme vytvořením našeho okruhu. Ujistěte se, že váš Pi není napájen, a nastavte si obvod takto:
LED je připojena ke kolíku 7 na našem pi. Dva tlačítkové spínače jsou připojeny ke kolíkům 11 a 13 a jazýčkový spínač se připojuje ke kolíku 15. Naše síla jde na pin 1 (3v3) a pin 6 (Gnd).
Zkontrolujte, zda je vše na správném místě.
Při testování tohoto projektu může pomoci udržet před sebou jazýčkový přepínač, abyste jej mohli snadno zapnout nebo vypnout. V tomto případě byl jazýčkový spínač již nainstalován nad dveřmi. Jakmile je váš projekt spuštěn, můžete jej pomocí spínače dočasně připojit ke dveřím pásku, nebo pokud se cítíte sebevědomě, můžete ji připojit natrvalo pro další použití projekty!
Připojte 3,5 mm jackový výstup Pi k vašemu reproduktorovému systému. Jakmile je vše sestaveno, mělo by to vypadat takto:
Zde použitá prkénko má energetické kolejnice opačně k výše uvedenému Fritzingovu diagramu.
Nyní zapněte svůj Pi a připojte se k němu pomocí SSH, abychom měli přístup k terminálu. Pokud si nejste jisti, jak to udělat, tento průvodce Nastavení Raspberry Pi pro bezhlavé použití s SSHRaspberry Pi může přijímat SSH příkazy, když je připojen k místní síti (ethernet nebo Wi-Fi), což vám umožňuje snadné nastavení. Výhody SSH jdou nad rámec rozrušení každodenního screeningu ... Přečtěte si více mohu vám pomoci. Pokud používáte Raspberry Pi s monitorem, myší a klávesnicí, tento krok přeskočte a otevřete terminál.
Než začnete, je třeba zkontrolovat, zda jste aktuální. Typ aktualizace sudo apt-get
do terminálu.
Nyní můžeme přejít k tomu, aby naše Pi mluvilo k našemu okruhu.
Testování našeho nastavení
Začneme tím, že zkontrolujeme náš obvod pomocí jednoduchého programu. Pokud jste si jisti, že jste doposud vše zapojili, můžete tento krok přeskočit, ale doporučil bych to, protože to může později zachránit bolesti hlavy.
Pokud jste v Pythonu ještě nikdy nenaprogramovali a cítíte se trochu zastrašeni, existuje spousta skvělé webové stránky 5 nejlepších webových stránek, kde se můžete naučit programování v PythonuChcete se naučit programování Pythonu? Zde jsou nejlepší způsoby, jak se naučit Python online, z nichž mnohé jsou zcela zdarma. Přečtěte si více to vám může pomoci začít.
V terminálu vytvořte nový skript:
nano test.py
Po otevření přidejte tento kód do souboru a stisknutím klávesy Ctrl-C ukončete program podle dialogu pro uložení:
# Tento kód byl napsán pro článek na www. MakeUseOf.com od Ian Buckley. import RPi. GPIO jako GPIO. importovat čas. 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), zatímco True: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): print ("Button on GPIO 11") time.sleep (1 ) pokud (GPIO.input (13) == 1): print ("Button on GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("Button on GPIO 15") time .spánek (1) GPIO.cleanup ()
Tento kód přečte hodnotu tlačítek a při změně se vytiskne na obrazovku. Obě tlačítka mají odpory, takže při stisknutí hlásí VYSOKÉ. Spínač jazýčkových magnetů hlásí VYSOKÉ, kdykoli je jeho doprovodný magnet blízko.
Spusťte program:
python test.py
Měli byste vidět, jak se rozsvítí LED dioda a zpráva na obrazovce, když stisknete vaše dvě tlačítka a vytáhnete magnet od jazýčkového spínače. Pokud po stisknutí tlačítek nezískáte zpětnou vazbu, znovu zkontrolujte obvody a ujistěte se, že je vše připojeno tak, jak by mělo být. Po dokončení testování stiskněte CTRL-C zastavit program.
Nyní můžeme sestavit jednoduchý program pro nastavení, spuštění a resetování našeho dveřního senzoru. V některých částech projdeme kód a stručně vysvětlíme, co každá část dělá. Pokud však chcete vidět celý kód, přejděte dolů a zobrazte jej v plném znění.
Musíme začít importováním některých modulů:
importovat Rpi. GPIO jako GPIO. import pygame.mixer. importovat čas.
Budeme používat Pygame modul pro přehrávání naší hudby. S Raspbian Jessie je standardem a je skvělou knihovnou pro vše, co potřebujete k tvorbě her Python a mnoha dalších úžasné projekty Jak postavit Raspberry Pi Twitter BotTwitter je největší světové úložiště krátkých zpráv od lidí, kteří nemají co říct - a nyní Vy také můžete přispět k tomuto epickému projektu pomocí automatizovaného robota na Twitteru, poháněného vaším Malina... Přečtěte si více .
Budeme používat proměnnou nazvanou aktivní rozhodnout, zda je náš systém aktivní nebo ne. Definujme několik funkcí, které to pro nás udělají:
def activeSetup (): global active active = 0 print ("Právě not active") def activeState (): global active, pokud active == 1: active = 0 GPIO.output (7, GPIO.LOW) tisk ("Momentálně neaktivní") elif active == 0: print ("Aktivace za 10 sekund") pro x v rozsahu (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 ("V současné době Aktivní “) jinde: návrat.
První funkce zde vytvoří proměnnou pojmenovanou aktivní, a nastaví se na 0. Přidělení aktivního stavu číselné hodnotě znamená, že pokud plánujete program později rozšířit na různé aktivní stavy, můžete je odpovídajícím způsobem očíslovat. I když to nemusí být nejlepší programování Pythonu na světě, pro tento projekt bude stačit.
Druhá funkce při volání kontroluje, zda je systém aktivní (nebo aktivní == 1). Pokud ano, nastaví systém na neaktivní (aktivní == 0), zhasne LED a tiskne na konzoli. Pokud tomu tak není, poskytne vám odpočítávání 10 sekund, abyste opustili místnost, ve které LED bliká, než zůstane zapnutá, abyste ukázali, že systém je aktivní.
Nyní můžeme definovat funkci, která bude sledovat náš magnetický spínač:
def watchDoor (): globální hraní hraní = False zatímco True: pokud je aktivní == 1 a GPIO.input (15) == 1 a hraní == False: playing = True pygame.mixer.music.play (), pokud GPIO.input (13) == 1: print ("Stop tlačítko stisknuto: Exiting") pygame.mixer.music.stop () break, pokud GPIO.input (11) == 1: activeState () time.sleep (0.5)
Vytváříme další proměnnou nazývanou zde hraní - je to pouze proto, aby program zastavil opakované přehrávání, když je spínač aktivován.
Uvnitř smyčky while začíná první příkaz if if music (který zatím nemáme, ale nebojte se, přichází). Hudbu lze spustit pouze v případě, že je systém aktivní, přepínač jazýčků je otevřený a již se nepřehrává.
Druhý příkaz if je pro naše tlačítko exit. Po stisknutí tohoto tlačítka se hudba zastaví a program skončí.
Třetí příkaz if slouží k přepínání, zda je systém aktivní nebo ne. time.sleep Funkce zde zabraňuje tomu, aby se při stisknutí více tlačítek četlo.
Teď je čas postavit Pi kolíky.
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)
Pokud jste provedli nějaké experimentování s Pi, než by vám to mělo být známo. počáteční = GPIO.LOW argument v nastavení pin 7 nastaví na nízkou, jakmile je inicializován.
Nyní můžeme zavolat naši funkci, která způsobí, že systém nebude při spuštění programu aktivní.
activeSetup ()
Hudba Maestro!
V tuto chvíli bychom měli začít přemýšlet o hudbě, která se má hrát. Můžete si vybrat libovolný hudební soubor, který si přejete, ale prozatím si vybereme něco, co bude všem dostupné. Pokud se díváte na YouTube, pravděpodobně už znáte hudbu Kevina MacLeoda. Umožňuje stáhnout fantastickou melodii, kterou nazývá "Jednooký maestro". Toto, spolu s velkou částí hudby na jeho webu, podléhá licenci Creative Commons a existují mnoho dobrých důvodů Co je Creative Commons a nekomerční použití?Co je Creative Commons? Co znamená „nekomerční použití“? Další informace o licencích Creative Commons a jejich fungování. Přečtěte si více používat obsah s těmito licencemi pro vaše projekty.
V našem kódu musíme spustit směšovač Pygame a načíst naši melodii.
pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "One-eyed Maestro.mp3" pygame.mixer.music.load (jméno) print ("Loaded track -" + str (name))
První řádek tohoto bloku inicializuje Pygame mixér. Posledním argumentem v závorkách je vyrovnávací paměť, která řídí latenci, ve které se zvuk hraje. Pokud během přehrávání hudby zaznamenáte trhané přehrávání, zkuste toto číslo zvýšit na 4096. Nastavení, jak fungují bez problémů na Pi 3.
Pokud jste stáhli hudební soubor do jiného adresáře, než je váš door.py program, budete muset zadat úplnou cestu uvnitř závorek, když definujete název proměnné.
Nyní už zbývá jen vytvořit smyčku, která čeká, až program buď nastavíme jako aktivní, nebo jej ukončíme.
while True: if (GPIO.input (13) == 1): print ("Tlačítko Stop stisknuto: Exiting") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()
Tato smyčka čeká na vstup z kteréhokoli tlačítka a podle toho ukončí nebo změní stav na aktivní. Pokud se stav aktivního stane 1, pak watchDoor funkce, kterou jsme definovali dříve, se volá a při příštím otevření dveří se spustí naše melodie. Také voláme GPIO.cleanup () resetovat naše kolíky na výstupu, což je obecně dobrá praxe pro veškeré programování na Raspberry Pi.
To je vše, co musíme udělat, aby byl tento projekt spuštěn, zde je celý kód:
import RPi. GPIO jako GPIO. import pygame.mixer. doba importu def activeSetup (): global active active = 0 print ("Právě not active") def activeState (): global active, pokud active == 1: active = 0 GPIO.output (7, GPIO.LOW) print ("aktuálne Ne Aktivní ") elif aktivní == 0: tisk (" Aktivace za 10 sekund ") pro x v rozsahu (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 ("Právě aktivní") jinde: návrat def watchDoor (): globální hraní hraní = False zatímco True: pokud je aktivní == 1 a GPIO.input (15) == 1 a hraní == False: playing = True pygame.mixer.music.play (), pokud GPIO.input (13) == 1: print ("Stop tlačítko stisknuto: Exiting") pygame.mixer.music.stop () break, pokud 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 (jméno) print ("Loaded track -" + str (name)) while True: if (GPIO.input (13) == 1): print ("Stisknuto tlačítko Stop: Exiting") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()
Pokud jste se sem posunuli dolů, abyste okamžitě získali kompletní kód, mějte na paměti, že budete muset hudbu stáhnout do svého Pi, aby to fungovalo!
Nyní byste měli mít funkční melodii uvítacího domova! Připojte jazýčkový spínač ke dveřím a vyzkoušejte to. Rozpačitý tanec je volitelný, ale doporučuje se.
Tento projekt zahrnoval základy mnoha forem domácího monitoringu, bezpečnosti a automatizace a snad i legrace!
Nyní, když jste zašli tak daleko, proč se zastavit? Můžete přidat více skladeb a nechat si program náhodně vybrat jednu ze seznamu. Mohl bys přidat relé Začínáme s GPIO na Raspberry PiPokud ale Arduino bylo v pohodě, počkejte, až dostanete ruce na Raspberry Pi - tyto věci jsou úžasné. Kromě toho, že jsou plně funkční počítač, mají také ... Přečtěte si více a nechat při vstupu spouštět další objekty. Pokud máte domácí hudební systém, proč nemáte tematickou píseň pro každou místnost?
Navrhujete vlastní osobní uvítací zprávu domů? Byli jste vynalézaví s rákosovými spínači u vás doma jinými způsoby? Pokud ano, zanechte komentář o tom, co plánujete nebo jste již udělali v sekci komentářů níže!
Ian Buckley je nezávislý novinář, hudebník, performer a video producent žijící v Berlíně v Německu. Když nepíše nebo na jevišti, pohrává si s elektronikou pro kutily nebo kódem v naději, že se stane šíleným vědcem.