Sisukord:

CPC klassi reostuse kontrollija: 10 sammu
CPC klassi reostuse kontrollija: 10 sammu

Video: CPC klassi reostuse kontrollija: 10 sammu

Video: CPC klassi reostuse kontrollija: 10 sammu
Video: "ЭКЗАМЕН" ("EXAM") 2024, November
Anonim
CPC klassi reostuse kontrollija
CPC klassi reostuse kontrollija
CPC klassi reostuse kontrollija
CPC klassi reostuse kontrollija
CPC klassi reostuse kontrollija
CPC klassi reostuse kontrollija

Tere, olen Belgia üliõpilane ja see on minu esimene suur projekt bakalaureusekraadi saamiseks! See juhend sisaldab teavet selle kohta, kuidas teha suletud ruumide, eriti klassiruumide jaoks õhumõõturit!

Ma kuulen sind mõtlemast, miks see projekt? Noh, kõik sai alguse sellest, kui ma keskkooli läksin. Pärastlõunal pärast korralikku lõunat ja pausi algavad tunnid uuesti. Kuid on probleem, õpetaja unustas meie lõuna ajal akna lahti, nii et see on kuum, higine ja te ei saa keskenduda, kuna jääte magama. Seda seetõttu, et õhus on palju CO2.

Minu projekt lahendab selle ja muudab kõik õpilased oma tundides keskendunumaks.

Tarvikud

1 x Vaarika Pi 4 (55 eurot)

1 x steppenmotor koos juhiga (5 eurot)

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

2 x samm -sammumoodul (2x 5 eurot)

1 x 16x2 LCD (1,5 eurot)

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

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

LED -id: 2x roheline, 2x punane, 3x kollane (leitud mõnest vanast riistvarast, tavaliselt 0,01 € tk)

Patareide pistik (2 x 0,35 €)

40 f-to-f pistikukaablit (1,80 eurot)

40 f-to-m ühenduskaablit (1,80 eurot)

20 m-m ühenduskaablid (1,80 eurot)

2 x trükkplaat jootmiseks (2x 0,70 €)

Tööriistad:

Jootekolb (eelistatavalt 60 vatti)

Tina jootma

Alumiiniumleht 50x20

Korpus (kasutasin vana mini arvutiümbrist)

See võib kergesti olla mõni MDF või oma ideed.

Samm: RPi seadistamine

RPi seadistamine
RPi seadistamine

Nii et meie süda, meie aju ja hing on selles tootes. Ähvardage seda hästi, sest see võib teile ühel või teisel viisil haiget teha. Ma kasutan RPi 4B 4gb, teised mudelid peaksid hästi minema. Vanematel mudelitel võib oodata rohkem viivitust.

OS -i saime oma koolist mõne eelinstallitud tarkvaraga, näiteks phpMyAdmin.

Kõigepealt veenduge, et saate oma Raspberry Pi -ga ühenduse luua ssh kaudu, vajame seda palju aega.

Nii et kõigepealt peaksime lubama SPI-siini, GPIO-nööpnõelad ja keelama muud bussid, me ei vaja neid.

Seda saate teha menüüs raspi-config. Liikuge liideste juurde ja lubage GPIO ja SPI tavaliselt pole seda vaja. Kui olete siin, laiendage oma salvestusruumi, minnes täiustatud ja seejärel vajutage salvestusruumi laiendamiseks sisestusklahvi.

Nüüd taaskäivitage. Meil on vaja mõningaid laiendusi, et kasutada meie VS -koodi meie serveris ja andmebaasis.

VS -koodi laienduse installiprotsessi leiate siit.

Nüüd installime oma serveri ja andmebaasi laiendused. Kasutage terminali ja tippige „python install flask, kolb-cors, mysql-python-connector, eventlet” ja oodake, kuni see on lõpetatud.

Nüüd saame alustada projekti tegemisest.

2. samm: MCP3008 + TMP36

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

Seega on meil 6 andurit: 4 gaasi, 1 niiskus + temperatuur ja 1 temperatuuriandur. Nende tegelikuks tegemine on tõeline ülesanne. Kõik andurid on analoogandurid, seega peame teisendama analoogsignaali digitaalsignaaliks. Selle põhjuseks on asjaolu, et RPi (Rasberry Pi) suudab "mõista" ainult digitaalseid signaale. Lisateabe saamiseks klõpsake siin.

Selle ülesande täitmiseks vajate MCP3008, see teeb töö suurepäraselt!

Sellel on 16 porti, lugedes ülevalt (väike mull) vasakule, alla, teisele poole ja üles. Pin1-8 on meie andurite analoogsignaali sisendid. Teisel pool olev tihvt 9 on GND, see tuleb ühendada kogu vooluahela GND -ga, vastasel juhul see ei tööta. Tihvtid 10-13 tuleb hoolikamalt ühendada, need edastavad andmeid RPi-le ja sealt. Tihvt 14 on teine GND ja tihvtid 15 ja 16 on VCC -d, need tuleb ühendada ahela positiivse küljega.

See on juhtmestiku paigutus:

  • MCP3008 VDD välisele 3.3V MCP3008 VREF välisele 3.3V
  • MCP3008 AGND välisele GND -le
  • MCP3008 DGND välisele GND -le
  • MCP3008 CLK kuni Raspberry Pi tihvti 18
  • MCP3008 DOUT Raspberry Pi tihvtile 23
  • MCP3008 DIN kuni Raspberry Pi tihvti 24
  • MCP3008 CS/SHDN Raspberry Pi tihvti 25 külge

See on ka hea aeg GND ühendamiseks RPI -st välise GND -ga. See tekitab elektrilisuse voolu RPi -st.

Siit saate teada, kuidas seda õigesti ühendada.

Ühendage kindlasti õigesti, vastasel juhul võite kõik lühistada!

Siin sisestatakse esimene kooditükk.

Saate minu koodi minu projekti githubist mudelite alt kopeerida. Analog_Digital.

Lehe allservast leiate selle toimimiseks lähtekoodi.

Kuid me vajame oma esimest andurit, et saaksime katsetada.

Peame andurit testima, kui see töötab. Ühendage 3,3 V või 5 V toiteallikas TMP36 positiivse küljega. Ärge unustage seda ka GND -ga ühendada, võib -olla juhtub midagi tobedat, aga uskuge mind. See on reaalsus;). Multimeetriga saate testida anduri väljundit, see on keskmine tihvt. Selle lihtsa võrrandi abil saate kontrollida temperatuuri ° C. ((milivoltid*sisendpinge) -500)/10 ja voila donne! Hüvasti! No hahah, meil on vaja MCP3008. Ühendage oma TMP36 analoogpistik MCP3008 esimese sisendpinniga. See on pin 0.

Selle MCP-klassi jaoks võite kasutada alltoodud näidiskoodi. Või midagi, mida leiate Internetist, teeb selle töö hästi.

3. samm: andmebaas

Nüüd, kui saame lugeda oma esimesest andurist, peame selle andmebaasi logima. See on meie aju mälu. Ma kujundasin selle andmebaasi laiendatavaks ja hõlpsasti muudetavaks tulevaste muudatuste jaoks.

Nii et kõigepealt peame mõtlema, mida me sisenditena saame ja kas peame logima konkreetseid asju, näiteks teatud objektide olekuid.

Minu vastus oleks: sisend 6 andurilt, nii et peame tegema andurite tabeli, nende anduritega teeme väärtusi. Mis on väärtusega seotud? Minu jaoks on see akna olek, kas see on avatud või suletud ajal, mil andur mõõtis väärtust. Kuid asukoht on ka minu väärtuse tegur, nii et lisame selle. Väärtuse kellaaeg ja kuupäev on samuti olulised, nii et lisan selle.

Edasiseks laiendamiseks lisasin kasutajate tabeli.

Mis on minu idee tabelite puhul: tabeli väärtused, tabeli aadress (lingitud ruumiga), tabeliruum (väärtusega seotud), tabeli aken (väärtusega seotud), tabeliandur (väärtusega seotud) ja tabel looduses kasutajatele.

Mis puutub tabelite ühendamisse. Iga väärtus vajab ühte andurit, ühte akent, anduri väärtust, ID -d, et saaksime muuta väärtuse ainulaadseks, ajatempli väärtuse koostamise ajale ja viimaseks ei vaja me ruumi, nii et see oleks valikuline, kuid võimalik lisatud.

Nii et see näeb praegu välja selline. Seda ma kasutan oma ülejäänud projekti jaoks.

4. samm: HNT11, tõeliste poiste jaoks

Nii et kuna meil ei lubatud kasutada mingeid raamatukogusid. Peame kõik ise programmeerima.

HNT11 on ühe juhtmega süsteem, seega tähendab see, et teil on GND ja VCC, näiteks mis tahes muu elektrooniline seade, kuid 3 tihvti on sisend- ja väljundnõel. Nii et see on kuidagi imelik, aga ma õppisin sellest palju.

Ühendage VCC välise 3.3V ja GND välise GND -ga.

DHT11 andmeleht sisaldab kõike selle anduri kasutamiseks.

Saame kindlaks teha, et kõrge bitt sisaldab madalat ja kõrget bitti. Kuid kõrge osa kestus määrab bitti reaalselt. Kui kõrge osa kiirgub kauem kui 100 µs (tavaliselt 127 µs), on bitt kõrge. Kas bitt on lühem kui 100 µs (tavaliselt umbes 78 µs), on bitt madal.

Kui HNT11 on aktiveeritud, hakkab see signaale väljastama. See on alati 41 bitti. See algab algusbitiga, see ei tähenda midagi, nii et võime selle vahele jätta. Esimesed 16 bitti/ 2 baiti on niiskuse täisarv ja ujuv osa. See on sama kahe viimase baidi kohta, kuid nüüd on see temperatuuri jaoks.

Nii et meil on vaja ainult arvutada iga biti kestus ja siis oleme valmis.

DHT11 allikakoodist leiate minu probleemi lahendamise meetodi.

5. samm: gaasiandurid (ainult legendid)

Gaasiandurid (ainult legendid)
Gaasiandurid (ainult legendid)
Gaasiandurid (ainult legendid)
Gaasiandurid (ainult legendid)

Seega mõtlesin projekti alguses, et oleks suurepärane idee kasutada paljusid andureid. Mõelge enne tegutsemist ja ostke kohapealt, nii säästate palju unetunde! Sest võite alustada varem ja teete seda meelsamini.

Seega on mul 4 gaasiandurit. MQ135, MQ8, MQ4 ja MQ7 kõigil neil anduritel on spetsiifilised gaasid, mida nad kõige paremini mõõdavad. Kuid need kõik on oma konfiguratsioonis erinevad.

Nii et kõigepealt kasutasin andmelehte, see ei teinud mind soovijaks. Siis otsisin koodinäiteid. Leidsin ühe raamatukogu Adafruitist. Üritasin seda võimalikult hästi korrata. See töötas ühega neljast andurist.

Lasin tal mõnda aega puhata ja tulin selle juurde tagasi.

Selle ühe anduri jaoks toimimiseks tegin järgmist:

- Kasutasin andmelehte gaasi punktide märkimiseks, mida tahtsin mõõta. Seega 1 ro/rs kuni 400 lk/min, 1,2 kuni 600 lk/min…

- Siis panin kõik need punktid Excelisse ja ekstraheerisin kõvera valemi. Salvestasin selle oma andmebaasi.

- Andmelehelt lugesin ka tavalist takistust ja puhta õhu takistust. Need väärtused salvestati ka andmebaasi.

Valasin selle kõik mõnda koodi sisse, selle leiate kolmest viimasest funktsioonist klassis MCP3008. Kuid see pole veel lõppenud, kahjuks ei olnud mul piisavalt aega.

6. samm: vahetuste register, 74HC595AG

Käiguvahetusregister, 74HC595AG
Käiguvahetusregister, 74HC595AG
Käiguvahetusregister, 74HC595AG
Käiguvahetusregister, 74HC595AG
Käiguvahetusregister, 74HC595AG
Käiguvahetusregister, 74HC595AG
Käiguvahetusregister, 74HC595AG
Käiguvahetusregister, 74HC595AG

Nii et see on IC. Ja see teeb midagi erilist, selle seadmega on võimalik sama väljundsignaali jaoks kasutada vähem GPIO väljundeid. Kasutasin seda LCD (vedelkristallkuvar) ja oma LED -ide jaoks. Näitan LCD -l IP -aadressi, et kõik saaksid saidile surfata.

Valgusdioodid valivad targalt 2 punast, 3 kollast ja 2 rohelist. See näitab igal ajal ruumi õhukvaliteeti.

Käiguvahetusregister on paralleelne väljundseade, seega ei ole võimalik teatud aja jooksul erinevaid signaale väljastada. See oleks võimalik, kui see oleks programmeeritud väljastpoolt, kuid pole algselt toetatud.

Kuidas IC -d kasutada? Noh, teil on 5 sisendit ja 9 väljundit. 8 loogilist väljundit 8 tihvti jaoks ja seejärel 9. pin, et saata järelejäänud andmed teisele vahetusregistrile.

Niisiis ühendame tihvti 16 välise VCC -ga, järgmine tihvt on esimene väljund, nii et LCD jaoks vajame seda. Tihvt 14 on andmeliin, siia saadame andmed. 13. tihvt on lüliti sisse lülitatud, madal signaal võimaldab IC -l, selle väljalülitamiseks on vaja kõrget signaali. Tihvt 12 on tihvt, kust saame kindlaks määrata, millal bitti saadeti, kui tõmbate selle tihvti allapoole nii kõrgelt madalale, et see loeb tihvti 13 signaali olekut ja salvestab selle oma 8 -bitisse mällu. Tihvt 11 on sarnane, kui see tihvt on kõrgele ja madalale seatud, väljastab see 8 bitti oma porti. Ja viimane tihvt, tihvt 10 on peamine lähtestamine, see tihvt peab jääma kõrgele või see ei tööta. Viimane ühendus on GND tihvt 8, mille peame ühendama välise GND -ga.

Nii et nüüd ühendage tihvtid, kuidas teile meeldib, vaarika pi. See, kuidas ma seda tegin, ühendas nad üksteisega võimalikult lähedale, veendumaks, et tean, kus nad asuvad.

Kui saate õige väljundi. Saate selle LED -idega jootma trükkplaadile. ja 220 oomi takistid. Jootke IC väljund vastavale ledile. Nüüd peaks teil midagi sellist olema.

Minu testkoodi leiate siit Shiftregisteri alt. Kui töötate seadmega 74HC595N, ei vaja te MR -i, nii et saate selle ühendamata jätta.

LCD on peaaegu sama. Seda on üsna lihtne kasutada koos vahetusregisteriga, kuna LCD -sisend on täpselt vahetusregistri sisend.

LCD -ekraanil on selle toimimiseks mõni muu kood, kuid see on üsna sama kui lihtsalt käiguvahetaja. Testikoodi leiate siit LCD -ekraanilt.

7. samm: kasutajaliides, väärtuslik õppetund

Nii et siin ma ekslen, see on lõik sellest, kuidas peaksite seda tegema. See on midagi väga väärtuslikku, mida õppisime.

Tehke kasutajaliides enne taustaprogrammi !!!!

Ma tegin seda vastupidi. Tegin oma andmebaasi jaoks kasutuid kõnesid, kulutan sellele palju aega.

Sihtlehel vajasin praegust temperatuuri ja niiskust ning kõigi gaasiandurite väärtusi kenas graafikus. Pean näitama ka RPi IP -aadressi.

Andurite lehel vajan ühe anduri valikut ja valimisaega. Valisin ühe päeva valiku ja seejärel perioodi sellest päevast. See tegi minu jaoks palju lihtsamaks, sest ma sain seda rohkem kontrollida.

Viimasel lehel on seadete lehel võimalik hallata teatud väärtusi, nagu tervisele ohtlik või ohtlik gaas ja temperatuur. Samuti võite RPi taaskäivitada, kui tunnete vajadust seda teha.

Nii et kõigepealt tegin kujunduse, et saaksin hõlpsalt alustada kodeeriva osaga. Olen järk -järgult edenenud üks asi korraga. Ülesanne oli kõigepealt mobiilne, nii et keskendun sellele kõigepealt. Siis suundun suuremate ekraanide juurde.

Minu lehed, css ja js leiate minu Githubist.

8. samm: taustaprogramm

See osa on see osa, mille ma esipaneeliga segasin. Kui tegin midagi kasutajaliidese jaoks, panin selle taustaprogrammiga tööle. Nii et see ei vajaks hiljem ülevaatamist. See oli asi, mida ma alguses ei teinud ja seetõttu kaotasin kindlasti 2 nädalat aega. Loll ma! Kuid õppetunni võtan ma teiste projektide jaoks.

Nii et kui teete taustaprogrammi, tehke midagi, mida kasutate. Kuid tehke see tulevikukindlaks, muutes selle korduvkasutatavaks ja mitte kõvasti kodeerituks. Nii et kui mul on vaja oma DHT11 50 viimast väärtust, kontrollin, kas väärtusi tehakse? Jah, kuidas ma need andmebaasi panen. Kuidas ma need andmebaasist välja saan? Kuidas seda näidata? Diagramm, graafik või lihtsalt andmed? Seejärel koostan uue marsruudi erinevate parameetrite ja omadustega, nagu kuupäevad, konkreetsed sensonimed või helistamine. Ma mõtlen, kas kutsun kõiki väärtusi MQ anduritelt või kutsun kõiki andureid, mille nimi on MQ. Siis panen sisse mõne veakäsitluse. Kui kõne taotlus on õige meetod alles siis saab see edasi minna, muidu saab ilusa vea.

Siin on ka niidid, need on tarkvara osad, mis võimaldavad teil paralleelset koodi käivitada. Saate käivitada veebisaitide kõnesid, väärtuse loomise funktsiooni ja led+shiftregisterit. Need funktsioonid töötavad üksteisest täiesti sõltumatult.

Nii et ledide jaoks. Tegin CO2 jaoks põhja/ tervisliku väärtuse. See väärtus pärines mitmest valitsusallikast. Klassiruumide tervislik väärtus on alla 600 ppm CO2 kuupmeetri kohta. Ebatervislik väärtus on kõik üle 2000 ppm. Nii et LED -id teevad silla. Kui MQ4 anduri väärtus on 1400, arvutatakse see automaatselt välja, millisel ohutasemel see on. 2000 - 600 = 1400, seega on kogu vahemik 1400 /7 = 200. Nii et kui väärtus jõuab 550 -ni, näitab see rohelist LED -i. 750 näitab 2 rohelist LED -i, 950 1 kollast 2 rohelist LED -i. Ja nii edasi.

Kui väärtus ületab keskmist, avaneb aken. Kasutasin suure pöördemomendi ja täpsuse tõttu steppenmootorit. Ja kui väärtus ületab 2000, hakkab tööle väike alarm. Selle eesmärk on häirida ruumis olevaid inimesi.

Samuti võime tuvastada suitsugaase, nii et tulekahju korral. See registreerib ka selle. Kui see ületab teatud väärtuse, lülitub alarm sisse ja LED -tuli vilgub.

LCD -ekraan on peamiselt IP -aadressi näitamiseks, et saaksite saidil surfata.

Kõik + koodid leiate minu Githubini rakendusest app.py

9. samm: kohtuasja tegemine

Juhtumi tegemine
Juhtumi tegemine
Juhtumi tegemine
Juhtumi tegemine
Juhtumi tegemine
Juhtumi tegemine

Leidsin väikese arvutiümbrise kõigi oma komponentide jaoks.

Lõikasin alumiiniumlehe parajaks. Ja puuris mõned augud, kus leht toetuks. See vastab emaplaadi aukudele.

Siis vaatasin, kuidas kõik mahub korpuse sisse. Panin kõik kokku ja hakkasin liikuma.

Kui olin rahul selle toimimisega, hakkasin märkima auke, mida vajan andurite, RPi, trükkplaatide, võimsusmoodulite ja steppenmotor -mooduli jaoks. Avad on trükkplaatide eraldamiseks, see teeb ruumi, nii et metallosad ei puutuks kokku alumiiniumplekiga. See annab ka kena välimuse.

Haarasin igast IC -st või muust seadmest kaablid ja sidusin need kokku. See on sellepärast, et ma nägin, mis kaablid milleks on. Asetasin kõik ilusti mõnele vaheseinale ja kasutasin mõnda mutrit ja kruvi, et kõik kenasti paigas hoida.

Selle toiteks kasutasin 2 akut. Need annavad palju energiat, kuid need on endiselt patareid, nii et need tühjenevad aja jooksul. Paigaldasin need mõne takjapaelaga. Kasutasin takjapaela, sest siis saaksin patareisid lihtsalt vahetada või lahti saada.

Steppenmotor, LCD ja LED -id tulevad korpuse ülaosast välja. Niisiis panin korpuse kaane ettevaatlikult peale ja märgistasin augud ning puurisin need puuriga. Nii et me näeme kõike hõlpsalt.

Kuna juhtum on valmis, peame kõik juhtmed ühendama, siit leiate juhtmestiku skeemi.

10. etapp: hindamine ja järeldus

Hindamine ja järeldus
Hindamine ja järeldus

Nii et see on/oli minu esimene projekt.

See tundub okei vist.

Õppisin palju uusi asju, õppisin projektijuhtimise suuri ja halbu külgi. See oli tõesti väärt õppetund. Ma toetusin, et te ei saa oodata, peate tõesti edasi andma. Peate dokumenteerima iga liigutuse (peaaegu väga liigutuse) ja selle, et peate seda tegema just siis, kui seda just tegite.

Keskenduge ühele asjale korraga. Kas soovite ekraani temperatuuri? Tehke seda, seda ja seda. Ärge oodake ega proovige sellel mööduda. See ei aita. Ja see kaotab teile nii väärtusliku aja.

Ka 4 nädalat tundub palju aega. Kuid vähem on tõsi. See pole lihtsalt õige. Teil on ainult 4 nädalat. Esimesed 2 nädalat ei ole tegelikult nii palju survet. 3 -nädalane lõpetamine ja 4 -nädalane magamata öö. Nii ei tohiks seda teha.

Ma olin võib -olla natuke ambitsioonikas: mul on väga väike ümbris, pole hõlpsasti kasutatavaid andureid, patareisid … Tehke see palju lihtsamaks ja tehke siis järk -järgult raskemaks, alles siis saate hea prototüübi/ toote.

Soovitan: