İçindekiler:

TheAir - Gaz Sensörü Projesi: 10 Adım
TheAir - Gaz Sensörü Projesi: 10 Adım

Video: TheAir - Gaz Sensörü Projesi: 10 Adım

Video: TheAir - Gaz Sensörü Projesi: 10 Adım
Video: Arduino Dersleri #30 MQ9 Gaz Sensörü Kullanımı (Tüm Gaz Sensörleri) 2024, Temmuz
Anonim
TheAir - Gaz Sensörü Projesi
TheAir - Gaz Sensörü Projesi

CO ve CO2 olarak da bilinen karbon monoksit ve karbondioksit. Kapalı bir odada yüksek konsantrasyonlarda renksiz, kokusuz, tatsız ve açıkçası tehlikeli olan gazlar. Örneğin, kötü bir şekilde izole edilmiş, iyi hava akışı olmayan ve herhangi bir nedenle, ekmek kızartma makinesi tost yaparken garip bir ses çıkaran bir öğrenci odasında yaşıyorsanız. O zaman bu gazlarla temasa geçebilirsiniz ve bu olduğunda, sadece küçük bir baş ağrısıyla bitmesini umalım, yüksek konsantrasyonda sizi etkisiz hale getirebilir veya hatta öldürebilir (çok nadiren de olsa).

Bu yüzden bu projeyi yapmaya karar verdim. Benim fikrim basit, hava akışı sağlamak için fanları kullanın. Deyim yerindeyse iyi hava içeri ve kötü hava dışarı. Ekstra fayda için, ekstra bir sıcaklık sensörü, manuel aktivasyon fanları için düğme ve ayrıca istatistikleri görmek ve/veya fanları bilgisayarlarından etkinleştirmek isteyenler için bir web sitesi ekledim.

Öğrenci, veli, bekar veya canlı olarak. Bu, kendi evinizin rahatlığında yaşarken normalde kaçınmak isteyeceğiniz bir şeydir. Bu, hayatlarını biraz daha kolaylaştırmak isteyenlere yardımcı olur.

Gereçler

  • Ahududu Pi 3+
  • Mini-usb şarj cihazı 5V/2.5A
  • Mikro SD kart
  • Sensörler

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (sıcaklık)
  • 2 x 12V DC fan
  • 2 x 2n2222 transistör
  • LCD 16*2 ekran
  • Butona basınız
  • MCP3008
  • Logi seviye dönüştürücü
  • Ethernet kablosu (kurulum nedenleriyle)

Adım 1: Raspberry Pi Kurulumu

Raspberry Pi Kurulumu
Raspberry Pi Kurulumu
Raspberry Pi Kurulumu
Raspberry Pi Kurulumu

Rpi ile çalışmadan önce bazı yazılımlara ihtiyacımız olacak.

  • WinSCP veya FilleZilla (bilgisayarınızdan Rpi'ye dosya aktarmak istiyorsanız isteğe bağlı)
  • Win32 diski veya Etcher (ki daha çok tercih edersiniz)
  • Putty veya MobaXterm (ki daha çok tercih edersiniz)
  • Masaüstü ile Raspbian görüntüsü

Başlamadan önce şunu belirtmek isterim ki, bu öğreticiyi hazırlarken, bir programı diğerine tercih ettiğimde, onu tavsiye ettiğim anlamına DEĞİLDİR. Örneğin etcher kullanmayı seviyorum çünkü daha kullanıcı dostu ama Win32'de yedekleme yapma seçeneği var. Şimdi bu benim sistemimin dışında, başlayalım.

Zaten wifi ağınıza bağlı bir Rpi'niz varsa 3. adıma geçin.

İlk önce Raspbian görüntüsünü sd kartınıza koymak için Etcher'ı kullanacağız. Şimdi sd kartını çıkarmadan önce cmdline.txt dosyasında resimde bulunan bazı "şeyleri" değiştireceğiz..txt dosyasını açın -> Bu satırı "ip=169.254.10.1" (tırnak işareti olmadan) ekleyin (tümü 1 satırda) -> Dosyayı kaydet

İkinci olarak, önyükleme bölümünde (tırnak işaretleri olmadan) "ssh" adlı boş bir klasör oluşturun.

Bundan sonra Microsd'yi güvenle çıkarabilir ve Rpi'ye koyabilirsiniz.

Sabit kodlanmış statik IP'nin nedeni, Rpi'ye bağlanmayı kolaylaştırmaktır. Herhangi bir nedenle Rpi'nin DHCP ile bir ipi yoksa, statik ipi kolayca kullanırsınız.

Adım 2: Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama

Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama
Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama
Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama
Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama
Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama
Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama
Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama
Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama

Rpi'yi başlatacağız -> ethernet kablosunu bilgisayar ile Rpi arasında bağlayacağız.

  1. Putty'yi başlatın ve şunu doldurun:

    • Ana Bilgisayar Adı (veya IP adresi): 169.254.10.1
    • Liman: 22
  2. Bir terminal açılır ve varsayılan kullanıcı adını ve şifreyi yazarsınız:

    • Kullanıcı adı: pi
    • Şifre: ahududu

Artık yerel olarak rpi'ye bağlı olduğumuza göre, Rpi'nin wifi'nize bir bağlantısı olmasını istiyoruz.

  1. Ekstra: "sudo raspi-config" yazın
  2. Burada pi kullanıcısı için şifreyi değiştirmeniz gerekecek (güvenlik nedenleriyle)
  3. Ardından Yerelleştirme Seçenekleri -> Saati Değiştir (doğru olanı seçin) -> Ardından Wifi Ülkesine gidin -> ülke seçin.
  4. Raspi-config'i kapatın ve yeniden başlatın.
  5. Giriş yaptığınızda, geçici olarak kendinizi root kullanıcısı yapın -> sudo -i
  6. Ağınızı Rpi'ye eklemek için bu komutu yazın (listenin altındaki kod)

    • şifre = "şifre" (tırnak işaretleri ile)
    • Ağ adı = "SSID"
    • Çift >> kullanmayı unutmayın !Önemli!

yankı "şifre" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Şimdi tekrar yeniden başlatın

Yeniden bağlanırken, şunu yazarak ipinizi kontrol edin:

ifconfig

ve inet'in yanındaki wlan0'ı kontrol edin.

Artık internet bağlantımız olduğuna göre "hızlı" bir güncelleme yapalım.

sudo uygun güncelleme

sudo apt dağıtım yükseltme -y

Bu biraz zaman alabilir.

Adım 3: Sensör DS18B20 (sıcaklık) -- 1 kablolu

Sensör DS18B20 (sıcaklık) -- 1 telli
Sensör DS18B20 (sıcaklık) -- 1 telli
Sensör DS18B20 (sıcaklık) -- 1 telli
Sensör DS18B20 (sıcaklık) -- 1 telli

Her projede, her zaman yapılması gereken özel bir şey olacak, yoksa çalışmaz.

Bu sefer 1 kablo gerektiren DS18B20 sıcaklık sensörü ile karşınızdayız, bunun nedenini açıklamayacağım ama en azından nasıl çalıştığını anlatacağım.

Bunun için güzel mavi ekran olan Rpi'deki raspi-config'e geri dönmeliyiz.

  1. Arayüz seçeneklerine gidin
  2. 1-Wire'ı seçin ve etkinleştir'i seçin.

Tamamlandı…

Şaka yapıyorum.

Şimdi /boot/config.txt dosyasını ayarlamamız gerekecek

sudo nano /boot/config.txt

Bu satırı en alta ekleyin.

# Tek kabloyu etkinleştir

dtoverlay=w1-gpio

Şimdi sudo o şeyi yeniden başlatın ve şimdi işimiz bitti.

Çalışıp çalışmadığını kontrol etmek için sensörü Rpi'ye bağlayın, ardından terminale geri dönün ve bu kodu yazın (Sıcaklık sensörünün nasıl bağlanacağı ile ilgili sonraki adım Donanıma bakın).

cd /sys/bus/w1/devices/w1_bus_master1

ls

Sol üstte koyu mavi sayılar ve harflerden oluşan bir şey görmelisiniz, bu bilgiyi daha sonra github'dan gelen kodla çalışırken kullanmak için yazdığınızdan emin olun.

Herhangi bir nedenle işe yaramazsa, daha derine inen bu bağlantıyı kontrol edin.

Adım 4: MCP3008 - Analog Algılama

MCP3008 - Analog Algılama
MCP3008 - Analog Algılama
MCP3008 - Analog Algılama
MCP3008 - Analog Algılama

Sıcaklık sensöründe değişiklik yaptığımız gibi diğer sensörlerde de analog data okumamız gerektiği için bazı değişiklikler yapmamız gerekiyor. MCP3008'in kullanışlı olduğu yer burasıdır, ayrıca SPI arayüzünü de değiştirmemiz gerekir.

sudo raspi yapılandırması

Arayüz Seçenekleri -> SPI Seç -> etkinleştir'e gidin.

Sonra Bitir.

Adım 5: Donanım

Rpi ile tamamen işimiz bitmedi, ancak donanımı oluşturmaya ve bir araya getirmeye başlayabilmemiz için yeterli.

Bazı tavsiyeler, inşa ederken Rpi'yi havaya uçurmadığınızdan emin olmak için bağlantılarınızı iyice kontrol etmektir.

Ayrıca, aynı bileşenden 1'den fazla ile çalışıyor olmamıza rağmen, Şematik'te bazı bileşenlerin üzerinde yalnızca bir kez olduğunu fark edeceksiniz. Bu sadece, o 1 bileşeni oluşturmak için aynı işlemi tekrarlamanız gerektiği anlamına gelir. 1 küçük istisna vardır, mq-x sensörlerinin fazladan bir seviye dönüştürücüye veya MCP3008'e ihtiyacı yoktur. Seviye dönüştürücüye ve MCP3008'e fazladan bir yeşil kablo (pdf olarak) ekleyin.

Ekstra düzenleme: Fanların anahtar olarak bir transistör kullanması gerekir. 1 fan için 2n2222A transistör kullanıyorum, çünkü 2 fan çok ağır olabilir.

Daha büyük bir akımı idare edebilen bir transistörünüz varsa, bu adımın son bölümünü atlayın.

Eğer benim gibi bir tane yoksa, bunu şöyle yapmanız gerekecek, 1 fan = 1 transistör, 2 fan = 2 transistör vb. (pdf'deki gibi her fan kendi transistör + diyotudur).

Ayrıca daha sonra 7. Adım: Git kodunda backend_project içindeki app.py dosyasına bazı kodlar eklemeniz gerekecektir.

Adım 6: Mariadb Veri Tabanı Oluşturma

Mariadb Veri Tabanı Oluşturma
Mariadb Veri Tabanı Oluşturma

Başlıktan da anlaşılacağı gibi, sensör verilerimizi depolamak için bir yerimiz olması için bir veritabanı oluşturacağız.

Her şeyden önce, Mariadb'ı Rpi'den indirin.

sudo apt-get install mariadb-server

Kurulumdan sonra kullanalım.

mysql -u kökü

Şifre boş, yani yazılacak bir şey yok. Enter tuşuna basın.

Şimdi bir kullanıcı oluşturalım.

'userdb' TARAFINDAN TANIMLANAN 'user'@'%' KULLANICI OLUŞTURUN;

*.* ÜZERİNDEKİ TÜM AYRICALIKLARI GRANT SEÇENEĞİ İLE 'user'@'%' İÇİN VERİN;

FLUSH AYRICALIKLARI;

Çıkmak ve hizmeti hızlı bir şekilde yeniden başlatmak için Ctrl + C tuşlarına basın:

sudo hizmeti mysql yeniden başlatma

Kullanıcı adı ile giriş yapın: kullanıcı ve şifre: userdb:

mysql -u kullanıcısı -p

Şimdi veritabanını oluşturma zamanı.

CREATE DATABASE project_db VARSAYILAN KARAKTER SETİ utf8;

proje_db'sini KULLAN

Bir "historiek" tablosu oluşturun (tarih anlamına gelir).

MEVCUT DEĞİLSE TABLO OLUŞTURUN 'historiek' ('id' INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR(5) NULL DEĞİL, `veri' DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT(4) NULL DEFAULT 0, BİRİNCİL ANAHTAR (`id`)) MOTOR = InnoDB;

Ve işte, veritabanı yapılır.

7. Adım: Github Kodu ve Test Etme

Github Kodu ve Testi
Github Kodu ve Testi

Projemizin sonuna yaklaşıyoruz.

Kodu almadan önce, bazı modülleri Rpi'ye aktarmamız gerekecek:

pip3 Flask_MySQL'i kurun

pip3 yükleme şişesi-socketio

pip3 kurulumu -U şişesi-korları

pip3 spidev'i kurun

Şimdi çalışması için koda ihtiyacımız var, terminali yazın:

git klon

Klasörün orada olup olmadığını kontrol edin:

ls

Şimdi 2 terminale ihtiyacınız olacak, bu nedenle terminale sağ tıklayıp Oturumları Çoğalt'a tıklamak kullanışlıdır:

cd komutunu kullanarak backend_project ve sıcaklığa gidin.

Şimdi programları test amaçlı çalıştırmadan önce. Bazı sayıları yazmanız gereken 1 telli sensörlü Adım 3'ü hala hatırlıyor musunuz? Eğer varsa endişelenmeyin, sadece 3. adıma tekrar hızlı bir göz atın.

Bu sayıları koda ekleyeceğiz çünkü onu kullanırken doğru sensörü bilmesi gerekecek.

Sıcaklık klasörünün bulunduğu terminal, app.py'yi bulacaksınız. Onu açacağız.

sudo nano uygulaması.py

"def temperatuur():" adlı işlevi arayın, orada "**" yerine yazdığınız sayılarla değiştirmelisiniz. Benim durumumda bu kod satırını alırdım (her sayı benzersizdir).

sensor_file_name = '/sys/devices/w1_bus_master1/28-0316a4be59ff/w1_slave

Test zamanı. Hem backend_project hem de sıcaklık klasöründeki her iki terminal de şunu yazın:

python3 uygulaması.py

Şimdi 5. adımı hatırlayın: birden fazla fan ve transistör kullanıyorsanız kod eklemeniz gereken donanım?

İyi, eğer 5. adıma geri dönmezsen.

Şimdi backend_project içinde app.py'ye bahsettiğim gibi kod eklememiz gerekiyor. Bunu kolaylaştırmak için kodda bunun bir örneğini yaptım. İçinde "fan1" olan her yorum kodu satırı, bu satırları ve voila'yı kaldırın, şimdi 2 hayran kullanabilirsiniz.

2 fandan daha fazlasını kullanmak istiyorsanız, aynı kodu kopyalayıp altına yapıştırın, ancak farklı bir numara ile. Bunun dezavantajı, sizin için daha fazla kişisel çalışma ve daha az gpio.pins kullanılabilir olmasıdır. Bunun benim bildiğim hiçbir avantajı yok.

Adım 8: Önyüklemede Kodu Çalıştırın

Önyüklemede Kodu Çalıştır
Önyüklemede Kodu Çalıştır

Bu 2 python betiğinin Rpi'miz başlatıldığı anda çalışmasını istiyoruz ve bir betiğin çökmesi durumunda kendi kendine yeniden başlamalıdır. Bunun için 2 servis yapacağız.

Bunu yapmak için şunu yazın:

sudo nano /etc/systemd/system/temperature.service

Bunu bir sıcaklık.servis için kopyalayıp yapıştırın:

[Unit]Description=Sıcaklık Hizmeti Sonrası=çok kullanıcılı.hedef

Çatış[email protected]

[Servis] Tip=basit

ExecStart=/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py

StandardInput=tty-kuvvet

Yeniden başlat=başarısızlık durumunda

Yeniden BaşlatSn=60sn

[Düzenlemek]

WantedBy=çok kullanıcılı.hedef

Kapatın ve tekrar yapın, ancak daha sonra bir backend_project.service için:

İlk açık metin:

sudo nano /etc/systemd/system/backend_project.service

Sonra tekrar kopyalayıp yapıştırın:

[Birim]Açıklama=backend_project Hizmeti

Sonra=çok kullanıcılı.hedef

[Hizmet]

Tip=basit

ExecStart=/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py

StandardInput=tty-kuvvet

Yeniden başlat=başarısızlık durumunda

Yeniden BaşlatSec=60sn

[Düzenlemek]

WantedBy=çok kullanıcılı.hedef

Kaydet ve kapat.

Son kısım şunu yazıyor:

sudo systemctl arka plan programı yeniden yükleme

sudo systemctl sıcaklığı etkinleştir. hizmeti sudo yeniden başlatma

Şimdi 2 python betiğimiz açılışta otomatik olarak çalışmalıdır.

9. Adım: Web Sitesi Kurulumu

Depoyu indirdiğinizde, ön adlı bir klasör de almış olmalısınız. Bu, web sitesinin içeriğinin bulunduğu yerdir.

Klasörü kullanabilmemiz için öncelikle apache'ye ihtiyacımız var. Apache için bu bağlantıdaki kılavuzu izleyin.

Hazır olduğunuzda. Ön klasörün bulunduğu yere gidin:

cd /Belgeler/nmct-s2-project-1-TheryBrian

Sonra şunu yazın:

sudo mv ön /var/www/html

Bu yapıldığında, html klasörüne gidin, sıkıcı bir iş için hazırlanın (benim hatam).

cd /var/www/html/

sonra ön klasöre gidin ve her şeyi html klasörüne taşımaya başlayın.

örnek:

sudo mv css /var/www/html

Ardından ön klasörü silin.

Ve her şeyi bitirdik.

İyi şanlar:).

Adım 10: İsteğe Bağlı - Minyatür Prototip

Opsiyonel - Minyatür Prototip
Opsiyonel - Minyatür Prototip
Opsiyonel - Minyatür Prototip
Opsiyonel - Minyatür Prototip

Test nedenleriyle, her şeyin siparişe göre çalışıp çalışmadığını görebilmek için içindeki tüm donanıma sahip bir kutunun prototipini yaptım.

Normalde bu proje daha büyük ölçekte yapılacaktı. Örneğin: bir oda, bir ev, bir fabrika, bir mağaza vb.

Ama belli ki duvarlarda delikler açmaya başlamadan önce (güzel kafiye). Önce işe yarayıp yaramadığını görmek istiyoruz. Aslında test için bir kutu yapmanıza gerek yok, ancak biraz zanaat yapmak her zaman eğlencelidir.

İşte benim örneğim.

Önerilen: