Sadržaj:

Projekt zračnog senzora plina: 10 koraka
Projekt zračnog senzora plina: 10 koraka

Video: Projekt zračnog senzora plina: 10 koraka

Video: Projekt zračnog senzora plina: 10 koraka
Video: SCP ГОРКА vs CARTOON CAT Бруно! Горка SCP Пожиратель его съела? **Серия 3 SCP Горка** 2024, Prosinac
Anonim
Projekt zračnog senzora plina
Projekt zračnog senzora plina

Ugljikov monoksid i ugljični dioksid, također poznati kao CO i CO2. Plinovi koji su bez boje, mirisa, okusa i iskreno su opasni u visokim koncentracijama u zatvorenoj prostoriji. Ako živite, recimo u studentskoj sobi koja je loše izolirana, nema dobrog protoka zraka i iz nekog razloga toster stvara čudnu buku dok nazdravlja. Tada biste mogli doći u dodir s tim plinovima, a kada se to dogodi, nadajmo se da će završiti samo s malom glavoboljom, jer bi u velikoj koncentraciji mogao onesposobiti ili čak ubiti vas (iako vrlo rijetko).

Zato sam odlučio osmisliti ovaj projekt. Moja je ideja jednostavna, upotrijebite ventilatore za stvaranje protoka zraka. Dobar ulaz zraka i loš izlaz zraka, da tako kažem. Za dodatni uslužni program, dodao sam dodatni temperaturni senzor, gumb za ventilatore za ručno aktiviranje, kao i web stranicu za one koji vole vidjeti statistiku i/ili aktivirati ventilatore sa svog računala.

Kao student, roditelj, samac ili živo biće. Ovo je nešto što biste inače htjeli izbjeći dok živite u udobnosti vlastite kuće. To pomaže onima koji vole sebi olakšati život.

Pribor

  • Malina Pi 3+
  • Mini-usb punjač 5V/2.5A
  • Micro-sd kartica
  • Senzori

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatura)
  • 2 x 12V DC ventilator
  • 2 x 2n2222 tranzistora
  • LCD ekran 16*2
  • Tipkalo
  • MCP3008
  • Pretvarač razine Logi
  • Ethernet kabel (iz razloga postavljanja)

Korak 1: Postavljanje Raspberry Pi

Raspberry Pi postavljanje
Raspberry Pi postavljanje
Raspberry Pi postavljanje
Raspberry Pi postavljanje

Prije rada s Rpi -jem trebat će nam neki softver.

  • WinSCP ili FilleZilla (izborno ako želite prenijeti datoteke sa svog računala na Rpi)
  • Win32 disk ili Etcher (koji više volite)
  • Git ili MobaXterm (koji više volite)
  • Raspbian slika s radne površine

Prije nego što počnem, želio bih napomenuti da prilikom izrade ovog vodiča, kada odaberem program umjesto drugog, NE znači da ga preporučujem. Na primjer, volim koristiti etcher jer je više prilagođen korisnicima, ali Win32 ima mogućnost stvaranja sigurnosnih kopija. To je izvan mog sustava, počnimo.

Ako već imate Rpi koji je spojen na vašu WiFi mrežu, prijeđite na korak 3.

Prvo ćemo upotrijebiti Etcher za stavljanje Raspbian slike na vašu SD karticu. Prije nego što izvučemo sd karticu, promijenit ćemo neke "stvari" u datoteci cmdline.txt, koje se mogu pronaći na slici. Otvorite.txt datoteku -> Dodajte ovaj redak "ip = 169.254.10.1" (bez navodnika) na kraju retka (sve u jednom retku) -> Spremi datoteku

Drugo, napravite praznu mapu pod nazivom "ssh" u particiji za pokretanje (bez navodnika).

Nakon toga možete sigurno izbaciti Microsd i staviti ga u Rpi.

Razlog za teško kodirani statički IP je olakšavanje povezivanja na Rpi. Ako iz nekog razloga Rpi nema IP s DHCP -om, tada možete jednostavno koristiti statički IP.

Korak 2: Uspostavljanje veze i bežično povezivanje Rpi -a s lokalnom mrežom

Uspostavljanje veze i bežično povezivanje Rpi s lokalnom mrežom
Uspostavljanje veze i bežično povezivanje Rpi s lokalnom mrežom
Uspostavljanje veze i bežično povezivanje Rpi s lokalnom mrežom
Uspostavljanje veze i bežično povezivanje Rpi s lokalnom mrežom
Uspostavljanje veze i bežično povezivanje Rpi s lokalnom mrežom
Uspostavljanje veze i bežično povezivanje Rpi s lokalnom mrežom
Uspostavljanje veze i bežično povezivanje Rpi s lokalnom mrežom
Uspostavljanje veze i bežično povezivanje Rpi s lokalnom mrežom

Pokrenut ćemo Rpi -> spojiti ethernet kabel između računala i Rpi.

  1. Pokrenite Putty i ispunite ovo:

    • Naziv hosta (ili IP adresa): 169.254.10.1
    • Luka: 22
  2. Pojavljuje se terminal i upisujete zadano korisničko ime i lozinku:

    • Korisničko ime: pi
    • Lozinka: malina

Sada kada smo lokalno povezani s rpi -jem, želimo da Rpi ima vezu s vašim WiFi -jem.

  1. Dodatno: upišite "sudo raspi-config"
  2. Ovdje ćete morati promijeniti lozinku za korisnika pi (sigurnosni razlozi)
  3. Nakon toga idite na Opcije lokalizacije -> Promijeni vrijeme (odaberite ispravno) -> Zatim idite na Wifi zemlja -> odaberite državu.
  4. Zatvorite raspi-config i ponovno pokrenite sistem.
  5. Kad ste prijavljeni, privremeno se učinite root korisnikom -> sudo -i
  6. Napišite ovu naredbu za dodavanje vaše mreže u Rpi (kôd ispod popisa)

    • lozinka = "lozinka" (s navodnicima)
    • Ime mreže = "SSID"
    • Ne zaboravite upotrijebiti dvostruko >>! Važno!

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

Sada ponovno pokrenite sustav

Prilikom ponovnog povezivanja provjerite svoj IP upisivanjem:

ifconfig

i provjerite wlan0, pored inet.

Sada kada imamo internetsku vezu, napravimo "brzo" ažuriranje.

sudo apt ažuriranje

sudo apt dist -upgrade -y

Ovo bi moglo potrajati.

Korak 3: Senzor DS18B20 (temperatura)-1-žica

Senzor DS18B20 (temperatura)-1-žica
Senzor DS18B20 (temperatura)-1-žica
Senzor DS18B20 (temperatura)-1-žica
Senzor DS18B20 (temperatura)-1-žica

Sa svakim projektom uvijek će postojati nešto posebno što mora biti učinjeno ili inače neće uspjeti.

Ovoga puta imamo ga s temperaturnim senzorom DS18B20 koji zahtijeva 1-žicu, što neću objasniti zašto, ali ću objasniti kako to barem raditi.

Za to se moramo vratiti na raspi-config na Rpi, lijepom plavom ekranu.

  1. Idite na Opcije sučelja
  2. Odaberite 1-Wire i omogućite.

Gotovo…

Samo se šalim.

Sada ćemo morati prilagoditi /boot/config.txt

sudo nano /boot/config.txt

Dodajte ovaj redak pri dnu.

# Omogućite jednu žicu

dtoverlay = w1-gpio

Sada sudo ponovno pokrenite tu stvar i sada smo gotovi.

Da biste provjerili radi li, spojite senzor na Rpi, a zatim se vratite na terminal i upišite ovaj kôd (Pogledajte sljedeći korak Hardver o tome kako spojiti osjetnik temperature).

cd/sys/bus/w1/devices/w1_bus_master1

ls

Trebali biste vidjeti nešto s brojevima i slovima u tamnoplavoj boji gore lijevo, svakako napišite ovaj podatak za kasnije kada ćemo raditi s kodom iz githuba.

Ako iz nekog razloga ne radi, provjerite ovu vezu koja dublje ulazi u nju.

Korak 4: MCP3008 - Analogno mjerenje

MCP3008 - Analogno otkrivanje
MCP3008 - Analogno otkrivanje
MCP3008 - Analogno otkrivanje
MCP3008 - Analogno otkrivanje

Kako smo promijenili temperaturni osjetnik, moramo napraviti i neke promjene za ostale senzore budući da ih moramo čitati u analognim podacima. Ovdje gdje MCP3008 dobro dođe, moramo promijeniti i SPI sučelje.

sudo raspi-config

Idite na Opcije sučelja -> Odaberite SPI -> omogući.

Zatim Završi.

Korak 5: Hardver

Nismo u potpunosti završili s Rpi -jem, ali dovoljno da možemo početi graditi i sastavljati hardver.

Neki savjet je da prilikom izgradnje temeljito provjerite svoje veze kako biste bili sigurni da niste … razneli Rpi.

Također, na shemi ćete primijetiti da se neke komponente nalaze na njoj samo jednom iako ćemo raditi s više od 1 iste komponente. To samo znači da morate ponoviti isti postupak izgradnje te 1 komponente. Postoji 1 mala iznimka, senzori mq-x ne trebaju pretvarač dodatne razine ili MCP3008. Samo dodajte dodatni zeleni kabel (u pdf -u) u pretvarač razine i MCP3008.

Dodatno uređivanje: Ventilatori trebaju koristiti tranzistor kao prekidač. Koristim tranzistor 2n2222A za 1 ventilator, jer bi 2 ventilatora mogla biti jako opterećena.

Ako imate tranzistor koji može podnijeti veću struju nego dobro, preskočite posljednji dio ovog koraka.

Ako nemate takvog kao ja, morat ćete to učiniti ovako, 1 ventilator = 1 tranzistor, 2 ventilatora = 2 tranzistora i tako dalje (svaki ventilator ima svoj tranzistor + dioda kao u pdf -u).

Kasnije ćete u 7. koraku morati dodati neki kôd u app.py u backend_project: Git kod….

Korak 6: Stvaranje baze podataka Mariadb

Stvaranje baze podataka Mariadb
Stvaranje baze podataka Mariadb

Kao što naslov implicira, stvorit ćemo bazu podataka tako da imamo mjesto za pohranu naših podataka senzora.

Prvo, preuzmite Mariadb na Rpi.

sudo apt-get install mariadb-server

Nakon instalacije, koristimo ga.

korijen mysql -u

Lozinka je prazna pa nema ništa za upisivanje. Pritisni enter.

Omogućimo sada stvaranje korisnika.

CREATE USER 'user'@'%' IDENTIFICIRANO 'userdb';

OSTVARITE SVE PRIVILEGIJE NA *. * 'Korisniku'@'%' S OPCIJOM GRANTA;

FLUSH PRIVILEGIJE;

Pritisnite Ctrl + C za izlaz i brzo ponovno pokretanje usluge:

sudo usluga mysql ponovno pokretanje

Prijava s korisničkim imenom: korisnik i lozinka: userdb:

mysql -u korisnik -p

Vrijeme je za stvaranje baze podataka.

CREATE DATABASE project_db Zadani skup znakova utf8;

KORISTITE project_db

Napravite tablicu "historiek" (znači povijest).

IZRADI TABLICU AKO NE POSTOJI `historiek` (` id` INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NI NULL,` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PRIMARY KEY (` id`)) ENGINE = InnoDB;

I voila, baza podataka je napravljena.

Korak 7: Github kod i testiranje

Github kod i testiranje
Github kod i testiranje

Približavamo se kraju našeg projekta.

Prije nego što dobijemo kôd, moramo uvesti neke module u Rpi:

pip3 instalirajte Flask_MySQL

pip3 instalirajte flask-socketio

pip3 install -U flask -cors

pip3 instalirajte spidev

Sada nam je potreban kôd kako bi funkcionirao, upišite terminal:

git klon

Provjerite nalazi li se mapa s:

ls

Sada će vam trebati 2 terminala pa je zgodno desnom tipkom miša kliknuti terminal i kliknuti Dupliciranje sesija:

Idite na backend_project i temperature pomoću naredbe cd.

Prije nego pokrenemo programe u svrhu testiranja. Sjećate li se još 3. koraka s 1-žičnim senzorom u koji trebate zapisati neke brojeve? Bez brige ako imate, samo ponovno kratko pogledajte 3. korak.

Ove ćemo brojeve dodati kodu jer će morati znati točan senzor kada ga koristi.

Terminal s mapom temperature pronaći ćete app.py. Otvorit ćemo ga.

sudo nano app.py

Potražite funkciju koja se zove "def temperatuur ():", tamo ćete morati zamijeniti "**" brojevima koje ste napisali. U mom slučaju dobio bih ovaj red koda (svaki broj je jedinstven).

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

Vrijeme testiranja. Oba terminala u mapi backend_project i temperaturi, unesite:

python3 app.py

Sada se sjetite 5. koraka: hardver u koji trebate dodati kôd ako koristite više ventilatora i tranzistora?

Dobro, ako se ne vratite na korak 5.

Sada moramo dodati kod kao što sam spomenuo u app.py u backend_project. Da bih olakšao, napravio sam primjer toga u kodu. Svaki redak koda komentara koji ima "fan1" u sebi, raskomentirajte te retke i voila, sada možete koristiti 2 obožavatelja.

Ako želite koristiti više od 2 ventilatora, kopirajte i zalijepite isti kôd ispod njega, ali s drugim brojem. Nedostatak ovoga je više osobni rad za vas i manje dostupnih gpio.pina. Nema prednosti za koje ja znam.

Korak 8: Pokrenite kod pri pokretanju

Pokrenite kod pri pokretanju
Pokrenite kod pri pokretanju

Želimo da se ove 2 python skripte pokrenu u trenutku kad se naš Rpi podigne i u slučaju rušenja skripte, trebala bi se sama ponovo pokrenuti. Da bismo to učinili, napravit ćemo 2 usluge.

Da biste to učinili, upišite:

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

Kopirajte i zalijepite ovo radi temperature.service:

[Jedinica] Opis = Temperaturna usluga Nakon = višekorisnički cilj

[Usluga] Vrsta = jednostavno

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

Standardni ulaz = tty-force

Ponovno pokretanje = pri neuspjehu

RestartSec = 60s

[Instalirati]

Traži se = višekorisnički cilj

Zatvorite i učinite ponovo, ali tada za backend_project.service:

Prvi otvoreni tekst:

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

Zatim ponovno kopirajte i zalijepite:

[Jedinica] Opis = backend_project usluga

Nakon = višekorisnički cilj

[Servis]

Vrsta = jednostavno

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

Standardni ulaz = tty-force

Ponovno pokretanje = pri neuspjehu

RestartSec = 60s

[Instalirati]

Traži se = višekorisnički cilj

Spremi i zatvori.

Zadnji dio je upisivanje ovoga:

sudo systemctl daemon-reload

sudo systemctl enable temperature.service sudo ponovno podizanje sustava

Sada bi se naše 2 python skripte trebale automatski pokrenuti pri pokretanju.

Korak 9: Postavljanje web stranice

Kada ste preuzeli spremište, trebali ste nabaviti i mapu koja se zove front. Ovdje se nalazi sadržaj web stranice.

Prije nego što počnemo koristiti mapu, potreban nam je apache. Slijedite vodič za ovu vezu za apache.

Kad budete spremni. Idite na mjesto gdje se nalazi prednja mapa:

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

Zatim upišite:

sudo mv front/var/www/html

Kad to učinite, idite u html mapu, pripremite se za neki dosadan posao (moja greška).

cd/var/www/html/

zatim idite u prednju mapu i počnite premještati sve u html mapu.

primjer:

sudo mv css/var/www/html

Zatim izbrišite prednju mapu.

I sa svime smo gotovi.

Sretno:).

Korak 10: Izborno - minijaturni prototip

Izborno - minijaturni prototip
Izborno - minijaturni prototip
Izborno - minijaturni prototip
Izborno - minijaturni prototip

Iz razloga testiranja napravio sam prototip samo kutije sa svim hardverom unutra kako bih mogao vidjeti radi li sve po narudžbi.

Obično bi se ovaj projekt radio u većim razmjerima. Na primjer: soba, kuća, tvornica, trgovina i tako dalje …

Ali očito prije nego što počnemo praviti rupe u zidovima (lijepa rima). Prvo želimo vidjeti radi li samo. Za testiranje zapravo ne morate napraviti kutiju, ali uvijek je zabavno raditi neke zanate.

Evo mog primjera.

Preporučeni: