INHOUDSOPGAWE:
- Voorrade
- Stap 1: Opstelling van Framboos Pi
- Stap 2: Maak 'n verbinding en koppel Rpi Wireless aan u plaaslike netwerk
- Stap 3: Sensor DS18B20 (temperatuur)-1-draad
- Stap 4: MCP3008 - Analoog waarneming
- Stap 5: Hardeware
- Stap 6: Skep 'n Mariadb -databasis
- Stap 7: Github -kode en toetsing
- Stap 8: voer kode uit tydens opstart
- Stap 9: Stel webwerf op
- Stap 10: Opsioneel - Miniatuurprototipe
Video: TheAir - Gas Sensor Project: 10 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
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
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
Ons gaan die Rpi begin -> verbind die ethernetkabel tussen die rekenaar en Rpi.
-
Begin Putty en vul dit in:
- Gasheernaam (of IP -adres): 169.254.10.1
- Hawe: 22
-
'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.
- Ekstra: tik "sudo raspi-config" in
- Hier moet u wagwoord verander vir pi -gebruiker (veiligheidsredes)
- Gaan daarna na Lokaliseringsopsies -> Verander tyd (kies die regte een) -> Gaan dan na Wifi -land -> kies land.
- Sluit raspi-config en herlaai.
- As u aangemeld het, maak u tydelik 'n root -gebruiker -> sudo -i
-
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
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.
- Gaan na Interfacing -opsies
- 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
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
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
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
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
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:
Spin Art Turbine Remix Project: 4 stappe
Spin Art Turbine Remix -projek: as u belangstel in spin -kuns, is daar 'n probleem, en die probleem is dat u die boor met die een hand moet hou terwyl u met die ander skilder. Dit kan soms irriterend wees, maar ek voel ek het gevind die oplossing met hierdie eenvoudige turbine wat u kan skep
IEEE WORD CLOCK PROJECT: 12 stappe (met foto's)
IEEE WORD CLOCK PROJECT: Dit is 'n projek vir UNO se IEEE -klub, dit is 'n unieke manier om voor te stel hoe laat dit is. Die woordklok spel die tyd uit en met die RGB -strook kan u die horlosie in enige kleur van u keuse hê. Deur die WiFi -vermoëns van die ESP32 te gebruik, kan die
Creative Switch Project deur Christopher Serafin: 4 stappe
Creative Switch Project deur Christopher Serafin: Groete! Vir hierdie kreatiewe skakelprojek het ek besluit om LED -ligte by 'n skouersak te voeg, in hierdie geval 'n Nintendo 3DS -draagtas. Gewone skouersakke is dalk 'n bietjie vervelig, maar met 'n paar LED -ligte kan dit beslis elke tas verlig
Hoe om RADAR te maak met behulp van Arduino for Science Project - Beste Arduino -projekte: 5 stappe
Hoe om RADAR te maak met behulp van Arduino for Science Project | Beste Arduino -projekte: Hallo vriende, in hierdie instruksies sal ek u wys hoe u 'n wonderlike radarsisteem kan bou wat met arduino nano gebou is, hierdie projek is ideaal vir wetenskaplike projekte, en u kan dit maklik maak met baie minder belegging en kans as die wenprys groot is
Temperatuur sensor en vertoning sensor. Maria Jose Oviedo: 7 stappe
Temperatuur sensor en vertoning sensor. Maria Jose Oviedo: Een van die belangrikste onderwerpe in die temperatuur en sensor van die presiese BMP180 met kristalvertoning. Este display en una pantalla hecha de liquido que muestra informaci ó n que se le da la orden de hacer. Temperatuur sensor