Cuprins:

TheAir - Proiect senzor de gaz: 10 pași
TheAir - Proiect senzor de gaz: 10 pași

Video: TheAir - Proiect senzor de gaz: 10 pași

Video: TheAir - Proiect senzor de gaz: 10 pași
Video: Senzorul de gaz si repornirea alimentarii cu gaz a apartamentului 2024, Noiembrie
Anonim
TheAir - Proiect senzor de gaz
TheAir - Proiect senzor de gaz

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

Configurare Raspberry Pi
Configurare Raspberry Pi
Configurare Raspberry Pi
Configurare 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ă

Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală
Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală
Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală
Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală
Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală
Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală
Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală
Realizarea unei conexiuni și conectarea Rpi Wireless la rețeaua dvs. locală

Vom porni Rpi -> conectăm cablul Ethernet între computer și Rpi.

  1. Porniți Putty și completați acest lucru:

    • Nume gazdă (sau adresă IP): 169.254.10.1
    • Port: 22
  2. 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.

  1. Extra: introduceți „sudo raspi-config”
  2. Aici va trebui să schimbați parola pentru utilizatorul pi (motive de siguranță)
  3. Apoi accesați Opțiuni de localizare -> Modificare oră (alegeți-o pe cea corectă) -> Apoi accesați Wifi Country -> alegeți țara.
  4. Închideți raspi-config și reporniți.
  5. Când sunteți conectat, faceți-vă temporar utilizator root -> sudo -i
  6. 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

Senzor DS18B20 (temperatura) - 1 fir
Senzor DS18B20 (temperatura) - 1 fir
Senzor DS18B20 (temperatura) - 1 fir
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.

  1. Accesați Opțiunile de interfață
  2. 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

MCP3008 - Analog Sensing
MCP3008 - Analog Sensing
MCP3008 - Analog Sensing
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

Crearea unei baze de date Mariadb
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

Cod Github și testare
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

Rulați codul la pornire
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ă

Opțional - prototip în miniatură
Opțional - prototip în miniatură
Opțional - prototip în miniatură
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: