İçindekiler:

Balkabağı Pi Hile veya Şaka Takibi: 5 Adım
Balkabağı Pi Hile veya Şaka Takibi: 5 Adım

Video: Balkabağı Pi Hile veya Şaka Takibi: 5 Adım

Video: Balkabağı Pi Hile veya Şaka Takibi: 5 Adım
Video: TARIK'ın EVİNDE KÜÇÜLEREK 1 GÜN GEÇİRDİM - Minecraft 2024, Temmuz
Anonim
Balkabağı Pi Hile veya Şaka İzleyici
Balkabağı Pi Hile veya Şaka İzleyici

Elizabethna tarafındanYazarın daha fazlasını izleyin:

Ahududu Pi Sıcaklık Monitörü Nasıl Oluşturulur
Ahududu Pi Sıcaklık Monitörü Nasıl Oluşturulur
Ahududu Pi Sıcaklık Monitörü Nasıl Oluşturulur
Ahududu Pi Sıcaklık Monitörü Nasıl Oluşturulur
Google E-Tablolardan bir Gösterge Tablosuna Veri Akışı Yapın
Google E-Tablolardan bir Gösterge Tablosuna Veri Akışı Yapın
Google E-Tablolardan bir Gösterge Tablosuna Veri Akışı Yapın
Google E-Tablolardan bir Gösterge Tablosuna Veri Akışı Yapın
Sıcaklık Sensörleri Ağı
Sıcaklık Sensörleri Ağı
Sıcaklık Sensörleri Ağı
Sıcaklık Sensörleri Ağı

Birden fazla yönden faydalı olan hızlı bir Cadılar Bayramı projesi mi arıyorsunuz? Pi Zero WH'yi iyi bir şekilde kullanmak ister misiniz? Gelecek yıl için ne kadar şekere ihtiyacınız olacağını belirlemek için verileri kullanmak ister misiniz?

Pumpkin Pi Trick-or-Treat Tracker'ı oluşturmaya hazır olun! Dekorasyon ve insan izleyici olarak ikiye katlanan bu Kabak Pi, hareket algılandığında renk ve akış değiştirir. Mutlak sıfırdan başlayarak, bu proje sizi bir araya getirmek için bir öğleden fazla sürmemeli - Cadılar Bayramı için tam zamanında!

Gereçler

  • SD Kartlı Pi Zero WH
  • PIR Hareket Sensörü
  • RGB LED'i
  • 220 ohm Dirençler
  • (3)Bağ Hatları (F/F, M/F, M/M)
  • Taşınabilir Pil
  • sahte balkabağı

Adım 1: Donanım Montajı

Donanım Montajı
Donanım Montajı
Donanım Montajı
Donanım Montajı
Donanım Montajı
Donanım Montajı

Pi'nizi çalıştırıp çalıştırdıktan sonra, hareket sensörünü ve LED'leri bağlamamız gerekiyor. Pi'nizin bu noktada güce bağlı olmadığından emin olun.

Hareket sensörümüz, onu 3.3V güce, toprağa ve bir veri pinine bağlamamızı gerektirir. 3.3V sensör pimini Pi'nin 1. pimine, Toprak sensörü pimini Pi'nin 6. pimine ve Veri sensörü pimini Pi'nin 16 pimine bağladım. İlk resim Pi ve hareket sensörü için tam bağlantıyı gösterir.

LED'ler, hareket sensöründen biraz daha zor, çünkü onlara veya Pi'ye zarar vermeden doğru şekilde çalışabilmeleri için bir direnç gerektiriyorlar. Üç adet 220 ohm direnç kullandım ancak LED'lerde genellikle 220 ve 330 ohm dirençler kullanılıyor.

Her şeyi bağlamak için şunları yapabilirsiniz:

  • LED ayaklarını dirençlere lehimleyin ve ardından kabloları Pi'ye geçirin
  • Her şeyi bağlamak için bir devre tahtası kullanın ve çizgileri bağlayın
  • Her şeyi bağlamak için bağ ipleri ve elektrik bandı kullanın (benim yaptığım gibi).

LED'imizi 11, 13 ve 15 numaralı pinlere bağlayacağız. Ancak bu, hareket sensöründen biraz daha zor, çünkü LED'deki bacaklar belirli bir renge karşılık geliyor! Uzun bacak GND'dir; ve en azından benim LED'imde bacaklar Kırmızı, GND, Mavi, Yeşil oldu. Blue'yu Pi pin 11'e, Green'i Pi pin 13'e ve Red'i Pi pin 15'e bağladım. İkinci resim son devre bağlantılarını gösteriyor.

2. Adım: İlk Durum

Başlangıç hali
Başlangıç hali
Başlangıç hali
Başlangıç hali

LED ile hareket algılandığında elbette görebiliriz, ancak şekerimizi çalmak için kaç tane şeker mi şeker mi attığını nasıl takip edeceğiz?

Hareket her başladığında ve algılanması durduğunda bir gösterge panosuna akış yapacağız. Bu gösterge panosuna internet bağlantısı olan her yerden erişilebildiğinden, ön kapıya/şeker kasesine birinin yaklaşıp yaklaşmadığını uzaktan takip edebiliyoruz.

Adım 1: İlk Durum Hesabına Kaydolun https://iot.app.initialstate.com adresine gidin ve yeni bir hesap oluşturun.

2. Adım: ISStreamer'ı yükleyin

Raspberry Pi'nize Initial State Python modülünü kurun. Bir komut isteminde (önce Pi'nize SSH yazmayı unutmayın), aşağıdaki komutu çalıştırın:

$ cd /ev/pi/

$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

3. Adım: Biraz Automagic yapın

2. Adımdan sonra ekranda aşağıdaki çıktıya benzer bir şey göreceksiniz:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

Şifre: ISStreamer Python Kolay Kurulumuna Başlarken! Kurulumu birkaç dakika sürebilir, biraz kahve alın:) Ama tekrar gelmeyi unutmayın, daha sonra sorularım olacak! Bulunan easy_install: setuptools 1.1.6 Bulunan pip: /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg'den pip 1.5.6 (python 2.7) pip ana sürüm: 1 pip küçük sürüm: 5 ISStreamer bulundu, güncelleniyor… Gereksinim zaten güncel: /Library/Python/2.7/site-packages'de ISStreamer Temizleniyor… Otomatik olarak örnek bir komut dosyası almak ister misiniz? [y/N] Örneği nereye kaydetmek istiyorsunuz? [varsayılan:./is_example.py] Lütfen kullandığınız Başlangıç Durumu uygulamasını seçin: 1. app.initialstate.com 2. [YENİ!] iot.app.initialstate.com 1. veya 2. seçeneği girin: iot.app girin.initialstate.com kullanıcı adı: iot.app.initialstate.com parolasını girin:

Otomatik olarak bir örnek komut dosyası almanız istendiğinde, y yazın. Bu, verileri İlk Duruma aktarabileceğimizden emin olmak için çalıştırabileceğimiz bir test komut dosyası oluşturacaktır. Sonraki istem, örnek dosyayı nereye kaydetmek istediğinizi soracaktır. Varsayılan konumu kabul etmek için özel bir yerel yol yazabilir veya enter tuşuna basabilirsiniz. Son olarak, hangi Initial State uygulamasını kullandığınız sorulacak. Yakın zamanda bir hesap oluşturduysanız, 2. seçeneği seçin, kullanıcı adınızı ve şifrenizi girin. Bundan sonra kurulum tamamlanmış olacaktır.

4. Adım: Anahtarlara Erişim

Oluşturulan örnek scripte bir göz atalım. $ nano is_example.py 15. satırda, streamer = Streamer(bucket_ … ile başlayan bir satır göreceksiniz. Bu satırlar, “Python Stream Example” adında yeni bir veri grubu oluşturur ve hesabınızla ilişkilendirilir. Bu ilişkilendirme, access_key=”…” parametresi aynı satırda. Bu uzun harf ve rakamlar dizisi, Initial State hesap erişim anahtarınızdır. Web tarayıcınızda Initial State hesabınıza giderseniz, sağ üstteki kullanıcı adınıza tıklayın, ardından gidin. "ayarlarım" bölümüne, aynı erişim anahtarını sayfanın alt kısmındaki "Akış Erişim Anahtarları" altında bulacaksınız.

Her veri akışı oluşturduğunuzda, bu erişim anahtarı bu veri akışını hesabınıza yönlendirecektir (bu nedenle anahtarınızı kimseyle paylaşmayın).

Adım 5: Örneği Çalıştırın

İlk Durum hesabınıza bir veri akışı oluşturabileceğimizden emin olmak için test komut dosyasını çalıştırın. Aşağıdakileri çalıştırın:

$ python is_example.py

6. Adım: Kar

Web tarayıcınızda İlk Durum hesabınıza geri dönün. Günlük rafınızın solunda “Python Akış Örneği” adlı yeni bir veri paketi görünmelidir (sayfayı yenilemeniz gerekebilir). Bu kovaya tıklayın ve ardından test verilerini görüntülemek için Dalgalar simgesine tıklayın.

3. Adım: Python Komut Dosyası

Bir komut dosyası oluşturun ve aşağıdaki komutla metin düzenleyiciyi açın:

nano visors.py

Kodu buradan kopyalayıp metin düzenleyicinize yapıştırın.

Herhangi bir şeyi çalıştırmayı denemeden önce, birkaç düzenleme yapmamız ve komut dosyamızda neler olduğunu gözden geçirmemiz gerekiyor.

RPi. GPIO'yu GPIO olarak içe aktar

zamandan itibaren uykuyu ISStreamer. Streamer'dan içe aktar Streamer'ı içe aktar # Pi'ye numaralandırma sistemini kullanacağımızı söyle GPIO.setmode(GPIO. BCM) # D1 ve LED'in PIN'e bağlı olduğu pinler = 23 MAVİ = 17 YEŞİL = 27 KIRMIZI = 22 # Hareket sensörü pinimizi giriş olarak belirtin GPIO.setup(PIN, GPIO. IN) # LED pinlerimizi çıkış olarak belirtin GPIO.setup(RED, GPIO. OUT) GPIO.output(RED, 0) GPIO.setup(YEŞİL), GPIO. OUT) GPIO.output(YEŞİL, 0) GPIO.setup(MAVİ, GPIO. OUT) GPIO.output(MAVİ, 0)

1-21 satırları başlatma içindir. İlk önce Pi'nin GPIO arayüzünü ve betiğimizi uyumanın bir yolunu içe aktarıyoruz. Ardından bir önceki sayfada kurduğumuz Initial State streamer'ı import ediyoruz.

GPIO.setmode, pinler için hangi numaralandırma sistemini kullandığımızı belirtir. Fiziksel konum yerine Pi'nin numaralandırma sistemini kullanıyoruz. Daha önceki diyagramımızda olduğu gibi seçtiğimiz pinler 23, 17, 27 ve 22 idi. Daha sonra hareket pinini giriş, LED pinlerini çıkış olarak ayarlıyoruz.

# İlk Durum paketi adı (görüntülenir)

BUCKET_NAME = ":jack_o_lantern: Trick or Treat Tracker" # İlk Durum paket anahtarı (gizli) BUCKET_KEY = "trickortreat" # İlk Durum erişim anahtarı ACCESS_KEY = "Your_Access_Key" # Var olan veya olmayan akışları yayınlamamamızı sağlayan değişkenler hareket art arda iki kez # Bu, gönderilen olaylardan ve işlem gücünden zaten tasarruf sağlar. ZatenRecordedMotion = False zatenRecordedNoMotion = False counter = 0 # İlk Durumu Başlat Streamer streamer = Streamer(bucket_name=BUCKET_NAME, kova_key=BUCKET_KEY, access_key=ACCESS_KEY) # Aç ve ayarla LED sarı GPIO.output(KIRMIZI, 1) GPIO.output(YEŞİL, 1)

23-41 arasındaki satırlar önemlidir çünkü İlk Durum aktarıcısını başlatıyoruz ve LED'i sarıya ayarlıyoruz. Başlangıç Durumu erişim anahtarınızı 28. satıra koyun.

# Süresiz döngü

while True: # Hareket sensörü yüksek çekiyorsa (hareket algılarsa): if GPIO.input(PIN) == 1: "Hareket algılandı" yazdır LED'i kırmızıya ayarlayın GPIO.output(RED, 1) GPIO.output(YEŞİL, 0) # İlk Duruma Akış streamer.log(":hayalet: veya:chocolate_bar:?", ":chocolate_bar: İkram Zamanı!") streamer.log(":candy: Hungry Humans?:candy:", counter) streamer.flush() zatenRecordedMotion = True zatenRecordedNoMotion = False else: # Komut dosyasını 1 saniye uyku için duraklat(1) yoksa: "Hareket algılanmadı" yazdır # Henüz akış yapmadıysak: zatenRecordedNoMotion: # LED'i sarı GPIO.output(RED, 1) GPIO.output(YEŞİL, 1) olarak ayarlayın # Akışın İlk Duruma Akışı streamer.log(":ghost: veya:chocolate_bar:?", ":no_pedestrians: Etrafta Kimse Yok") streamer.flush() zatenRecordedNoMotion = True zatenRecordedMotion = False else: # Komut dosyasını 1 saniye uyku için duraklat(1)

43-77 arasındaki satırlar kodun özüdür. Hareket algılanırsa, komut dosyası "Tedavi Zamanı!" olup olmadığını kontrol eder. zaten yayınlanmıştır. Değilse, İlk Duruma gönderilir ve LED kırmızıya ayarlanır; varsa, komut dosyası 1 saniye bekler ve ardından hareket sensöründen tekrar okur. Aynı şey hareket algılanmazsa da geçerlidir.

Kodu test etme zamanı! Düzenlenmiş dosyanızı 28. satıra eklenen erişim anahtarınızla kaydettiğinizden emin olun ve ardından terminale girin:

piton ziyaretçi.py

LED'in yandığını görmeli ve "Hareket algılanmadı" komut satırına yazdırmaya başlamalısınız. Elinizi hareket sensörünün üzerinde sallamayı deneyin - şimdi kırmızı bir ışık görmelisiniz ve "Hareket algılandı" yazdırmaya başlayın!

Şimdi okumalarımızın İlk Duruma aktarıldığını doğrulamak için.

4. Adım: Şaka Yap veya Şaka Panosu

Şeker mi Şaka mı Panosu
Şeker mi Şaka mı Panosu

İlk Durum'a gidin ve gösterge tablonuzu kontrol edin! "?Trick or Treat Tracker" adlı bir kova görmelisiniz. Elinizi hareket sensörünün yanında sallayın ve güncellenmesini izleyin!

Kontrol panelim, Son değeri gösteren 2 Özet Kutucuğundan ve sensörün hangi zamanlarda tetiklendiğini görebilmem için bir olay sayımı Histogramından oluşuyor.

Düşünülmesi gereken şeyler var:

  • Aynı kişinin kapınıza giderken ve dönerken hareket sensörünün önünden iki kez geçeceği gerçeğini hesaba katmak için muhtemelen "Aç İnsanlar" sayısını 2'ye bölmek istersiniz. Bunu, "=math.round(([Hungry Humans?]/2), 0)" denklemini kullanarak Gerçek Zamanlı İfadelerle yapabilirsiniz.
  • Hareket sensörünüzün ne kadar hassas göründüğünü test edebilir ve buna göre kaldırımınıza yerleştirebilirsiniz. Kapıda biri durduğunda tetiklenmemesi için kapıdan yeterince uzakta tutmanızı öneririm.
  • Ayrıca birinin yaklaştığını size bildirmek için metin uyarıları da ayarlayabilirsiniz.
  • Gösterge tablonuza biraz ürkütücü bir kişilik kazandırmak için bir arka plan resmi seçin!

Adım 5: Kabak Pi

Önerilen: