Innehållsförteckning:
- Tillbehör
- Steg 1: Raspberry Pi Setup
- Steg 2: Upprätta en anslutning och ansluta Rpi trådlöst till ditt lokala nätverk
- Steg 3: Sensor DS18B20 (temperatur)-1-ledare
- Steg 4: MCP3008 - Analog avkänning
- Steg 5: Hårdvara
- Steg 6: Skapa en Mariadb -databas
- Steg 7: Github -kod och testning
- Steg 8: Kör kod vid uppstart
- Steg 9: Konfigurera webbplats
- Steg 10: Valfritt - Miniatyrprototyp
Video: TheAir - Gas Sensor Project: 10 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
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
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
Vi ska starta upp Rpi -> anslut Ethernet -kabeln mellan dator och Rpi.
-
Starta kitt och fyll i detta:
- Värdnamn (eller IP -adress): 169.254.10.1
- Hamn: 22
-
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.
- Extra: skriv in "sudo raspi-config"
- Här måste du byta lösenord av pi -användare (säkerhetsskäl)
- Gå sedan till Lokaliseringsalternativ -> Ändra tid (välj rätt) -> Gå sedan till Wifi -land -> välj land.
- Stäng raspi-config och starta om.
- När du är inloggad gör du tillfällig root -användare -> sudo -i
-
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
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.
- Gå till gränssnittsalternativ
- 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
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
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
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
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
[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
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:
Magnetic Switch Door Alarm Sensor, Normally Open, Simple Project, 100% Working, Source Code Given: 3 Steps
Magnetic Switch Door Alarm Sensor, Normally Open, Simple Project, 100% Working, Source Code Given: Description: Hej killar, jag ska göra självstudier om MC-18 Magnetic Switch Sensor Alarm som fungerar i normalt öppet läge. Brytartyp: NO (normal stängningstyp), kretsen är öppen normalt och kretsen är ansluten när magneten är nära. Vasset
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Arduino Solar Powered Temperature and Humidity Sensor As 433mhz Oregon Sensor: 6 Steg
Arduino Solar Powered Temperature and Humidity Sensor As 433mhz Oregon Sensor: Detta är byggnaden av en soldriven temperatur- och fuktighetssensor. Sensorn emulerar en 433mhz Oregon-sensor och är synlig i Telldus Net-gateway. Vad du behöver: 1x " 10-LED Solar Power Motion Sensor " från Ebay. Se till att det står 3,7v smet
RaspberryPi 3 Magnet Sensor Med Mini Reed Sensor: 6 steg
RaspberryPi 3 Magnet Sensor With Mini Reed Sensor: I denna Instructable kommer vi att skapa en IoT -magnet sensor med en RaspberryPi 3. Sensorn består av en LED och en summer, som båda tänds när en magnet avkänns av mini reed sensorn
Particle Photon - BH1715 Digital Ambient Light Sensor Sensor Handledning: 4 steg
Particle Photon - BH1715 Digital Ambient Light Sensor Sensor Handledning: BH1715 är en digital Ambient Light Sensor med ett I²C -bussgränssnitt. BH1715 används vanligtvis för att erhålla data från omgivande ljus för justering av LCD- och knappsatsens bakgrundsbelysning för mobila enheter. Den här enheten har en 16-bitars upplösning och en justering