Mundarija:
- Ta'minotlar
- 1 -qadam: Raspberry Pi -ni sozlash
- 2 -qadam: Ulanish va Rpi simsiz ulanishini mahalliy tarmoqqa ulash
- 3-qadam: DS18B20 sensori (harorat)-1 simli
- 4 -qadam: MCP3008 - Analog sezish
- 5 -qadam: Uskuna
- 6 -qadam: Mariadb ma'lumotlar bazasini yaratish
- 7 -qadam: Github kodi va test
- 8 -qadam: Yuklash paytida kodni ishga tushiring
- 9 -qadam: veb -saytni sozlash
- 10 -qadam: ixtiyoriy - miniatyura prototipi
Video: The Air - gaz sensori loyihasi: 10 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
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
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
Biz Rpi -ni yuklaymiz -> Ethernet kabelini kompyuter va Rpi o'rtasida ulang.
-
Putty -ni ishga tushiring va uni to'ldiring:
- Xost nomi (yoki IP -manzili): 169.254.10.1
- Port: 22
-
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.
- Qo'shimcha: "sudo raspi-config" ni kiriting
- Bu erda siz pi foydalanuvchisi uchun parolni o'zgartirishingiz kerak bo'ladi (xavfsizlik sabablari)
- Keyin "Mahalliylashtirish imkoniyatlari" -"Vaqtni o'zgartirish" bo'limiga o'ting (to'g'ri vaqtni tanlang) -> "Wi -Fi mamlakatlari" bo'limiga o'ting -"mamlakatni tanlang".
- Raspi-config-ni yoping va qayta yoqing.
- Tizimga kirganingizda vaqtincha o'zingizni root foydalanuvchi qilib oling -> sudo -i
-
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
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.
- Interfacing variantlariga o'ting
- 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
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
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
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
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
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:
Menyu bilan Arduino DHT22 sensori va tuproq namligi loyihasi: 4 qadam
Menyu bilan Arduino DHT22 sensori va tuproq namligi loyihasi: Salom bolalar bugun men sizlarga ko'rsatuvlar bo'yicha ikkinchi loyihamni taqdim etaman. Bu loyihada men namlik va namlikni o'lchash uchun ishlatiladigan namlik sensori va DHT22 sensori ishlatilgan birinchi loyihamni taqdim etaman. . Bu loyiha
GY -30 BH1750 yorug'lik sensori (GY30 / GY302) qanday simlanadi va ishlatiladi - oson - Arduino loyihasi !: 7 qadam
GY -30 BH1750 yorug'lik sensori (GY30 / GY302) qanday simlanadi va ishlatiladi - oson - Arduino loyihasi!: Bu qo'llanmada biz Arduino bilan GY -30 BH1750 yorug'lik intensivligi sensori qanday tez va oson ishlatilishini bilib olamiz. Namoyish videosini tomosha qiling
RFID + Rang sensori IoT loyihasi: 7 qadam
RFID + Rang Sensor IoT loyihasi: Ushbu loyihaning g'oyasi qahva chashkalaridan ichgan va ularni to'g'ri tashlagan odamlarni mukofotlashdan iborat. Masalan, Tim Xortons kabi kompaniyani olaylik; 2014 yilda ular har yili 2 milliard chashka qahva iste'mol qilishni qayd etishdi. Garchi ularning stakanlarini qayta ishlash mumkin bo'lsa -da
Mening eshikimda kim bor? PIR harakat sensori/diapazon sensori loyihasi: 5 qadam
Mening eshikimda kim bor? PIR harakat sensori/diapazon sensori loyihasi: Bizning loyihamiz PIR va masofa sensori orqali harakatni sezishga qaratilgan. Arduino kodi foydalanuvchiga yaqin bo'lganini bildirish uchun vizual va audio signal chiqaradi. MATLAB kodi foydalanuvchiga kimdir yaqinligini bildirish uchun elektron pochta xabarini yuboradi
Arduino loyihasi uchun yuk o'lchagichidan osilgan vazn sensori oling: 4 qadam
Arduino loyihasi uchun yuk o'lchagichidan osilgan vazn o'lchagichini oling: Ushbu qo'llanmada men sizga Arduino loyihasi uchun osilgan vazn o'lchagichini arzon, keng tarqalgan bagaj/baliq ovlagichidan va tez -tez ishlatiladigan HX711 ADC modulidan qanday olishni ko'rsataman. Ma'lumot: Loyiha uchun menga ma'lum bir vaznni o'lchash uchun sensor kerak edi