Sadržaj:
- Supplies
- Korak 1: Postavljanje Raspberry Pi
- Korak 2: Uspostavljanje veze i povezivanje Rpi bežične veze s lokalnom mrežom
- Korak 3: Senzor DS18B20 (temperatura)-1-žica
- Korak 4: MCP3008 - Analogno mjerenje
- Korak 5: Hardver
- Korak 6: Stvaranje baze podataka Mariadb
- Korak 7: Github kod i testiranje
- Korak 8: Pokrenite kod pri pokretanju
- Korak 9: Postavite web lokaciju
- Korak 10: Opcionalno - minijaturni prototip
Video: Projekt TheAir - senzora plina: 10 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
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
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
Pokrenut ćemo Rpi -> spojiti ethernet kabel između računara i Rpi.
-
Pokrenite Putty i popunite ovo:
- Naziv hosta (ili IP adresa): 169.254.10.1
- Luka: 22
-
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.
- Dodatno: upišite "sudo raspi-config"
- Ovdje ćete morati promijeniti lozinku za korisnika pi (sigurnosni razlozi)
- Nakon toga idite na Opcije lokalizacije -> Promijeni vrijeme (odaberite ispravno) -> Zatim idite na Wifi zemlja -> odaberite državu.
- Zatvorite raspi-config i ponovo pokrenite sistem.
- Kada ste prijavljeni, privremeno se učinite root korisnikom -> sudo -i
-
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
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.
- Idite na Opcije sučelja
- 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
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
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
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
Ž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
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:
Pročitajte mjerač električne energije i plina (belgijski/holandski) i otpremite na Thingspeak: 5 koraka
Pročitajte mjerač električne energije i plina (belgijski/holandski) i prenesite na Thingspeak: Ako ste zabrinuti zbog svoje potrošnje energije ili ste samo štreber, vjerojatno biste htjeli vidjeti podatke sa svog novog digitalnog brojila na svom pametnom telefonu. projekt ćemo dobiti trenutne podatke od belgijskog ili holandskog digitalnog električara
Sprječavanje domaćeg curenja plina pomoću Arduina .: 3 koraka
Sprječavanje domaćeg curenja plina pomoću Arduina. U ovom uputstvu napravio sam prototip koji automatski zatvara gumb za plin u cilindru za LPG kada dođe do curenja plina. TNG je bez mirisa, a za miris se dodaje sredstvo po imenu Etil Merkaptan, tako da se može primijetiti kada dođe do curenja
IOT detektor curenja plina: 4 koraka
IOT detektor propuštanja plina: Zahtjevi1 - Nodemcu (ESP8266) 2 - Senzor dima (MQ135) 3 - Žice kratkospojnika (3)
Arduino alarmni sistem za otkrivanje plina: 6 koraka
Arduino alarmni sistem za detekciju gasa: Pozdrav svima! Upravo ću vam objasniti kako izgraditi Arduino alarmni sistem za detekciju plina u tinkercadu. Ovaj krug koristi senzor plina za otkrivanje ima li u blizini požara, dima ili curenja plina. Koristeći LCD i alarm, ovo kolo također
IoT detektor plina s Arduinom i Raspberry Pi: 5 koraka
IoT detektor plina s Arduinom i Raspberry Pi: U ovom uputstvu naučit ćete kako izgraditi IoT detektor plina koristeći Arduino, Raspberry Pi i MQ-5 senzor plina. Osim ovih dijelova, trebat će vam tri žice za spajanje Arduina na senzor plina. Kada to učinite, b