İçindekiler:

Dondurucu Alarm Rölesi: 5 Adım
Dondurucu Alarm Rölesi: 5 Adım

Video: Dondurucu Alarm Rölesi: 5 Adım

Video: Dondurucu Alarm Rölesi: 5 Adım
Video: Derin Dondurucu / Buzdolabı Alarm Işığı Neden Yanar - Arıza - ÇOK Dolu ?- Sesli Bilgiler TR - Teknik 2024, Temmuz
Anonim
Dondurucu Alarm Rölesi
Dondurucu Alarm Rölesi

Dondurucumuz, yaşam alanımızdan izole edilmiş bir hizmet odasındadır. Bazen dondurucu kapısı düzgün kapanmaz ve alarm çalar. Sorun şu ki, yaşam alanımızdaysak onu duyamayız. Dondurucu kapısının açık olduğu mesajını nasıl alırız? Bu yaygın bir sorun, evlerimizde bizimle konuşan cihazlarımız var ama herhangi bir nedenle onları duyamazsak ne olur? Ben buna biraz eğlence olsun diye başladım ama daha ciddi bir uygulamada işine yarayabilir.

Bu sorunun 2 kısmı var, alarmın çaldığını tespit etmek için bir metoda ve bu gerçeği yaşam alanımıza iletmek için bir metoda ihtiyacımız var. Yerleştiğim tasarım, dondurucu alarmının çaldığını dinlemek için bir Raspberry Pi kullanmak ve ardından uPNP'nin etkin olduğu yerel radyoma sesli bir alarm mesajı göndermekti. Evrensel Tak ve Çalıştır (UpnP), medya sunucuları ve oynatıcılar dahil olmak üzere bir ağdaki çeşitli cihazlar tarafından sunulan hizmetleri keşfetmek ve bunlarla etkileşim kurmak için bir standarttır, ancak standart geliştirildiğinde dondurucuların öngörüldüğünü düşünmüyorum. Uyarı mesajı yüksek sesle ve rahatsız ediciydi ve telsiz kapatılana kadar durmadan tekrarlanıyor.

Alarmı bir Raspberry Pi Zero W ve Seeed ReSpeaker 2-Mics Pi HAT ile algılamayı seçtim Raspberry PI Zero, Raspberry Pi'nin düşük maliyetli bir sürümüdür ve W seçeneğinde yerleşik WiFi bulunurken Seeed Pi HAT, 10 $, yerleşik LED'lere ve bir Kullanıcı Düğmesine sahiptir. Pi HAT, doğrudan Raspberry Pi'ye takılan ve çok basit bir montaj prosedürü gerçekleştiren uzatma kartlarıdır. Herhangi bir Pi sürümü, iş için fazlasıyla yetenekli olurdu ve bu yapıda yerleşik LED'leri kullanmama rağmen, seçilen mikrofon değiştirilebilir.

Bir radyo veya TV'nin işinize yarayıp yaramadığını kontrol etmek kolaydır. Büyük olasılıkla "DLNA etkin" veya benzeri olarak tanımlanacaktır. Bu, iletişim kurmak için uPNP'yi kullanır. Windows PC'de bir mp3 dosyası seçin ve "Cihaza Yayınla"yı seçin. Cihazınız görünürse ve dosyayı oynatabiliyorsanız, o zaman hazırsınız.

Yazılımı 2 python betiğine böldüm, bir dondurucu uyarısının tetiklenip tetiklenmediğini kontrol etmek için checkFreezer.py ve alarmı yükseltmek için upgradeAlarm.py. Bu komut dosyaları ayrı ayrı geliştirilebilir ve test edilebilir ve kolayca uyarlanabilir veya farklı mikrofon alarm yükseltme yöntemleri için ikame edilebilir.

Gereçler

  • Yazılım -https://github.com/wapringle/freezer-alarm
  • Ahududu PI Sıfır W
  • Seeed ReSpeaker 2-Mics Pi HAT
  • uPNP özellikli radyo

Adım 1: Dedektörü Tasarlama

Dondurucu kapısı açık bırakıldığında ve sıcaklık yükseldiğinde, dondurucu sesli bir "bip bip bip" alarmı verir. Çoğu elektronik bip sesiyle ortak olarak, bu tek bir frekanstır. Buradaki fikir, ses girişini örneklemek, zamana dayalı bir sinyali frekansa dayalı bir sinyale dönüştüren bir Hızlı Fourier Dönüşümü (FFT) gerçekleştirmek, başka bir deyişle, sinyaldeki farklı frekansları görüntülemek için bir sinyali parçalamaktır. RGB LED Şeritli Eğitilebilir Raspberry Pi Spektrum Analizörüne Bakın Buzzer frekansında bir tepe noktası arayabilir ve sesli uyarı bir süredir aktif olduğunda alarmı tetikleyebiliriz.

Bu dedektörün 2 gereksinimi vardır

  • Ortam gürültüsü varlığında bile sesli uyarıyı algılamalıdır (yanlış negatifi ortadan kaldırır)
  • Ortam gürültüsü tarafından tetiklenmemelidir (yanlış pozitifliği ortadan kaldırın)

Hizmet odasında bir Hoover çalıştırmanın iyi bir test olacağına karar verdim. Alarmı tetiklememeli ve alarm, dondurucu buzzer çaldığında ve Hoover çalışırken tetiklenmelidir.

Adım 2: Dedektörü Yapılandırma

Dedektörü Yapılandırma
Dedektörü Yapılandırma
Dedektörü Yapılandırma
Dedektörü Yapılandırma
Dedektörü Yapılandırma
Dedektörü Yapılandırma

Telefonumla, gürültülü bir arka planla ve Hoover çalışırken, yalnızca dondurucu zilinin WAV dosyaları olarak ses örnekleri aldım. Kodu, FFT için Ses Akışını Okuma (Şüpheye düştüğünüzde, intihal) yazısından FFT'yi gerçekleştirecek şekilde uyarladım ve sesli uyarının ham ve Fourier Dönüşümlü örneklerini sessiz, gürültülü ve çok gürültülü arka planlarda çizmek için fourierTest.py komut dosyasını kullandım. 645 frekansındaki seviyedeki artış, ilk çizimde belirgindir ve çok gürültülü bir arka planla hala anlamlıdır.

Adım 3: Dedektörün Oluşturulması

Dedektörün montajı

Çok basit. Pi W, yerleşik Wifi ile birlikte gelir ve HAT doğrudan Pi üzerindeki GPIO pinlerine takılır. Yazılımın yapılandırılması aşağıdaki adımları gerektirir

  • Raspberry Pi'ye raspbian dağıtımını kurun. Bu konuda yapabileceğimden çok daha iyi açıklayabilecek bir sürü rehber var.
  • Wifi'yi kurun (yukarıdaki gibi)
  • Alsa paketinin kurulu olması gerekiyor

$ sudo apt-get install libasound-dev

$ pip kurulum pyalsaudio

  • HAT'ı ahududu PI'ye bağlayın
  • HAT sürücülerini yüklemek için ilgili web sitesindeki Talimatları izleyin.
  • HAT'ın çalışıp çalışmadığını ve düzgün yapılandırıldığını kontrol etmek için çekirdek tanılamayı çalıştırın.

Dedektör programı, mikrofondan bir örnek olarak bir veri bloğunu okur, FFT'yi yapar ve örnekte sesli uyarıyı algılayıp algılamadığına karar verir. Ses örnekleme hızını 16kHz'e düşürerek ve okuyucunun kabul edebileceği en büyük tamponu kullanarak bloğu mümkün olduğunca uzun tutmaya çalıştım. FFT hesaplamasının çerçevelerin düşmesine neden olabileceğinden endişelendim, ancak bu olmadı.

Telefonumda önceden kaydedilmiş örneklere sahip olmak, dedektörün kurulumunu çok daha kolay hale getirdi, çünkü tüm kurulumu dondurucuda yerinde test etmeden önce tezgahta yapabildim.

Dedektörü eğitmek

Dedektör, sesli uyarının WAV kaydı dedektöre çalındığında her numuneyi tarayarak eğitilmiştir. Program, o tepe frekansının seviyesi ile birlikte en yüksek güç seviyesi (tepe frekansı) ile FFT spektrumundaki konumu çıkarır. Zil frekansını ve yaydığı güç seviyesini bulmak basit bir meseleydi.

Bir bip sesinin oluşup oluşmadığını algılamanın 2 yolu vardır: -

  1. Zil frekansı örnekteki tepe frekansı mıydı?
  2. veya sesli uyarı frekansındaki güç seviyesi bir eşiğin üzerinde miydi?

Her iki yöntem de sessiz bir örnekte işe yaradı, ancak ikincisi gürültülü bir örnekle daha iyiydi, bu yüzden onu kullandım.

Bazen bir örnek bir bip sesini kapsıyordu, bazen bipler arasındaydı ve her 3 bip sesinden sonra bir sonraki bip sesinden önce uzun bir duraklama vardı. Bir dizi bip sesinin oluştuğunu güvenilir bir şekilde saptamak için, her numunenin bir bip sesi algılandığında bir olumlu, yoksa bir olumsuz oyu vardı. Bu oylar, bir bip sesi örneğiyle çarpacak ve aralarda yavaş yavaş azalacak bir sayım belirlemek için ağırlıklıydı. Sayım bir eşiğe ulaştığında alarm tetiklenebilir. Bir bip sesi örneği olarak rastgele gürültü algılanırsa, sayım sıfıra geri döner.

Daha sonra, eşik ile birlikte olumlu oy ve aşağı oy için ağırlıklara ihtiyacımız var. Bunu birkaç örnek üzerinde deneme yanılma yoluyla yaptım. Gerçek zil frekansını belirlememe gerek yoktu, sadece fft spektrumunda göze çarpan frekansı aradım.

Adım 4: Radyoya Mesaj Gönderme

Alarmı yükseltmek ayrı bir komut dosyasıyla yapıldı. Görevi gerekirse radyoyu açmak, radyonun çaldığı her şeye girmek ve radyo tekrar kapanana kadar alarm mesajını tekrarlamaktır. Güvenilir bilgi veya örnekler elde etmede büyük sorun yaşadığım için kullanılan uPnP protokolünü tersine çevirmek zorunda kaldım. Yararlı bulduğum birkaç referans

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Bu, hepsinin nasıl bir araya geldiğine dair güzel bir genel bakış sunuyor
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Telsizimde bilgisayarımdan bir örnek dosya çalarken mesaj dizisini kaldırmak için bir Windows PC'de çalışan Wireshark'ı kullandım ve biraz uğraştıktan sonra işe yarayan bir komut dizisi aldım. Bu

  • Telsiz istediğinde uyarı mesajını sunmak için bir açılır web sunucusu başlatın
  • Ses seviyesini YÜKSEK olarak ayarlayın (Uyarı mesajı herkesin dikkatini çekmelidir)
  • Uyarı mesajının uri'sini radyoya iletin
  • Mevcut durum "DURDURULDU" olana kadar telsizi yokla
  • uri'yi "OYNATMAK" için radyoyu alın
  • Geçerli durum "MEDYA MEVCUT YOK" olana kadar son 2 adımı tekrarlayın; bu, radyo kapatılarak alarmın onaylandığı anlamına gelir.
  • Son olarak web sunucusunu kapatın ve çıkın.

Bu, RaiseAlarm.py betiğidir

Adım 5: Kendiniz Yapmak

kendin yapmak
kendin yapmak

"Dedektör" ve "alarm yükseltme" modeli yalnızca dondurucular için değildir, otomatik bir alarmın başka bir ortam aracılığıyla iletilmesi gereken her yerde yararlı olabilir. Bu ilginizi çekecekse, gitmekten çekinmeyin.

Mikrofon dahil PI Zero W kurulumu

  • Donanımı 3. adımdaki gibi birleştirin
  • Dondurucu alarm komut dosyalarını bu Eğitilebilir Dosyadan veya birkaç bonus parça içeren git deposundan indirin

$ git klonu

Yerleşik APA102 LED'lerini kullanmak için yazılımı da yüklemeniz gerekir. apa102.py'nin bir kopyasını git çalışma dizinine ekledim

Dedektörünüzü eğitmek

checkFreezer.py betiğine bir eğitim seçeneği ekledim. Bu, onu bağımsız olarak çalıştırır ve komut satırına bir tanılama yazdırır, ancak önce alarmın bazı örneklerini sessiz bir ortamda WAV dosyaları olarak kaydetmeniz ve aynısını gürültülü bir ortamda yapmanız gerekir. Eğitimi tamamlamak için önce en yüksek seviyeli FFT frekansını ("en yüksek frekans") bulmanız ve ardından bu frekans için bir tetikleyici ayarlamak için bir eşik seviyesi bulmanız gerekir. Bunu yapmak için, checkFreezer komut dosyasını '-t' seçeneği ile eğitim modunda çalıştırın ve alarm kaydını oynatın.

$ python checkFreezer.py -t

Bu, komut dosyasını eğitim modunda çalıştırır. Tohum HAT başlatıldığında ve LED yeşile döndüğünde "hazır" olarak yazdırır, ardından duyduğu her önemsiz gürültü için bir satır, örn.

$ python checkFreezer.py -t

Hazır tepe frekansı 55 tetikleme seviyesi 1 tetiklendi mi? Yanlış tepe frekansı 645 tetikleme seviyesi 484 tetiklendi mi? Yanlış tepe frekansı 645 tetikleme seviyesi 380 tetiklendi mi? YANLIŞ

Pik frekansı, bu durumda 645'tir ve bu, tetikleme frekansı olur. Şimdi tetik seviyesini elde etmek için, tetikleyiciyi ayarlayarak checkFreezer'ı yeniden çalıştırın

$ python checkFreezer.py -t --trigger=645

Hazır tepe frekansı 645 tetikleme seviyesi 1273 tetiklendi mi? Yanlış tepe frekansı 645 tetikleme seviyesi 653 tetiklendi mi? Yanlış tepe frekansı 645 tetikleme seviyesi 641 tetiklendi mi? Yanlış tepe frekansı 645 tetikleme seviyesi 616 tetiklendi mi? YANLIŞ

Son olarak, bir bip algılandığında tetiklenen ancak gürültüyü yok sayan bir tetikleyici eşiğine ihtiyacımız var, örn.

$ python checkFreezer.py -t --trigger=645 --threshold=500

Hazır tepe frekansı 645 tetikleme seviyesi 581 tetiklendi mi? Gerçek tepe frekansı 645 tetikleme seviyesi 798 tetiklendi mi? Gerçek tepe frekansı 645 tetikleme seviyesi 521 tetiklendi mi? NS

Bunu birkaç gürültülü örneğe karşı test edin ve bip sesi ile ortam gürültüsü arasında ayrım yapan bir eşik değeri oluşturabilmelisiniz. Bip yeniden sıralama birkaç saniye boyunca çalındığında LED'in kırmızıya döndüğünü de görmelisiniz. Hızlı/yavaş geliyorsa, komut dosyasındaki ayarları düzenleyin

Radyoya bağlanma

Komut dosyalarını kendi kurulumunuz için yapılandırmak için cihazınızın UPnP hizmetleri için kullandığı IP adresini ve bağlantı noktası numarasını bulmanız gerekir. Radyo kurulumu bunları sağlamalıdır. Varsayılan port numarası 8080'dir ve farklı olması sürpriz olur.

Varsayılan bir alarm mesajı sağladım, dondurucu.mp3. Kendi mesajınızla değiştirmekten çekinmeyin.

Komut dosyasını uygun IP adresleriyle düzenleyin ve komut dosyasını çalıştırın.

$ piton yükseltmeAlarm.py

Her şey yolunda giderse, telsiz kapatılana kadar yüksek sesli ve rahatsız edici alarm mesajı patlayacak ve alarm iptal edilecektir.

Komut dosyası çalışırken radyoya alarm mp3'ünü sunmak için bir mini web sunucusu çalıştırır, bu muhtemelen bir güvenlik sorunudur, ancak yalnızca alarm mesajı çalarken etkindir.

Canlı Yayın

'-t' eğitim bayrağını kaldırın ve checkFreezer'ı kendi değerlerinizle çalıştırın, örn.

$ python checkFreezer.py --trigger=645 --threshold=200

Yeniden başlatmayı başlatmak için /etc/rc.local dosyasına ekleyin, cd /home/pi/dondurucu alarmı

(python checkFreezer.py --trigger=645 --threshold=200 > /tmp/freezer 2> /tmp/freezererror &) & çıkış 0

Yeşil LED yanacak ve harekete geçmeye hazırsınız. Alarm bipinizin kaydını çalın ve birkaç saniye sonra LED kırmızıya dönecek ve alarm mesajı radyonuzda çalacaktır.

Nihayet

PI'yi dondurucuya yakın, yolun dışında ve bir güç kaynağı ile konumlandırın. Gücü açın ve yeşil LED yanmalıdır. Kapıyı açık bırakarak alarmı tetiklemeyi test edin. Işık kırmızıya dönmeli ve radyoda alarm mesajı çalmalıdır.

Başarı !! Sen yaptın. Dondurucudan buzla uzun bir içecekle kendinizi şımartın, ancak dondurucu kapısını kapatmayı unutmayın!

Önerilen: