Mundarija:

The Air - gaz sensori loyihasi: 10 qadam
The Air - gaz sensori loyihasi: 10 qadam

Video: The Air - gaz sensori loyihasi: 10 qadam

Video: The Air - gaz sensori loyihasi: 10 qadam
Video: TOSHKENT KOCHALARIDA SAMALYOT XARAKATLANMOQDA BUNISIGA NIMA DEYSIZ 2024, Iyul
Anonim
The Air - gaz sensori loyihasi
The Air - gaz sensori loyihasi

Uglerod oksidi va karbonat angidrid, shuningdek CO va CO2 deb ham ataladi. Yopiq xonada yuqori konsentratsiyada rangsiz, hidsiz, ta'msiz va ochiqchasiga xavfli gazlar. Agar siz yashayotgan bo'lsangiz, masalan, talabalar xonasida, izolyatsiya qilingan, havo oqimi yaxshi emas va negadir, tushdi mashinasi tost paytida g'alati ovoz chiqaradi. Keyin siz bu gazlar bilan aloqada bo'lishingiz mumkin va bu sodir bo'lganda, u faqat kichik bosh og'rig'i bilan tugaydi degan umidda bo'lamiz, chunki u yuqori konsentratsiyada sizni ishdan chiqarishi yoki hatto o'ldirishi mumkin (kamdan -kam hollarda).

Shuning uchun men ushbu loyihani o'ylab topishga qaror qildim. Mening fikrim oddiy, havo oqimi qilish uchun fanatlardan foydalaning. Aytgancha, ichkarida yaxshi havo va yomon havo. Qo'shimcha yordam uchun men qo'shimcha harorat sensori, qo'lda yoqish muxlislari uchun tugma va statistikani ko'rishni va/yoki muxlislarni kompyuterdan faollashtirishni yoqtiradiganlar uchun veb -saytni qo'shdim.

Talaba, ota -ona, yolg'iz odam yoki tirik mavjudot sifatida. Bu, odatda, o'z uyingizning farovonligida yashashdan qochmoqchi bo'lgan narsadir. Bu o'z hayotini biroz osonlashtirmoqchi bo'lganlarga yordam beradi.

Ta'minotlar

  • Raspberry Pi 3+
  • Mini-USB zaryadlovchi 5V/2.5A
  • Micro-sd karta
  • Sensorlar

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (harorat)
  • 2 x 12V shahar fanati
  • 2 x 2n2222 tranzistorlar
  • LCD displey 16*2
  • Tugma
  • MCP3008
  • Logi darajasidagi konvertor
  • Ethernet kabeli (sozlash sabablari bo'yicha)

1 -qadam: Raspberry Pi -ni sozlash

Raspberry Pi sozlamalari
Raspberry Pi sozlamalari
Raspberry Pi sozlamalari
Raspberry Pi sozlamalari

Rpi bilan ishlashdan oldin bizga dasturiy ta'minot kerak bo'ladi.

  • WinSCP yoki FilleZilla (fayllarni kompyuterdan Rpi -ga o'tkazmoqchi bo'lsangiz ixtiyoriy)
  • Win32 disk yoki Etcher (sizga ko'proq yoqadi)
  • Putty yoki MobaXterm (sizga ko'proq yoqadi)
  • Ish stoli bilan raspbian tasvir

Ishni boshlashdan oldin shuni eslatib o'tmoqchimanki, men ushbu qo'llanmani yaratishda, boshqa dasturni tanlaganimda, buni tavsiya qilaman degani emas. Masalan, men etcher -dan foydalanishni yaxshi ko'raman, chunki foydalanuvchilar uchun qulayroq, lekin Win32 -da zaxira nusxasini yaratish imkoniyati mavjud. Endi bu mening tizimimdan tashqarida, boshlaylik.

Agar sizda Wi -Fi tarmog'iga ulangan Rpi bo'lsa, 3 -bosqichga o'ting.

Birinchidan, biz Raspbian tasvirini sd -kartangizga qo'yish uchun Etcher -dan foydalanamiz. Endi sd -kartani chiqarib olishdan oldin, biz rasmda topiladigan cmdline.txt faylidagi "narsalarni" o'zgartiramiz.. Txt faylini oching -> "ip = 169.254.10.1" (tirnoqsiz) qatorini oxiriga qo'shing (barchasi 1 qatorda) -> Faylni saqlang

Ikkinchidan, yuklash qismida "ssh" deb nomlangan bo'sh papkani yarating (tirnoqsiz).

Shundan so'ng, siz Microsd -ni xavfsiz chiqarib olishingiz va uni Rpi -ga qo'yishingiz mumkin.

Qattiq kodlangan statik IP -ning sababi Rpi -ga ulanishni osonlashtirishdir. Agar biron sababga ko'ra Rpi -da DHCP bilan IP bo'lmasa, siz statik ipdan osongina foydalanasiz.

2 -qadam: Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash

Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash
Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash
Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash
Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash
Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash
Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash
Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash
Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash

Biz Rpi -ni yuklaymiz -> Ethernet kabelini kompyuter va Rpi o'rtasida ulang.

  1. Putty -ni ishga tushiring va uni to'ldiring:

    • Xost nomi (yoki IP -manzili): 169.254.10.1
    • Port: 22
  2. Terminal ochiladi va siz standart foydalanuvchi nomi va parolni kiritasiz:

    • Foydalanuvchi nomi: pi
    • Parol: malina

Endi biz mahalliy ravishda rpi -ga ulanganmiz, biz Rpi -ni Wi -Fi tarmog'iga ulanishini xohlaymiz.

  1. Qo'shimcha: "sudo raspi-config" ni kiriting
  2. Bu erda siz pi foydalanuvchisi uchun parolni o'zgartirishingiz kerak bo'ladi (xavfsizlik sabablari)
  3. Keyin "Mahalliylashtirish imkoniyatlari" -"Vaqtni o'zgartirish" bo'limiga o'ting (to'g'ri vaqtni tanlang) -> "Wi -Fi mamlakatlari" bo'limiga o'ting -"mamlakatni tanlang".
  4. Raspi-config-ni yoping va qayta yoqing.
  5. Tizimga kirganingizda vaqtincha o'zingizni root foydalanuvchi qilib oling -> sudo -i
  6. O'z tarmog'ingizni Rpi -ga qo'shish uchun ushbu buyruqni yozing (ro'yxat pastidagi kod)

    • parol = "parol" (tirnoq bilan)
    • Tarmoq nomi = "SSID"
    • Ikki marta ishlatishni unutmang >>! Muhim!

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

Endi qayta yoqing

Qayta ulanganda, ipni tekshiring:

ifconfig

va inet yonidagi wlan0 ni tekshiring.

Endi biz Internetga ulangan bo'lsak, "tez" yangilashni amalga oshiramiz.

sudo apt yangilash

sudo apt dist -upgrade -y

Bu biroz vaqt olishi mumkin.

3-qadam: DS18B20 sensori (harorat)-1 simli

Sensor DS18B20 (harorat)-1 simli
Sensor DS18B20 (harorat)-1 simli
Sensor DS18B20 (harorat)-1 simli
Sensor DS18B20 (harorat)-1 simli

Har bir loyihada, har doim alohida narsa bo'lishi kerak, aks holda u ishlamaydi.

Bu safar bizda DS18B20 harorat sensori mavjud, u 1 simli bo'lishni talab qiladi, men buni tushuntirmayman, lekin men uni qanday ishlashini tushuntiraman.

Buning uchun biz Rpi-dagi raspi-konfiguratsiyaga qaytishimiz kerak, chiroyli ko'k ekran.

  1. Interfacing variantlariga o'ting
  2. 1-simni va yoqish-ni tanlang.

Bajarildi…

Hazillashayapman.

Endi biz /boot/config.txt ni sozlashimiz kerak

sudo nano /boot/config.txt

Bu qatorni pastki qismiga qo'shing.

# Bir simni yoqish

dtoverlay = w1-gpio

Endi sudo bu narsani qayta ishga tushiring va endi biz tugatdik.

Ishlayotganini tekshirish uchun sensorni Rpi -ga ulang, so'ng terminalga qayting va ushbu kodni kiriting (Harorat sensori qanday ulash haqida keyingi bosqichga qarang).

cd/sys/bus/w1/devices/w1_bus_master1

ls

Siz chap tomonda quyuq ko'k rangdagi raqamlar va harflar yozilgan narsani ko'rishingiz kerak, keyinroq biz github kodi bilan ishlayotganimizda bu ma'lumotni yozing.

Agar biron sababga ko'ra u ishlamasa, unda chuqurroq bo'lgan havolani tekshiring.

4 -qadam: MCP3008 - Analog sezish

MCP3008 - Analog sezish
MCP3008 - Analog sezish
MCP3008 - Analog sezish
MCP3008 - Analog sezish

Biz harorat sensori uchun o'zgartirish kiritganimizdek, boshqa sensorlar uchun ham ba'zi o'zgarishlar qilishimiz kerak, chunki ular analog ma'lumotlarda o'qilishi kerak. Bu erda MCP3008 mos keladi, biz SPI interfeysini o'zgartirishimiz kerak.

sudo raspi-config

Interfacing Options -> SPI ni tanlang -> yoqish -ga o'ting.

Keyin tugatish.

5 -qadam: Uskuna

Biz Rpi -ni to'liq bajarganimiz yo'q, lekin biz qurilmani yig'ish va yig'ishni boshlashimiz uchun etarli.

Ba'zi maslahatlar, RPIni portlatib yubormasligingizga ishonch hosil qilish uchun qurilayotganda ulanishlaringizni yaxshilab tekshirib ko'ring.

Bundan tashqari, sxemada siz ba'zi komponentalar faqat bir marta o'rnatilganligini sezasiz, garchi biz bir xil komponentdan 1 tadan ko'prog'i bilan ishlasak. Bu shuni anglatadiki, siz bitta komponentni yaratish jarayonini takrorlashingiz kerak. 1 ta kichik istisno mavjud, mq-x datchiklariga qo'shimcha darajali konvertor yoki MCP3008 kerak emas. Darajali konvertor va MCP3008 ga qo'shimcha yashil kabel (pdf formatida) qo'shing.

Qo'shimcha tahrir: muxlislar kalit sifatida tranzistordan foydalanishlari kerak. Men 1 ta fan uchun 2n2222A tranzistoridan foydalanaman, chunki 2 ta fan og'ir yuk bo'lishi mumkin.

Agar sizda katta oqimni ushlab turadigan tranzistor bo'lsa, bu qadamning oxirgi qismini o'tkazib yuboring.

Agar sizda meniki yo'q bo'lsa, buni shunday qilish kerak bo'ladi, 1 ta fan = 1 ta tranzistor, 2 ta fan = 2 ta tranzistor va boshqalar (har bir fan pdfdagi kabi o'z tranzistor + diodli).

Bundan tashqari, backend_project -da app.py -ga 7 -qadamda Git kodini qo'shishingiz kerak bo'ladi.

6 -qadam: Mariadb ma'lumotlar bazasini yaratish

Mariadb ma'lumotlar bazasini yaratish
Mariadb ma'lumotlar bazasini yaratish

Sarlavhadan ko'rinib turibdiki, biz ma'lumotlar bazasini yaratamiz, shunda biz sensor ma'lumotlarini saqlashimiz mumkin.

Birinchidan, Mariadbni Rpi -ga yuklab oling.

sudo apt-get o'rnatish mariadb-server

O'rnatishdan so'ng, uni ishlatamiz.

mysql -u ildizi

Parol bo'sh, shuning uchun yozish uchun hech narsa yo'q. Enter ni bosing.

Endi foydalanuvchi yarataylik.

USER 'user'@'%' IDENTIFIED 'userdb' tomonidan yaratilsin;

GRANT OPSIYASI BILAN HAMMA imtiyozlarni yoqish *. * 'User'@'%' ga;

YUQARISH IMKONIYATLARI;

Chiqish va xizmatni tezda qayta ishga tushirish uchun Ctrl + C tugmalar birikmasini bosing:

sudo xizmati mysql -ni qayta ishga tushiring

Foydalanuvchi nomi bilan kiring: foydalanuvchi va parol: userdb:

mysql -u foydalanuvchi -p

Ma'lumotlar bazasini yaratish vaqti keldi.

Ma'lumotlar bazasini yaratish project_db DEFULT CHARACTER SET utf8;

Project_db -dan foydalaning

"Tarixchi" (tarixni anglatadi) jadvalini yarating.

JADVOL YO'Q BO'LMASI `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;

Va voila, ma'lumotlar bazasi yaratilgan.

7 -qadam: Github kodi va test

Github kodi va test
Github kodi va test

Loyihamiz tugashiga oz qoldi.

Kodni olishdan oldin biz ba'zi modullarni Rpi -ga import qilishimiz kerak bo'ladi:

pip3 Flask_MySQL -ni o'rnating

pip3 flask-socketio-ni o'rnating

pip3 o'rnatish -U kolbasi -kors

pip3 spidev -ni o'rnating

Endi uni ishlashi uchun bizga kod kerak, terminalga yozing:

git klon

Jild borligini tekshiring:

ls

Endi sizga 2 ta terminal kerak bo'ladi, shuning uchun terminalni o'ng tugmasini bosish va "Duplikat seanslar" ni bosish qulay:

CD buyrug'i yordamida backend_project va haroratga o'ting.

Endi biz sinov dasturlarini ishga tushirishdan oldin. Siz hali ham 3-qadamni 1 simli sensor bilan eslaysizmi, bu erda siz ba'zi raqamlarni yozishingiz kerak. Xavotir olmang, agar 3 -qadamni qayta ko'rib chiqing.

Biz bu raqamlarni kodga qo'shmoqchimiz, chunki uni ishlatganda to'g'ri sensorni bilish kerak bo'ladi.

Harorat papkasi bo'lgan terminalda siz app.py -ni topasiz. Biz uni ochamiz.

sudo nano app.py

"Def temperatuur ():" deb nomlangan funktsiyani qidiring, u erda "**" ni siz yozgan raqamlar bilan almashtirishga to'g'ri keladi. Menimcha, men bu kod satrini olaman (har bir raqam o'ziga xosdir).

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

Sinov vaqti. Ikkala terminal ham backend_project va harorat papkasida yozing:

python3 app.py

Endi 5 -qadamni eslang: agar siz bir nechta fanat va tranzistorlardan foydalanayotgan bo'lsangiz, kod qo'shishingiz kerak bo'lgan apparat?

Yaxshi, agar 5 -bosqichga qaytmasangiz.

Endi biz backend_project -da app.py -da aytib o'tganimdek kodni qo'shishimiz kerak. Buni osonlashtirish uchun kodda bunga misol keltirdim. Koment kodining har bir satrida "fan1" yozilgan, bu satrlar va voylaga izoh qoldiring, endi siz 2 ta muxlisdan foydalanishingiz mumkin.

Agar siz ko'proq 2 ta fanatdan foydalanmoqchi bo'lsangiz, xuddi shu kodni boshqa raqam bilan nusxa ko'chiring va joylashtiring. Buning kamchiligi siz uchun ko'proq shaxsiy ish va gpio.pins kamroq. Buning men biladigan afzalliklari yo'q.

8 -qadam: Yuklash paytida kodni ishga tushiring

Yuklash paytida kodni ishga tushiring
Yuklash paytida kodni ishga tushiring

Biz xohlaymizki, bu 2 ta python skriptlari bizning Rpi ishga tushganda ishga tushishini va agar skript qulab tushsa, u o'z -o'zidan qayta ishga tushishi kerak. Buning uchun biz 2 ta xizmat ko'rsatamiz.

Buning uchun yozing:

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

Buni nusxa ko'chiring va harorat.service uchun:

[Birlik] Tavsif = Haroratdan keyin xizmat = multi-user.target

Qarama -qarshiliklar [email protected]

[Xizmat] Turi = oddiy

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

StandardInput = tty-force

Qayta ishga tushirish = muvaffaqiyatsiz

RestartSec = 60s

[O'rnatish]

WantedBy = multi-user.target

Yoping va yana bajaring, lekin keyin backend_project.service uchun:

Birinchi ochiq matn:

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

Keyin yana nusxa ko'chiring va joylashtiring:

[Birlik] Tavsif = backend_project xizmati

Keyin = multi-user.target

Qarama -qarshiliklar [email protected]

[Xizmat]

Turi = oddiy

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

StandardInput = tty-force

Qayta ishga tushirish = muvaffaqiyatsiz

RestartSec = 60s

[O'rnatish]

WantedBy = multi-user.target

Saqlash va yopish.

Oxirgi qism shunday yozadi:

sudo systemctl daemon-reload

sudo systemctl faollashtirish temperaturasi.service sudo reboot

Endi bizning 2 python skriptimiz yuklashda avtomatik ravishda ishlashi kerak.

9 -qadam: veb -saytni sozlash

Ma'lumotlar omborini yuklaganingizda, old deb nomlangan papkaga ega bo'lishingiz kerak edi. Bu erda veb -sayt uchun materiallar mavjud.

Jildni ishlatishdan oldin bizga apache kerak. Apache uchun ushbu havoladagi ko'rsatmaga amal qiling.

Siz tayyor bo'lganda. Old papka joylashgan joyga o'ting:

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

Keyin yozing:

sudo mv front/var/www/html

Bu tugagach, html papkasiga o'ting, zerikarli ishga tayyorlaning (mening aybim).

cd/var/www/html/

keyin oldingi papkaga o'ting va hamma narsani html papkasiga o'tkazishni boshlang.

misol:

sudo mv css/var/www/html

Keyin oldingi papkani o'chirib tashlang.

Va biz hamma narsani tugatdik.

Omad:).

10 -qadam: ixtiyoriy - miniatyura prototipi

Majburiy emas - miniatyura prototipi
Majburiy emas - miniatyura prototipi
Majburiy emas - miniatyura prototipi
Majburiy emas - miniatyura prototipi

Sinov sabablari tufayli men hamma narsaga buyurtma beriladimi yoki yo'qmi, shuni bilib olamanki, ichidagi barcha jihozlari bo'lgan qutining prototipini yaratdim.

Odatda bu loyiha keng miqyosda amalga oshiriladi. Masalan: xona, uy, fabrika, do'kon va boshqalar …

Lekin, albatta, biz devorlarga teshik yasashni boshlashdan oldin (yaxshi qofiya). Avvalo, u ishlaydimi yoki yo'qligini ko'rishni xohlaymiz. Sinov uchun quti yasashning hojati yo'q, lekin hunarmandchilik qilish har doim qiziqarli.

Mana mening misolim.

Tavsiya: