Kazalo:

Projekt senzorja zraka - plina: 10 korakov
Projekt senzorja zraka - plina: 10 korakov

Video: Projekt senzorja zraka - plina: 10 korakov

Video: Projekt senzorja zraka - plina: 10 korakov
Video: FULL BUILD | Rebuilding A DESTROYED Porsche 911 Turbo! 2024, Julij
Anonim
Projekt zračnega senzorja plina
Projekt zračnega senzorja plina

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

Nastavitev Raspberry Pi
Nastavitev Raspberry Pi
Nastavitev Raspberry Pi
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

Vzpostavitev povezave in brezžična povezava Rpi z vašim lokalnim omrežjem
Vzpostavitev povezave in brezžična povezava Rpi z vašim lokalnim omrežjem
Vzpostavitev povezave in brezžična povezava Rpi z vašim lokalnim omrežjem
Vzpostavitev povezave in brezžična povezava Rpi z vašim lokalnim omrežjem
Vzpostavitev povezave in brezžična povezava Rpi z vašim lokalnim omrežjem
Vzpostavitev povezave in brezžična povezava Rpi z vašim lokalnim omrežjem
Vzpostavitev povezave in brezžična povezava Rpi z vašim lokalnim omrežjem
Vzpostavitev povezave in brezžična povezava Rpi z vašim lokalnim omrežjem

Zagnali bomo Rpi -> priklopili ethernetni kabel med računalnikom in Rpi.

  1. Začnite Putty in izpolnite to:

    • Ime gostitelja (ali naslov IP): 169.254.10.1
    • Pristanišče: 22
  2. 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.

  1. Dodatno: vnesite "sudo raspi-config"
  2. Tukaj boste morali spremeniti geslo za uporabnika pi (varnostni razlogi)
  3. Nato pojdite na Možnosti lokalizacije -> Spremeni čas (izberite pravega) -> Nato pojdite na Država Wifi -> izberite državo.
  4. Zaprite raspi-config in znova zaženite.
  5. Ko ste prijavljeni, začasno naredite root uporabnika -> sudo -i
  6. 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

Senzor DS18B20 (temperatura)-1-žilni
Senzor DS18B20 (temperatura)-1-žilni
Senzor DS18B20 (temperatura)-1-žilni
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.

  1. Pojdite na Možnosti vmesnika
  2. 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

MCP3008 - Analogno zaznavanje
MCP3008 - Analogno zaznavanje
MCP3008 - Analogno zaznavanje
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

Ustvarjanje zbirke podatkov Mariadb Datbase
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

Koda in testiranje Github
Koda in testiranje Github

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

Zaženi kodo ob zagonu
Zaženi 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

[email protected]

[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

Izbirno - miniaturni prototip
Izbirno - miniaturni prototip
Izbirno - miniaturni prototip
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: