Innholdsfortegnelse:

TheAir - Gas Sensor Project: 10 trinn
TheAir - Gas Sensor Project: 10 trinn

Video: TheAir - Gas Sensor Project: 10 trinn

Video: TheAir - Gas Sensor Project: 10 trinn
Video: Обнаружение скрытого UAP? | Выжить в черной дыре с Ави Лоэбом Obnaruzheniye skrytogo UAP? Avi Loebom 2024, November
Anonim
TheAir - Gas Sensor Project
TheAir - Gas Sensor Project

Kullmonoksid og karbondioksid, også kjent som CO og CO2. Gasser som er fargeløse, luktfrie, smakløse og ærlig talt farlige når de er i høye konsentrasjoner i et lukket rom. Hvis du bor, si for eksempel i et studentrom som er dårlig isolert, ingen god luftstrøm og av en eller annen grunn lager brødristeren en merkelig støy mens du lager ristet brød. Da kan du komme i kontakt med disse gassene, og når det skjer, kan vi håpe at det bare ender med en liten hodepine, for i høy konsentrasjon kan det føre til at du blir uføre eller til og med kan drepe deg (selv om det er veldig sjelden).

Så jeg bestemte meg for å komme med dette prosjektet. Ideen min er enkel, bruk vifter for å lage en luftstrøm. God luft inn og dårlig luft ut så å si. For ekstra verktøy, la jeg til en ekstra temperatursensor, knapp for manuelle aktiveringsvifter og også et nettsted for de som liker å se statistikk og/eller aktivere vifter fra datamaskinen.

Som student, forelder, enslig person eller levende vesen. Dette er noe du vanligvis vil unngå når du bor i ditt eget hus. Dette hjelper de som liker å gjøre livet litt lettere.

Rekvisita

  • Raspberry Pi 3+
  • Mini-usb lader 5V/2,5A
  • Micro-sd-kort
  • Sensorer

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatur)
  • 2 x 12V DC vifte
  • 2 x 2n2222 transistorer
  • LCD 16*2 display
  • Trykknapp
  • MCP3008
  • Logi nivåomformer
  • Ethernet -kabel (av oppsettsgrunner)

Trinn 1: Oppsett av Raspberry Pi

Oppsett av bringebær Pi
Oppsett av bringebær Pi
Oppsett av bringebær Pi
Oppsett av bringebær Pi

Før vi arbeider med Rpi, trenger vi litt programvare.

  • WinSCP eller FilleZilla (valgfritt hvis du vil overføre filer fra datamaskinen til Rpi)
  • Win32 -plate eller Etcher (som du foretrekker mer)
  • Kitt eller MobaXterm (som du foretrekker mer)
  • Raspbian -bilde med skrivebordet

Før jeg begynner vil jeg nevne at når jeg lager denne opplæringen, når jeg velger et program fremfor det andre, IKKE betyr at jeg anbefaler det. For eksempel liker jeg å bruke etser fordi det er mer brukervennlig, men Win32 har mulighet til å ta sikkerhetskopier. Nå er det ute av systemet mitt, la oss begynne.

Hvis du allerede har en Rpi som er koblet til wifi -nettverket, går du til trinn 3.

Først skal vi bruke Etcher til å sette Raspbian -bildet på SD -kortet ditt. Nå før vi trekker ut sd -kortet, skal vi endre noen "ting" i cmdline.txt -filen, som du finner i bildet. Åpne.txt -filen -> Legg til denne linjen "ip = 169.254.10.1" (ingen anførselstegn) på slutten av linjen (alle på 1 linje) -> Lagre fil

For det andre, lag en tom mappe kalt "ssh" i oppstartspartisjonen (uten anførselstegn).

Etter det kan du trygt kaste ut Microsd og sette den i Rpi.

Grunnen til den hardkodede statiske IP -adressen er å gjøre det lettere å koble til Rpi. Hvis Rpi av en eller annen grunn ikke har en ip med DHCP, bruker du enkelt den statiske ip -en.

Trinn 2: Opprette en tilkobling og koble Rpi trådløst til ditt lokale nettverk

Opprette en tilkobling og koble Rpi trådløst til ditt lokale nettverk
Opprette en tilkobling og koble Rpi trådløst til ditt lokale nettverk
Opprette en tilkobling og koble Rpi trådløst til ditt lokale nettverk
Opprette en tilkobling og koble Rpi trådløst til ditt lokale nettverk
Opprette en tilkobling og koble Rpi trådløst til ditt lokale nettverk
Opprette en tilkobling og koble Rpi trådløst til ditt lokale nettverk
Opprette en tilkobling og koble Rpi trådløst til ditt lokale nettverk
Opprette en tilkobling og koble Rpi trådløst til ditt lokale nettverk

Vi skal starte opp Rpi -> koble ethernet -kabelen mellom datamaskinen og Rpi.

  1. Start Kitt og fyll ut dette:

    • Vertsnavn (eller IP -adresse): 169.254.10.1
    • Havn: 22
  2. En terminal dukker opp og du skriver inn standard brukernavn og passord:

    • Brukernavn: pi
    • Passord: bringebær

Nå som vi er koblet lokalt til rpi, vil vi at Rpi skal ha en forbindelse til wifi -en din.

  1. Ekstra: skriv inn "sudo raspi-config"
  2. Her må du endre passord for pi -bruker (sikkerhetsgrunner)
  3. Gå deretter til Lokaliseringsalternativer -> Endre tid (velg den riktige) -> Gå deretter til Wifi -land -> velg land.
  4. Lukk raspi-config og start på nytt.
  5. Når du er logget inn, må du midlertidig gjøre deg til root -bruker -> sudo -i
  6. Skriv denne kommandoen for å legge til nettverket ditt i Rpi (kode under listen)

    • passord = "passord" (med anførselstegn)
    • Navnettverk = "SSID"
    • Husk å bruke dobbelt >>! Viktig!

ekko "passord" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Start nå på nytt

Når du kobler til igjen, sjekker du IP -en din ved å skrive:

ifconfig

og sjekk wlan0, ved siden av inet.

Nå som vi har internettforbindelse, kan vi gjøre en "rask" oppdatering.

sudo apt oppdatering

sudo apt dist -upgrade -y

Dette kan ta litt tid.

Trinn 3: Sensor DS18B20 (temperatur)-1-leder

Sensor DS18B20 (temperatur)-1-leder
Sensor DS18B20 (temperatur)-1-leder
Sensor DS18B20 (temperatur)-1-leder
Sensor DS18B20 (temperatur)-1-leder

Med hvert prosjekt vil det alltid være noe spesielt som må gjøres, ellers fungerer det ikke øyeblikkelig.

Denne gangen har vi det med DS18B20 temperatursensor som krever 1-leder, som jeg ikke vil forklare hvorfor, men jeg skal forklare hvordan du får det til å fungere i det minste.

For dette må vi gå tilbake til raspi-config på Rpi, den fine blå skjermen.

  1. Gå til Grensesnittalternativer
  2. Velg 1-Wire og velg aktiver.

Ferdig…

Bare tuller.

Nå må vi justere /boot/config.txt

sudo nano /boot/config.txt

Legg til denne linjen nederst.

# Aktiver onewire

dtoverlay = w1-gpio

Nå starter du den tingen på nytt, og nå er vi ferdige.

For å kontrollere om det fungerer, koble sensoren til Rpi, gå deretter tilbake til terminalen og skriv inn denne koden (Se neste trinn Maskinvare om hvordan du kobler temperatursensoren).

cd/sys/buss/w1/devices/w1_bus_master1

ls

Du bør se noe med tall og bokstaver i mørkeblått øverst til venstre. Sørg for å skrive denne informasjonen til senere når vi skal jobbe med koden fra github.

Hvis det av en eller annen grunn ikke fungerer, sjekk denne lenken som går dypere inn i den.

Trinn 4: MCP3008 - Analog sensing

MCP3008 - Analog sensing
MCP3008 - Analog sensing
MCP3008 - Analog sensing
MCP3008 - Analog sensing

Da vi gjorde en endring for temperatursensoren, må vi også gjøre noen endringer for de andre sensorene siden vi trenger å lese dem i analoge data. Det er her MCP3008 er nyttig, vi må også endre SPI -grensesnittet.

sudo raspi-config

Gå til Grensesnittalternativer -> Velg SPI -> aktiver.

Deretter Fullfør.

Trinn 5: Maskinvare

Vi er ikke helt ferdige med Rpi, men nok til at vi kan begynne å bygge og sette sammen maskinvaren.

Noen råd er å sjekke forbindelsene dine grundig når du bygger for å sikre at du ikke … spreng Rpi.

I skjemaet vil du også legge merke til at noen komponenter bare er på den en gang, selv om vi skal jobbe med mer enn 1 av den samme komponenten. Det betyr bare at du må gjenta den samme prosessen med å bygge den ene komponenten. Det er 1 lite unntak, mq-x-sensorene trenger ikke en ekstra nivåomformer eller MCP3008. Bare legg til en ekstra grønn kabel (i pdf) til nivåomformeren og MCP3008.

Ekstra redigering: Viftene må bruke en transistor som bryter. Jeg bruker en 2n2222A transistor for 1 vifte, fordi 2 vifter kan være for tung.

Hvis du har en transistor som kan håndtere en større strøm så bra, hopp over den siste delen av dette trinnet.

Hvis du ikke har en som meg, må du gjøre det slik, 1 vifte = 1 transistor, 2 vifter = 2 transistorer, og så videre (hver vifte er sin egen transistor + diode som i pdf).

Du må også legge til noen kode til app.py i backend_project senere i trinn 7: Git -kode ….

Trinn 6: Opprette en Mariadb -database

Opprette en Mariadb -database
Opprette en Mariadb -database

Som tittelen tilsier, skal vi lage en database slik at vi har plass til å lagre sensordataene våre.

Første ting først, last ned Mariadb på Rpi.

sudo apt-get install mariadb-server

Etter installasjonen, la oss bruke den.

mysql -u root

Passordet er tomt, så ingenting å skrive. Trykk enter.

La oss opprette en bruker nå.

OPPRETT BRUKER 'bruker'@'%' IDENTIFISERT MED 'userdb';

TILDELE ALLE PRIVILEGER PÅ *. * TIL 'bruker'@'%' MED TILBUDSALTERNATIV;

FLUSH -PRIVILEGER;

Trykk Ctrl + C for å avslutte og gjøre en rask omstart av tjenesten:

sudo service mysql start på nytt

Logg inn med brukernavn: bruker og passord: userdb:

mysql -u bruker -p

På tide å lage databasen nå.

LAG DATABASE project_db STANDARDKARAKTER SETT utf8;

BRUK prosjekt_db

Lag et bord "historiek" (betyr historie).

LAG TABELL HVIS IKKE FESTER `historiek` (` id` INT IKKE NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NOT NULL,` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PRIMARY KEY (` id`)) ENGINE = InnoDB;

Og voila, databasen er laget.

Trinn 7: Github -kode og testing

Github -kode og testing
Github -kode og testing

Vi nærmer oss slutten på prosjektet.

Før vi får koden, må vi importere noen moduler til Rpi:

pip3 installere Flask_MySQL

pip3 installere flask-socketio

pip3 installere -U kolbe -kors

pip3 installer spidev

Nå trenger vi koden for å få den til å fungere, skriv inn terminalen:

git-klon

Sjekk om mappen er der med:

ls

Nå trenger du 2 terminaler, så det er praktisk å høyreklikke på terminalen og klikke Dupliser økter:

Gå til backend_project og temperatur ved hjelp av cd -kommandoen.

Nå før vi starter opp programmene for testformål. Husker du fremdeles trinn 3 med 1-leder sensoren der du må skrive ned noen tall? Ingen bekymringer hvis du har det, bare ta en rask titt på trinn 3 igjen.

Vi kommer til å legge disse tallene til koden fordi den må kjenne til riktig sensor når du bruker den.

Terminalen med temperaturmappen finner du app.py. Vi skal åpne den.

sudo nano app.py

Se etter funksjonen som kalles "def temperatur ():", der må du erstatte "**" med tallene du skrev opp. I mitt tilfelle ville jeg få den denne kodelinjen (hvert nummer er unikt).

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

Testtid. Begge terminalene i både backend_project og temperaturmappe, skriver:

python3 app.py

Husk nå trinn 5: maskinvare der du må legge til kode hvis du bruker flere vifter og transistorer?

Bra, hvis ikke gå tilbake til trinn 5.

Nå må vi legge til kode som jeg nevnte i app.py i backend_project. For å gjøre det lettere, laget jeg et eksempel på dette i koden. Hver linje med kommentarkode som har "fan1" i den, kommenter ikke disse linjene og voila, nå kan du bruke 2 fans.

Hvis du vil bruke mer enn bare 2 fans, kopier og lim inn den samme koden under den, men med et annet nummer. Ulempen med dette er mer personlig arbeid for deg og færre gpio.pins tilgjengelig. Det er ingen fordeler med dette som jeg vet om.

Trinn 8: Kjør kode ved oppstart

Kjør kode ved oppstart
Kjør kode ved oppstart

Vi vil at disse 2 python -skriptene skal kjøre i det øyeblikket Rpi -oppstarten starter, og i tilfelle et script skulle krasje, bør det starte på nytt av seg selv. For å gjøre dette skal vi lage 2 tjenester.

For å gjøre dette, skriv inn:

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

Kopier og lim inn dette for en temperatur. Service:

[Enhet] Beskrivelse = Temperatur Service Etter = multi-user.target

[Service] Type = enkel

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

StandardInput = tty-force

Start på nytt = ved feil

RestartSec = 60s

[Installere]

WantedBy = multi-user.target

Lukk og gjør igjen, men deretter for en backend_project.service:

Første åpne tekst:

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

Kopier og lim inn igjen:

[Enhet] Beskrivelse = backend_project Service

Etter = multi-user.target

[Service]

Type = enkel

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

StandardInput = tty-force

Start på nytt = ved feil

RestartSec = 60s

[Installere]

WantedBy = multi-user.target

Lagre og lukk.

Siste del er å skrive dette:

sudo systemctl daemon-reload

sudo systemctl aktiver temperatur.service sudo omstart

Nå skal våre 2 python -skript kjøres automatisk ved oppstart.

Trinn 9: Konfigurer nettsted

Da du lastet ned depotet, burde du også ha fått en mappe som heter front. Det er her innholdet er for nettstedet.

Først trenger vi apache før vi kan bruke mappen. Følg guiden på denne lenken for apache.

Når du er klar. Gå til der den fremre mappen er plassert:

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

Skriv deretter inn:

sudo mv front/var/www/html

Når det er gjort, gå til html -mappen, forbered deg på litt kjedelig arbeid (min feil).

cd/var/www/html/

gå deretter inn i den fremre mappen og begynn å flytte alt til html -mappen.

eksempel:

sudo mv css/var/www/html

Slett deretter den fremre mappen.

Og vi er ferdige med alt.

Lykke til:).

Trinn 10: Valgfritt - Miniatyrprototype

Valgfritt - Miniatyrprototype
Valgfritt - Miniatyrprototype
Valgfritt - Miniatyrprototype
Valgfritt - Miniatyrprototype

Av testhensyn lagde jeg en prototype av bare en eske med all maskinvaren inni, så jeg kan se om alt fungerer for å bestille.

Normalt vil dette prosjektet bli utført i større skala. For eksempel: et rom, et hus, en fabrikk, en butikk og så videre …

Men tydeligvis før vi begynner å lage hull i veggene (fint rim). Vi vil først se om det bare fungerer. Du trenger faktisk ikke lage en eske for testing, men det er alltid morsomt å lage litt.

Her er mitt eksempel.

Anbefalt: