Indholdsfortegnelse:

TheAir - Gas Sensor Project: 10 trin
TheAir - Gas Sensor Project: 10 trin

Video: TheAir - Gas Sensor Project: 10 trin

Video: TheAir - Gas Sensor Project: 10 trin
Video: Arduino Tutorial for Beginners 10 - Read from Photosensitive Sensor,Gas Sensor,Microphone Sensor 2024, November
Anonim
TheAir - Gas Sensor Project
TheAir - Gas Sensor Project

Kulilte og kuldioxid, også kendt som CO og CO2. Gasser, der er farveløse, lugtløse, smagløse og ærligt talt farlige, når de er i høje koncentrationer i et lukket rum. Hvis du bor, siger f.eks. I et studieværelse, der er dårligt isoleret, ingen god luftstrøm og af en eller anden grund laver brødristeren en underlig støj, mens du laver toast. Så kan du komme i kontakt med disse gasser, og når det sker, lader vi håbe, at det kun ender med en lille hovedpine, fordi det i høj koncentration kan invalidere eller endda dræbe dig (selvom det meget sjældent er).

Så jeg besluttede at komme med dette projekt. Min idé er enkel, brug ventilatorer til at lave en luftstrøm. God luft ind og dårlig luft ud så at sige. For ekstra hjælp tilføjede jeg en ekstra temperatursensor, knap til manuelle aktiveringsventilatorer og også et websted for dem, der kan lide at se statistik og/eller aktivere fans fra deres computer.

Som elev, forælder, enlig person eller levende væsen. Dette er noget, du normalt gerne vil undgå, når du bor i dit eget hus. Dette hjælper dem, der kan lide at gøre deres liv lidt lettere.

Forbrugsvarer

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

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatur)
  • 2 x 12V DC blæser
  • 2 x 2n2222 transistorer
  • LCD 16*2 display
  • Trykknap
  • MCP3008
  • Logi -niveauomformer
  • Ethernet -kabel (af opsætningsgrunde)

Trin 1: Opsætning af Raspberry Pi

Opsætning af hindbær Pi
Opsætning af hindbær Pi
Opsætning af hindbær Pi
Opsætning af hindbær Pi

Inden vi arbejder med Rpi, skal vi bruge noget software.

  • WinSCP eller FilleZilla (valgfrit, hvis du vil overføre filer fra din computer til Rpi)
  • Win32 -disk eller Etcher (som du foretrækker mere)
  • Kitt eller MobaXterm (som du foretrækker mere)
  • Raspbian -billede med skrivebordet

Inden jeg begynder vil jeg gerne nævne, at når jeg laver denne tutorial, når jeg vælger et program frem for det andet, betyder det IKKE, at jeg anbefaler det. For eksempel kan jeg godt lide at bruge ætser, fordi mere brugervenligt, men Win32 har mulighed for at lave sikkerhedskopier. Nu er det ude af mit system, lad os begynde.

Hvis du allerede har en Rpi, der er forbundet til dit wifi -netværk, skal du springe til trin 3.

Først skal vi bruge Etcher til at sætte Raspbian -billedet på dit sd -kort. Nu før vi trækker sd -kortet ud, skal vi ændre nogle "ting" i cmdline.txt -filen, som kan findes i billedet. Åbn.txt -filen -> Tilføj denne linje "ip = 169.254.10.1" (ingen anførselstegn) i slutningen af linjen (alle på 1 linje) -> Gem fil

For det andet skal du lave en tom mappe kaldet "ssh" i boot-partitionen (uden anførselstegn).

Derefter kan du sikkert skubbe Microsd ud og sætte den i Rpi.

Grunden til den hårdt kodede statiske IP er at gøre det lettere at oprette forbindelse til Rpi. Hvis Rpi af en eller anden grund ikke har en ip med DHCP, kan du nemt bruge den statiske ip.

Trin 2: Opret en forbindelse og tilslutning af Rpi trådløst til dit lokale netværk

Oprettelse af en forbindelse og tilslutning af Rpi trådløst til dit lokale netværk
Oprettelse af en forbindelse og tilslutning af Rpi trådløst til dit lokale netværk
Oprettelse af en forbindelse og tilslutning af Rpi trådløst til dit lokale netværk
Oprettelse af en forbindelse og tilslutning af Rpi trådløst til dit lokale netværk
Oprettelse af forbindelse og tilslutning af Rpi trådløst til dit lokale netværk
Oprettelse af forbindelse og tilslutning af Rpi trådløst til dit lokale netværk
Oprettelse af en forbindelse og tilslutning af Rpi trådløst til dit lokale netværk
Oprettelse af en forbindelse og tilslutning af Rpi trådløst til dit lokale netværk

Vi vil starte Rpi -> tilslut ethernet -kablet mellem computer og Rpi.

  1. Start Kitt og udfyld dette:

    • Værtsnavn (eller IP -adresse): 169.254.10.1
    • Havn: 22
  2. En terminal dukker op, og du indtaster standardbrugernavn og adgangskode:

    • Brugernavn: pi
    • Adgangskode: hindbær

Nu hvor vi er forbundet lokalt til rpi, ønsker vi, at Rpi har forbindelse til din wifi.

  1. Ekstra: indtast "sudo raspi-config"
  2. Her skal du ændre adgangskode af pi -bruger (sikkerhedsmæssige årsager)
  3. Gå derefter til Lokaliseringsindstillinger -> Skift tid (vælg den korrekte) -> Gå derefter til Wifi -land -> vælg land.
  4. Luk raspi-config og genstart.
  5. Når du er logget ind, skal du midlertidigt gøre dig selv root -bruger -> sudo -i
  6. Skriv denne kommando for at føje dit netværk til Rpi (kode nedenfor liste)

    • password = "password" (med anførselstegn)
    • Navn netværk = "SSID"
    • Husk at bruge dobbelt >>! Vigtigt!

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

Genstart nu igen

Når du opretter forbindelse igen, skal du kontrollere din ip ved at skrive:

ifconfig

og tjek wlan0, ved siden af inet.

Nu hvor vi har internetforbindelse, kan vi lave en "hurtig" opdatering.

sudo apt opdatering

sudo apt dist -upgrade -y

Dette kan tage noget tid.

Trin 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 projekt vil der altid være noget særligt, der skal gøres, ellers fungerer det ikke øjeblikket.

Denne gang har vi det med DS18B20 temperatursensor, der kræver 1-leder, som jeg ikke vil forklare hvorfor, men jeg vil forklare, hvordan det får det til at fungere i det mindste.

Til dette skal vi gå tilbage til raspi-config på Rpi, den flotte blå skærm.

  1. Gå til grænsefladeindstillinger
  2. Vælg 1-Wire, og vælg aktiver.

Færdig…

Bare for sjov.

Nu skal vi justere /boot/config.txt

sudo nano /boot/config.txt

Tilføj denne linje nederst.

# Aktiver onewire

dtoverlay = w1-gpio

Nu genstart sudo den ting, og nu er vi færdige.

For at kontrollere, om det virker, skal du slutte sensoren til Rpi og derefter gå tilbage til terminalen og indtaste denne kode (Se næste trin Hardware om tilslutning af temperatursensor).

cd/sys/bus/w1/devices/w1_bus_master1

ls

Du skulle se noget med tal og bogstaver i mørkeblåt øverst til venstre. Sørg for at skrive dette stykke information til senere, når vi arbejder med koden fra github.

Hvis det af en eller anden grund ikke virker, skal du kontrollere dette link, der går dybere ind i det.

Trin 4: MCP3008 - Analog sensing

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

Da vi foretog en ændring for temperatursensoren, skal vi også foretage nogle ændringer for de andre sensorer, da de skal læses i analoge data. Det er her, MCP3008 er praktisk, vi skal også ændre SPI -interface.

sudo raspi-config

Gå til grænsefladeindstillinger -> Vælg SPI -> aktiver.

Så afslut.

Trin 5: Hardware

Vi er ikke helt færdige med Rpi, men nok til, at vi kan begynde at bygge og sammensætte hardwaren.

Nogle råd er at tjekke dine forbindelser grundigt, når du bygger, for at sikre, at du ikke … sprænger Rpi.

I skematikken vil du også bemærke, at nogle komponenter kun er på den én gang, selvom vi arbejder med mere end 1 af den samme komponent. Det betyder bare, at du skal gentage den samme proces med at bygge den 1 komponent. Der er 1 lille undtagelse, mq-x sensorerne behøver ikke en ekstra niveauomformer eller MCP3008. Tilføj bare et ekstra grønt kabel (i pdf) til niveauomformeren og MCP3008.

Ekstra redigering: Ventilatorerne skal bruge en transistor som switch. Jeg bruger en 2n2222A transistor til 1 blæser, fordi 2 blæsere kan være en til tung belastning.

Hvis du har en transistor, der kan klare en større strøm, så god, spring den sidste del af dette trin over.

Hvis du ikke har en som mig, skal du gøre det sådan, 1 blæser = 1 transistor, 2 blæsere = 2 transistorer og så videre (hver blæser har sin egen transistor + diode som i pdf).

Du skal også tilføje noget kode til app.py i backend_project senere i trin 7: Git -kode ….

Trin 6: Oprettelse af en Mariadb -database

Oprettelse af en Mariadb -database
Oprettelse af en Mariadb -database

Som titlen antyder, vil vi oprette en database, så vi har plads til at gemme vores sensordata.

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

sudo apt-get install mariadb-server

Efter installationen, lad os bruge det.

mysql -u root

Adgangskoden er tom, så intet at skrive. Tryk på enter.

Lad os oprette en bruger nu.

Opret BRUGER 'bruger'@'%' IDENTIFICERET MED 'userdb';

TILDELE ALLE PRIVILEGER TIL *. * TIL 'bruger'@'%' MED GRANT -MULIGHED;

FLUSH -PRIVILEGER;

Tryk på Ctrl + C for at afslutte og genstarte tjenesten hurtigt:

sudo service mysql genstart

Login med brugernavn: bruger & adgangskode: userdb:

mysql -u bruger -p

Tid til at oprette databasen nu.

Opret DATABASE project_db STANDARDKARAKTER SÆT utf8;

BRUG projekt_db

Opret et bord "historiek" (betyder historie).

Opret tabel, hvis den ikke eksisterer '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 lavet.

Trin 7: Github -kode og test

Github -kode og test
Github -kode og test

Vi nærmer os slutningen af vores projekt.

Inden vi får koden, skal vi importere nogle moduler til Rpi:

pip3 installer Flask_MySQL

pip3 installer kolbe-socketio

pip3 installere -U kolbe -kors

pip3 installer spidev

Nu har vi brug for koden for at få den til at fungere, indtast terminalen:

git-klon

Kontroller, om mappen er der med:

ls

Nu skal du bruge 2 terminaler, så det er praktisk at højreklikke på terminalen og klikke på Duplicate sessions:

Gå til backend_project og temperatur ved hjælp af cd -kommandoen.

Nu før vi starter programmerne til testformål. Kan du stadig huske trin 3 med 1-leder sensoren, hvor du skal skrive nogle tal ned? Ingen bekymringer, hvis du har, bare tag et hurtigt kig på trin 3 igen.

Vi vil tilføje disse tal til koden, fordi den skal kende den korrekte sensor, når du bruger den.

Terminalen med temperaturmappen finder du app.py. Vi vil åbne den.

sudo nano app.py

Kig efter funktionen, der kaldes "def temperatur ():", der bliver du nødt til at erstatte "**" med de tal, du har skrevet. I mit tilfælde ville jeg få det denne kodelinje (hvert nummer er unikt).

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

Testtid. Begge terminaler i både backend_project og temperaturmappe, skriv:

python3 app.py

Husk nu trin 5: hardware, hvor du skal tilføje kode, hvis du bruger flere fans og transistorer?

Godt, hvis ikke gå tilbage til trin 5.

Nu skal vi tilføje kode, som jeg nævnte til app.py i backend_project. For at gøre det lettere lavede jeg et eksempel på dette i koden. Hver linje med kommentarkode, der har "fan1" i den, kommenter disse linjer og voila, nu kan du bruge 2 fans.

Hvis du vil bruge mere end bare 2 fans, skal du kopiere og indsætte den samme kode under den, men med et andet nummer. Ulempen ved dette er mere personligt arbejde for dig og færre gpio.pins til rådighed. Der er ingen fordele ved dette, som jeg kender.

Trin 8: Kør kode ved opstart

Kør kode ved opstart
Kør kode ved opstart

Vi vil have disse 2 python -scripts til at køre i det øjeblik, vores Rpi starter op, og hvis et script skulle gå ned, skulle det genstarte af sig selv. For at gøre dette skal vi lave 2 tjenester.

For at gøre dette skal du skrive:

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

Kopier og indsæt dette for en temperatur. Service:

[Enhed] Beskrivelse = Temperatur Service Efter = multi-user.target

[Service] Type = enkel

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

StandardInput = tty-force

Genstart = ved fejl

RestartSec = 60s

[Installere]

WantedBy = multi-user.target

Luk og gør igen, men derefter for en backend_project.service:

Første åbne tekst:

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

Kopier og indsæt derefter igen:

[Enhed] Beskrivelse = backend_project Service

Efter = 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

Genstart = ved fejl

RestartSec = 60s

[Installere]

WantedBy = multi-user.target

Gem og luk.

Sidste del er at skrive dette:

sudo systemctl daemon-reload

sudo systemctl aktiver temperatur.service sudo genstart

Nu skulle vores 2 python -scripts køre automatisk ved opstart.

Trin 9: Opsætning af websted

Da du downloadede depotet, skulle du også have fået en mappe kaldet front. Det er her indholdet er for webstedet.

Først skal vi bruge apache, før vi kan bruge mappen. Følg guiden på dette link for apache.

Når du er klar. Gå til, hvor den forreste mappe er placeret:

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

Skriv derefter:

sudo mv front/var/www/html

Når det er gjort, skal du gå til html -mappen og forberede dig på noget kedeligt arbejde (min skyld).

cd/var/www/html/

gå derefter ind i den forreste mappe og begynd at flytte alt til html -mappen.

eksempel:

sudo mv css/var/www/html

Slet derefter den forreste mappe.

Og vi er færdige med alt.

Held og lykke:).

Trin 10: Valgfri - Miniatureprototype

Valgfrit - Miniatureprototype
Valgfrit - Miniatureprototype
Valgfrit - Miniatureprototype
Valgfrit - Miniatureprototype

Af test årsager lavede jeg en prototype af bare en kasse med al hardware indeni, så jeg kan se, om alt fungerer til at bestille.

Normalt ville dette projekt blive udført i større skala. For eksempel: et værelse, et hus, en fabrik, en butik og så videre …

Men selvfølgelig inden vi begynder at lave huller i væggene (flot rim). Vi vil først se, om det bare virker. Du behøver faktisk ikke at lave en æske til test, men det er altid sjovt at lave noget.

Her er mit eksempel.

Anbefalede: