Cuprins:
- Provizii
- Pasul 1: Configurarea Raspberry Pi
- Pasul 2: Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală
- Pasul 3: Senzor DS18B20 (temperatura) - 1 fir
- Pasul 4: MCP3008 - Analog Sensing
- Pasul 5: Hardware
- Pasul 6: Crearea unei baze de date Mariadb
- Pasul 7: Cod Github și testare
- Pasul 8: Rulați codul la pornire
- Pasul 9: Configurați site-ul web
- Pasul 10: Opțional - prototip în miniatură
Video: TheAir - Proiect senzor de gaz: 10 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Monoxid de carbon și dioxid de carbon, cunoscut și sub numele de CO și CO2. Gazele care sunt incolore, inodore, fără gust și sincer periculoase atunci când sunt în concentrații mari într-o cameră închisă. Dacă locuiți, spuneți, de exemplu, într-o cameră pentru studenți care este prost izolată, fără un flux de aer bun și, dintr-un anumit motiv, toasterul face un zgomot ciudat în timp ce face pâine prăjită. Apoi s-ar putea să intrați în contact cu aceste gaze și atunci când se întâmplă acest lucru, permiteți speranța că se termină doar cu o mică durere de cap, deoarece, în concentrație mare, vă poate incapacita sau chiar vă poate ucide (deși foarte rar).
Așa că am decis să vin cu acest proiect. Ideea mea este simplă, folosește ventilatoare pentru a crea un flux de aer. Aer bun în și aer rău în afară, ca să spunem așa. Pentru o utilitate suplimentară, am adăugat un senzor de temperatură suplimentar, un buton pentru ventilatoarele de activare manuală și, de asemenea, un site web pentru cei cărora le place să vadă statistici și / sau să activeze ventilatoarele de pe computerul lor.
Ca student, părinte, persoană singură sau ființă vie. Acesta este ceva pe care, în mod normal, ați dori să-l evitați când locuiți în confortul propriei case. Acest lucru îi ajută pe cei cărora le place să-și ușureze viața.
Provizii
- Raspberry Pi 3+
- Mini-încărcător USB 5V / 2.5A
- Card micro-sd
-
Senzori
- MQ-7 (CO)
- MQ-135 (CO2)
- DS18B20 (temperatura)
- 2 x 12V DC ventilator
- 2 tranzistori 2n2222
- Afișaj LCD 16 * 2
- Apasa butonul
- MCP3008
- Convertor de nivel Logi
- Cablu Ethernet (din motive de configurare)
Pasul 1: Configurarea Raspberry Pi
Înainte de a lucra cu Rpi, vom avea nevoie de software.
- WinSCP sau FilleZilla (opțional dacă doriți să transferați fișiere de pe computer pe Rpi)
- Disc Win32 sau Etcher (pe care îl preferați mai mult)
- Putty sau MobaXterm (pe care îl preferați mai mult)
- Imagine Raspbian cu desktop
Înainte de a începe, aș dori să menționez că atunci când fac acest tutorial, atunci când aleg un program peste celălalt, NU înseamnă că îl recomand. De exemplu, îmi place să folosesc etcher pentru că este mai ușor de utilizat, dar Win32 are opțiunea de a face copii de rezervă. Acum, asta e în afara sistemului meu, să începem.
Dacă aveți deja un Rpi conectat la rețeaua dvs. wifi, treceți la pasul 3.
Mai întâi vom folosi Etcher pentru a pune imaginea Raspbian pe cardul SD. Acum, înainte de a scoate cardul SD, vom schimba câteva „chestii” din fișierul cmdline.txt, care pot fi găsite în imagine. Deschideți fișierul.txt -> Adăugați această linie "ip = 169.254.10.1" (fără ghilimele) la sfârșitul liniei (toate pe 1 linie) -> Salvați fișierul
În al doilea rând creați un folder gol numit „ssh” în partiția de boot (fără ghilimele).
După aceea, puteți scoate în siguranță Microsd-ul și îl puteți pune în Rpi.
Motivul IP-ului static codificat este de a face mai ușoară conectarea la Rpi. Dacă, dintr-un anumit motiv, Rpi nu are un IP cu DHCP, atunci utilizați cu ușurință ip-ul static.
Pasul 2: Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală
Vom porni Rpi -> conectăm cablul Ethernet între computer și Rpi.
-
Porniți Putty și completați acest lucru:
- Nume gazdă (sau adresă IP): 169.254.10.1
- Port: 22
-
Apare un terminal și introduceți numele de utilizator și parola implicite:
- Nume utilizator: pi
- Parolă: zmeură
Acum, că suntem conectați local la rpi, vrem ca Rpi să aibă o conexiune la wifi.
- Extra: introduceți „sudo raspi-config”
- Aici va trebui să schimbați parola pentru utilizatorul pi (motive de siguranță)
- Apoi accesați Opțiuni de localizare -> Modificare oră (alegeți-o pe cea corectă) -> Apoi accesați Wifi Country -> alegeți țara.
- Închideți raspi-config și reporniți.
- Când sunteți conectat, faceți-vă temporar utilizator root -> sudo -i
-
Scrieți această comandă pentru a vă adăuga rețeaua la Rpi (codul de mai jos)
- parola = "parola" (cu ghilimele)
- Denumire rețea = "SSID"
- Nu uitați să folosiți dublu >>! Important!
ecou „parolă” | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Acum reporniți din nou
Când vă reconectați, verificați ip-ul dvs. tastând:
ifconfig
și verificați wlan0, lângă inet.
Acum că avem conexiune la internet, să facem o actualizare „rapidă”.
actualizare sudo apt
sudo apt dist-upgrade -y
Acest lucru ar putea dura ceva timp.
Pasul 3: Senzor DS18B20 (temperatura) - 1 fir
Cu fiecare proiect, va exista întotdeauna acel ceva special care trebuie făcut, altfel nu va funcționa moment.
De data aceasta îl avem cu senzorul de temperatură DS18B20 care necesită 1 fir, ceea ce nu vă voi explica de ce, dar vă voi explica cel puțin cum să funcționeze.
Pentru aceasta trebuie să ne întoarcem la raspi-config pe Rpi, frumosul ecran albastru.
- Accesați Opțiunile de interfață
- Alegeți 1-Wire și alegeți activate.
Terminat…
Glumeam.
Acum va trebui să ajustăm /boot/config.txt
sudo nano /boot/config.txt
Adăugați această linie în partea de jos.
# Activați onewire
dtoverlay = w1-gpio
Acum reporniți sudo acel lucru și acum am terminat.
Pentru a verifica dacă funcționează, conectați senzorul la Rpi, apoi reveniți la terminal și tastați acest cod (Vedeți pasul următor Hardware despre cum să conectați senzorul de temperatură).
cd / sys / bus / w1 / devices / w1_bus_master1
eu sunt
Ar trebui să vedeți ceva cu cifre și litere în albastru închis în partea stângă sus, asigurați-vă că scrieți această informație pentru mai târziu, când vom lucra cu codul de la github.
Dacă din anumite motive nu funcționează, verificați acest link care merge mai adânc în el.
Pasul 4: MCP3008 - Analog Sensing
Pe măsură ce am făcut o schimbare pentru senzorul de temperatură, trebuie să facem și câteva modificări pentru ceilalți senzori, deoarece trebuie să citim datele analogice. În acest caz, MCP3008 este util, trebuie să schimbăm și interfața SPI.
sudo raspi-config
Mergeți la Opțiuni de interfață -> Selectați SPI -> activați.
Apoi Termină.
Pasul 5: Hardware
Nu am terminat în totalitate cu Rpi, ci suficient pentru a putea începe să construim și să punem împreună hardware-ul.
Unele sfaturi sunt să vă verificați cu atenție conexiunile atunci când construiți pentru a vă asigura că nu … aruncați în aer Rpi.
De asemenea, în Schematic, veți observa că unele componente sunt pe el o singură dată, chiar dacă vom lucra cu mai mult de 1 din aceeași componentă. Înseamnă doar că trebuie să repetați același proces de construire a acelei componente. Există o mică excepție, senzorii mq-x nu au nevoie de un convertor de nivel suplimentar sau MCP3008. Doar adăugați un cablu verde suplimentar (în pdf) la convertorul de nivel și MCP3008.
Editare suplimentară: fanii trebuie să utilizeze un tranzistor ca întrerupător. Folosesc un tranzistor 2n2222A pentru 1 ventilator, deoarece 2 ventilatoare ar putea fi o sarcină prea mare.
Dacă aveți un tranzistor care poate gestiona un curent mai mare, atunci bine, săriți ultima parte a acestui pas.
Dacă nu aveți unul ca mine, atunci va trebui să faceți acest lucru, 1 ventilator = 1 tranzistor, 2 ventilatoare = 2 tranzistori și așa mai departe (fiecare ventilator are propriul tranzistor + diodă ca în pdf).
De asemenea, va trebui să adăugați un anumit cod la app.py în backend_project mai târziu la Pasul 7: Cod Git….
Pasul 6: Crearea unei baze de date Mariadb
După cum sugerează titlul, vom crea o bază de date, astfel încât să avem loc pentru stocarea datelor senzorilor noștri.
Mai întâi, descărcați Mariadb pe Rpi.
sudo apt-get install mariadb-server
După instalare, să o folosim.
mysql -u rădăcină
Parola este goală, deci nimic de scris. Apasa Enter.
Să creăm un utilizator acum.
CREAȚI USER „utilizator” @ „%” IDENTIFICAT DE „userdb”;
ACORDAȚI TOATE PRIVILEGIILE ACTIVATE *. * CĂTRE „utilizator” @ „%” CU OPȚIUNE DE ACORDARE;
PRIVILEGII DE FLUSH;
Apăsați Ctrl + C pentru a ieși și a reporni rapid serviciul:
sudo service mysql restart
Autentificare cu nume de utilizator: utilizator și parolă: userdb:
mysql -u user -p
Este timpul să creați baza de date acum.
CREATE DATABASE project_db SET DE CARACTER DEFAULT utf8;
USE project_db
Creați un tabel „historiek” (înseamnă istorie).
CREAȚI TABELUL DACĂ NU EXISTĂ `historiek` (` id` INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NOT NULL,` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, KEY PRIMARY (` id`)) MOTOR = InnoDB;
Și voila, baza de date este făcută.
Pasul 7: Cod Github și testare
Ne apropiem de finalul proiectului nostru.
Înainte de a obține codul, va trebui să importăm câteva module în Rpi:
pip3 instalează Flask_MySQL
pip3 instalează flask-socketio
pip3 instalează -U balonul-cors
pip3 instalează spidev
Acum avem nevoie de cod pentru a funcționa, tastați terminalul:
git clone
Verificați dacă folderul este acolo cu:
eu sunt
Acum veți avea nevoie de 2 terminale, așa că este la îndemână să faceți clic dreapta pe terminal și să faceți clic pe Duplicare sesiuni:
Accesați backend_project și temperature folosind comanda cd.
Acum, înainte de a porni programele în scopuri de testare. Vă mai amintiți pasul 3 cu senzorul cu 1 fir unde trebuie să scrieți câteva numere? Nu vă faceți griji dacă aveți, doar aruncați o privire rapidă la pasul 3 din nou.
Vom adăuga aceste numere la cod, deoarece va trebui să știe senzorul corect atunci când îl utilizați.
Terminalul cu folderul de temperatură, veți găsi app.py. O vom deschide.
sudo nano app.py
Căutați funcția care se numește "def temperatuur ():", acolo va trebui să înlocuiți "**" cu numerele pe care le-ați scris. În cazul meu, aș obține această linie de cod (fiecare număr este unic).
sensor_file_name = '/ sys / devices / w1_bus_master1 / 28-0316a4be59ff / w1_slave
Timp de testare. Ambele terminale din backend_project și folderul de temperatură, tip:
python3 app.py
Amintiți-vă acum pasul 5: hardware unde trebuie să adăugați cod dacă utilizați mai multe ventilatoare și tranzistoare?
Bine, dacă nu, reveniți la pasul 5.
Acum trebuie să adăugăm cod așa cum am menționat în app.py în backend_project. Pentru a ușura, am făcut un exemplu în cod. Fiecare linie de cod de comentariu care conține „fan1”, decomentează acele linii și voilă, acum poți folosi 2 fani.
Dacă doriți să utilizați mai mult decât doar 2 fani, copiați și inserați același cod sub acesta, dar cu un număr diferit. Dezavantajul este o muncă mai personală pentru dvs. și mai puține gpio.pins disponibile. Nu există avantaje pe care să le cunosc.
Pasul 8: Rulați codul la pornire
Vrem ca aceste 2 scripturi python să ruleze în momentul în care Rpi-ul nostru pornește și în cazul în care un script se va prăbuși, acesta ar trebui să repornească singur. Pentru a face acest lucru vom face 2 servicii.
Pentru a face acest lucru, tastați:
sudo nano /etc/systemd/system/temperature.service
Copiați și lipiți acest lucru pentru o temperatură.
[Unitate] Descriere = Temperatură service după = multi-user.target
[Service] Type = simplu
ExecStart = / usr / bin / python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py
StandardInput = tty-force
Restart = la eșec
RestartSec = 60s
[Instalare]
WantedBy = multi-user.target
Închideți și faceți din nou, dar apoi pentru un backend_project.service:
Primul text deschis:
sudo nano /etc/systemd/system/backend_project.service
Apoi copiați din nou și lipiți:
[Unitate] Descriere = Serviciu backend_project
După = multi-user.target
[Serviciu]
Tipul = simplu
ExecStart = / usr / bin / python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py
StandardInput = tty-force
Restart = la eșec
RestartSec = 60s
[Instalare]
WantedBy = multi-user.target
Salveaza si inchide.
Ultima parte este tastarea acestui:
sudo systemctl daemon-reload
sudo systemctl activate temperature.service sudo reboot
Acum, cele două scripturi Python ar trebui să ruleze automat la pornire.
Pasul 9: Configurați site-ul web
Când ați descărcat depozitul, ar fi trebuit să obțineți și un folder numit front. Aici se află conținutul site-ului.
Mai întâi avem nevoie de apache înainte de a putea folosi folderul. Urmați ghidul de pe acest link pentru apache.
Cand esti gata. Mergeți la locul unde se află folderul frontal:
cd / Documents / nmct-s2-project-1-TheryBrian
Apoi tastați:
sudo mv front / var / www / html
După ce ați terminat, mergeți la folderul html, pregătiți-vă pentru o muncă obositoare (vina mea).
cd / var / www / html /
apoi intrați în folderul din față și începeți să mutați totul în folderul html.
exemplu:
sudo mv css / var / www / html
Apoi ștergeți folderul frontal.
Și am terminat cu tot.
Noroc:).
Pasul 10: Opțional - prototip în miniatură
Din motive de testare, am realizat un prototip de doar o cutie cu tot hardware-ul din interior, astfel încât să pot vedea dacă toate lucrurile funcționează la comandă.
În mod normal, acest proiect ar fi realizat pe o scară mai mare. De exemplu: o cameră, o casă, o fabrică, un magazin și așa mai departe …
Dar, evident, înainte de a începe să facem găuri în pereți (rimă frumoasă). Mai întâi vrem să vedem dacă funcționează. De fapt, nu trebuie să faceți o cutie pentru testare, dar este întotdeauna distractiv să faceți niște lucrări.
Iată exemplul meu.
Recomandat:
Interfațarea senzorului de gaz cu Arduino: 4 pași
Interfațarea senzorului de gaz cu Arduino: Senzorul de fum MQ-2 este sensibil la fum și la următoarele gaze inflamabile: GPL, butan, propan, metan, alcool, hidrogen. Rezistența senzorului este diferită în funcție de tipul de gaz. Senzorul de fum are un potențiometru încorporat
Limitator Arduino RPM pentru motor pe gaz: 5 pași
Limitator RPM Arduino pentru motor pe gaz: demonstrație Youtube Acesta este pentru înlocuirea unui regulator pentru limitarea vitezei unui motor pe benzină. Acest limitator RPM poate fi comutat la 3 setări diferite din mers. Am instalat acest lucru pe un singur cilindru, motor Briggs și Stratton și am folosit un Ardu
Construirea unui Cubesat cu un senzor Arduino și gaz natural (MQ-2): 5 pași
Construirea unui Cubesat cu un senzor Arduino și gaz natural (MQ-2): Scopul nostru a fost să realizăm un cubesat de succes care să poată detecta gazul din atmosferă
Senzor de gaz IoT: 7 pași
Senzor de gaz IoT: îmi doream să creez un senzor de gaz care să detecteze scurgerile de gaz din casă. Utilizarea practică a acestuia pentru a vă asigura că nu ați lăsat soba aprinsă fără foc, rezultând otrăvirea cu gaz. O altă utilizare poate fi să vă asigurați că nu ați iubit
Senzor de gaz Arduino: 5 pași
Senzor de gaz Arduino: Acest senzor de gaz va permite utilizatorului să măsoare gaze precum monoxidul de carbon și metanul, precum și gazele inflamabile și să acționeze ca un etilotest