Sadržaj:
- Pribor
- Korak 1: Postavljanje Raspberry Pi
- Korak 2: Uspostavljanje veze i bežično povezivanje Rpi -a 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: Postavljanje web stranice
- Korak 10: Izborno - minijaturni prototip
Video: Projekt zračnog senzora plina: 10 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
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
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
Pokrenut ćemo Rpi -> spojiti ethernet kabel između računala i Rpi.
-
Pokrenite Putty i ispunite 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 ponovno pokrenite sistem.
- Kad 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 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
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.
- Idite na Opcije sučelja
- 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
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
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
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
Ž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
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:
Povezivanje senzora plina s Arduinom: 4 koraka
Povezivanje senzora plina s Arduinom: Senzor dima MQ-2 osjetljiv je na dim i sljedeće zapaljive plinove: UNP, butan, propan, metan, alkohol, vodik. Otpor senzora različit je ovisno o vrsti plina. Senzor dima ima ugrađen potenciometar
Pročitajte mjerač električne energije i plina (belgijski/nizozemski) i prenesite na Thingspeak: 5 koraka
Pročitajte mjerač električne energije i plina (belgijski/nizozemski) i prenesite na Thingspeak: Ako ste zabrinuti zbog svoje potrošnje energije ili ste samo štreber, vjerojatno biste htjeli vidjeti podatke s vašeg novog digitalnog brojila na svom pametnom telefonu. projekta dobit ćemo trenutne podatke od belgijskog ili nizozemskog digitalnog električara
Slanje podataka-of-IOT-bežičnog-senzora temperature i vlažnosti-senzora-u-MySQL: 41 korak
Slanje-IOT-bežičnih-senzora temperature-i-vlažnosti-osjetnika-za-slanje-u-MySQL: predstavljanje NCD-ovog dugoročnog IoT osjetnika temperature i vlažnosti. S rasponom do 28 milja i bežičnom mrežnom arhitekturom, ovaj senzor prenosi podatke o vlažnosti (± 1,7%) i temperaturi (± 0,3 ° C) u intervalima koje definira korisnik, spavajući
SMART MAKE HATC - Domaća kontrola zračnog prometa s 4x RTL -SDR (50 USD): 7 koraka
SMART MAKE HATC - Domaća kontrola zračnog prometa s 4x RTL -SDR (50 USD): Dokaz koncepta niske cijene HATC - Domaća kontrola zračnog prometa Dolje je jednostavna zbirka informacija o prijemu zračnog prometa, poveznica nekog softvera koji će se koristiti i prijedlog dokaza koncepta hardverskog sustava
Metode otkrivanja razine vode Arduino pomoću ultrazvučnog senzora i Funduino senzora vode: 4 koraka
Metode otkrivanja razine vode Arduino pomoću ultrazvučnog senzora i senzora vode Funduino: U ovom projektu pokazat ću vam kako stvoriti jeftin detektor vode pomoću dvije metode: 1. Ultrazvučni senzor (HC-SR04) .2. Funduino senzor vode