Kazalo:
- Zaloge
- Korak: Nastavitev Raspberry Pi
- 2. korak: Vzpostavite povezavo in brezžično povežite Rpi z lokalnim omrežjem
- 3. korak: Senzor DS18B20 (temperatura)-1-žilni
- 4. korak: MCP3008 - Analogno zaznavanje
- 5. korak: Strojna oprema
- 6. korak: Ustvarjanje zbirke podatkov Mariadb Datbase
- 7. korak: Koda Github in testiranje
- 8. korak: Zaženite kodo ob zagonu
- 9. korak: Namestite spletno mesto
- 10. korak: Izbirno - miniaturni prototip
Video: Projekt senzorja zraka - plina: 10 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Ogljikov monoksid in ogljikov dioksid, znan tudi kot CO in CO2. Plini, ki so v zaprtih prostorih brez barve, vonja, okusa in odkrito nevarni. Če živite, recimo v študentski sobi, ki je slabo izolirana, brez dobrega pretoka zraka in iz nekega razloga opeče opekač, medtem ko nazdravlja. Potem bi lahko prišli v stik s temi plini in ko se to zgodi, upajmo, da se konča le z majhnim glavobolom, saj vas lahko v veliki koncentraciji onesposobi ali celo ubije (čeprav zelo redko).
Zato sem se odločil, da se lotim tega projekta. Moja ideja je preprosta, uporabite ventilatorje, da naredite pretok zraka. Dober zrak tako rekoč slab zrak. Za dodatno uporabnost sem dodal dodatni temperaturni senzor, gumb za ventilatorje za ročno aktiviranje in tudi spletno mesto za tiste, ki radi gledajo statistiko in/ali aktivirajo ventilatorje iz svojega računalnika.
Kot študent, starš, samska oseba ali živo bitje. Temu se običajno želite izogniti, če živite v udobju lastne hiše. To pomaga tistim, ki si radi olajšajo življenje.
Zaloge
- Raspberry Pi 3+
- Mini-USB polnilec 5V/2.5A
- Micro SD kartica
-
Senzorji
- MQ-7 (CO)
- MQ-135 (CO2)
- DS18B20 (temperatura)
- 2 x 12V DC ventilator
- 2 x 2n2222 tranzistorja
- LCD zaslon 16*2
- Pritisni gumb
- MCP3008
- Pretvornik ravni Logi
- Ethernetni kabel (zaradi namestitve)
Korak: Nastavitev Raspberry Pi
Preden začnemo delati z Rpi, bomo potrebovali nekaj programske opreme.
- WinSCP ali FilleZilla (neobvezno, če želite prenesti datoteke iz računalnika v Rpi)
- Disk Win32 ali Etcher (ki vam je bolj všeč)
- Kiti ali MobaXterm (ki vam je bolj všeč)
- Raspbian slika z namizjem
Preden začnem, bi rad omenil, da pri pripravi te vadnice, ko izberem program namesto drugega, NE pomeni, da ga priporočam. Na primer, rad uporabljam jedkalec, ker je uporabniku prijaznejši, vendar ima Win32 možnost varnostnega kopiranja. Zdaj je to zunaj mojega sistema, začnimo.
Če že imate Rpi, ki je povezan z vašim brezžičnim omrežjem, pojdite na 3. korak.
Najprej bomo uporabili Etcher, da postavimo sliko Raspbian na vašo SD kartico. Zdaj, preden izvlečemo kartico sd, bomo spremenili nekaj "stvari" v datoteki cmdline.txt, ki jih najdemo na sliki. Odprite datoteko.txt -> Dodajte to vrstico "ip = 169.254.10.1" (brez narekovajev) na koncu vrstice (vse v 1 vrstici) -> Shrani datoteko
Drugič, v zagonski particiji naredite prazno mapo, imenovano "ssh" (brez narekovajev).
Po tem lahko varno izvržete Microsd in ga vstavite v Rpi.
Razlog za trdo kodiran statični IP je olajšanje povezave z Rpi. Če iz nekega razloga Rpi nima IP -ja z DHCP, potem preprosto uporabite statični ip.
2. korak: Vzpostavite povezavo in brezžično povežite Rpi z lokalnim omrežjem
Zagnali bomo Rpi -> priklopili ethernetni kabel med računalnikom in Rpi.
-
Začnite Putty in izpolnite to:
- Ime gostitelja (ali naslov IP): 169.254.10.1
- Pristanišče: 22
-
Pojavi se terminal in vnesete privzeto uporabniško ime in geslo:
- Uporabniško ime: pi
- Geslo: malina
Zdaj, ko smo lokalno povezani z rpi, želimo, da ima Rpi povezavo z vašim wifi.
- Dodatno: vnesite "sudo raspi-config"
- Tukaj boste morali spremeniti geslo za uporabnika pi (varnostni razlogi)
- Nato pojdite na Možnosti lokalizacije -> Spremeni čas (izberite pravega) -> Nato pojdite na Država Wifi -> izberite državo.
- Zaprite raspi-config in znova zaženite.
- Ko ste prijavljeni, začasno naredite root uporabnika -> sudo -i
-
Napišite ta ukaz, če želite svoje omrežje dodati v Rpi (koda pod seznamom)
- geslo = "geslo" (z narekovaji)
- Ime omrežja = "SSID"
- Ne pozabite uporabiti dvojnega >>! Pomembno!
echo "geslo" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Zdaj znova zaženite
Ko se znova povežete, preverite svoj IP z vnosom:
ifconfig
in preverite wlan0, poleg inet.
Zdaj, ko imamo internetno povezavo, naredimo "hitro" posodobitev.
sudo apt posodobitev
sudo apt dist -upgrade -y
To lahko traja nekaj časa.
3. korak: Senzor DS18B20 (temperatura)-1-žilni
Pri vsakem projektu se bo vedno zgodilo nekaj posebnega, kar je treba storiti, sicer ne bo delovalo.
Tokrat ga imamo s temperaturnim senzorjem DS18B20, ki zahteva 1-žico, za kar ne bom razložil, zakaj, bom pa razložil, kako naj vsaj deluje.
Za to se moramo vrniti na raspi-config na Rpi, lep modri zaslon.
- Pojdite na Možnosti vmesnika
- Izberite 1-Wire in izberite omogoči.
Končano…
Hecam se.
Zdaj bomo morali prilagoditi /boot/config.txt
sudo nano /boot/config.txt
Dodajte to vrstico na dnu.
# Omogoči onewire
dtoverlay = w1-gpio
Zdaj sudo znova zaženite to stvar in zdaj smo končali.
Če želite preveriti, ali deluje, senzor priključite na Rpi, nato se vrnite na terminal in vnesite to kodo (glejte naslednji korak Strojna oprema o tem, kako priključite temperaturni senzor).
cd/sys/bus/w1/devices/w1_bus_master1
ls
V zgornjem levem kotu bi morali videti nekaj s temno modrimi številkami in črkami. Te podatke napišite pozneje, ko bomo delali s kodo iz github -a.
Če iz nekega razloga ne deluje, preverite to povezavo, ki sega globlje.
4. korak: MCP3008 - Analogno zaznavanje
Ker smo spremenili temperaturni senzor, moramo nekaj sprememb spremeniti tudi za druge senzorje, saj jih moramo prebrati v analognih podatkih. Tu, kjer MCP3008 pride prav, moramo spremeniti tudi vmesnik SPI.
sudo raspi-config
Pojdite na Možnosti vmesnika -> Izberite SPI -> omogoči.
Nato Dokončaj.
5. korak: Strojna oprema
Z Rpi nismo v celoti zaključili, vendar dovolj, da lahko začnemo graditi in sestavljati strojno opremo.
Nekaj nasvetov je, da med gradnjo temeljito preverite svoje povezave in se prepričate, da ne… razstrelite Rpi.
Prav tako boste v shemi opazili, da so nekatere komponente na njej le enkrat, čeprav bomo delali z več kot enoto iste komponente. To samo pomeni, da morate ponoviti isti postopek izdelave te 1 komponente. Obstaja 1 majhna izjema: senzorji mq-x ne potrebujejo dodatnega pretvornika nivoja ali MCP3008. Samo pretvorniku nivoja in MCP3008 dodajte dodaten zeleni kabel (v pdf -ju).
Dodatno urejanje: Ventilatorji morajo kot stikalo uporabiti tranzistor. Uporabljam tranzistor 2n2222A za 1 ventilator, ker sta 2 ventilatorja lahko zelo obremenjena.
Če imate tranzistor, ki lahko prenese večji tok kot dober, preskočite zadnji del tega koraka.
Če nimate takega, kot sem jaz, boste morali to narediti tako, 1 ventilator = 1 tranzistor, 2 ventilatorja = 2 tranzistorja itd. (Vsak ventilator ima svoj tranzistor + dioda, kot je v pdf -ju).
Nekaj kode boste morali dodati app.py v backend_project kasneje v 7. koraku: Git koda….
6. korak: Ustvarjanje zbirke podatkov Mariadb Datbase
Kot pove naslov, bomo ustvarili bazo podatkov, tako da bomo lahko shranili podatke senzorja.
Najprej prenesite Mariadb na Rpi.
sudo apt-get install mariadb-server
Po namestitvi ga uporabimo.
koren mysql -u
Geslo je prazno, zato ni treba vnašati. Pritisnite enter.
Ustvarimo uporabnika zdaj.
CREATE USER 'user'@'%' IDENTIFICED BY 'userdb';
DODELI VSE PRIVILEGIJE NA *. * ZA 'uporabnika'@'%' Z MOŽNOSTO DODELE;
FLUSH PRIVILEGIJE;
Pritisnite Ctrl + C za izhod in hiter ponovni zagon storitve:
sudo storitev mysql znova zaženite
Prijava z uporabniškim imenom: uporabnik in geslo: userdb:
mysql -u uporabnik -p
Čas je, da ustvarite bazo podatkov.
CREATE DATABASE project_db NASTAVITEV NASTAVLJENIH ZNAKOV utf8;
UPORABI project_db
Ustvarite tabelo "historiek" (pomeni zgodovino).
Ustvari tabelo, če ne obstaja `historiek` (` id` INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NI NULL,` datum` DATUM NI NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PRIMARY KEY (` id`)) ENGINE = InnoDB;
In voila, baza podatkov je narejena.
7. korak: Koda Github in testiranje
Približujemo se koncu našega projekta.
Preden dobimo kodo, bomo morali uvoziti nekaj modulov v Rpi:
pip3 namestite Flask_MySQL
pip3 namestite flask-socketio
pip3 install -U flask -cors
pip3 namestite spidev
Zdaj potrebujemo kodo, da deluje, vnesite terminal:
git clone
Preverite, ali je mapa tam z:
ls
Zdaj potrebujete 2 terminala, zato je priročno, da z desno tipko miške kliknete terminal in kliknete Podvojene seje:
Pojdite na backend_project in temperaturo z ukazom cd.
Zdaj, preden zaženemo programe za namene testiranja. Se še spomnite 3. koraka z 1-žičnim senzorjem, kamor morate zapisati nekaj številk? Brez skrbi, če imate, samo na hitro poglejte še korak 3.
Te številke bomo dodali kodi, ker bo pri uporabi morala poznati pravi senzor.
V terminalu s temperaturno mapo boste našli app.py. Odprli ga bomo.
sudo nano app.py
Poiščite funkcijo, ki se imenuje "def temperatuur ():", tam boste morali "**" zamenjati s številkami, ki ste jih zapisali. V mojem primeru bi dobil to vrstico kode (vsaka številka je edinstvena).
sensor_file_name = '/sys/devices/w1_bus_master1/28-0316a4be59ff/w1_slave
Čas testiranja. Oba terminala v mapi backend_project in temperature, vnesite:
python3 app.py
Zdaj se spomnite 5. koraka: strojna oprema, pri kateri morate dodati kodo, če uporabljate več ventilatorjev in tranzistorjev?
Dobro, če se ne vrnem na korak 5.
Zdaj moramo dodati app, kot sem omenil, v app.py v backend_project. Da bi bilo lažje, sem to naredil v kodi. Vsako vrstico kode komentarja, ki vsebuje "fan1", odkomentirajte te vrstice in voila, zdaj lahko uporabite 2 oboževalca.
Če želite uporabiti več kot 2 ventilatorja, kopirajte in prilepite isto kodo pod njo, vendar z drugo številko. Pomanjkljivost tega je bolj osebno delo za vas in manj gpio.pins na voljo. Za to ne vem nobenih prednosti.
8. korak: Zaženite kodo ob zagonu
Želimo, da se ta dva skripta python zaženeta v trenutku, ko se zažene naš Rpi, in če bi se skript zrušil, bi se moral znova zagnati sam. Za to bomo naredili 2 storitvi.
Če želite to narediti, vnesite:
sudo nano /etc/systemd/system/temperature.service
Kopirajte in prilepite to za temperature.service:
[Enota] Opis = Temperaturna storitev Po = več uporabniški cilj
[Storitev] Vrsta = preprosto
ExecStart =/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py
Standardni vhod = sila tty
Ponovni zagon = ob napaki
RestartSec = 60s
[Namesti]
WantedBy = cilj za več uporabnikov
Zaprite in naredite znova, potem pa za backend_project.service:
Prvo odprto besedilo:
sudo nano /etc/systemd/system/backend_project.service
Nato znova kopirajte in prilepite:
[Enota] Opis = storitev backend_project
After = cilj za več uporabnikov
[Storitev]
Vrsta = preprosto
ExecStart =/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py
Standardni vhod = sila tty
Ponovni zagon = ob napaki
RestartSec = 60s
[Namesti]
WantedBy = cilj za več uporabnikov
Shranite in zaprite.
Zadnji del je vnos tega:
sudo systemctl daemon-reload
sudo systemctl omogoči temperaturo.service sudo reboot
Zdaj bi se morali naši 2 skripti python samodejno zagnati ob zagonu.
9. korak: Namestite spletno mesto
Ko ste prenesli skladišče, bi morali dobiti tudi mapo z imenom front. Tu so vsebine za spletno stran.
Najprej potrebujemo apache, preden lahko uporabimo mapo. Za apache sledite vodniku na tej povezavi.
Ko boste pripravljeni. Pojdite na sprednjo mapo:
cd /Documents /nmct-s2-project-1-TheryBrian
Nato vnesite:
sudo mv front/var/www/html
Ko to storite, pojdite v mapo html in se pripravite na dolgočasno delo (moja krivda).
cd/var/www/html/
nato pojdite v sprednjo mapo in začnite vse premikati v mapo html.
primer:
sudo mv css/var/www/html
Nato izbrišite sprednjo mapo.
In z vsem smo končali.
Vso srečo:).
10. korak: Izbirno - miniaturni prototip
Zaradi testiranja sem naredil prototip samo škatle z vso strojno opremo, da vidim, če vse deluje po naročilu.
Običajno bi se ta projekt izvajal v večjem obsegu. Na primer: soba, hiša, tovarna, trgovina itd.
A očitno preden začnemo delati luknje v stenah (lepa rima). Najprej želimo preveriti, ali deluje. Za testiranje vam dejansko ni treba narediti škatle, vendar je vedno zabavno narediti nekaj obrti.
Tukaj je moj primer.
Priporočena:
Avtomobilski kramp senzorja pretoka zraka COVID-19: 5 korakov
Avtomobilski kramp senzorja pretoka zraka COVID-19: To je hitro razvijajoč se projekt … ta senzor je bil opuščen, ker nima montažnih lukenj ali enostavne metode za tesnjenje proti cevi. Projekt senzorja pretoka zraka je v teku: AFH55M12 Opis projekta iz Helpful Engineering Int
Gasilni aparat senzorja temperature in vlažnosti senzorja (Arduino UNO): 11 korakov
Samodejni gasilni aparat s senzorjem temperature in vlažnosti (Arduino UNO): Ta projekt je bil namenjen vsem v domovih ali podjetjih kot senzor temperature in vlažnosti, prikazan na LCD -prikazovalniku, ter senzor plamena, povezan z zvočnikom in vodno črpalko za gašenje. požar v nujnih primerih
Krmilnik Arduino HRV (domači izmenjevalnik zraka) z ekonomizatorjem zraka: 7 korakov (s slikami)
Krmilnik Arduino HRV (domači zračni izmenjevalec) z regulatorjem zraka: krmilnik HRV Arduino z ekonomizerjem zraka Moja zgodovina pri tem projektu je, da živim v Minnesoti in moje vezje je ocvrto na mojem LifeBreath 155Max HRV. Nisem hotel plačati 200 USD za novega. Vedno sem hotel nekaj z grehom ekonomizacije zraka
SMD SPAJANJE 101 - UPORABA VROČE PLOŠČE, VROČEGA ZRAKA ZRAKA, SMD STENCIL IN ROČNEGA LETLJENJA: 5 korakov
SMD SPAJANJE 101 | UPORABA VROČE PLOŠČE, VROČEGA ZRAKA ZRAKA, SMD STENCIL IN ROČNE LETNICE: Pozdravljeni! Spajkanje je dokaj enostavno …. Nanesite nekaj fluksa, segrejte površino in nanesite spajkanje.Toda pri spajkanju SMD komponent je potrebno nekaj spretnosti ter nekaj orodij in dodatkov. V tem navodilu vam bom pokazal svoje
Kdo je pri mojih vratih? Projekt PIR senzorja gibanja/senzorja dosega: 5 korakov
Kdo je pri mojih vratih? Projekt senzorja gibanja PIR/senzorja dosega: Naš projekt je namenjen zaznavanju gibanja prek PIR in senzorjev razdalje. Koda Arduino bo oddajala vizualni in zvočni signal, ki bo uporabniku povedal, da je nekdo v bližini. Koda MATLAB bo poslala e -poštni signal, ki bo uporabnika opozoril, da je nekdo v bližini. Ta naprava