Mündəricat:

TheAir - Qaz Sensor Layihəsi: 10 addım
TheAir - Qaz Sensor Layihəsi: 10 addım

Video: TheAir - Qaz Sensor Layihəsi: 10 addım

Video: TheAir - Qaz Sensor Layihəsi: 10 addım
Video: Zigbee датчик газа с измерением уровня концентрации для Tuya Smart, интеграция в Home Assistant 2024, Iyul
Anonim
TheAir - Qaz Sensoru Layihəsi
TheAir - Qaz Sensoru Layihəsi

Karbonmonoksit və karbon qazı, CO və CO2 olaraq da bilinir. Qapalı bir otaqda yüksək konsentrasiyalarda olduqda rəngsiz, qoxusuz, dadsız və açıqca təhlükəli olan qazlar. Məsələn, pis təcrid olunmuş, yaxşı hava axını olmayan və hansısa səbəbdən bir tost tələbəsi tost edərkən qəribə bir səs çıxarır. Sonra bu qazlarla təmasda ola bilərsiniz və bu baş verdikdə ümid edirik ki, yalnız kiçik bir baş ağrısı ilə bitər, çünki yüksək konsentrasiyada sizi zəiflədə bilər və ya hətta öldürə bilər (çox nadir hallarda olsa da).

Buna görə də bu layihə ilə çıxış etməyə qərar verdim. Fikrim sadədir, hava axını etmək üçün fanatlardan istifadə edin. İçəridə yaxşı hava, pis havada belə demək mümkünsə. Əlavə fayda üçün əlavə bir temperatur sensoru, əllə aktivləşdirmə fanatları üçün düymə və kompüterdən statistikanı görmək və/və ya fanatları aktivləşdirmək istəyənlər üçün bir veb sayt əlavə etdim.

Tələbə, valideyn, tək insan və ya canlı varlıq olaraq. Bu, öz evinizin rahatlığında yaşayarkən ümumiyyətlə qarşısını almaq istədiyiniz bir şeydir. Bu, həyatını bir az asanlaşdırmaq istəyənlərə kömək edir.

Təchizat

  • Raspberry Pi 3+
  • Mini USB şarj cihazı 5V/2.5A
  • Micro-sd kartı
  • Sensorlar

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatur)
  • 2 x 12V DC fan
  • 2 x 2n2222 tranzistorlar
  • LCD 16*2 ekran
  • Düymə
  • MCP3008
  • Logi səviyyəsi çeviricisi
  • Ethernet kabeli (quraşdırma səbəbləri üçün)

Addım 1: Raspberry Pi Quraşdırması

Raspberry Pi Quraşdırma
Raspberry Pi Quraşdırma
Raspberry Pi Quraşdırma
Raspberry Pi Quraşdırma

Rpi ilə işləmədən əvvəl bəzi proqramlara ehtiyacımız olacaq.

  • WinSCP və ya FilleZilla (faylları kompüterinizdən Rpi -yə köçürmək istəyirsinizsə isteğe bağlı)
  • Win32 disk və ya Etcher (daha çox istədiyiniz)
  • Putty və ya MobaXterm (daha çox istədiyiniz)
  • Masa üstü ilə raspbian şəkil

Başlamazdan əvvəl qeyd etmək istərdim ki, bu dərsliyi hazırlayarkən, digərindən üstün bir proqram seçdiyim zaman bunu tövsiyə etdiyimi ifadə etmir. Məsələn, etcher istifadə etməyi sevirəm, çünki daha çox istifadəçi dostu, lakin Win32 -də ehtiyat nüsxələrini çıxarmaq imkanı var. İndi sistemimdən çıxdı, başlayaq.

Wi -Fi şəbəkənizə bağlı bir Rpi varsa, 3 -cü addıma keçin.

Əvvəlcə Raspbian görüntüsünü sd kartınıza qoymaq üçün Etcher -dən istifadə edəcəyik. İndi sd kartı çıxarmazdan əvvəl, cmdline.txt sənədindəki şəkildəki bəzi "əşyaları" dəyişdirəcəyik.. Txt faylını açın -> Bu sətri "ip = 169.254.10.1" əlavə edin (tirnoq işarəsi yoxdur) sətrin sonuna (hamısı 1 sətirdə) -> Faylı saxla

İkincisi, açılış hissəsində "ssh" adlı boş bir qovluq yaradın (tırnak işarəsi olmadan).

Bundan sonra, Microsd -ı etibarlı şəkildə çıxara və Rpi -yə qoya bilərsiniz.

Sərt kodlu statik IP -nin səbəbi Rpi -yə qoşulmağı asanlaşdırmaqdır. Nədənsə Rpi -nin DHCP ilə bir ipi yoxdursa, statik ipdən asanlıqla istifadə edirsiniz.

Addım 2: Bağlantı qurmaq və Yerli Şəbəkənizə Rpi Simsiz Bağlamaq

Bağlantı qurmaq və Yerli Şəbəkənizə Rpi Simsiz Bağlamaq
Bağlantı qurmaq və Yerli Şəbəkənizə Rpi Simsiz Bağlamaq
Bağlantı qurmaq və Yerli Şəbəkənizə Rpi Simsiz Bağlamaq
Bağlantı qurmaq və Yerli Şəbəkənizə Rpi Simsiz Bağlamaq
Bağlantı qurmaq və Yerli Şəbəkənizə Rpi Simsiz Bağlamaq
Bağlantı qurmaq və Yerli Şəbəkənizə Rpi Simsiz Bağlamaq
Bağlantı qurmaq və Yerli Şəbəkənizə Rpi Simsiz Bağlamaq
Bağlantı qurmaq və Yerli Şəbəkənizə Rpi Simsiz Bağlamaq

Rpi'yi açacağıq -> Ethernet kabelini kompüterlə Rpi arasında bağlayın.

  1. Putty -ə başlayın və bunu doldurun:

    • Host Adı (və ya IP ünvanı): 169.254.10.1
    • Liman: 22
  2. Bir terminal açılır və standart istifadəçi adı və şifrəni yazırsınız:

    • İstifadəçi adı: pi
    • Şifrə: moruq

İndi yerli olaraq rpi -yə qoşulduğumuz üçün Rpi -nin Wi -Fi ilə əlaqəsi olmasını istəyirik.

  1. Əlavə: "sudo raspi-config" yazın
  2. Burada pi istifadəçisi üçün parol dəyişdirməlisiniz (təhlükəsizlik səbəbləri)
  3. Daha sonra Yerləşdirmə Seçimləri -> Vaxtı dəyişdir (doğru olanı seçin) -> Sonra Wifi Ölkəsinə gedin -> ölkəni seçin.
  4. Raspi-config-i bağlayın və yenidən başladın.
  5. Daxil olanda müvəqqəti olaraq özünü kök istifadəçi et -> sudo -i
  6. Şəbəkənizi Rpi -yə əlavə etmək üçün bu əmri yazın (siyahının altındakı kod)

    • parol = "parol" (tırnak işarələri ilə)
    • Ad şəbəkəsi = "SSID"
    • Double istifadə etməyi unutmayın >>! Vacibdir!

echo "parol" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

İndi yenidən başladın

Yenidən qoşulduqda yazaraq ipinizi yoxlayın:

ifconfig

və inetin yanında wlan0 yoxlayın.

İndi İnternet bağlantımız olduğu üçün "sürətli" bir yeniləmə edək.

sudo apt yeniləmə

sudo apt dist -upgrade -y

Bu bir az vaxt ala bilər.

Addım 3: Sensor DS18B20 (temperatur)-1 telli

Sensor DS18B20 (temperatur)-1 telli
Sensor DS18B20 (temperatur)-1 telli
Sensor DS18B20 (temperatur)-1 telli
Sensor DS18B20 (temperatur)-1 telli

Hər bir proyektdə, həmişə edilməli olan xüsusi bir şey olacaq və ya başqa bir anda işləməyəcək.

Bu dəfə 1 telli DS18B20 temperatur sensoru ilə sahibik, bunun səbəbini izah etməyəcəyəm, amma ən azı necə işləməyini izah edəcəyəm.

Bunun üçün gözəl mavi ekran olan Rpi-dəki raspi-konfiqurasiyasına qayıtmalıyıq.

  1. İnterfeys seçimlərinə keçin
  2. 1-Tel seçin və Aktivləşdir seçin.

Bitdi…

Sadəcə zarafat.

İndi /boot/config.txt faylını düzəltməliyik

sudo nano /boot/config.txt

Bu xətti aşağıya əlavə edin.

# Bir teli işə salın

dtoverlay = w1-gpio

İndi sudo bu şeyi yenidən başladın və artıq işimiz bitdi.

İşləyib -işləmədiyini yoxlamaq üçün sensoru Rpi -yə qoşun, sonra terminala qayıdın və bu kodu yazın (İstilik sensorunun necə bağlanacağı ilə bağlı növbəti addıma baxın).

cd/sys/bus/w1/cihazlar/w1_bus_master1

ls

Sol üstdə tünd mavi rəngli rəqəm və hərfləri olan bir şey görməlisiniz, github koduyla işləyəcəyimiz üçün bu məlumatı daha sonra yazdığınızdan əmin olun.

Nədənsə işləmirsə, daha dərinə gedən bu linki yoxlayın.

Addım 4: MCP3008 - Analog Algılama

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

İstilik sensoru üçün bir dəyişiklik etdiyimiz kimi, analoq məlumatlarda oxumalı olduğumuz üçün digər sensorlar üçün də bəzi dəyişikliklər etməliyik. MCP3008 -in lazımlı olduğu yerlərdə SPI interfeysini də dəyişdirməliyik.

sudo raspi-config

Arayüz Seçimlərinə gedin -> SPI seçin -> aktivləşdirin.

Sonra Bitirin.

Addım 5: Avadanlıq

Tamamilə Rpi ilə bitirməmişik, ancaq qurğunu bir araya gətirməyə başlaya bilərik.

Bəzi tövsiyələr, Rpi -ni partlatmadığınızdan əmin olmaq üçün bina qurarkən əlaqələrinizi hərtərəfli yoxlamaqdır.

Ayrıca, Şematik olaraq, eyni komponentdən 1 -dən çoxu ilə işləyəcəyimizə baxmayaraq, bəzi komponentlərin yalnız bir dəfə olduğunu görürsünüz. Sadəcə o komponenti qurma prosesini təkrarlamalı olduğunuz deməkdir. 1 kiçik istisna var, mq-x sensorlarının əlavə səviyyəli çeviriciyə və ya MCP3008-ə ehtiyacı yoxdur. Səviyyə çeviricisinə və MCP3008 -ə əlavə olaraq yaşıl bir kabel əlavə edin (pdf formatında).

Əlavə redaktə: Azarkeşlər bir keçid olaraq bir tranzistordan istifadə etməlidirlər. 1 fan üçün 2n2222A tranzistorundan istifadə edirəm, çünki 2 fanat ağır yük ola bilər.

Daha böyük bir cərəyanı idarə edə biləcək bir tranzistorunuz varsa, bu addımın son hissəsini atlayın.

Mənim kimi biriniz yoxdursa, bunu belə etməlisiniz, 1 fan = 1 tranzistor, 2 fan = 2 tranzistor və s. (Hər fan pdfdəki kimi öz tranzistor + dioddur).

Sonradan 7 -ci addımda backend_project -də app.py -yə bəzi kodlar əlavə etməlisiniz: Git kodu….

Addım 6: Mariadb verilənlər bazası yaratmaq

Mariadb verilənlər bazası yaratmaq
Mariadb verilənlər bazası yaratmaq

Başlıqdan da göründüyü kimi, sensor məlumatlarımızı saxlamaq üçün bir yerimiz olması üçün bir verilənlər bazası yaradacağıq.

Hər şeydən əvvəl, Rpi -də Mariadb yükləyin.

sudo apt-get mariadb-server quraşdırın

Quraşdırıldıqdan sonra istifadə edək.

mysql -u kökü

Şifrə boşdur, buna görə yazmaq üçün heç nə yoxdur. Enter düyməsini basın.

İndi bir istifadəçi yaradaq.

'Userdb' İSTİFADƏÇİ istifadəçi 'istifadəçisi'@'%' yarat;

BÜTÜN İSTİFADƏLƏRİ YERLƏDİRİN. *. * QRANT SEÇİMİ İLƏ 'istifadəçi'@'%' ÜÇÜN;

FLUSH İSTİFADƏLƏRİ;

Çıxmaq və xidməti tez yenidən başlatmaq üçün Ctrl + C düymələrinə basın:

sudo xidməti mysql yenidən başladın

İstifadəçi adı ilə daxil olun: istifadəçi və şifrə: userdb:

mysql -u istifadəçisi -p

İndi verilənlər bazası yaratmağın vaxtı gəldi.

DATABASE OLUN project_db VARSAYILAN XARAKTER SET utf8;

Project_db istifadə edin

"Tarixçi" (tarix deməkdir) cədvəli yaradın.

Mövcud olmadıqda Cədvəl yaradın `historiek` (` id` INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NOT NULL,` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PRIMARY KEY (` id`)) ENGINE = InnoDB;

Və voila, verilənlər bazası hazırlanır.

Addım 7: Github Kodu və Testi

Github Kodu və Testi
Github Kodu və Testi

Layihəmizin sonuna yaxınlaşırıq.

Kodu almadan əvvəl bəzi modulları Rpi -yə daxil etməliyik:

pip3 Flask_MySQL quraşdırın

pip3 flask-socketio qurun

pip3 qurmaq -U flask -cors

pip3 spidev quraşdırın

İndi işləməsi üçün koda ehtiyacımız var, terminala yazın:

git klonu

Qovluğun orada olub olmadığını yoxlayın:

ls

İndi 2 terminala ehtiyacınız olacaq, buna görə terminala sağ vurmaq və Dublikat seansları vurmaq əlverişlidir:

Cd əmrindən istifadə edərək backend_project və temperatura keçin.

İndi test məqsədləri üçün proqramlara başlamazdan əvvəl. Bəzi nömrələri yazmanız lazım olan 1 telli sensorla 3-cü addımı hələ də xatırlayırsınızmı? Əgər narahat olmasanız, yenidən 3 -cü addımda bir göz atın.

Bu nömrələri koda əlavə edəcəyik, çünki istifadə edərkən düzgün sensoru bilməsi lazımdır.

Temperatur qovluğu olan terminalda app.py tapacaqsınız. Açacağıq.

sudo nano app.py

"Def temperatuur ():" adlanan funksiyanı axtarın, orada "**" ni yazdığınız ədədlərlə əvəz etməli olacaqsınız. Mənim vəziyyətimdə bu kod xəttini alardım (hər nömrə unikaldır).

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

Test müddəti. Həm backend_project, həm də temperatur qovluğunda hər iki terminal yazın:

python3 app.py

İndi 5 -ci addımı xatırlayın: birdən çox fanat və tranzistor istifadə edirsinizsə, kod əlavə etməyiniz lazım olan aparat?

Yaxşı, 5 -ci addıma qayıtmayın.

İndi backend_project -də app.py -də qeyd etdiyim kimi kod əlavə etməliyik. Bunu asanlaşdırmaq üçün kodda buna bir nümunə verdim. İçərisində "fan1" olan hər bir şərh kodu sətri və voilaya şərh yazmayın, indi 2 fan istifadə edə bilərsiniz.

Yalnız 2 azarkeşdən daha çox istifadə etmək istəyirsinizsə, eyni kodu başqa bir nömrəyə kopyalayın və yapışdırın. Bunun dezavantajı sizin üçün daha çox şəxsi işdir və daha az gpio.pins mövcuddur. Bunun mənim bildiyim heç bir üstünlüyü yoxdur.

Addım 8: Boot Up -da kodu işə salın

Boot Up -da Kod Çalışdırın
Boot Up -da Kod Çalışdırın

İstəyirik ki, bu 2 python skriptləri Rpi -in açıldığı anda işləsin və bir skript qəzaya uğrayarsa, öz -özünə yenidən başlamalıdır. Bunu etmək üçün 2 xidmət edəcəyik.

Bunu etmək üçün yazın:

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

Bunu bir temperatur üçün kopyalayın və yapışdırın. Xidmət:

[Vahid] Təsvir = Sonra İstilik Xidməti = multi-user.target

Ziddiyyətlər [email protected]

[Xidmət] Növ = sadə

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

Standart Giriş = tty-force

Yenidən başladın = uğursuz oldu

RestartSec = 60s

[Yüklemek]

WantedBy = multi-user.target

Bağlayın və yenidən edin, amma sonra backend_project.service üçün:

İlk açıq mətn:

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

Sonra yenidən kopyalayın və yapışdırın:

[Bölmə] Təsvir = backend_project Xidməti

Sonra = multi-user.target

Ziddiyyətlər [email protected]

[Xidmət]

Növ = sadə

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

Standart Giriş = tty-force

Yenidən başladın = uğursuz oldu

RestartSec = 60s

[Yüklemek]

WantedBy = multi-user.target

Saxla və bağla.

Son hissə bunu yazır:

sudo systemctl daemon-yenidən yüklə

sudo systemctl temperaturu təmin edir. xidmət sudo yenidən başladın

İndi 2 python skriptimiz açılışda avtomatik işləməlidir.

Addım 9: Veb sayt qurun

Anbarı yüklədiyiniz zaman, ön adlı bir qovluq da almalıydınız. Veb saytın məzmunu burada.

Qovluqdan istifadə etməzdən əvvəl əvvəlcə apache lazımdır. Apache üçün bu linkdəki təlimatı izləyin.

Hazır olanda. Ön qovluğun yerləşdiyi yerə gedin:

cd /Sənədlər /nmct-s2-project-1-TheryBrian

Sonra yazın:

sudo mv front/var/www/html

Bunu etdikdən sonra html qovluğuna gedin, yorucu bir işə hazırlayın (mənim günahım).

cd/var/www/html/

sonra ön qovluğa girin və hər şeyi html qovluğuna köçürməyə başlayın.

nümunə:

sudo mv css/var/www/html

Sonra ön qovluğu silin.

Və hər şeyi bitirdik.

Uğurlar:).

Addım 10: İsteğe bağlı - Miniatür Prototip

İsteğe bağlı - Miniatür Prototip
İsteğe bağlı - Miniatür Prototip
İsteğe bağlı - Miniatür Prototip
İsteğe bağlı - Miniatür Prototip

Səbəblərdən ötəri hər şeyin sifarişlə işlədiyini görmək üçün içərisindəki bütün avadanlıqları olan bir qutunun prototipini hazırladım.

Normalda bu layihə daha geniş miqyasda həyata keçirilərdi. Məsələn: bir otaq, bir ev, bir fabrik, bir mağaza və s.

Ancaq divarlarda deşik açmağa başlamazdan əvvəl (gözəl qafiyə). Əvvəlcə bunun sadəcə işlədiyini görmək istəyirik. Test üçün bir qutu düzəltməyə ehtiyac yoxdur, ancaq bir sənətkarlıq etmək həmişə əyləncəlidir.

Budur mənim nümunəm.

Tövsiyə: