Innehållsförteckning:

TheAir - Gas Sensor Project: 10 steg
TheAir - Gas Sensor Project: 10 steg

Video: TheAir - Gas Sensor Project: 10 steg

Video: TheAir - Gas Sensor Project: 10 steg
Video: Sinking our brand new RXPX300 2024, November
Anonim
TheAir - Gas Sensor Project
TheAir - Gas Sensor Project

Kolmonoxid och koldioxid, även känd som CO och CO2. Gaser som är färglösa, luktfria, smaklösa och uppriktigt sagt farliga när de är i höga koncentrationer i ett slutet rum. Om du bor säger till exempel i ett studentrum som är dåligt isolerat, inget bra luftflöde och av någon anledning gör brödrosten ett konstigt ljud när du gör toast. Då kan du komma i kontakt med dessa gaser och när det händer kan vi hoppas att det bara slutar med en liten huvudvärk, för i hög koncentration kan det försvaga eller till och med döda dig (även om det är mycket sällan).

Så jag bestämde mig för att komma med det här projektet. Min idé är enkel, använd fläktar för att skapa ett luftflöde. Bra luft in och dålig luft ut så att säga. För extra verktyg lade jag till en extra temperatursensor, knapp för manuella aktiveringsfläktar och även en webbplats för dem som gillar att se statistik och/eller aktivera fläktar från sin dator.

Som student, förälder, ensamstående eller levande varelse. Detta är något du normalt vill undvika när du bor i ditt eget hus. Detta hjälper dem som gillar att göra livet lite enklare.

Tillbehör

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

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatur)
  • 2 x 12V DC fläkt
  • 2 x 2n2222 transistorer
  • LCD 16*2 display
  • Tryckknapp
  • MCP3008
  • Logi nivåomvandlare
  • Ethernet -kabel (av installationsskäl)

Steg 1: Raspberry Pi Setup

Raspberry Pi Setup
Raspberry Pi Setup
Raspberry Pi Setup
Raspberry Pi Setup

Innan vi arbetar med Rpi behöver vi lite programvara.

  • WinSCP eller FilleZilla (valfritt om du vill överföra filer från din dator till Rpi)
  • Win32 -skiva eller Etcher (som du föredrar mer)
  • Spackel eller MobaXterm (som du föredrar mer)
  • Raspbian -bild med skrivbordet

Innan jag börjar vill jag nämna att när jag gör denna handledning, när jag väljer ett program framför det andra, INTE betyder att jag rekommenderar det. Till exempel gillar jag att använda etsare eftersom det är mer användarvänligt men Win32 har möjlighet att göra säkerhetskopior. Nu är det ur mitt system, låt oss börja.

Om du redan har en Rpi som är ansluten till ditt wifi -nätverk, hoppa till steg 3.

Först ska vi använda Etcher för att lägga Raspbian -bilden på ditt SD -kort. Nu innan vi drar ut sd -kortet ska vi ändra några "saker" i cmdline.txt -filen, som finns i bilden. Öppna.txt -filen -> Lägg till den här raden "ip = 169.254.10.1" (inga citattecken) i slutet av raden (alla på 1 rad) -> Spara fil

För det andra gör du en tom mapp som heter "ssh" i startpartitionen (utan citattecken).

Efter det kan du säkert mata ut Microsd och sätta den i Rpi.

Anledningen till den hårdkodade statiska IP -adressen är att göra det enklare att ansluta till Rpi. Om Rpi av någon anledning inte har en ip med DHCP använder du enkelt den statiska IP: n.

Steg 2: Upprätta en anslutning och ansluta Rpi trådlöst till ditt lokala nätverk

Ansluta och ansluta Rpi trådlöst till ditt lokala nätverk
Ansluta och ansluta Rpi trådlöst till ditt lokala nätverk
Upprätta en anslutning och ansluta Rpi trådlöst till ditt lokala nätverk
Upprätta en anslutning och ansluta Rpi trådlöst till ditt lokala nätverk
Upprätta en anslutning och ansluta Rpi trådlöst till ditt lokala nätverk
Upprätta en anslutning och ansluta Rpi trådlöst till ditt lokala nätverk
Upprätta en anslutning och ansluta Rpi trådlöst till ditt lokala nätverk
Upprätta en anslutning och ansluta Rpi trådlöst till ditt lokala nätverk

Vi ska starta upp Rpi -> anslut Ethernet -kabeln mellan dator och Rpi.

  1. Starta kitt och fyll i detta:

    • Värdnamn (eller IP -adress): 169.254.10.1
    • Hamn: 22
  2. En terminal dyker upp och du skriver in standard användarnamn och lösenord:

    • Användarnamn: pi
    • Lösenord: hallon

Nu när vi är lokalt anslutna till rpi vill vi att Rpi ska ha en anslutning till ditt wifi.

  1. Extra: skriv in "sudo raspi-config"
  2. Här måste du byta lösenord av pi -användare (säkerhetsskäl)
  3. Gå sedan till Lokaliseringsalternativ -> Ändra tid (välj rätt) -> Gå sedan till Wifi -land -> välj land.
  4. Stäng raspi-config och starta om.
  5. När du är inloggad gör du tillfällig root -användare -> sudo -i
  6. Skriv detta kommando för att lägga till ditt nätverk till Rpi (kod nedanför listan)

    • lösenord = "lösenord" (med citattecken)
    • Namn nätverk = "SSID"
    • Kom ihåg att använda dubbel >>! Viktigt!

eko "lösenord" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Starta om igen

När du ansluter igen, kontrollera din ip genom att skriva:

ifconfig

och kolla wlan0, bredvid inet.

Nu när vi har internetuppkoppling kan vi göra en "snabb" uppdatering.

sudo apt uppdatering

sudo apt dist -upgrade -y

Detta kan ta lite tid.

Steg 3: Sensor DS18B20 (temperatur)-1-ledare

Sensor DS18B20 (temperatur)-1-ledare
Sensor DS18B20 (temperatur)-1-ledare
Sensor DS18B20 (temperatur)-1-ledare
Sensor DS18B20 (temperatur)-1-ledare

Med varje projekt kommer det alltid att finnas något speciellt som måste göras eller annars kommer det inte att fungera ögonblick.

Den här gången har vi det med DS18B20 temperaturgivare som kräver 1-tråd som jag inte kommer att förklara varför men jag ska förklara hur det får det att fungera åtminstone.

För detta måste vi gå tillbaka till raspi-config på Rpi, den fina blå skärmen.

  1. Gå till gränssnittsalternativ
  2. Välj 1-Wire och välj aktivera.

Gjort…

Skojar bara.

Nu måste vi justera /boot/config.txt

sudo nano /boot/config.txt

Lägg till den här raden längst ner.

# Aktivera onewire

dtoverlay = w1-gpio

Nu sudo starta om den saken och nu är vi klara.

För att kontrollera om det fungerar, anslut sensorn till Rpi och gå sedan tillbaka till terminalen och skriv den här koden (Se nästa steg Hårdvara om hur du ansluter temperaturgivare).

cd/sys/bus/w1/devices/w1_bus_master1

ls

Du borde se något med siffror och bokstäver i mörkblått längst upp till vänster, se till att skriva den här informationen för senare när vi ska arbeta med koden från github.

Om det av någon anledning inte fungerar, kolla den här länken som går djupare in i den.

Steg 4: MCP3008 - Analog avkänning

MCP3008 - Analog avkänning
MCP3008 - Analog avkänning
MCP3008 - Analog avkänning
MCP3008 - Analog avkänning

När vi gjorde en förändring för temperaturgivaren måste vi också göra några ändringar för de andra sensorerna eftersom vi behöver läsa dem i analoga data. Det är här MCP3008 kommer till nytta, vi måste också byta SPI -gränssnitt.

sudo raspi-config

Gå till gränssnittsalternativ -> Välj SPI -> aktivera.

Slutför sedan.

Steg 5: Hårdvara

Vi är inte helt klara med Rpi men tillräckligt för att vi ska kunna börja bygga och sätta ihop hårdvaran.

Några råd är att noggrant kontrollera dina anslutningar när du bygger för att se till att du inte … spränger Rpi.

I schemat kommer du också att märka att vissa komponenter bara finns på den en gång trots att vi kommer att arbeta med mer än 1 av samma komponent. Det betyder bara att du måste upprepa samma process för att bygga den 1 komponenten. Det finns ett litet undantag, mq-x-sensorerna behöver inte en extra nivåomvandlare eller MCP3008. Lägg bara till en extra grön kabel (i pdf) till nivåomvandlaren och MCP3008.

Extra redigering: Fläktarna måste använda en transistor som omkopplare. Jag använder en 2n2222A transistor för 1 fläkt, eftersom 2 fläktar kan vara för tunga.

Om du har en transistor som kan hantera en större ström så bra, hoppa över den sista delen av detta steg.

Om du inte har en som jag måste du göra så här, 1 fläkt = 1 transistor, 2 fläktar = 2 transistorer och så vidare (varje fläkt har sin egen transistor + diod som i pdf).

Du måste också lägga till lite kod till app.py i backend_project senare i steg 7: Git -kod ….

Steg 6: Skapa en Mariadb -databas

Skapa en Mariadb -databas
Skapa en Mariadb -databas

Som titeln antyder kommer vi att skapa en databas så att vi har plats för att lagra våra sensordata.

Först och främst, ladda ner Mariadb på Rpi.

sudo apt-get install mariadb-server

Efter installationen, låt oss använda den.

mysql -u root

Lösenordet är tomt, så inget att skriva. Tryck enter.

Låt oss skapa en användare nu.

SKAPA ANVÄNDARE 'användare'@'%' IDENTIFIERAD MED 'userdb';

GE ALLA PRIVILEGER PÅ *. * TILL 'användare'@'%' MED GRANT -ALTERNATIV;

FLUSH PRIVILEGER;

Tryck på Ctrl + C för att avsluta och göra en snabb omstart av tjänsten:

sudo service mysql starta om

Logga in med användarnamn: användare och lösenord: userdb:

mysql -u användare -p

Dags att skapa databasen nu.

SKAPA DATABAS projekt_db STANDARDKARAKTER SET utf8;

ANVÄND projekt_db

Skapa en tabell "historiek" (betyder historia).

SKAPA TABELL OM DET INTE FÖRESKRIVS 'historiek' ('id' INT INTE 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;

Och voila, databasen är gjord.

Steg 7: Github -kod och testning

Github -kod och testning
Github -kod och testning

Vi närmar oss slutet på vårt projekt.

Innan vi får koden måste vi importera några moduler till Rpi:

pip3 installera Flask_MySQL

pip3 installera flask-socketio

pip3 installera -U kolv -kors

pip3 installera spidev

Nu behöver vi koden för att få den att fungera, skriv in terminalen:

git-klon

Kontrollera om mappen finns med:

ls

Nu behöver du 2 terminaler så det är praktiskt att högerklicka på terminalen och klicka på Dubbla sessioner:

Gå till backend_project och temperatur med kommandot cd.

Nu innan vi startar programmen för teständamål. Kommer du fortfarande ihåg steg 3 med 1-trådssensorn där du behöver skriva ner några siffror? Inga bekymmer om du har det, ta bara en snabb titt på steg 3 igen.

Vi kommer att lägga till dessa nummer i koden eftersom det kommer att behöva känna till rätt sensor när du använder den.

Terminalen med temperaturmappen hittar du app.py. Vi ska öppna den.

sudo nano app.py

Leta efter funktionen som kallas "def temperatur ():", där måste du ersätta "**" med siffrorna du skrev upp. I mitt fall skulle jag få det denna kodrad (varje nummer är unikt).

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

Testtid. Båda terminalerna i både backend_project och temperaturmapp, skriv:

python3 app.py

Kom nu ihåg steg 5: hårdvara där du behöver lägga till kod om du använder flera fläktar och transistorer?

Bra, om inte gå tillbaka till steg 5.

Nu måste vi lägga till kod som jag nämnde till app.py i backend_project. För att göra det enklare gjorde jag ett exempel på detta i koden. Varje rad med kommentarskod som har "fan1" i den, kommentera inte dessa rader och voila, nu kan du använda 2 fans.

Om du vill använda mer än bara 2 fans, kopiera och klistra in samma kod under den men med ett annat nummer. Nackdelen med detta är mer personligt arbete för dig och mindre gpio.pins tillgängliga. Det finns inga fördelar med detta som jag känner till.

Steg 8: Kör kod vid uppstart

Kör kod vid uppstart
Kör kod vid uppstart

Vi vill att dessa 2 python -skript ska köras i det ögonblick som vår Rpi startar upp och om ett skript skulle krascha bör det starta om av sig själv. För att göra detta kommer vi att göra två tjänster.

För att göra detta, skriv:

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

Kopiera och klistra in detta för en temperatur. Tjänst:

[Enhet] Beskrivning = Temperaturservice Efter = multi-user.target

[email protected]

[Service] Typ = enkel

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

StandardInput = tty-force

Starta om = vid fel

RestartSec = 60s

[Installera]

WantedBy = multi-user.target

Stäng och gör igen men sedan för en backend_project.service:

Första öppna texten:

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

Kopiera och klistra in igen:

[Enhet] Beskrivning = backend_project Service

Efter = multi-user.target

[Service]

Typ = enkel

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

StandardInput = tty-force

Starta om = vid fel

RestartSec = 60s

[Installera]

WantedBy = multi-user.target

Spara och stäng.

Sista delen är att skriva detta:

sudo systemctl daemon-reload

sudo systemctl aktivera temperature.service sudo starta om

Nu ska våra 2 python -skript köras automatiskt vid start.

Steg 9: Konfigurera webbplats

När du laddade ner förvaret borde du också ha fått en mapp som heter front. Det är här innehållet finns för webbplatsen.

Först behöver vi apache innan vi kan använda mappen. Följ guiden på denna länk för apache.

När du är redo. Gå till där den främre mappen finns:

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

Skriv sedan:

sudo mv front/var/www/html

När det är klart, gå till html -mappen, förbered dig för lite tråkigt arbete (mitt fel).

cd/var/www/html/

gå sedan in i den främre mappen och börja flytta allt till html -mappen.

exempel:

sudo mv css/var/www/html

Ta sedan bort den främre mappen.

Och vi är klara med allt.

Lycka till:).

Steg 10: Valfritt - Miniatyrprototyp

Valfritt - Miniatyrprototyp
Valfritt - Miniatyrprototyp
Valfritt - Miniatyrprototyp
Valfritt - Miniatyrprototyp

Av testskäl gjorde jag en prototyp av bara en låda med all hårdvara inuti så att jag kan se om allt fungerar för att beställa.

Normalt skulle detta projekt genomföras i större skala. Till exempel: ett rum, ett hus, en fabrik, en butik och så vidare …

Men uppenbarligen innan vi börjar göra hål i väggarna (fint rim). Vi vill först se om det bara fungerar. Du behöver faktiskt inte göra en låda för testning, men det är alltid kul att göra lite hantverk.

Här är mitt exempel.

Rekommenderad: