INHOUDSOPGAWE:

TheAir - Gas Sensor Project: 10 stappe
TheAir - Gas Sensor Project: 10 stappe

Video: TheAir - Gas Sensor Project: 10 stappe

Video: TheAir - Gas Sensor Project: 10 stappe
Video: “Yeah yantra kaise kam karta hai?” #littleglove #ashortaday #shorts #miniglovevlog 2024, November
Anonim
TheAir - Gas Sensor Project
TheAir - Gas Sensor Project

Koolstofmonoksied en koolstofdioksied, ook bekend as CO en CO2. Gasse wat kleurloos, reukloos, smaakloos en eerlik gevaarlik is in hoë konsentrasies in 'n geslote kamer. As u byvoorbeeld sê in 'n studentekamer wat erg geïsoleer is, geen goeie lugvloei het nie en die broodrooster om een of ander rede 'n vreemde geluid maak terwyl hy roosterbrood maak. Dan kan u met hierdie gasse in aanraking kom, en as dit gebeur, kan ons hoop dat dit net met 'n klein hoofpyn eindig, omdat dit in hoë konsentrasie u in staat sal stel of u selfs kan doodmaak (hoewel baie selde).

Daarom het ek besluit om met hierdie projek vorendag te kom. My idee is eenvoudig; gebruik waaiers om 'n lugvloei te maak. Goeie lug in en slegte lug uit so te sê. Vir ekstra hulpmiddels het ek 'n ekstra temperatuursensor, knoppie vir waaiers vir handmatige aktivering bygevoeg en ook 'n webwerf vir diegene wat graag statistieke wil sien en/of waaiers vanaf hul rekenaar wil aktiveer.

As student, ouer, enkel persoon of lewende wese. Dit is iets wat u gewoonlik wil vermy as u in die gemak van u eie huis woon. Dit help diegene wat daarvan hou om hul lewe 'n bietjie makliker te maak.

Voorrade

  • Framboos Pi 3+
  • Mini-usb-laaier 5V/2.5A
  • Mikro-sd kaart
  • Sensors

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatuur)
  • 2 x 12V DC waaier
  • 2 x 2n2222 transistors
  • LCD 16*2 skerm
  • Druk knoppie
  • MCP3008
  • Logi -vlakomskakelaar
  • Ethernet -kabel (om opstel redes)

Stap 1: Opstelling van Framboos Pi

Opstelling van framboos Pi
Opstelling van framboos Pi
Opstelling van framboos Pi
Opstelling van framboos Pi

Voordat u met die Rpi werk, benodig ons sagteware.

  • WinSCP of FilleZilla (opsioneel as u lêers van u rekenaar na die Rpi wil oordra)
  • Win32 -skyf of Etcher (wat u meer verkies)
  • Putty of MobaXterm (wat u meer verkies)
  • Raspbian -beeld met lessenaar

Voordat ek begin, wil ek noem dat wanneer ek hierdie tutoriaal maak, dit nie beteken dat ek dit aanbeveel as ek 'n program bo die ander kies nie. Ek hou byvoorbeeld van etser omdat dit meer gebruikersvriendelik is, maar Win32 het die opsie om rugsteun te maak. Dit is nou uit my stelsel, laat ons begin.

As u reeds 'n Rpi het wat aan u wifi -netwerk gekoppel is, gaan na stap 3.

Eerstens gaan ons Etcher gebruik om die Raspbian -prent op u SD -kaart te plaas. Voordat ons die sd -kaart uittrek, gaan ons 'dinge' in die cmdline.txt -lêer verander, wat in die prent gevind kan word. Maak die.txt -lêer oop -> Voeg hierdie reël "ip = 169.254.10.1" (geen aanhalingstekens) by aan die einde van die reël (alles op 1 reël) -> Stoor lêer

Maak tweedens 'n leë gids met die naam "ssh" in die opstartpartisie (sonder aanhalingstekens).

Daarna kan u die Microsd veilig uitwerp en in die Rpi sit.

Die rede vir die hard gekodeerde statiese IP is dat dit makliker is om aan te sluit op die Rpi. As die Rpi om een of ander rede nie 'n IP met DHCP het nie, gebruik u maklik die statiese IP.

Stap 2: Maak 'n verbinding en koppel Rpi Wireless aan u plaaslike netwerk

Maak 'n verbinding en verbind Rpi draadloos met u plaaslike netwerk
Maak 'n verbinding en verbind Rpi draadloos met u plaaslike netwerk
Maak 'n verbinding en verbind Rpi draadloos met u plaaslike netwerk
Maak 'n verbinding en verbind Rpi draadloos met u plaaslike netwerk
Maak 'n verbinding en verbind Rpi draadloos met u plaaslike netwerk
Maak 'n verbinding en verbind Rpi draadloos met u plaaslike netwerk
Maak 'n verbinding en verbind Rpi draadloos met u plaaslike netwerk
Maak 'n verbinding en verbind Rpi draadloos met u plaaslike netwerk

Ons gaan die Rpi begin -> verbind die ethernetkabel tussen die rekenaar en Rpi.

  1. Begin Putty en vul dit in:

    • Gasheernaam (of IP -adres): 169.254.10.1
    • Hawe: 22
  2. 'N Terminaal verskyn en u tik die standaard gebruikersnaam en wagwoord in:

    • Gebruikersnaam: pi
    • Wagwoord: framboos

Noudat ons plaaslik aan die rpi gekoppel is, wil ons hê dat die Rpi 'n verbinding met u wifi het.

  1. Ekstra: tik "sudo raspi-config" in
  2. Hier moet u wagwoord verander vir pi -gebruiker (veiligheidsredes)
  3. Gaan daarna na Lokaliseringsopsies -> Verander tyd (kies die regte een) -> Gaan dan na Wifi -land -> kies land.
  4. Sluit raspi-config en herlaai.
  5. As u aangemeld het, maak u tydelik 'n root -gebruiker -> sudo -i
  6. Skryf hierdie opdrag om u netwerk by die Rpi te voeg (kode hieronder lys)

    • password = "password" (met aanhalingstekens)
    • Naam netwerk = "SSID"
    • Onthou om dubbel >> te gebruik! Belangrik!

eggo "wagwoord" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Herlaai nou weer

As u weer koppel, kontroleer u IP deur te tik:

ifconfig

en kyk na wlan0, langs inet.

Noudat ons 'n internetverbinding het, kan ons 'n 'vinnige' opdatering doen.

sudo apt -opdatering

sudo apt dist -upgrade -y

Dit kan 'n rukkie neem.

Stap 3: Sensor DS18B20 (temperatuur)-1-draad

Sensor DS18B20 (temperatuur)-1-draads
Sensor DS18B20 (temperatuur)-1-draads
Sensor DS18B20 (temperatuur)-1-draads
Sensor DS18B20 (temperatuur)-1-draads

Met elke projek is daar altyd iets spesiaals wat gedoen moet word, anders werk dit nie 'n oomblik nie.

Hierdie keer het ons dit met die DS18B20 temperatuursensor wat 1-draad benodig, wat ek nie sal verduidelik nie, maar ek sal verduidelik hoe dit ten minste werk.

Hiervoor moet ons teruggaan na die raspi-config op die Rpi, die mooi blou skerm.

  1. Gaan na Interfacing -opsies
  2. Kies 1-Wire en kies aktiveer.

Klaar…

Ek grap net.

Nou moet ons /boot/config.txt aanpas

sudo nano /boot/config.txt

Voeg hierdie reël onderaan by.

# Aktiveer onewire

dtoverlay = w1-gpio

Nou herlaai die ding sudo en nou is ons klaar.

Om te kontroleer of dit werk, koppel die sensor aan die Rpi, gaan dan terug na die terminale en tik hierdie kode (sien die volgende stap Hardware oor hoe om temperatuursensor aan te sluit).

cd/sys/bus/w1/toestelle/w1_bus_master1

ls

U moet iets links met donkerblou syfers links bo sien. Maak seker dat u hierdie inligting later skryf, as ons met die kode van github werk.

As dit om een of ander rede nie werk nie, kyk na die skakel wat dieper ingaan.

Stap 4: MCP3008 - Analoog waarneming

MCP3008 - Analoog waarneming
MCP3008 - Analoog waarneming
MCP3008 - Analoog waarneming
MCP3008 - Analoog waarneming

Terwyl ons die temperatuursensor verander het, moet ons ook 'n paar veranderinge aanbring vir die ander sensors, aangesien ons dit in analoog data moet lees. Hier waar die MCP3008 handig te pas kom, moet ons ook die SPI -koppelvlak verander.

sudo raspi-config

Gaan na koppelvlakopsies -> Kies SPI -> aktiveer.

Dan klaar.

Stap 5: Hardeware

Ons is nie heeltemal klaar met die Rpi nie, maar genoeg sodat ons kan begin met die bou en saamstel van die hardeware.

'N Paar advies is om u verbindings deeglik na te gaan tydens die bou om seker te maak dat u nie … die Rpi opblaas nie.

In die skema sal u ook sien dat sommige komponente slegs een keer daarop is, al werk ons met meer as 1 van dieselfde komponent. Dit beteken net dat u dieselfde proses om die een komponent te bou, moet herhaal. Daar is 1 klein uitsondering; die mq-x-sensors benodig nie 'n ekstra vlakomskakelaar of MCP3008 nie. Voeg net 'n ekstra groen kabel (in pdf) by die vlakomskakelaar en MCP3008.

Ekstra wysiging: die waaiers moet 'n transistor as skakelaar gebruik. Ek gebruik 'n 2n2222A transistor vir 1 waaier, want 2 waaiers kan baie swaar wees.

As u 'n transistor het wat 'n groter stroom kan hanteer, kan u die laaste deel van hierdie stap oorslaan.

As u nie een soos ek het nie, moet u dit so doen, 1 waaier = 1 transistor, 2 waaiers = 2 transistors, ensovoorts (elke waaier het sy eie transistor + diode soos in die pdf).

U sal ook later in stap 7 'n kode by app.py moet voeg in backend_project: Git -kode ….

Stap 6: Skep 'n Mariadb -databasis

Skep 'n Mariadb -databasis
Skep 'n Mariadb -databasis

Soos die titel aandui, gaan ons 'n databasis skep sodat ons ons sensordata kan stoor.

Eerstens, laai Mariadb af op die Rpi.

sudo apt-get install mariadb-bediener

Na die installasie, laat ons dit gebruik.

mysql -u wortel

Wagwoord is leeg, so niks om in te tik nie. Druk enter.

Laat ons nou 'n gebruiker skep.

SKEP GEBRUIKER 'gebruiker'@'%' GEIDENTIFISEER DEUR 'userdb';

GEEN ALLE VOORREGTE AAN *. * AAN 'gebruiker'@'%' MET TOelaagopsie;

FLUSH VOORREGTE;

Druk Ctrl + C om die diens te verlaat en vinnig weer te begin:

sudo service mysql herbegin

Teken in met gebruikersnaam: gebruiker en wagwoord: userdb:

mysql -u gebruiker -p

Tyd om die databasis nou te skep.

SKEP DATABASIS project_db STANDAARDKARAKTERSTEL utf8;

GEBRUIK projek_db

Maak 'n tabel "historiek" (beteken geskiedenis).

SKEP TAFEL AS NIE 'historiek' ('id' INT NIE NULL AUTO_INCREMENT BESTAAN NIE, `sensorID` VARCHAR (5) NOT NULL,` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PRIMARY KEY (` id`)) ENGINE = InnoDB;

En voila, die databasis word gemaak.

Stap 7: Github -kode en toetsing

Github -kode en toetsing
Github -kode en toetsing

Ons is naby aan die einde van ons projek.

Voordat ons die kode kry, moet ons 'n paar modules in die Rpi invoer:

pip3 installeer Flask_MySQL

pip3 installeer flask-socketio

pip3 installeer -U flask -cors

pip3 installeer spidev

Nou het ons die kode nodig om dit te laat werk, tik die terminale in:

git-kloon

Kyk of die gids daar is met:

ls

Nou benodig u 2 terminale, so dit is handig om met die rechtermuisknop op die terminaal te klik en op Duplicate sessions te klik:

Gaan na backend_project en temperatuur met behulp van die cd -opdrag.

Nou voordat ons die programme begin vir toetsdoeleindes. Onthou u nog stap 3 met die 1-draadsensor waar u 'n paar syfers moet neerskryf? Moenie bekommerd wees nie, kyk net weer na stap 3.

Ons gaan hierdie getalle by die kode voeg, want dit sal die regte sensor moet ken wanneer u dit gebruik.

Die terminaal met die temperatuurmap vind u app.py. Ons gaan dit oopmaak.

sudo nano app.py

Soek die funksie wat "def temperatuur ():" genoem word, daar moet u die "**" vervang met die getalle wat u opgeskryf het. In my geval sou ek hierdie kodereël kry (elke nommer is uniek).

sensor_file_name = '/sys/devices/w1_bus_master1/28-0316a4be59ff/w1_slave

Toets tyd. Beide terminale in die backend_project- en temperatuurmap, tik:

python3 app.py

Onthou nou stap 5: hardeware waar u kode moet byvoeg as u meer waaiers en transistors gebruik?

Goed, indien nie, gaan terug na stap 5.

Nou moet ons kode byvoeg soos ek genoem het by app.py in backend_project. Om dit makliker te maak, het ek 'n voorbeeld hiervan in die kode gemaak. Elke reël met kommentaarkode wat 'fan1' bevat, kan die reëls nie opmerk nie en voila, nou kan u 2 aanhangers gebruik.

As u meer as twee aanhangers wil gebruik, kopieer en plak dieselfde kode daaronder, maar met 'n ander nommer. Nadeel hiervan is meer persoonlike werk vir u en minder gpio.pins beskikbaar. Daar is geen voordele hieraan waarvan ek weet nie.

Stap 8: voer kode uit tydens opstart

Begin kode by opstart
Begin kode by opstart

Ons wil hê dat hierdie 2 python -skrifte moet werk sodra ons Rpi opstart, en as 'n script sou verongeluk, moet dit weer vanself begin. Om dit te doen, gaan ons 2 dienste lewer.

Om dit te doen, tik:

sudo nano /etc/systemd/system/temperature.service

Kopieer en plak dit vir 'n temperatuur.diens:

[Eenheid] Beskrywing = Temperatuurdiens na = multi-user.target

[Diens] Tipe = eenvoudig

ExecStart =/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py

StandardInput = tty-force

Herbegin = by mislukking

RestartSec = 60s

[Installeer]

WantedBy = multi-user.target

Sluit en doen weer, maar dan vir 'n backend_project.service:

Eerste oop teks:

sudo nano /etc/systemd/system/backend_project.service

Kopieer en plak dan weer:

[Eenheid] Beskrywing = backend_project -diens

Na = multi-user.target

[Diens]

Tipe = eenvoudig

ExecStart =/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py

StandardInput = tty-force

Herbegin = by mislukking

RestartSec = 60s

[Installeer]

WantedBy = multi-user.target

Stoor en maak toe.

Die laaste deel is om dit te tik:

sudo systemctl daemon-herlaai

sudo systemctl aktiveer temperatuur.service sudo herlaai

Nou moet ons 2 python -skrifte outomaties loop tydens opstart.

Stap 9: Stel webwerf op

Toe u die bewaarplek afgelaai het, moes u ook 'n gids met die naam front gekry het. Dit is waar die inhoud van die webwerf is.

Eerstens het ons apache nodig voordat ons die gids kan gebruik. Volg die gids op hierdie skakel vir apache.

As jy gereed is. Gaan na waar die voorste gids geleë is:

cd /Documents /nmct-s2-project-1-TheryBrian

Tik dan:

sudo mv front/var/www/html

As dit klaar is, gaan u na die html -lêergids en berei u voor op vervelige werk (my skuld).

cd/var/www/html/

gaan dan in die voorste gids en begin alles na die html -gids skuif.

voorbeeld:

sudo mv css/var/www/html

Vee dan die voorste vouer uit.

En ons is klaar met alles.

Sterkte:).

Stap 10: Opsioneel - Miniatuurprototipe

Opsioneel - Miniatuurprototipe
Opsioneel - Miniatuurprototipe
Opsioneel - Miniatuurprototipe
Opsioneel - Miniatuurprototipe

Om toets redes het ek 'n prototipe gemaak van net 'n boks met al die hardeware binne, sodat ek kan sien of alles op bestelling werk.

Normaalweg sou hierdie projek op groter skaal gedoen word. Byvoorbeeld: 'n kamer, 'n huis, 'n fabriek, 'n winkel en so aan …

Maar duidelik voordat ons gate in die mure begin maak (mooi rym). Ons wil eers kyk of dit net werk. U hoef nie eintlik 'n boks te maak om te toets nie, maar dit is altyd lekker om 'n bietjie te maak.

Hier is my voorbeeld.

Aanbeveel: