Sadržaj:

Projekt TheAir - senzora plina: 10 koraka
Projekt TheAir - senzora plina: 10 koraka

Video: Projekt TheAir - senzora plina: 10 koraka

Video: Projekt TheAir - senzora plina: 10 koraka
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Juli
Anonim
TheAir - Projekt senzora plina
TheAir - Projekt senzora plina

Ugljen -monoksid i ugljen -dioksid, poznati i 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 ovim 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 ideja je jednostavna, koristite ventilatore za stvaranje protoka zraka. Dobar vazduh unutra i loš vazduh, da tako kažem. Za dodatnu pomoć, dodao sam dodatni senzor temperature, dugme za ventilatore za ručno aktiviranje, kao i web stranicu za one koji vole vidjeti statistiku i/ili aktivirati ventilatore sa svog računara.

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

Supplies

  • Raspberry 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
  • Taster
  • MCP3008
  • Logi pretvarač nivoa
  • Ethernet kabel (iz razloga postavljanja)

Korak 1: Postavljanje Raspberry Pi

Raspberry Pi Setup
Raspberry Pi Setup
Raspberry Pi Setup
Raspberry Pi Setup

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

  • WinSCP ili FilleZilla (opcionalno ako želite prenijeti datoteke sa računara na Rpi)
  • Win32 disk ili Etcher (koji više volite)
  • Git ili MobaXterm (koji više volite)
  • Raspbian slika sa 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 prilagođeniji korisniku, ali Win32 ima mogućnost pravljenja sigurnosnih kopija. To je van mog sistema, počnimo.

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

Prvo ćemo koristiti 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 red "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 lako možete koristiti statički IP.

Korak 2: Uspostavljanje veze i povezivanje Rpi bežične veze 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čunara i Rpi.

  1. Pokrenite Putty i popunite 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 ponovo pokrenite sistem.
  5. Kada 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 liste)

    • lozinka = "lozinka" (sa navodnicima)
    • Ime mreže = "SSID"
    • Ne zaboravite koristiti dvostruki >>! Važno!

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

Sada ponovo pokrenite sistem

Prilikom ponovnog povezivanja provjerite svoj IP upisivanjem:

ifconfig

i provjerite wlan0, pored inet.

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

sudo apt update

sudo apt dist -upgrade -y

Ovo može potrajati.

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

Senzor DS18B20 (temperatura)-1-žični
Senzor DS18B20 (temperatura)-1-žični
Senzor DS18B20 (temperatura)-1-žični
Senzor DS18B20 (temperatura)-1-žični

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. Neću objašnjavati zašto, ali ću objasniti kako će barem raditi.

Za ovo 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…

Šalim se.

Sada ćemo morati prilagoditi /boot/config.txt

sudo nano /boot/config.txt

Dodajte ovu liniju pri dnu.

# Omogućite jednu žicu

dtoverlay = w1-gpio

Sada sudo ponovo pokrenite tu stvar i sada smo završili.

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

cd/sys/bus/w1/devices/w1_bus_master1

ls

Trebali biste vidjeti nešto s brojevima i slovima tamno plave boje 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 sensing
MCP3008 - Analogno sensing
MCP3008 - Analogno sensing
MCP3008 - Analogno sensing

Kako smo izvršili promjenu senzora temperature, takoer moramo napraviti neke promjene za ostale senzore jer 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 počnemo s izgradnjom i sastavljanjem hardvera.

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 proces izgradnje te 1 komponente. Postoji 1 mali izuzetak, senzorima mq-x nije potreban pretvarač dodatnog nivoa ili MCP3008. Samo dodajte dodatni zeleni kabel (u pdf -u) u pretvarač nivoa i MCP3008.

Dodatno uređivanje: Ventilatori moraju 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 od dobre, 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 koraku 7 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.

mysql -u korijen

Lozinka je prazna, pa ništa za pisanje. Pritisnite enter.

Kreirajmo korisnika sada.

CREATE USER 'user'@'%' IDENTIFIED BY 'userdb';

ODOBRI SVE PRIVILEGIJE NA *. * 'Korisniku'@'%' SA OPCIJOM GRANTA;

FLUSH PRIVILEGES;

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

sudo servis mysql ponovno pokretanje

Prijava sa 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;

USE project_db

Napravite tabelu "historiek" (znači istorija).

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

I eto, 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 install Flask_MySQL

pip3 instalirajte flask-socketio

pip3 install -U flask -cors

pip3 install spidev

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

git klon

Provjerite nalazi li se mapa sa:

ls

Sada će vam trebati 2 terminala pa je zgodno desnom tipkom miša kliknuti na terminal i kliknuti Duplicirane sesije:

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 gdje trebate zapisati neke brojeve? Bez brige ako imate, samo ponovo zavirite na brzinu u korak 3.

Ove ćemo brojeve dodati kodu jer će morati znati ispravan 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

Vreme testiranja. Oba terminala u fascikli backend_project i temperature, unesite:

python3 app.py

Sada se sjetite koraka 5: hardver gdje 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 ovoga u kodu. Svaki red koda komentara koji ima "fan1" u sebi, raskomentirajte te redove 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 lični rad za vas i manje dostupnih gpio.pina. Nema prednosti za koje ja znam.

Korak 8: Pokrenite kod pri pokretanju

Pokrenite kôd pri pokretanju
Pokrenite kôd pri pokretanju

Želimo da se ove 2 python skripte pokrenu onog trenutka kada se naš Rpi podigne i u slučaju rušenja skripte, ona bi se trebala sama 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

[Instaliraj]

WantedBy = 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 ponovo kopirajte i zalijepite:

[Jedinica] Opis = backend_project usluga

After = višekorisnički cilj

[Usluga]

Tip = jednostavan

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

[Instaliraj]

WantedBy = višekorisnički cilj

Sačuvaj i zatvori.

Zadnji dio je ovo:

sudo systemctl daemon-reload

sudo systemctl omogućiti temperature.service sudo ponovno podizanje sustava

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

Korak 9: Postavite web lokaciju

Kada ste preuzeli spremište, trebali ste nabaviti i fasciklu 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 fasciklu.

I završili smo sa svime.

Sretno:).

Korak 10: Opcionalno - minijaturni prototip

Opcionalno - minijaturni prototip
Opcionalno - minijaturni prototip
Opcionalno - minijaturni prototip
Opcionalno - 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 počnemo praviti rupe u zidovima (lijepa rima). Prvo želimo vidjeti funkcionira li samo. Za testiranje zapravo ne morate napraviti kutiju, ali uvijek je zabavno raditi neke zanate.

Evo mog primjera.

Preporučuje se: