İçindekiler:
- Gereçler
- Adım 1: Raspberry Pi Kurulumu
- Adım 2: Bağlantı Kurma ve Rpi Wireless'ı Yerel Ağınıza Bağlama
- Adım 3: Sensör DS18B20 (sıcaklık) -- 1 kablolu
- Adım 4: MCP3008 - Analog Algılama
- Adım 5: Donanım
- Adım 6: Mariadb Veri Tabanı Oluşturma
- 7. Adım: Github Kodu ve Test Etme
- Adım 8: Önyüklemede Kodu Çalıştırın
- 9. Adım: Web Sitesi Kurulumu
- Adım 10: İsteğe Bağlı - Minyatür Prototip
Video: TheAir - Gaz Sensörü Projesi: 10 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
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
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
Rpi'yi başlatacağız -> ethernet kablosunu bilgisayar ile Rpi arasında bağlayacağız.
-
Putty'yi başlatın ve şunu doldurun:
- Ana Bilgisayar Adı (veya IP adresi): 169.254.10.1
- Liman: 22
-
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.
- Ekstra: "sudo raspi-config" yazın
- Burada pi kullanıcısı için şifreyi değiştirmeniz gerekecek (güvenlik nedenleriyle)
- Ardından Yerelleştirme Seçenekleri -> Saati Değiştir (doğru olanı seçin) -> Ardından Wifi Ülkesine gidin -> ülke seçin.
- Raspi-config'i kapatın ve yeniden başlatın.
- Giriş yaptığınızda, geçici olarak kendinizi root kullanıcısı yapın -> sudo -i
-
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
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.
- Arayüz seçeneklerine gidin
- 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
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
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
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
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
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:
Gimbal Stabilizer Projesi: 9 Adım (Resimlerle)
Gimbal Sabitleyici Projesi: Gimbal Nasıl YapılırAksiyon kameranız için 2 eksenli bir gimbal yapmayı öğreninGünümüzün kültüründe hepimiz video kaydetmeyi ve anları yakalamayı seviyoruz, özellikle benim gibi bir içerik oluşturucuysanız, kesinlikle şu sorunla karşılaşmışsınızdır: öyle sallantılı bir video ki
Otomatik ECG- BME 305 Final Projesi Ekstra Kredi: 7 Adım
Otomatik EKG- BME 305 Bitirme Projesi Ekstra Kredisi: Bir elektrokardiyogram (EKG veya EKG) atan bir kalp tarafından üretilen elektrik sinyallerini ölçmek için kullanılır ve kardiyovasküler hastalıkların tanı ve prognozunda büyük rol oynar. Bir EKG'den elde edilen bilgilerin bazıları ritmi içerir
GY-30 BH1750 Işık Sensörü (GY30 / GY302) Nasıl Kablolanır ve Kullanılır - Kolay - Arduino Projesi!: 7 Adım
Nasıl Kablolanır ve Kullanılır GY-30 BH1750 Işık Sensörü (GY30 / GY302) - Kolay - Arduino Projesi!: Bu eğitimde GY-30 BH1750 ışık yoğunluğu sensörünün Arduino ile nasıl hızlı ve kolay bir şekilde kullanılacağını öğreneceğiz. Bir tanıtım videosunu izleyin
RFID + Renk Sensörü IoT Projesi: 7 Adım
RFID + Renk Sensörü IoT Projesi: Bu projenin amacı kahve fincanından içenleri ödüllendirmek ve uygun şekilde imha etmektir. Örneğin Tim Hortons gibi bir şirketi ele alalım; 2014 yılında yılda 2 milyar fincan kahve servis ettiklerini kaydettiler. Bardakları geri dönüştürülebilse de
Kapımda Kim Var? PIR Hareket Sensörü/Mesafe Sensörü Projesi: 5 Adım
Kapımda Kim Var? PIR Hareket Sensörü/Mesafe Sensörü Projesi: Projemiz, PIR ve mesafe sensörleri ile hareketi algılamayı amaçlamaktadır. Arduino kodu, kullanıcıya birinin yakınında olduğunu söylemek için görsel ve sesli bir sinyal verecektir. MATLAB kodu, kullanıcıyı birinin yakınında olduğu konusunda uyarmak için bir e-posta sinyali gönderir. Bu cihaz