Mainos

Oletko koskaan halunnut saapua kotiin henkilökohtaiseen tervehdykseen? Raspberry Pi: n ja muutaman yksinkertaisen komponentin avulla voit! Tässä yksinkertaisessa projektissa käytämme ruokokatkaisinta teeman virittämiseen, kun ovi avataan. Käytämme tässä Raspberry Pi -ohjainta, vaikka voit käyttää melkein mitä tahansa muu mikrokontrolleri 5 dollaria Mikro-ohjaimet: Arduino, Vadelma Pi Zero tai NodeMCU?Aikaisemmin tilanne oli, että jos halusi hankkia tietokoneen, joudut siirtämään talosi uudelleen maksamaan siitä. Nyt voit hankkia yhden Abraham Lincolnille. Lue lisää tälle projektille käyttäen samaa piiriä. Tässä on demo.

Tarvitset

Sinulla on todennäköisesti jo kaikki osat, jotka tarvitset tämän tekemiseen, lukuun ottamatta ruokokatkaisinta, joka on noin 2–3 dollaria, tai voit hankkia 5: n paketin hieman yli 8 dollaria. tässä.

  • Vadelma Pi (kaikki mallit toimivat tätä varten).
  • 1 x 220 ohmin vastus.
  • 1 x 1K ohm-vastus.
  • 3 x 10K ohmin vastus.
  • 1 x magneettinen ruokokatkaisin.
  • 1 x LED.
  • 2 x painokytkin.
  • Leipälauta.
  • Kytkentäkaapelit.
  • Tietokonekaiutin tai vastaava.

Käytämme Raspberry Pi -soittoa kappaleen soittamiseen huoneeseen saapuessaan ja suunnittelemme piirin leivänpuolella olevilla painikkeilla aktivoidaksemme sen viiveellä ja lopettaaksesi ohjelman.

Vaikka tämä projekti on tehty pääasiassa hauskanpitoon, se kattaa monien sovellusten perusteet vuonna 2006 DIY kodin automaatio Kotiautomaatio-opas Raspberry Pi: n ja Arduinon kanssaKodin automaatiomarkkinat ovat täynnä kalliita kuluttajajärjestelmiä, jotka eivät ole keskenään yhteensopivia ja kalliita asentaa. Jos sinulla on Vadelma Pi ja Arduino, voit periaatteessa saavuttaa saman asian ... Lue lisää ja myös DIY kodin turvallisuus Etsitkö DIY-kotiturvajärjestelmän ratkaisua? Kokeile yhtä näistäDigitaalitekniikan ja aina kytkettyjen laitteiden aikakaudella kodinturvajärjestelmän perustamisen tulisi ylittää taiteen asettaa hälytysmuotoinen laatikko seinälle. Lue lisää

Päästä alkuun

Aloitetaan tekemällä piiri. Varmista, että Pi: lläsi ei ole virtaa, ja aseta piiri seuraavasti:

Fritzing merkitty päämaja

LED on kytketty pi-laitteen 7 napaan. Kaksi painonappikytkintä on kiinnitetty tapiin 11 ja 13, ja ruokokatkaisin kytketään tapiin 15. Voimamme menee napoihin 1 (3v3) ja napoihin 6 (Gnd).

nastakaavio

Varmista, että kaikki on oikeassa paikassa.

Kun testaat tätä projektia, se voi auttaa pitämään ruokokytkimen edessäsi, jotta voit helposti kytkeä sen päälle tai pois päältä. Tässä tapauksessa ruokokatkaisin oli jo asennettu oven yläpuolelle. Kun projekti on valmis ja käynnissä, voit joko kiinnittää kytkimen väliaikaisesti oveesi käyttämällä nauha, tai jos olet varmempi, voit kiinnittää sen pysyvästi käytettäväksi tulevaisuudessa projekteja!

ruokokatkaisin asennettu

Kytke Pi: n 3,5 mm jakkilähtö kaiutinjärjestelmään. Kun kaikki on koottu, sen pitäisi näyttää noin:

koko asetukset oikein

Huomaa, että täällä käytetyllä leipätaululla on voimansiirtokäänteet päinvastaisesti yllä olevaan Fritzing-kaavioon nähden.

Käynnistä nyt Pi ja käytä sitä SSH: lla, jotta päästämme päätelaitteeseen. Jos et ole varma, kuinka tämä tehdään, tämä opas Vadelma Pi: n asentaminen päättömään käyttöön SSH: n avullaRaspberry Pi voi hyväksyä SSH-komennot, kun ne on kytketty lähiverkkoon (joko Ethernet- tai Wi-Fi-yhteyden kautta), jolloin voit helposti asettaa sen. SSH: n hyödyt ylittävät päivittäisen seulonnan järkyttämisen ... Lue lisää voi auttaa sinua. Jos käytät Raspberry Pi -laitetta näytön, hiiren ja näppäimistön kanssa, ohita tämä vaihe ja avaa päätelaite.

Ennen aloittamista on syytä tarkistaa, ovatko ajan tasalla. Tyyppi sudo apt-get -päivitys terminaaliin.

Nyt voimme siirtyä siihen, että saamme Pi puhumaan piirillemme.

Testaa meidän asennus

Aloitetaan tarkistamalla piirimme yksinkertaisella ohjelmalla. Jos olet varma, että olet johtanut kaiken oikein toistaiseksi, voit ohittaa tämän vaiheen, vaikka suosittelenkin sitä, koska se voi säästää päänsärkyä myöhemmin.

Jos et ole koskaan ohjelmoinut Pythoniin aikaisemmin ja tunnet olosi hiukan pelotettuksi, siellä on joukko upeita verkkosivustoja 5 parasta verkkosivustoa Python-ohjelmoinnin oppimiseenHaluatko oppia Python-ohjelmointia? Tässä on parhaat tavat oppia Pythonia verkossa, joista monet ovat täysin ilmaisia. Lue lisää joka voi auttaa sinua pääsemään alkuun.

Luo terminaalissa uusi komentosarja:

nano test.py

Lisää tämä koodi tiedostoon avaamisen jälkeen ja paina Ctrl-C lopettaaksesi tallennusikkunan:

#Tämä koodi on kirjoitettu artikkelille www. MakeUseOf.com kirjoittanut Ian Buckley. tuo RPi. GPIO GPIO: na. tuontiaika. GPIO.setvaroitukset (vääriä) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) tosinaan: GPIO.output (7, GPIO.HIGH) jos (GPIO.input (11) == 1): print ("Button on GPIO 11") time.sleep (1 ) jos (GPIO.input (13) == 1): tulostus ("Button on GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("Button on GPIO 15") time .sleep (1) GPIO.cleanup ()

Tämä koodi lukee painikkeiden arvon ja tulostaa näytölle, kun ne muuttuvat. Kahdessa painikkeessa on alasvetovastukset, joten ne ilmoittavat KORKEA painettaessa. Redomagneettikytkin ilmoittaa KORKEEN aina, kun siihen liittyvä magneetti on lähellä.

kytkimet

Suorita ohjelma:

python test.py

Sinun pitäisi nähdä LED-merkkivalon palavan ja ilmoituksen näytölle, kun painat kahta painiketta ja vedät magneetin pois kakkokytkimestä. Jos et saa palautetta painettaessa painikkeita, tarkista piirit uudelleen ja varmista, että kaikki on kytketty niin kuin pitäisi. Kun olet lopettanut testauksen, paina CTRL-C ohjelman lopettamiseksi.

testata

Nyt voimme koota yksinkertaisen ohjelman ovianturin asettamiseen, käynnistämiseen ja nollaamiseen. Käsittelemme koodin osittain ja selitämme lyhyesti, mitä kukin osa tekee, tosin jos haluat nähdä koko koodin, vieritä alas nähdäksesi sen kokonaisuudessaan.

Meidän on ensin tuotava joitain moduuleja:

tuo Rpi. GPIO GPIO: na. tuo pygame.sekoitin. tuontiaika. 

Käytämme pygame moduuli soittaaksemme musiikkiamme. Se tulee vakiona Raspbian Jessien kanssa ja on loistava kirjasto kaikkea mitä tarvitset Python-pelien ja monien muiden tekemiseen uskomattomia projekteja Kuinka luoda Raspberry Pi Twitter BotTwitter on maailman suurin lyhytsanomien varasto ihmisiltä, ​​joilla ei ole mitään sanottavaa - ja nyt sinäkin voit osallistua siihen eeppiseen projektiin automatisoidulla Twitter-botilla, jonka käyttö on sinun Vadelma... Lue lisää .

Käytämme muuttujaa nimeltään aktiivinen päättää, onko järjestelmämme aktiivinen vai ei. Määritetään pari toimintoa, jotka tekevät tämän meille:

def activeSetup (): globaali aktiivinen aktiivinen = 0 tulosta ("tällä hetkellä ei aktiivinen") def activeState (): globaali aktiivinen, jos aktiivinen == 1: aktiivinen = 0 GPIO.output (7, GPIO.LOW) tulosta ("Ei tällä hetkellä aktiivinen") elif aktiivinen == 0: tulosta ("aktivoituu 10 sekunnissa") x: lle alueella (0,10): GPIO.ulostulo (7, GPIO.HIGH) aika.unen (0.5) GPIO.ulostulo (7, GPIO.LOW) aika.unen (0.5) aktiivinen = 1 GPIO.ulostulo (7, GPIO.HIGH) tulosta ("Tällä hetkellä Aktiivinen ") else: return. 

Ensimmäinen funktio luo tässä muuttujan nimeltä aktiivinen, ja asettaa sen arvoon 0. Aktiivisen tilan numeerisen arvon antaminen tarkoittaa, että jos aiot myöhemmin skaalata ohjelmaa niin, että siinä on erilaisia ​​aktiivisia tiloja, voit numeroida ne vastaavasti. Vaikka se ei ehkä olekin paras Python-ohjelmointi maailmassa, se riittää enemmän kuin tähän projektiin.

Toinen toiminto, kun sitä kutsutaan, tarkistaa, onko järjestelmä aktiivinen (tai aktiivinen == 1). Jos se on, se asettaa järjestelmän olemaan aktiivinen (aktiivinen == 0), sammuttaa LEDin ja tulostaa konsoliin. Jos sitä ei ole, se antaa sinulle 10 sekunnin lähtölaskennan poistuaksesi huoneesta, jossa LED vilkkuu, ennen kuin jää palamaan osoittamaan, että järjestelmä on aktiivinen.

Nyt voimme määritellä toiminnon, joka tarkkailee ruokomagneettikytkintämme:

def watchDoor (): maailmanlaajuinen pelaaminen = väärä ja totta: jos aktiivinen == 1 ja GPIO.input (15) == 1 ja pelaaminen == vääri: pelaaminen = totta pygame.mixer.music.play () jos GPIO.input (13) == 1: tulosta ("Stop-painiketta painettu: poistutaan") pygame.mixer.music.stop () tauko, jos GPIO.input (11) == 1: activeState () time.sleep (0.5)

Luomme täällä toisen muuttujan nimeltä pelaaminen - tämä on yksinkertaisesti pysäyttää ohjelma yrittää aloittaa toistaminen toistuvasti, kun kytkin laukeaa.

While-silmukan sisällä ensimmäinen, jos lausunto alkaa musiikin (jota meillä ei vielä ole, mutta emme ole huolissamme, se tulee). Se antaa musiikin käynnistyä vain, jos järjestelmä on aktiivinen, ruokokatkaisin on auki eikä sitä vielä soiteta.

Toinen, jos lausunto on poistumispainikkeellemme. Jos tätä painiketta painetaan, musiikki pysähtyy ja ohjelma poistuu.

Kolmas, jos lause on vaihdettava onko järjestelmä aktiivinen. time.sleep Tämän toiminnon tarkoituksena on estää usean painikkeen lukeminen, kun sitä painetaan.

Nyt on aika perustaa Pi-nastat.

GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, alkuperäinen = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)

Jos olet kokeillut Pi: tä ennen, sen pitäisi olla tuttu sinulle. ensimmäinen = GPIO.LOW argumentti nasta 7: n asennuksessa asettaa sen alhaiseksi heti, kun se alustetaan.

Nyt voimme kutsua toimintoamme, joka asettaa järjestelmän olemaan aktiivinen, kun ohjelma käynnistyy.

activeSetup ()

Musiikki Maestro!

Tässä vaiheessa meidän pitäisi alkaa miettiä soitettavaa musiikkia. Voit valita minkä tahansa haluamasi musiikkitiedoston, mutta me valitsemme jotain jo kaikkien saatavilla. Jos katsot YouTubea, tunnet todennäköisesti jo Kevin MacLeodin musiikin. Annetaan ladata hänen fantastinen kappaleensa nimeltään ”Yksisilmäinen Maestro”. Tämä, samoin kuin suuri osa hänen sivustollaan olevasta musiikista, on lisensoitu Creative Commonsilla, ja niitä on monia hyviä syitä Mikä on Creative Commons ja muu kuin kaupallinen käyttö?Mikä on Creative Commons? Mitä "ei-kaupallinen käyttö" tarkoittaa? Lisätietoja Creative Commons -lisensseistä ja niiden toiminnasta. Lue lisää käyttää sisältöä näiden lisenssien kanssa projektiisi.

wget

Takaisin koodiin, meidän on käynnistettävä Pygame-mikseri ja ladattava sävelmämme.

pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "yksisilmäinen Maestro.mp3" pygame.mixer.music.load (nimi) print ("Loadded track -" + str (nimi))

Tämän lohkon ensimmäinen rivi aloittaa pygame mikseri. Viimeinen suluissa oleva argumentti on puskuri, joka säätelee latenssia, jolla ääntä toistetaan. Jos koet toistoa myöhemmin, kun musiikkia toistetaan, kokeile lisätä tämä numero 4096: iin. Asetukset sellaisina kuin ne toimivat ilman Pi 3 -laitetta.

Jos latasit musiikkitiedostosi toiseen hakemistoon door.py Ohjelma, sinun on annettava täysi polku hakasulujen sisällä, kun määrität nimimuuttujan.

Nyt kaikki, mitä on jäljellä, on asetettava silmukka, joka odottaa meidän joko asettaa ohjelman aktiiviseksi tai poistua siitä.

samalla kun totta: jos (GPIO.input (13) == 1): tulosta ("Pysäytä-painiketta painettu: Poistuminen") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()

Tällä hetkellä silmukka odottaa tuloa kummastakin painikkeesta ja sulkee tai muuttaa tilan aktiiviseksi vastaavasti. Jos aktiivisen tilaksi tulee 1, niin watchDoor aikaisemmin määrittelemämme toiminto soitetaan ja seuraavan kerran oven avautuessa soittoääni soitetaan. Me myös soitamme GPIO.cleanup () nollata nastamme poistumisen yhteydessä, mikä on yleensä hyvä käytäntö kaikelle Raspberry Pi-ohjelmoinnille.

Se on kaikki mitä meidän on tehtävä tämän projektin käynnistämiseksi ja käynnistämiseksi, tässä on koodi kokonaan:

tuo RPi. GPIO GPIO: na. tuo pygame.sekoitin. Tuo aika def activeSetup (): globaali aktiivinen aktiivinen = 0 tulosta ("tällä hetkellä ei aktiivinen") def activeState (): globaali aktiivinen, jos aktiivinen == 1: aktiivinen = 0 GPIO.lähtö (7, GPIO.LOW) tulosta ("Tällä hetkellä Ei Aktiivinen ") elif aktiivinen == 0: tulosta (" aktivoituu 10 sekunnissa ") x: lle alueella (0,10): GPIO.ulostulo (7, GPIO.HIGH) aika.unen (0,5) GPIO.ulostulo (7, GPIO.LOW) aika.unen (0.5) aktiivinen = 1 GPIO.ulostulo (7, GPIO.HIGH) tulosta ("Nykyinen aktiivinen") muuten: palauta def watchDoor (): maailmanlaajuinen pelaaminen = väärä ja totta: jos aktiivinen == 1 ja GPIO.input (15) == 1 ja toisto == vääri: pelaa = totta pygame.mixer.music.play () jos GPIO.input (13) == 1: tulosta ("Stop-painiketta painettu: poistutaan") pygame.mixer.music.stop () tauko, jos GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, alkuperäinen = 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 = "yksisilmäinen Maestro.mp3" pygame.mixer.music.load (nimi) tulosta ("Ladattu kappale -" + str (nimi)) tosinaan: jos (GPIO.input (13) == 1): tulosta ("Stop-painiketta painetaan: poistutaan") pygame.mixer.music.stop () break jos (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()

Jos vierit täällä tarttuaksesi kokonaiseen koodiin heti, muista, että sinun täytyy silti ladata musiikki Pi-levylle, jotta se toimii!

Nyt sinulla pitäisi olla toimiva tervetuliaiskotiteeman viritys! Kiinnitä ruokokatkaisin oveesi ja kokeile sitä. Noloa tanssi on valinnainen, mutta suositeltavaa.

Tämä projekti kattoi monien kodinvalvonnan, turvallisuuden ja automaation muotojen perusteet, ja toivottavasti se oli myös hauskaa!

Nyt kun olet tullut näin pitkälle, miksi lopettaa siihen? Voit lisätä uusia kappaleita ja antaa ohjelman valita yhden satunnaisesti luettelosta. Sinä voisit lisää rele GPIO: n käytön aloittaminen vadelmapilallaJos sinäkin Arduino olit viileä, odota vain, kunnes saat kädet Raspberry Pi: lle - nämä asiat ovat uskomattomia. Sen lisäksi, että ne ovat täysin toimivia tietokoneita, heillä on myös ... Lue lisää ja onko muita objekteja laukaistu tullessa. Jos sinulla on kotimusiikkijärjestelmä, miksi ei olisi teemalla kaikkiin huoneisiin?

relevalot

Suunnitteletko oman henkilökohtaisen tervetuliaiskotiviestin? Oletko kekseliäs kotona olevien ruokovaihteiden kanssa muilla tavoilla? Jos näin on, jätä kommentti alla olevasta kommenttiosasta suunnittelemasi tai jo tekemäsi!

Ian Buckley on freelance-toimittaja, muusikko, esiintyjä ja videotuottaja, joka asuu Berliinissä, Saksassa. Kun hän ei kirjoita tai näyttämöllä, hän söpöi DIY-elektroniikkaa tai -koodia toivossa tullakseen hulluksi tiedemieheksi.