İlan
Hiç kişisel bir karşılama için eve gelmek istediniz mi? Bir Raspberry Pi ve birkaç basit bileşen ile yapabilirsiniz! Bu basit projede, bir kapı açıldığında bir tema melodisini tetiklemek için bir kamış anahtarı kullanacağız. Buradaki kontrolör olarak bir Raspberry Pi kullanacağız, ancak neredeyse her türlü diğer mikrodenetleyici 5 $ Mikrodenetleyiciler: Arduino, Raspberry Pi Zero veya NodeMCU?Bir bilgisayar almak istersen, evini ödemek için evini yeniden ödemek zorunda kalacaktın. Şimdi, Abraham Lincoln için bir tane alabilirsin. Daha fazla oku aynı devre kullanarak bu proje için. İşte bir demo.
İhtiyacın olacak
2–3 $ civarında olan reed anahtarı dışında bunu yapmanız gereken tüm parçalara zaten sahip olacaksınız veya 8 doların biraz üzerinde 5 paket alabilirsiniz. buraya.
- Bir Raspberry Pi (bunun için herhangi bir model çalışacaktır).
- 1 x 220 Ohm direnç.
- 1 x 1K Ohm direnç.
- 3 x 10K Ohm direnç.
- 1 x Manyetik reed anahtarı.
- 1 x LED.
- 2 x Basmalı düğme anahtarı.
- Breadboard.
- Bağlantı kabloları.
- Bilgisayar hoparlörü veya benzeri.
Odaya girildiğinde bir şarkı çalmak için Raspberry Pi'yi kullanacağız ve gecikmeli olarak etkinleştirmek için breadboard'umuzdaki düğmelerle bir devre tasarlayacağız ve programı durduracağız.
Bu proje, çoğunlukla eğlence için yapılmış olsa da, birçok uygulama için temelleri kapsar. DIY ev otomasyonu Raspberry Pi ve Arduino ile Ev Otomasyon RehberiEv otomasyonu pazarı, birbiriyle uyumlu olmayan ve kurulumu pahalı olan pahalı tüketici sistemleriyle doludur. Bir Raspberry Pi ve bir Arduino'nuz varsa, aynı şeyi ... Daha fazla oku ve ayrıca DIY ev güvenliği DIY Ev Güvenlik Sistemi Çözümü mü Arıyorsunuz? Bunlardan Birini DeneyinDijital teknoloji ve her zaman bağlı donanım çağında, bir ev güvenlik sistemi kurmak, duvara alarm şeklinde bir kutu koyma sanatını aşmalıdır. Daha fazla oku
Başlangıç
Devremizi yaparak başlayalım. Pi'nizin güçsüz olduğundan emin olun ve devrenizi şu şekilde ayarlayın:
LED, pi üzerindeki pin 7'ye bağlıdır. İki basmalı düğme anahtarı, pim 11 ve 13'e bağlanır ve manyetik anahtar pim 15'e bağlanır. Gücümüz pim 1 (3v3) ve pim 6'ya (Gnd) gider.
Her şeyin tam olarak doğru yerde olduğunu kontrol ettiğinizden emin olun.
Bu projeyi test ederken, saz anahtarınızı önünüzde tutmanıza yardımcı olabilir, böylece kolayca açıp kapatabilirsiniz. Bu durumda kamış anahtarı zaten kapının üzerine monte edilmiştir. Projeniz çalışmaya başladıktan sonra düğmeyi geçici olarak kapınıza takabilirsiniz. bant veya daha emin hissediyorsanız gelecekte kullanmak için daha kalıcı olarak takabilirsiniz projeler!
Pi'nizin 3,5 mm jak çıkışını hoparlör sisteminize bağlayın. Her şey bir araya getirildikten sonra şöyle görünmelidir:
Burada kullanılan breadboard'un yukarıdaki Fritzing diyagramına göre güç raylarına sahip olduğunu unutmayın.
Şimdi Pi'nizi çalıştırın ve terminale erişebilmemiz için SSH kullanarak erişin. Bunu nasıl yapacağınızdan emin değilseniz, bu rehber Raspberry Pi'nizi SSH ile Başsız Kullanım İçin AyarlamaRaspberry Pi, yerel bir ağa (Ethernet veya Wi-Fi ile) bağlandığında SSH komutlarını kabul ederek kolayca ayarlamanıza olanak tanır. SSH'nin faydaları günlük taramanın üzücü olmasının ötesine geçiyor ... Daha fazla oku size yardımcı olabilir. Raspberry Pi'nizi bir monitör, fare ve klavye ile kullanıyorsanız, bu adımı atlayın ve terminali açın.
Başlamadan önce, güncel olup olmadığınızı kontrol etmeye değer. tip sudo uygun-güncelleme
terminalin içine.
Şimdi Pi'mizi pistimize konuşturmaya devam edebiliriz.
Kurulumumuzu Test Etme
Başlamak için basit bir program kullanarak devremizi kontrol edelim. Şimdiye kadar her şeyi kabloladığınızdan eminseniz, bu adımı atlayabilirsiniz, ancak daha sonra baş ağrılarını kurtarabileceği için tavsiye ederim.
Daha önce hiç Python'da programlamamışsanız ve biraz korkmuş hissediyorsanız, harika web siteleri Python Programlamayı Öğrenmek İçin En İyi 5 Web SitesiPython programlamasını öğrenmek ister misiniz? İşte Python'u çevrimiçi öğrenmenin en iyi yolları, birçoğu tamamen ücretsiz. Daha fazla oku başlamanıza yardımcı olabilir.
Terminalde yeni bir komut dosyası oluşturun:
nano test.py
Açıldıktan sonra bu kodu dosyaya ekleyin ve kaydet iletişim kutusunu izleyerek çıkmak için Ctrl-C tuşlarına basın:
# Bu kod, www. Ian Buckley tarafından MakeUseOf.com. ithalat RPi. GPIO olarak GPIO. ithalat zamanı. GPIO.setwarnings (Yanlış) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) True iken: GPIO.output (7, GPIO.HIGH) eğer (GPIO.input (11) == 1): yazdır ("GPIO 11 üzerindeki düğme") time.sleep (1 ) Eğer (GPIO.input (13) == 1): yazdır ("GPIO 13 üzerindeki düğme") time.sleep (1) ise (GPIO.input (15) == 1): yazdır ("GPIO 15 üzerindeki düğme") zaman uyku (1) GPIO.cleanup ()
Bu kod, düğmelerin değerini okur ve değiştiklerinde ekrana yazdırır. İki basma düğmesi aşağı çekme dirençlerine sahiptir, bu nedenle basıldığında YÜKSEK rapor ederler. Kamış mıknatıs anahtarı, beraberindeki mıknatıs yakın olduğunda YÜKSEK rapor verir.
Programı çalıştır:
python test.py
İki düğmenize basıp mıknatısı manyetik anahtarınızdan çektiğinizde LED'in yandığını ve ekranda bir rapor görmeniz gerekir. Düğmelere bastığınızda geri bildirim almıyorsanız, devrenizi tekrar kontrol edin ve her şeyin olması gerektiği gibi bağlandığından emin olun. Testi bitirdiğinizde, CTRL-C programı durdurmak için.
Şimdi kapı sensörünüzü ayarlamak, tetiklemek ve sıfırlamak için basit bir program oluşturabiliriz. Kodun parçalarını ele alacağız ve kısaca her parçanın ne yaptığını açıklayacağız, ancak tam kodu görmek istiyorsanız tam olarak görmek için aşağı kaydırın.
Bazı modülleri içe aktararak başlamalıyız:
ithalat Rpi. GPIO olarak GPIO. ithalat pygame.mixer. ithalat zamanı.
Kullanacağız pygame müzik çalmak için modül. Raspbian Jessie ile standart olarak geliyor ve Python oyunları ve daha birçok şey yapmak için ihtiyacınız olan her şey için harika bir kütüphane. harika projeler Raspberry Pi Twitter Bot Nasıl YapılırTwitter, söyleyecek bir şeyi olmayan insanlardan gelen kısa mesajların dünyanın en büyük deposu - ve şimdi sizler tarafından desteklenen otomatik bir Twitter bot ile bu destansı projeye katkıda bulunabilirsiniz. Ahududu... Daha fazla oku .
Adlı bir değişken kullanacağız aktif sistemimizin aktif olup olmadığına karar vermek. Bunu bizim için yapacak birkaç işlevi tanımlayalım:
def activeSetup (): genel etkin etkin = 0 print ("Şu Anda Etkin Değil") def activeState (): etkinse genel etkin == 1: etkin = 0 GPIO.output (7, GPIO.LOW) print ("Şu Anda Aktif Değil") elif active == 0: (0,10) aralığında x için print ("10 saniye içinde etkinleştirme"): GPIO.output (7, GPIO.HIGH) time.sleep (0,5) GPIO.output (7, GPIO.LOW) time.sleep (0,5) etkin = 1 GPIO.output (7, GPIO.HIGH) yazdır ("Şu anda Etkin ") else: return.
Buradaki ilk işlev adlı bir değişken oluşturur aktifve 0 olarak ayarlar. Etkin duruma sayısal bir değer vermek, programınızı daha sonra farklı etkin durumlara sahip olacak şekilde ölçeklendirmeyi planlıyorsanız, bunları buna göre numaralandırabileceğiniz anlamına gelir. Dünyanın en iyi Python programlaması olmasa da, bu proje için fazlasıyla yeterli olacaktır.
İkinci fonksiyon çağrıldığında sistemin aktif (veya Aktif == 1). Öyleyse, sistemi etkin değil olarak ayarlar (Aktif == 0), LED'i kapatır ve konsola yazdırır. Değilse, sistemin aktif olduğunu göstermek için açık kalmadan önce LED'in yanıp söndüğü odadan ayrılmak için 10 saniyelik bir geri sayım sağlar.
Şimdi kamış mıknatıs anahtarımızı izleyecek bir fonksiyon tanımlayabiliriz:
def watchDoor (): global oynamaya oynama = False True: aktif ise == 1 ve GPIO.input (15) == 1 ve oynamaya == False: oynama = True GPIO.input (13) == 1 ise pygame.mixer.music.play () = print ("Durdur düğmesine basıldığında: Çıkış") pygame.mixer.music.stop () GPIO.input (11) == 1 ise kırılır: activeState () time.sleep (0,5)
Burada başka bir değişken yaratıyoruz oyun - bu, anahtar tetiklendiğinde tekrar tekrar çalmaya başlamaya çalışan programı durdurmak içindir.
While döngüsünün içinde, ilk if ifadesi müziği başlatır (ki henüz bir şeyimiz yok, ancak endişelenmiyoruz, geliyor). Yalnızca sistem etkinse, manyetik anahtar açıksa ve zaten çalmıyorsa müziğin başlamasına izin verir.
İkinci if ifadesi çıkış düğmemiz içindir. Bu düğmeye basıldığında müzik durur ve programdan çıkar.
Üçüncü if ifadesi sistemin aktif olup olmadığını değiştirmek içindir. Uyku zamanı Buradaki işlev, basıldığında birden fazla düğmenin okunmasını önlemektir.
Şimdi Pi’nin pinlerini ayarlama zamanı.
GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, başlangıç = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)
Pi ile daha önce herhangi bir deneme yaptıysanız, bu size tanıdık gelmelidir. Başlangıç = GPIO.LOW pim 7'nin kurulumundaki argüman, başlatıldığı anda bunu düşük seviyeye getirir.
Şimdi, program başladığında sistemi aktif olmayacak şekilde ayarlayacak fonksiyonumuzu çağırabiliriz.
ActiveSetup ()
Müzik Maestro!
Bu noktada çalacak müziği düşünmeye başlamalıyız. İstediğiniz herhangi bir müzik dosyasını seçebilirsiniz, ancak şimdilik herkesin kullanabileceği bir şey seçeceğiz. YouTube'u izliyorsanız muhtemelen Kevin MacLeod’un müziğini biliyorsunuzdur. Onun tarafından harika bir melodi indirelim “Tek Gözlü Maestro”. Bu, sitesindeki müziğin çoğuyla birlikte Creative Commons altında lisanslanmıştır ve birçok iyi neden Creative Commons ve Ticari Olmayan Kullanım Nedir?Creative Commons nedir? "Ticari olmayan kullanım" ne anlama geliyor? Creative Commons lisansları ve bunların nasıl çalıştığı hakkında bilgi edinin. Daha fazla oku projelerinizde bu lisanslarla içerik kullanmak için.
Kodumuza geri dönersek, Pygame mikserini başlatmamız ve ezgimizi yüklememiz gerekiyor.
pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Tek gözlü Maestro.mp3" pygame.mixer.music.load (ad) print ("Yüklenen parça -" + str (ad))
Bu bloğun ilk satırı, pygame karıştırıcı. Parantez içindeki son argüman, sesin çalındığı gecikmeyi kontrol eden arabellektir. Müziğiniz çalınırken daha sonra dalgalı çalma ile karşılaşırsanız, bu sayıyı 4096'ya çıkarmayı deneyin. Ayarlar, Pi 3'te sorunsuz çalışıyor.
Müzik dosyanızı farklı bir dizine indirdiyseniz door.py ad değişkenini tanımlarken parantez içindeki tam yolu belirtmeniz gerekir.
Şimdi tek yapmanız gereken, programı aktif hale getirmemizi veya programdan çıkmamızı bekleyen bir döngü kurmak.
while True: if (GPIO.input (13) == 1): yazdır ("Durdur düğmesine basıldı: Çıkış") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) eğer (active == 1): watchDoor () sonu GPIO.cleanup ()
Bu while döngüsü her iki düğmeden de bir girdi bekler ve durumdan uygun şekilde etkin durumdan çıkar veya durumu değiştirir. Aktif durumu 1 olursa, watchDoor Daha önce tanımladığımız fonksiyon çağrılır ve bir sonraki kapı açıldığında melodimiz çalınır. Biz de ararız GPIO.cleanup () çıkıştaki pinlerimizi sıfırlamak için, bu genellikle Raspberry Pi'deki tüm programlama için iyi bir uygulamadır.
Bu projeyi çalıştırmak ve çalıştırmak için yapmamız gereken her şey bu, işte kodun tamamı:
ithalat RPi. GPIO olarak GPIO. ithalat pygame.mixer. içe aktarma zamanı def activeSetup (): genel etkin etkin = 0 yazdırma ("Şu Anda Etkin Değil") def activeState (): etkinse genel etkin == 1: etkin = 0 GPIO.output (7, GPIO.LOW) yazdır ("Şu anda Değil Aktif ") elif aktif == 0: (0,10) aralığında x için baskı (" 10 saniye içinde etkinleştirme "): GPIO.output (7, GPIO.HIGH) time.sleep (0,5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) etkin = 1 GPIO.output (7, GPIO.HIGH) baskı ("Şu Anda Aktif") başka: return def watchDoor (): global oynamaya oynama = Yanlış iken Doğru: aktif ise == 1 ve GPIO.input (15) == 1 ve oynamaya == Yanlış: oynama = Doğru GPIO.input (13) == 1 ise pygame.mixer.music.play (): print ("Durdur düğmesine basıldığında: Çıkış") pygame.mixer.music.stop () GPIO.input (11) == 1 ise kırılır: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, başlangıç = 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 = "Tek gözlü Maestro.mp3" pygame.mixer.music.load (ad) print ("Yüklenen parça -" + str (ad)) True iken: (GPIO.input (13) == 1): yazdır ("Durdur düğmesi basılı: Çıkış") pygame.mixer.music.stop () sonu (GPIO.input (11) == 1): activeState () time.sleep (0,5) ise (active == 1): watchDoor () sonu GPIO.cleanup ()
Kodu tam olarak almak için buraya kaydırırsanız, çalışabilmesi için müziği Pi'nize indirmeniz gerekeceğini unutmayın!
Şimdi işleyen bir hoş geldiniz ev tema melodisi olmalı! Reed anahtarını kapınıza takın ve deneyin. Utanç verici dans isteğe bağlıdır ancak önerilir.
Bu proje, ev izleme, güvenlik ve otomasyonun birçok formunun temellerini ele aldı ve umarım da eğlenceliydi!
Şimdi buraya kadar geldin, neden orada dursun? Daha fazla parça ekleyebilir ve programın listeden rastgele birini seçmesini sağlayabilirsiniz. Yapabilirdin röle ekle Raspberry Pi'de GPIO'ya BaşlarkenArduino serin olsa da, ellerinizi bir Raspberry Pi'ye getirene kadar bekleyin - bu şeyler şaşırtıcı. Tamamen işlevsel bir bilgisayar olmasının yanı sıra, aynı zamanda bir ... Daha fazla oku ve girişte başka nesnelerin tetiklenmesini sağlayın. Ev müzik sisteminiz varsa, neden her oda için bir tema şarkısı olmasın?
Kendi kişisel karşılama ev mesajınızı tasarlayacak mısınız? Evinizdeki kamış anahtarlarıyla başka şekillerde yaratıcı mıydınız? Öyleyse, aşağıdaki yorumlar bölümünde planladığınız veya daha önce neler yaptığınız hakkında bir yorum bırakın!
Ian Buckley, Berlin, Almanya'da yaşayan serbest bir gazeteci, müzisyen, sanatçı ve video yapımcısıdır. Yazmadığı veya sahnede olmadığı zaman, çılgın bir bilim adamı olma umuduyla DIY elektronik veya koduyla uğraşıyor.