Turinys:

CPC klasės taršos tikrintuvas: 10 žingsnių
CPC klasės taršos tikrintuvas: 10 žingsnių

Video: CPC klasės taršos tikrintuvas: 10 žingsnių

Video: CPC klasės taršos tikrintuvas: 10 žingsnių
Video: Driver CPC for buses: part 1 - theory test 2024, Lapkritis
Anonim
CPC klasės taršos tikrintuvas
CPC klasės taršos tikrintuvas
CPC klasės taršos tikrintuvas
CPC klasės taršos tikrintuvas
CPC klasės taršos tikrintuvas
CPC klasės taršos tikrintuvas

Sveiki, aš esu studentas iš Belgijos ir tai yra mano pirmasis didelis bakalauro studijų projektas! Ši instrukcija yra apie tai, kaip padaryti oro srauto matuoklį uždaroms patalpoms, ypač klasėms!

Girdžiu, galvojate, kodėl šis projektas? Na, viskas prasidėjo, kai išėjau į vidurinę mokyklą. Po pietų po gerų pietų ir pertraukos pamokos vėl prasideda. Tačiau yra problema, mokytoja pamiršo atidaryti langą, kol pietaujame, todėl karšta, prakaituota ir negalite susikaupti, nes užmiegate. Taip yra todėl, kad ore yra daug CO2.

Mano projektas tai išspręs ir visi mokiniai bus labiau susikaupę pamokų metu.

Prekės

1 x „Raspberry Pi 4“(55 eurai)

1 x steppenmotor su vairuotoju (5 €)

2 x 12v 6800 mAh baterijos (2x 20 €)

2 x žingsnio modulis (2x 5 €)

1 x 16 x 2 skystųjų kristalų ekranas (1,5 EUR)

Jutikliai: 1x MQ8, 1x MQ4, 1x MQ7, 1x MQ135, 1x HNT11, 1x TMP36 (1 x 23 €)

IC: 1x MCP3008, 2x 74hc595AG (1x 2,30 €, 2x 0,40 €)

Šviesos diodai: 2x žalia, 2x raudona, 3x geltona (randama senoje aparatinėje įrangoje, paprastai 0,01 €)

Baterijų jungtis (2 x 0,35 €)

40 jungčių kabelių nuo f iki f (1,80 €)

40 f-to-m jungiamųjų laidų (1,80 €)

20 m-m jungiamieji kabeliai (1,80 €)

2 x PCB į litavimą (2x 0,70 €)

Įrankiai:

Lituoklis (pageidautina 60 vatų)

Alavas iki litavimo

Aliuminio lakštas 50x20

Korpusas (naudojau seną mini kompiuterio dėklą)

Tai gali būti lengvai MDF arba savos idėjos.

1 žingsnis: nustatykite savo RPi

RPi nustatymas
RPi nustatymas

Taigi mūsų širdis, mūsų smegenys ir mūsų siela yra šiame produkte. Grasinkite gerai, nes tai gali vienaip ar kitaip pakenkti. Aš naudoju RPi 4B 4gb, kiti modeliai turėtų veikti puikiai. Senesnių modelių galite tikėtis šiek tiek daugiau.

OS gavome iš savo mokyklos su iš anksto įdiegta programine įranga, tokia kaip „phpMyAdmin“.

Pirmiausia įsitikinkite, kad galite prisijungti prie „Raspberry Pi“per ssh, mums reikės daug laiko.

Taigi pirmiausia turėtume įjungti SPI magistralę, GPIO kaiščius ir išjungti kitas magistrales, mums jų neprireiks.

Tai galite padaryti raspi-config meniu. Eikite į sąsajas ir įjunkite GPIO ir SPI, paprastai to neprireiks. Kol esate čia, išplėskite saugyklą, eidami į išplėstinę, tada paspauskite „Enter“, kad išplėstumėte saugyklą.

Dabar paleiskite iš naujo. Mums reikės tam tikrų plėtinių, kad galėtume naudoti VS kodą mūsų pi, kad paleistume serverį ir duomenų bazę.

VS kodo plėtinio diegimo procesą rasite čia.

Dabar įdiegsime savo serverio ir duomenų bazės plėtinius. Naudokite terminalą ir įveskite „python install colb, colb-cors, mysql-python-connector, eventlet“ir palaukite, kol baigsis.

Dabar galime pradėti nuo projekto kūrimo.

2 veiksmas: MCP3008 + TMP36

MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36

Taigi mes turime 6 jutiklius: 4 dujų, 1 drėgmės + temperatūros ir 1 temperatūros jutiklį. Priversti juos dirbti yra tikra užduotis. Visi jutikliai yra analoginiai, todėl analoginį signalą turime paversti skaitmeniniu. Taip yra todėl, kad RPi (Rasberry Pi) gali „suprasti“tik skaitmeninius signalus. Norėdami gauti daugiau informacijos, spustelėkite čia.

Norėdami atlikti šią užduotį, jums reikės MCP3008, tai puikiai atliks darbą!

Jame yra 16 prievadų, skaičiuojant nuo viršaus (mažo burbulo) kairėje, žemyn, kitoje pusėje ir aukštyn. Pin1-8 yra mūsų jutiklių analoginio signalo įėjimai. Kitoje pusėje esantis 9 kaištis yra GND, kurį reikia prijungti prie visos grandinės GND, kitaip tai neveiks. 10-13 kaištį reikia prijungti atidžiau, jie perduos duomenis į RPi ir iš jo. 14 kaištis yra dar vienas GND, o 15 ir 16 kaiščiai yra VCC, jie turi būti prijungti prie teigiamos grandinės pusės.

Tai yra laidų išdėstymas:

  • MCP3008 VDD prie išorinio 3.3 V MCP3008 VREF prie išorinio 3.3 V
  • MCP3008 AGND į išorinį GND
  • MCP3008 DGND į išorinį GND
  • MCP3008 CLK į Raspberry Pi kaištį 18
  • MCP3008 DOUT į Raspberry Pi kaištį 23
  • MCP3008 DIN į „Raspberry Pi“kaištį 24
  • MCP3008 CS/SHDN į Raspberry Pi kaištį 25

Tai taip pat tinkamas laikas prijungti GND nuo RPI prie išorinio GND. Dėl to elektros srovė tekės iš RPi.

Štai kaip tai teisingai prijungti.

Būtinai prijunkite teisingai, kitaip galite viską trumpai sujungti!

Pirmasis kodo elementas yra čia.

Galite nukopijuoti mano kodą iš mano projekto „github“, esantį modeliuose. Analog_Digital.

Puslapio apačioje rasite šaltinio kodą, kad jis veiktų.

Tačiau mums reikia pirmojo jutiklio, kad galėtume išbandyti.

Turime išbandyti jutiklį, jei jis veikia. Prijunkite 3.3V arba 5V maitinimo šaltinį prie teigiamos TMP36 pusės. Nepamirškite jo prijungti ir prie GND, galbūt atsitiks kažkas kvailo, bet patikėkite. Tokia realybė;). Multimetru galite patikrinti jutiklio išėjimą, tai yra vidurinis kaištis. Naudodami šią paprastą lygtį galite patikrinti temperatūrą ° C. ((milivoltai*įėjimo įtampa) -500)/10 ir voila donne! Ate! Ne, hahah, mums reikia MCP3008. Prijunkite savo TMP36 analoginį kaištį prie pirmojo MCP3008 įvesties kaiščio. Tai yra 0 kaištis.

Šios MCP klasės apačioje galite naudoti pavyzdinį kodą. Arba kažkas, ką rasite internete, padarys darbą gerai.

3 žingsnis: duomenų bazė

Taigi dabar, kai galime perskaityti pirmąjį jutiklį, turime jį užregistruoti duomenų bazėje. Tai yra mūsų smegenų atmintis. Sukūriau šią duomenų bazę taip, kad ją būtų galima išplėsti ir lengvai keisti ateityje.

Taigi pirmiausia turime pagalvoti, ką gausime kaip įvestį ir ar reikia registruoti konkrečius dalykus, pavyzdžiui, tam tikrų objektų būsenas.

Mano atsakymas būtų toks: įvestis iš 6 jutiklių, todėl turime sudaryti jutiklių lentelę, su šiais jutikliais mes nustatysime vertes. Kas yra susieta su vertybe? Man tai yra lango būsena, ar jis atidarytas, ar uždarytas, kol jutiklis matavo vertę. Tačiau vieta taip pat yra mano vertės faktorius, todėl mes tai pridėsime. Vertės laikas ir data taip pat yra svarbūs, todėl pridėsiu tai.

Tolesnei plėtrai pridėjau vartotojo lentelę.

Taigi, kokia mano mintis apie lenteles: lentelės reikšmės, lentelės adresas (susietas su kambariu), stalo kambarys (susietas su verte), lentelės langas (susietas su verte), lentelės jutiklis (susietas su verte) ir lentelė gamtoje vartotojų.

Kalbant apie lentelių sujungimą. Kiekvienai vertei reikia vieno jutiklio, vieno lango, jutiklio vertės, ID, kad galėtume padaryti vertę unikalią, laiko žymę, kada vertė buvo padaryta, ir paskutinei mums nereikia kambario, kad jis būtų neprivalomas, bet gali būti pridėta.

Taigi dabar tai atrodo taip. Tai aš naudoju likusiam savo projektui.

4 žingsnis: „HNT11“, skirtas „Real Boys“

Taigi mums nebuvo leista naudotis jokiomis bibliotekomis. Viską turime užprogramuoti patys.

HNT11 yra vieno laido sistema, todėl tai reiškia, kad turite GND ir VCC, pavyzdžiui, bet kurį kitą elektroninį įrenginį, tačiau 3 kaištis yra įvesties ir išvesties kaištis. Taigi keista, bet iš to daug išmokau.

Prijunkite VCC prie išorinio 3.3V, o GND - prie išorinio GND.

DHT11 duomenų lape yra viskas, kas naudojama šiems jutikliams.

Galime nustatyti, kad aukštas bitas turi žemą ir aukštą bitą. Tačiau didelės dalies trukmė lemia bitą realiai. Jei aukštoji dalis skleidžiama ilgiau nei 100 µs (paprastai 127 µs), bitas yra didelis. Ar bitas yra trumpesnis nei 100 µs (paprastai apie 78 µs), bitas yra mažas.

Įjungus HNT11, jis pradės skleisti signalus. Tai visada yra 41 bitas. Tai prasideda nuo pradžios bitų, tai nieko nereiškia, todėl galime praleisti šį. Pirmieji 16 bitų/ 2 baitai yra sveikasis skaičius ir plūduriuojanti drėgmės dalis. Tai tas pats paskutinius 2 baitus, bet dabar tai yra temperatūra.

Taigi mums reikia tik apskaičiuoti kiekvieno bito trukmę ir tada mes baigsime.

DHT11 šaltinio kode rasite mano metodą, kaip išspręsti šią problemą.

5 veiksmas: dujų jutikliai (tik legendos)

Dujų jutikliai (tik legendos)
Dujų jutikliai (tik legendos)
Dujų jutikliai (tik legendos)
Dujų jutikliai (tik legendos)

Taigi projekto pradžioje pagalvojau, kad būtų puiki idėja naudoti daugybę jutiklių. Prieš veikdami pagalvokite ir pirkite vietoje, tai sutaupys daug miego valandų! Nes galite pradėti anksčiau ir tai padarysite noriau.

Taigi aš turiu 4 dujų jutiklius. MQ135, MQ8, MQ4 ir MQ7 visi šie jutikliai turi specifines dujas, kurias jie geriausiai matuoja. Bet visa tai skiriasi savo konfigūracija.

Taigi pirmiausia naudoju duomenų lapą, tai manęs nenori. Tada ieškojau kodo pavyzdžių. Radau vieną biblioteką iš „Adafruit“. Aš stengiausi tai kuo geriau atkartoti. Jis veikė su vienu iš keturių jutiklių.

Leidau kurį laiką pailsėti ir grįžau prie jo.

Ką padariau, kad šis jutiklis veiktų:

- Aš naudoju duomenų lapą norėdamas išmatuoti dujų taškus. Taigi nuo 1 ro/rs iki 400 ppm, nuo 1,2 iki 600 ppm …

- Tada visus tuos taškus įdėjau į „Excel“ir ištraukiau kreivės formulę. Išsaugojau tai savo duomenų bazėje.

- Iš duomenų lapo taip pat perskaičiau normalų pasipriešinimą ir atsparumą švariam orui. Šios vertės taip pat išsaugotos duomenų bazėje.

Aš visa tai įtraukiau į tam tikrą kodą, tai galite rasti kaip paskutines tris funkcijas MCP3008 klasėje. Bet tai dar nebaigta, deja, neturėjau pakankamai laiko.

6 žingsnis: „Shiftregister“, 74HC595AG

„Shiftregister“, 74HC595AG
„Shiftregister“, 74HC595AG
„Shiftregister“, 74HC595AG
„Shiftregister“, 74HC595AG
„Shiftregister“, 74HC595AG
„Shiftregister“, 74HC595AG
„Shiftregister“, 74HC595AG
„Shiftregister“, 74HC595AG

Taigi tai IC. Ir tai daro kažką ypatingo, naudojant šį įrenginį galima naudoti mažiau GPIO išėjimų tam pačiam išėjimo signalui. Aš tai naudojau skystųjų kristalų ekranui (LCD) ir savo šviesos diodams. LCD ekrane parodysiu IP adresą, kad visi galėtų naršyti svetainėje.

Šviesos diodai išmintingai pasirenka 2 raudonus, 3 geltonus ir 2 žalius. Tai bet kuriuo metu parodys oro kokybę kambaryje.

Perkėlimo registras yra lygiagretus išvesties įrenginys, todėl neįmanoma išvesti skirtingų signalų per tam tikrą laikotarpį. Tai būtų įmanoma, jei būtų užprogramuota iš išorės, bet nebūtų iš pradžių palaikoma.

Kaip naudoti IC? Na, jūs turite 5 įėjimus ir 9 išėjimus. 8 loginiai išėjimai 8 kaiščiams, o po to - 9 kaištis, kad likę duomenys būtų siunčiami kitam pamainos registrui.

Taigi mes prijungiame 16 kaištį prie išorinio VCC, kitas kaištis yra pirmoji išvestis, todėl LCD mums to reikės. 14 kaištis yra duomenų linija, čia mes siunčiame duomenis. 13 -asis kaištis yra jungiklio įjungimas, žemas signalas leidžia IC, norint išjungti reikia didelio signalo. 12 kaištis yra smeigtukas, kuriame galime nustatyti, kada buvo išsiųstas bitas, kai traukiate šį kaištį žemyn, kad nuo aukšto iki žemo jis nuskaitytų 13 kaiščio signalo būseną ir išsaugotų jį 8 bitų atmintyje. 11 kaištis yra panašus, kai šis kaištis yra nustatytas aukštai, tada žemai, jis išleidžia 8 bitus į savo prievadą. Ir paskutinis kaištis, 10 kaištis yra pagrindinis atstatymas, šis kaištis turi likti aukštas arba jis neveiks. Paskutinis ryšys yra GND kaištis 8, kurį turime prijungti prie išorinio GND.

Taigi dabar prijunkite kaiščius, kaip jums patinka, prie aviečių pi. Aš tai padariau kaip įmanoma arčiau vienas kito, kad žinotų, kur jie yra.

Kai gausite tinkamą išėjimą. Šiuos šviesos diodus galite lituoti prie PCB. ir 220 omų rezistoriai. Lituokite IC išvestį į atitinkamą šviesos diodą. Dabar turėtumėte turėti kažką panašaus.

Mano bandymo kodą rasite čia, „Shiftregister“. Kai dirbate su 74HC595N, jums nereikės MR, todėl galėsite palikti jį neprijungtą.

LCD yra beveik tas pats. Jį naudoti yra gana paprasta naudojant perjungimo registrą, nes LCD įvestis yra tiksliai įjungta perjungimo registrui.

Skystųjų kristalų ekranui yra dar vienas kodas, kad jis veiktų, tačiau jis yra beveik toks pat kaip tik perjungimo registras. Bandymo kodą rasite čia, skystųjų kristalų ekrane.

7 žingsnis: „Frontend“, vertinga pamoka

Taigi čia aš nuklysiu, tai yra skyrius, kaip turėtumėte tai padaryti. Tai labai vertingas dalykas, kurio išmokote.

Padarykite frontendą prieš backend !!!!

Aš tai padariau atvirkščiai. Aš be reikalo skambinau savo duomenų bazei, tam skiriu daug laiko.

Nukreipimo puslapyje man reikėjo dabartinės temperatūros ir drėgmės bei visų dujų jutiklių reikšmių gražioje diagramoje. Taip pat turiu parodyti RPi IP adresą.

Jutiklių puslapyje man reikia pasirinkti vieną jutiklį ir pasirinkimo laiką. Pasirinkau vieną dieną ir tada laikotarpį nuo tos dienos. Tai man labai palengvino, nes aš galėjau tai labiau kontroliuoti.

Paskutiniame puslapyje, nustatymų puslapyje, galima valdyti tam tikras vertes, pvz., Sveikatai pavojingas ar pavojingas dujas ir temperatūros lygius. Taip pat galite paleisti RPi iš naujo, jei manote, kad tai reikia padaryti.

Taigi pirmiausia sukūriau dizainą, kad galėčiau lengvai pradėti dirbti su kodavimo dalimi. Palaipsniui padariau pažangą vienu metu. Pirmiausia užduotis buvo mobili, todėl pirmiausia sutelksiu dėmesį į tai. Tada eisiu į didesnius ekranus.

Mano puslapius, css ir js galite rasti mano „Github“.

8 žingsnis: „Backend“

Šią dalį sumaišiau su priekine dalimi. Kai ką nors sukūriau priekinei sistemai, priversdavau ją veikti ir užpakalinėje sistemoje. Taigi vėliau jo nereikės peržiūrėti. To aš iš pradžių nepadariau ir dėl to praradau tikrai 2 savaičių laiko. Kvailas man! Tačiau pamoka, kurią skubiai gaunu kitiems projektams.

Taigi, kai kuriate foninę programą, sukurkite tai, ką naudosite. Tačiau padarykite tai būsimu įrodymu, padarydami jį daugkartinio naudojimo ir nesunkiai užkoduotą. Taigi, kai man reikės paskutinių 50 mano DHT11 verčių, patikrinsiu, ar yra daromos vertės? Taip, kaip juos įtraukti į duomenų bazę? Kaip juos pašalinti iš duomenų bazės. Kaip man tai parodyti? Diagrama, grafikas ar tik paprasti duomenys? Tada sukuriu naują maršrutą su įvairiais parametrais ir savybėmis, tokiomis kaip datos, konkretūs pavardės ar tai, ką aš vadinsiu. Aš turiu galvoje, ar aš vadinu visas MQ jutiklių reikšmes, ar visus jutiklius, kurių pavadinime yra MQ. Tada aš įdedu šiek tiek klaidų. Kai skambučio užklausa yra tinkamas metodas, tada ji gali tęsti, kitaip gaunama graži klaida.

Taip pat čia yra temos, tai yra programinės įrangos dalys, leidžiančios paleisti lygiagretų kodą. Galite paleisti svetainių skambučius, vertės kūrimo funkciją ir „led+shiftregister“. Šios funkcijos veikia visiškai nepriklausomai viena nuo kitos.

Taigi vadovams. Aš padariau apatinę/ sveiką CO2 vertę. Ši vertė buvo gauta iš kelių vyriausybės šaltinių. Sveika klasių vertė yra mažesnė nei 600 ppm CO2 vienam kubiniam metrui. Nesveika vertė yra didesnė nei 2000 ppm. Taigi šviesos diodai sukuria tiltą. Jei MQ4 jutiklio vertė yra 1400, jis automatiškai apskaičiuoja, kokio pavojaus lygio jis yra. 2000 - 600 = 1400, taigi bendras diapazonas yra 1400 /7 = 200. Taigi, kai vertė pasiekia 550, rodoma žalia lemputė. 750 rodo 2 žalias lemputes, 950 1 geltonas 2 žalias lemputes. Ir taip toliau.

Kai vertė viršija vidurį, atsidaro langas. Aš naudoju steppenmotorį dėl didelio sukimo momento ir tikslumo. Ir kai vertė viršija 2000, įsijungia nedidelis aliarmas. Tai kelia pavojų žmonėms kambaryje.

Taip pat galime aptikti dūmų dujas, kad kiltų gaisras. Tai taip pat registruoja. Kai jis viršija tam tikrą vertę, įsijungia aliarmas ir mirksi šviesos diodas.

Skystųjų kristalų ekranas daugiausia skirtas parodyti IP adresą, kad galėtumėte naršyti svetainėje.

Viską + kodą galite rasti mano „Githubin“programoje.py

9 žingsnis: padarykite bylą

Padaryti bylą
Padaryti bylą
Padaryti bylą
Padaryti bylą
Padaryti bylą
Padaryti bylą

Radau nedidelį kompiuterio dėklą visiems savo komponentams.

Aš supjaustiau aliuminio lakštą pagal dydį. Ir išgręžė keletą skylių, kuriose pailsėtų lapas. Tai atitinka pagrindinės plokštės skyles.

Tada pažiūrėjau, kaip viskas tilps į dėklo vidų. Viską išdėliojau ir pradėjau judėti.

Kai buvau patenkinta, kaip tai veiks, pradėjau žymėti skyles, kurių man reikia jutikliams, RPi, PCB, galios moduliams ir steppenmotor moduliui. Skylės skirtos PCB izoliacijai, tai padarys šiek tiek vietos, kad metalinės dalys nesiliestų su aliuminio lakštu. Tai taip pat suteikia gražią išvaizdą.

Aš paėmiau iš kiekvieno IC ar kito prietaiso kabelius ir surišau juos. Taip yra todėl, kad galėjau pamatyti, kokie kabeliai yra skirti. Aš viską gražiai padėjau ant kai kurių atramų ir naudoju keletą veržlių ir varžtų, kad viską gražiai laikyčiau.

Norėdami tai padaryti, naudoju 2 baterijas. Jie tiekia daug energijos, tačiau tai vis dar yra baterijos, todėl laikui bėgant jie išeikvos. Aš juos sumontavau su tam tikru velcro. Naudojau velcro, nes tada galėčiau lengvai pakeisti ar atsikratyti baterijų.

Steppenmotor, LCD ir šviesos diodai išeis iš korpuso viršaus. Taigi atsargiai uždėjau dėklo dangtelį ant viršaus ir pažymėjau skyles bei gręžiau jas grąžtu. Taigi mes galime lengvai pamatyti viską.

Kadangi korpusas baigtas, turime viską prijungti, čia rasite laidų schemą.

10 žingsnis: įvertinimas ir išvados

Vertinimas ir išvada
Vertinimas ir išvada

Taigi tai buvo/buvo mano pirmasis projektas.

Atrodo gerai, manau.

Išmokau daug naujų dalykų, išmokau didžiąją ir blogąją projekto valdymo puses. Tai tikrai buvo vertinga pamoka. Nusileidau, kad negali laukti, tau tikrai reikia ir toliau duoti. Turite dokumentuoti kiekvieną judesį (beveik labai), ir tai padaryti, kai ką tik padarėte.

Sutelkite dėmesį į 1 dalyką vienu metu. Norite temperatūros ekrane? Daryk šį, tą ir tą. Nelaukite ir nebandykite leisti tai praeiti. Tai nepadės. Ir prarasite taip brangų laiką.

4 savaitės taip pat atrodo daug laiko. Bet mažiau yra tiesa. Tai tiesiog netinka. Turite tik 4 savaites. Pirmos 2 savaitės spaudimo tikrai nėra. 3 savaičių pabaiga ir 4 savaičių bemiegė naktis. Štai kaip neturėtumėte to daryti.

Aš gal buvau šiek tiek ambicingas: aš labai mažas dėklas, nėra lengva naudoti jutiklius, baterijas … Padarykite tai daug paprastesnį, o po to vis sunkiau ir sunkiau, tik tada gausite gerą prototipą/ produktą.

Rekomenduojamas: