Turinys:

„TheAir“- dujų jutiklio projektas: 10 žingsnių
„TheAir“- dujų jutiklio projektas: 10 žingsnių

Video: „TheAir“- dujų jutiklio projektas: 10 žingsnių

Video: „TheAir“- dujų jutiklio projektas: 10 žingsnių
Video: 🔥 Всё-всё-всё про лямбда-зонды! Зачем нужен этот хитрый кислородный датчик? 2024, Liepa
Anonim
„TheAir“- dujų jutiklių projektas
„TheAir“- dujų jutiklių projektas

Anglies monoksidas ir anglies dioksidas, taip pat žinomi kaip CO ir CO2. Dujos, kurios yra bespalvės, bekvapės, beskonės ir atvirai pavojingos esant didelėms koncentracijoms uždaroje patalpoje. Jei gyvenate, sakykite, pavyzdžiui, studentų kambaryje, kuris yra blogai izoliuotas, nėra gero oro srauto ir dėl kokių nors priežasčių skrudintuvas skleidžia skrudintą duoną. Tuomet galite susidurti su šiomis dujomis ir, kai tai atsitiks, tikėkimės, kad tai baigsis tik nedideliu galvos skausmu, nes didelėje koncentracijoje jis gali tapti neveiksnus arba net nužudyti (nors ir labai retai).

Taigi nusprendžiau sugalvoti šį projektą. Mano idėja paprasta, naudokite ventiliatorius, kad sukurtumėte oro srautą. Geras oras ir blogas oras, taip sakant. Dėl papildomos naudos pridėjau papildomą temperatūros jutiklį, mygtuką rankinio įjungimo ventiliatoriams ir svetainę tiems, kurie mėgsta matyti statistiką ir (arba) aktyvuoti ventiliatorius iš savo kompiuterio.

Kaip studentas, tėvas, vienišas asmuo ar gyva būtybė. To paprastai norėtumėte vengti, kai gyvenate patogiai savo namuose. Tai padeda tiems, kurie mėgsta šiek tiek palengvinti savo gyvenimą.

Prekės

  • Raspberry Pi 3+
  • Mini usb įkroviklis 5V/2.5A
  • „Micro-sd“kortelė
  • Jutikliai

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatūra)
  • 2 x 12 V nuolatinės srovės ventiliatorius
  • 2 x 2n2222 tranzistoriai
  • 16*2 LCD ekranas
  • Mygtukas
  • MCP3008
  • „Logi“lygio keitiklis
  • Ethernet kabelis (dėl sąrankos priežasčių)

1 veiksmas: „Raspberry Pi“sąranka

„Raspberry Pi“sąranka
„Raspberry Pi“sąranka
„Raspberry Pi“sąranka
„Raspberry Pi“sąranka

Prieš pradėdami dirbti su Rpi, mums reikės tam tikros programinės įrangos.

  • „WinSCP“arba „FilleZilla“(neprivaloma, jei norite perkelti failus iš kompiuterio į RPI)
  • „Win32“diskas arba „Etcher“(kuriam labiau patinka)
  • „Putty“arba „MobaXterm“(jums labiau patinka)
  • Raspbian vaizdas su darbalaukiu

Prieš pradėdamas norėčiau paminėti, kad kurdamas šią pamoką, kai renkuosi programą, tai nereiškia, kad aš ją rekomenduoju. Pavyzdžiui, man patinka naudoti etcher, nes jis yra patogesnis vartotojui, tačiau „Win32“turi galimybę kurti atsargines kopijas. Dabar tai išeina iš mano sistemos, pradėkime.

Jei jau turite „Rpi“, prijungtą prie „Wi -Fi“tinklo, pereikite prie 3 veiksmo.

Pirmiausia mes naudosime „Etcher“, norėdami įdėti „Raspbian“vaizdą į jūsų SD kortelę. Dabar, prieš ištraukdami SD kortelę, pakeisime „cmdline.txt“failo „daiktus“, kuriuos galima rasti paveikslėlyje. Atidarykite.txt failą -> Pridėkite šią eilutę „ip = 169.254.10.1“(be kabučių) eilutės pabaigoje (viskas 1 eilutėje) -> Išsaugoti failą

Antra, įkrovos skaidinyje sukurkite tuščią aplanką „ssh“(be kabučių).

Po to galite saugiai išstumti „Microsd“ir įdėti jį į RPI.

Sunkiai koduoto statinio IP priežastis yra palengvinti prisijungimą prie Rpi. Jei dėl kokių nors priežasčių Rpi neturi IP su DHCP, galite lengvai naudoti statinį IP.

2 veiksmas: prijunkite ir prijunkite „Rpi Wireless“prie vietinio tinklo

Ryšio užmezgimas ir „Rpi“prijungimas prie vietinio tinklo
Ryšio užmezgimas ir „Rpi“prijungimas prie vietinio tinklo
Ryšio užmezgimas ir „Rpi“prijungimas prie vietinio tinklo
Ryšio užmezgimas ir „Rpi“prijungimas prie vietinio tinklo
Ryšio užmezgimas ir „Rpi“prijungimas prie vietinio tinklo
Ryšio užmezgimas ir „Rpi“prijungimas prie vietinio tinklo
Ryšio užmezgimas ir „Rpi“prijungimas prie vietinio tinklo
Ryšio užmezgimas ir „Rpi“prijungimas prie vietinio tinklo

Mes paleisime Rpi -> prijunkite Ethernet kabelį tarp kompiuterio ir Rpi.

  1. Pradėkite glaistyti ir užpildykite:

    • Pagrindinio kompiuterio pavadinimas (arba IP adresas): 169.254.10.1
    • Uostas: 22
  2. Pasirodo terminalas ir įvedate numatytąjį vartotojo vardą ir slaptažodį:

    • Vartotojo vardas: pi
    • Slaptažodis: avietė

Dabar, kai esame prisijungę prie rpi, norime, kad RPI būtų prijungtas prie jūsų „Wi -Fi“.

  1. Papildomai: įveskite „sudo raspi-config“
  2. Čia turėsite pakeisti pi vartotojo slaptažodį (saugumo sumetimais)
  3. Tada eikite į Lokalizavimo parinktys -> Keisti laiką (pasirinkite tinkamą) -> Tada eikite į „Wifi“šalį -> pasirinkite šalį.
  4. Uždarykite raspi-config ir paleiskite iš naujo.
  5. Prisijungę laikinai padarykite save root vartotoju -> sudo -i
  6. Parašykite šią komandą, kad pridėtumėte savo tinklą prie Rpi (kodas žemiau sąraše)

    • slaptažodis = "slaptažodis" (su kabutėmis)
    • Pavadinimas tinklas = "SSID"
    • Nepamirškite naudoti dvigubo >>! Svarbu!

echo "slaptažodis" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Dabar paleiskite iš naujo

Prisijungdami iš naujo patikrinkite savo IP įvesdami:

ifconfig

ir patikrinkite wlan0, šalia inet.

Dabar, kai turime interneto ryšį, galime „greitai“atnaujinti.

sudo apt atnaujinimas

sudo apt dist -upgrade -y

Tai gali užtrukti.

3 žingsnis: jutiklis DS18B20 (temperatūra)-1 laidas

Jutiklis DS18B20 (temperatūra)-1 laidas
Jutiklis DS18B20 (temperatūra)-1 laidas
Jutiklis DS18B20 (temperatūra)-1 laidas
Jutiklis DS18B20 (temperatūra)-1 laidas

Su kiekvienu projektu visada turi būti kažkas ypatingo, ką reikia padaryti, kitaip jis neveiks.

Šį kartą mes jį turime su DS18B20 temperatūros jutikliu, kuriam reikalingas 1 laidas. Aš nepaaiškinsiu, kodėl, bet paaiškinsiu, kaip tai padaryti.

Norėdami tai padaryti, turime grįžti į rasio konfigūraciją Rpi, gražų mėlyną ekraną.

  1. Eikite į sąsajos parinktis
  2. Pasirinkite 1 laidą ir įjunkite.

Padaryta…

Juokauju.

Dabar turėsime pakoreguoti /boot/config.txt

sudo nano /boot/config.txt

Pridėkite šią eilutę apačioje.

# Įgalinti „onewire“

dtoverlay = w1-gpio

Dabar sudo iš naujo paleiskite tą dalyką ir dabar mes baigėme.

Norėdami patikrinti, ar jis veikia, prijunkite jutiklį prie Rpi, tada grįžkite į terminalą ir įveskite šį kodą (žr. Kitą žingsnį Aparatūra, kaip prijungti temperatūros jutiklį).

cd/sys/bus/w1/devices/w1_bus_master1

ls

Turėtumėte pamatyti kažką su skaičiais ir raidėmis tamsiai mėlyna spalva viršuje kairėje. Būtinai parašykite šią informaciją vėliau, kai dirbsime su „github“kodu.

Jei dėl kokių nors priežasčių jis neveikia, patikrinkite šią nuorodą, kuri yra gilesnė.

4 žingsnis: MCP3008 - analoginis jutimas

MCP3008 - Analoginis jutiklis
MCP3008 - Analoginis jutiklis
MCP3008 - Analoginis jutiklis
MCP3008 - Analoginis jutiklis

Pakeitę temperatūros jutiklį, turime atlikti ir kitų jutiklių pakeitimus, nes juos reikia skaityti analoginiuose duomenyse. Čia MCP3008 praverčia, mes taip pat turime pakeisti SPI sąsają.

sudo raspi-config

Eikite į sąsajos parinktis -> Pasirinkite SPI -> įjungti.

Tada Baigti.

5 žingsnis: Aparatūra

Mes dar nesame visiškai baigę Rpi, bet pakankamai, kad galėtume pradėti kurti ir sudėti aparatūrą.

Kai kurie patarimai yra kruopščiai patikrinti savo ryšius statant, kad įsitikintumėte, jog… nesusprogdinsite Rpi.

Be to, schemoje pastebėsite, kad kai kurie komponentai yra tik vieną kartą, nors dirbsime su daugiau nei 1 to paties komponento. Tai tiesiog reiškia, kad jūs turite pakartoti tą patį 1 komponento kūrimo procesą. Yra viena nedidelė išimtis, mq-x jutikliams nereikia papildomo lygio keitiklio ar MCP3008. Tiesiog pridėkite papildomą žalią kabelį (pdf formatu) prie lygio keitiklio ir MCP3008.

Papildomas redagavimas: ventiliatoriai kaip jungiklį turi naudoti tranzistorių. Vienam ventiliatoriui naudoju 2n2222A tranzistorių, nes 2 ventiliatoriai gali būti per didelė apkrova.

Jei turite tranzistorių, galintį valdyti didesnę srovę, praleiskite paskutinę šio veiksmo dalį.

Jei neturite tokio kaip aš, turėsite tai padaryti taip: 1 ventiliatorius = 1 tranzistorius, 2 ventiliatoriai = 2 tranzistoriai ir pan. (Kiekvienas ventiliatorius yra savo tranzistorius + diodas, kaip pdf).

Vėliau, atlikdami 7 veiksmą: „Git“kodas, taip pat turėsite pridėti kodą prie „app.py“programoje „backend_project“.

6 veiksmas: sukurkite „Mariadb“duomenų bazę

„Mariadb“duomenų bazės kūrimas
„Mariadb“duomenų bazės kūrimas

Kaip rodo pavadinimas, mes sukursime duomenų bazę, kad turėtume kur saugoti jutiklių duomenis.

Pirmiausia atsisiųskite „Mariadb“į Rpi.

sudo apt-get install mariadb-server

Įdiegę naudokime.

mysql -u šaknis

Slaptažodis tuščias, todėl nieko nereikia įvesti. Paspausk Enter.

Dabar leiskite sukurti vartotoją.

CREATE USER 'user'@'%' IDENTIFIED by 'userdb';

SUTEIKITE VISAS PRIVILIEGIJAS *. * „Vartotojui“@'%“SU GRANT OPTION;

PLŪŠIMO PRIVILEGIJOS;

Paspauskite Ctrl + C, kad išeitumėte ir greitai paleistumėte paslaugą iš naujo:

sudo paslauga mysql iš naujo

Prisijunkite naudodami vartotojo vardą: vartotojas ir slaptažodis: userdb:

mysql -u vartotojas -p

Laikas sukurti duomenų bazę dabar.

CREATE DATABASE project_db Numatytasis simbolių rinkinys utf8;

USE project_db

Sukurkite lentelę „historiek“(reiškia istoriją).

KURTI LENTELĘ, JEI NĖRA „istoriek“(„id“INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NOT NULL,` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PIRMINIS RAKTAS („ id “)) VARIKLIS = InnoDB;

Ir voila, sukurta duomenų bazė.

7 veiksmas: „Github“kodas ir testavimas

„Github“kodas ir testavimas
„Github“kodas ir testavimas

Artėjame prie projekto pabaigos.

Prieš gaudami kodą, turėsime importuoti kai kuriuos modulius į Rpi:

pip3 įdiegti „Flask_MySQL“

pip3 įdiegti kolbą-lizdą

pip3 įdiegti -U kolba -cors

pip3 įdiegti spidev

Dabar mums reikia kodo, kad jis veiktų, įveskite terminalą:

git klonas

Patikrinkite, ar aplanke yra:

ls

Dabar jums reikės 2 terminalų, todėl patogu dešiniuoju pelės mygtuku spustelėti terminalą ir spustelėti Dubliuoti seansus:

Eikite į backend_project ir temperatūrą naudodami komandą cd.

Prieš pradėdami programas bandymams. Ar vis dar prisimenate 3 žingsnį su 1 laido jutikliu, kur reikia užrašyti kai kuriuos skaičius? Nesijaudinkite, jei turite, tiesiog dar kartą greitai pažvelkite į 3 veiksmą.

Šiuos skaičius pridėsime prie kodo, nes jį naudojant reikės žinoti teisingą jutiklį.

Terminale su temperatūros aplanku rasite app.py. Mes ketiname jį atidaryti.

sudo nano app.py

Ieškokite funkcijos, vadinamos „def temperatūra ():“, ten turėsite pakeisti „**“skaičiais, kuriuos parašėte. Mano atveju gaučiau šią kodo eilutę (kiekvienas skaičius yra unikalus).

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

Bandymo laikas. Abu terminalai aplanke „backend_project“ir „Temperature“įveskite:

python3 app.py

Dabar prisiminkite 5 veiksmą: aparatinė įranga, kur reikia pridėti kodą, jei naudojate kelis ventiliatorius ir tranzistorius?

Gerai, jei ne grįžti prie 5 veiksmo.

Dabar turime pridėti kodą, kaip jau minėjau, „app.py“programoje „backend_project“. Kad būtų lengviau, pateikiau to pavyzdį kode. Kiekvienoje komentaro kodo eilutėje, kurioje yra „fan1“, nekomentuokite tų eilučių ir voila, dabar galite naudoti 2 gerbėjus.

Jei norite naudoti daugiau nei 2 ventiliatorius, nukopijuokite ir įklijuokite tą patį kodą po juo, bet su kitu numeriu. Trūkumas yra asmeniškesnis darbas ir mažiau „gpio.pins“. Aš neturiu jokių pranašumų, kuriuos žinau.

8 veiksmas: paleiskite kodą įkrovos metu

Paleiskite kodą įkrovos metu
Paleiskite kodą įkrovos metu

Mes norime, kad šie 2 „Python“scenarijai būtų paleisti tuo metu, kai mūsų „Rpi“paleidžiama, ir tuo atveju, jei scenarijus sugestų, jis turėtų būti paleistas iš naujo. Norėdami tai padaryti, mes padarysime 2 paslaugas.

Norėdami tai padaryti, įveskite:

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

Nukopijuokite ir įklijuokite tai temperatūrai. Paslauga:

[Vienetas] Aprašymas = Temperatūros tarnyba Po = multi-user.target

[Paslauga] Tipas = paprastas

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

Standartinė įvestis = tty-force

Paleisti iš naujo = sugedus

RestartSec = 60s

[Diegti]

WantedBy = kelių vartotojų tikslas

Uždarykite ir atlikite dar kartą, bet tada backend_project.service:

Pirmasis atidarytas tekstas:

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

Tada dar kartą nukopijuokite ir įklijuokite:

[Unit] Aprašymas = backend_project Service

Po = multi-user.target

[Paslauga]

Tipas = paprastas

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

Standartinė įvestis = tty-force

Paleisti iš naujo = sugedus

RestartSec = 60s

[Diegti]

WantedBy = kelių vartotojų tikslas

Išsaugoti ir uždaryti.

Paskutinėje dalyje rašoma:

sudo systemctl demonas iš naujo

sudo systemctl įgalinti temperatūrą. paslauga sudo perkrovimas

Dabar mūsų 2 „python“scenarijai turėtų būti paleisti automatiškai.

9 veiksmas: nustatykite svetainę

Atsisiuntę saugyklą, jūs taip pat turėjote gauti aplanką „front“. Čia yra svetainės turinys.

Pirmiausia mums reikia apache, kad galėtume naudoti aplanką. Sekite „apache“nuorodą šioje nuorodoje.

Kai būsi pasiruošęs. Eikite į priekinį aplanką:

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

Tada įveskite:

sudo mv front/var/www/html

Kai tai bus padaryta, eikite į aplanką html, pasiruoškite nuobodžiam darbui (mano kaltė).

cd/var/www/html/

tada eikite į priekinį aplanką ir pradėkite viską perkelti į aplanką html.

pavyzdys:

sudo mv css/var/www/html

Tada ištrinkite priekinį aplanką.

Ir mes baigėme viską.

Sėkmės:).

10 žingsnis: pasirinktinai - miniatiūrinis prototipas

Neprivaloma - miniatiūrinis prototipas
Neprivaloma - miniatiūrinis prototipas
Neprivaloma - miniatiūrinis prototipas
Neprivaloma - miniatiūrinis prototipas

Dėl bandymų sukūriau tik dėžutės prototipą su visa aparatine įranga, kad galėčiau pamatyti, ar viskas veikia pagal užsakymą.

Paprastai šis projektas būtų vykdomas didesniu mastu. Pavyzdžiui: kambarys, namas, gamykla, parduotuvė ir pan.

Bet akivaizdu, kad prieš pradėdami daryti skyles sienose (gražus rimas). Pirmiausia norime pamatyti, ar tai tiesiog veikia. Jums iš tikrųjų nereikia gaminti dėžutės bandymams, tačiau visada smagu pasidaryti rankdarbius.

Štai mano pavyzdys.

Rekomenduojamas: