MPK klases piesārņojuma pārbaudītājs: 10 soļi
MPK klases piesārņojuma pārbaudītājs: 10 soļi
Anonim
MPK klases piesārņojuma pārbaudītājs
MPK klases piesārņojuma pārbaudītājs
MPK klases piesārņojuma pārbaudītājs
MPK klases piesārņojuma pārbaudītājs
MPK klases piesārņojuma pārbaudītājs
MPK klases piesārņojuma pārbaudītājs

Sveiki, esmu students no Beļģijas, un šis ir mans pirmais lielais projekts bakalaura grāda iegūšanai! Šī pamācība ir par to, kā izveidot gaisa plūsmas mērītāju slēgtām telpām, īpaši klasēm!

Es dzirdu, ka jūs domājat, kāpēc šis projekts? Nu, viss sākās, kad es gāju vidusskolā. Pēcpusdienā pēc kārtīgām pusdienām un pārtraukuma atkal sākas nodarbības. Bet ir problēma, skolotājs aizmirsa atvērt logu, kamēr mēs pusdienojām, tāpēc ir karsts, sasvīdis un jūs nevarat koncentrēties, jo aizmigāt. Tas ir tāpēc, ka gaisā ir daudz CO2.

Mans projekts atrisinās šo problēmu un padarīs visus studentus koncentrētākus stundu laikā.

Piegādes

1 xRaspberry Pi 4 (€ 55)

1 x steppenmotor ar vadītāju (€ 5)

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

2 x atkāpšanās modulis (2x € 5)

1 x 16x2 LCD (1,5 eiro)

Sensori: 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 €)

Gaismas diodes: 2x zaļas, 2x sarkanas, 3x dzeltenas (atrodamas vecā aparatūrā, parasti katra ir 0,01 €)

Savienotājs baterijām (2 x 0,35 €)

40 kabeļi no f līdz f (1,80 eiro)

40 kabeļi no f-to-m (1,80 eiro)

20 m līdz m savienotāja kabeļi (1,80 eiro)

2 x PCB lodēšanai (2x € 0,70)

Rīki:

Lodāmurs (vēlams 60 vati)

Alva līdz lodēšanai

Alumīnija loksne 50x20

Korpuss (es izmantoju vecu mini datora korpusu)

Tas var viegli būt MDF vai pašu idejas.

1. darbība: RPi iestatīšana

RPi iestatīšana
RPi iestatīšana

Tātad mūsu sirds, mūsu smadzenes un mūsu dvēsele ir šajā produktā. Apdraudiet to labi, jo tas var jums kaut kādā veidā kaitēt. Es izmantoju RPi 4B 4gb, citiem modeļiem vajadzētu darboties lieliski. Vecākiem modeļiem jūs varētu sagaidīt lielāku kavēšanos.

Mēs saņēmām OS no mūsu skolas ar kādu iepriekš instalētu programmatūru, piemēram, phpMyAdmin.

Vispirms pārliecinieties, vai varat izveidot savienojumu ar Raspberry Pi, izmantojot ssh, un mums tas prasīs daudz laika.

Tātad vispirms mums vajadzētu iespējot SPI kopni, GPIO tapas un atspējot citas kopnes, mums tās nebūs vajadzīgas.

To var izdarīt raspi-config izvēlnē. Pārejiet uz saskarnēm un iespējojiet GPIO un SPI, parasti tas nav nepieciešams

Tagad pārstartējiet. Mums būs nepieciešami daži paplašinājumi, lai mūsu pi izmantotu VS kodu, lai palaistu mūsu serveri un datu bāzi.

VS koda paplašinājuma instalēšanas procesu var atrast šeit.

Tagad mēs instalēsim paplašinājumus savam serverim un datu bāzei. Izmantojiet termināli un ierakstiet “python install kolba, kolbas korsetes, mysql-python savienotājs, notikums”, pagaidiet, līdz tas ir pabeigts.

Tagad mēs varam sākt ar projekta izveidi.

2. darbība: MCP3008 + TMP36

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

Tātad mums ir 6 sensori: 4 gāzes, 1 mitruma + temperatūras un 1 temperatūras sensors. Tas ir reāls uzdevums panākt, lai viņi strādātu. Visi sensori ir analogie sensori, tāpēc mums ir jāpārvērš analogs signāls par ciparu signālu. Tas ir tāpēc, ka RPi (Rasberry Pi) var "saprast" tikai digitālos signālus. Lai iegūtu vairāk informācijas, noklikšķiniet šeit.

Lai pabeigtu šo uzdevumu, jums būs nepieciešams MCP3008, tas lieliski veiks darbu!

Tam ir 16 porti, skaitot no augšas (mazā burbuļa) pa kreisi, uz leju, no otras puses un uz augšu. Pin1-8 ir mūsu sensoru analogā signāla ieejas. 9. tapa otrā pusē ir GND, tas ir jāpievieno visas ķēdes GND, pretējā gadījumā tas nedarbosies. Piespraude 10-13 ir jāpieslēdz rūpīgāk, tā pārsūtīs datus uz RPi un no tās. Pin 14 ir vēl viens GND, un tapas 15 un 16 ir VCC, tām jābūt savienotām ar ķēdes pozitīvo pusi.

Šis ir elektroinstalācijas izkārtojums:

  • MCP3008 VDD ārējam 3.3V MCP3008 VREF ārējam 3.3V
  • MCP3008 AGND uz ārējo GND
  • MCP3008 DGND uz ārējo GND
  • MCP3008 CLK līdz Raspberry Pi tapai 18
  • MCP3008 DOUT uz Raspberry Pi tapu 23
  • MCP3008 DIN līdz Raspberry Pi tapai 24
  • MCP3008 CS/SHDN uz Raspberry Pi tapu 25

Šis ir arī labs laiks, lai savienotu GND no RPI ar ārējo GND. Tas liks elektriskumam plūst no RPi.

Lūk, kā to pareizi savienot.

Pārliecinieties, ka pievienojat pareizo ceļu, pretējā gadījumā jūs varat visu īsslēgt!

Šeit tiek ievietots pirmais koda gabals.

Jūs varat nokopēt manu kodu no mana projekta github sadaļā models. Analog_Digital.

Lapas apakšā atradīsit avota kodu, lai tas darbotos.

Bet mums ir nepieciešams mūsu pirmais sensors, lai mēs varētu pārbaudīt.

Mums jāpārbauda mūsu sensors, ja tas darbojas. Pievienojiet 3.3V vai 5V barošanas avotu TMP36 pozitīvajai pusei. Neaizmirstiet to savienot arī ar GND, iespējams, ka notiek kaut kas stulbs, bet ticiet man. Tā ir realitāte;). Ar multimetru varat pārbaudīt sensora izeju, tā ir vidējā tapa. Ar šo vienkāršo vienādojumu jūs varat pārbaudīt temperatūru ° C. ((milivolti*ieejas spriegums) -500)/10 un voila donne! Čau! Nu nē, hahah mums vajag MCP3008. Savienojiet TMP36 analogo tapu ar MCP3008 pirmo ievades tapu. Šī ir 0 tapa.

Šai MCP klasei varat izmantot koda piemēru apakšā. Vai arī kaut kas, ko atradīsit tiešsaistē, darīs darbu labi.

3. darbība. Datu bāze

Tāpēc tagad, kad mēs varam lasīt mūsu pirmajā sensorā, mums tas jāreģistrē datu bāzē. Tā ir mūsu smadzeņu atmiņa. Es izveidoju šo datu bāzi tā, lai tā būtu paplašināma un viegli modificējama turpmākajām izmaiņām.

Tāpēc vispirms mums ir jādomā, ko mēs iegūsim kā ievadi un vai mums ir jāreģistrē konkrētas lietas, piemēram, noteiktu objektu statusi.

Mana atbilde būtu: ievade no 6 sensoriem, tāpēc mums ir jāizveido sensoru tabula, ar šiem sensoriem mēs veidosim vērtības. Kas ir saistīts ar vērtību? Man tas ir loga statuss, vai tas ir atvērts vai aizvērts, kamēr sensors mēra vērtību. Bet atrašanās vieta ir arī manas vērtības faktors, tāpēc mēs to pievienosim. Vērtības laiks un datums ir arī svarīgi, tāpēc es to pievienoju.

Turpmākajai paplašināšanai es pievienoju lietotāju tabulu.

Kāda ir mana ideja par tabulām: tabulas vērtības, tabulas adrese (saistīta ar istabu), galda telpa (saistīta ar vērtību), galda logs (saistīts ar vērtību), galda sensors (saistīts ar vērtību) un tabula savvaļā lietotājiem.

Kas attiecas uz tabulu sasaisti. Katrai vērtībai ir nepieciešams viens sensors, viens logs, sensora vērtība, ID, lai mēs varētu padarīt vērtību unikālu, laika zīmogs, kad vērtība tika izveidota, un kā pēdējais mums nav nepieciešama telpa, lai tā būtu pēc izvēles piebilda.

Tātad tagad tas izskatās šādi. To es izmantoju pārējā projekta laikā.

4. solis: HNT11 īstiem zēniem

Tā kā mums nebija atļauts izmantot jebkāda veida bibliotēkas. Mums viss jāprogrammē pašiem.

HNT11 ir viena stieples sistēma, tāpēc tas nozīmē, ka jums ir GND un VCC, piemēram, jebkurai citai elektroniskai ierīcei, bet 3 tapa ir ieejas un izejas tapa. Tāpēc tas ir dīvaini, bet es no tā daudz uzzināju.

Savienojiet VCC ar ārējo 3.3V un GND ar ārējo GND.

DHT11 datu lapā ir viss, lai izmantotu šos sensorus.

Mēs varam noteikt, ka augsts bits satur zemu un augstu bitu. Bet augstās daļas ilgums nosaka bitu reāli. Ja augšējā daļa tiek izstarota ilgāk par 100 µs (parasti 127 µs), bits ir augsts. Ja bits ir īsāks par 100 µs (parasti ap 78 µs), bits ir zems.

Kad HNT11 ir aktivizēts, tas sāks raidīt signālus. Tas vienmēr ir 41 bits. Tas sākas ar sākuma bitu, tas neko nenozīmē, lai mēs varētu šo izlaist. Pirmie 16 biti/ 2 baiti ir vesels skaitlis un peldošā daļa mitrumam. Tas ir tāds pats pēdējos 2 baitos, bet tagad tas attiecas uz temperatūru.

Tātad mums ir jāaprēķina tikai katra bita ilgums, un tad mēs esam pabeiguši.

Avota kodā zem DHT11 jūs atradīsit manu metodi šīs problēmas risināšanai.

5. darbība. Gāzes sensori (tikai leģendas)

Gāzes sensori (tikai leģendas)
Gāzes sensori (tikai leģendas)
Gāzes sensori (tikai leģendas)
Gāzes sensori (tikai leģendas)

Tāpēc projekta sākumā es domāju, ka būtu lieliska ideja izmantot daudzus sensorus. Padomā, pirms rīkojies un pērc uz vietas, tas ietaupīs daudzas miega stundas! Tā kā jūs varat sākt agrāk, un tas ļaus jums labāk rīkoties.

Tātad man ir 4 gāzes sensori. MQ135, MQ8, MQ4 un MQ7 visiem šiem sensoriem ir īpašas gāzes, kuras tās mēra vislabāk. Bet tie visi atšķiras savā konfigurācijā.

Tāpēc vispirms es izmantoju datu lapu, un tas mani nevēlējās. Tad es meklēju koda piemērus. Es atradu vienu bibliotēku no Adafruit. Es centos to atkārtot pēc iespējas labāk. Tas darbojās ar vienu no četriem sensoriem.

Es ļauju tam kādu laiku atpūsties un atgriezos pie tā.

Ko es darīju, lai tas darbotos vienam sensoram:

- Es izmantoju datu lapu, lai atzīmētu gāzes punktus, kurus vēlējos izmērīt. Tātad no 1 ro/rs līdz 400ppm, 1,2 līdz 600ppm…

- Tad es visus šos punktus ievietoju Excelā un izvilku līknes formulu. Es to saglabāju savā datu bāzē.

- No datu lapas es izlasīju arī parasto pretestību un tīra gaisa pretestību. Šīs vērtības tika saglabātas arī datu bāzē.

Es to visu ievietoju kādā kodā, to varat atrast kā pēdējās trīs funkcijas MCP3008 klasē. Bet tas vēl nav pabeigts, diemžēl man nebija pietiekami daudz laika.

6. darbība: maiņu reģistrs, 74HC595AG

Maiņu reģistrs, 74HC595AG
Maiņu reģistrs, 74HC595AG
Maiņu reģistrs, 74HC595AG
Maiņu reģistrs, 74HC595AG
Maiņu reģistrs, 74HC595AG
Maiņu reģistrs, 74HC595AG
Maiņu reģistrs, 74HC595AG
Maiņu reģistrs, 74HC595AG

Tātad šis ir IC. Un tas dara kaut ko īpašu, ar šo ierīci ir iespējams izmantot mazāk GPIO izeju vienam un tam pašam izejas signālam. Es to izmantoju LCD (šķidro kristālu displejs) un manām gaismas diodēm. Es parādīšu ip adresi LCD, lai ikviens varētu sērfot vietnē.

Gaismas diodes ir gudri izvēlēti: 2 sarkani, 3 dzelteni un 2 zaļi. Tas jebkurā laikā parādīs gaisa kvalitāti telpā.

Pārmaiņu reģistrs ir paralēlas izvades ierīce, tāpēc laika periodā nav iespējams izvadīt dažādus signālus. Tas būtu iespējams, ja tas būtu ieprogrammēts no ārpuses, bet nebūtu sākotnēji atbalstīts.

Kā lietot IC? Nu jums ir 5 ieejas un 9 izejas. 8 loģiskas izejas 8 tapām un pēc tam 9. tapa, lai pārpalikušos datus nosūtītu citam maiņu reģistram.

Tātad, mēs savienojam tapu 16 ar ārējo VCC, nākamā tapa ir pirmā izeja, tāpēc LCD mums tas būs vajadzīgs. 14. tapa ir datu līnija, šeit mēs sūtīsim datus. 13. tapa ir ieslēgšanas slēdzis, zems signāls ļauj IC, lai to izslēgtu, nepieciešams augsts signāls. Piespraude 12 ir tapa, kurā mēs varam noteikt, kad tika nosūtīts bits, kad pavelkat šo tapu uz leju, lai no augšas uz zemāko tas nolasītu tapas 13 signāla statusu un saglabātu to 8 bitu atmiņā. Pin 11 ir līdzīgs, ja šī tapa ir iestatīta augsta, tad zema, tā izvada 8 bitus uz savu portu. Un pēdējā tapa, 10. tapa ir galvenā atiestatīšana, šai tapai jāpaliek augsta, pretējā gadījumā tā nedarbosies. Pēdējais savienojums ir GND tapa 8, kas mums ir jāpievieno šim ārējam GND.

Tāpēc tagad savienojiet tapas, kā jums patiks, ar aveņu pi. Es to darīju pēc iespējas tuvāk viens otram, lai pārliecinātos, ka es zinu, kur viņi atrodas.

Kad iegūstat pareizu izvadi. To var pielodēt PCB ar gaismas diodēm. un 220 omi rezistori. Lodējiet IC izeju uz atbilstošo LED. Tagad jums vajadzētu būt kaut kam šādam.

Manu testa kodu varat atrast šeit, Shiftregister. Strādājot ar 74HC595N, jums nebūs nepieciešams MR, lai jūs varētu atstāt to bez savienojuma.

LCD ir gandrīz tāds pats. To ir diezgan viegli izmantot kopā ar maiņu reģistru, jo LCD ieeja ir tieši maiņu reģistra ievade.

LCD ekrānam ir kāds cits kods, lai tas darbotos, taču tas ir gandrīz tāds pats kā tikai pārnesumu reģistrs. Testa kodu varat atrast šeit zem LCD.

7. solis: priekšpuse, vērtīga nodarbība

Tātad šeit es nomaldīšos, šī ir sadaļa, kā jums tas jādara. Tas ir kaut kas ļoti vērtīgs, ko iemācījāmies.

Izveidojiet priekšgalu pirms aizmugures !!!!

Es to darīju otrādi. Es veicu bezjēdzīgus zvanus savai datu bāzei, es tam veltīju daudz laika.

Galvenajā lapā man bija nepieciešama pašreizējā temperatūra un mitrums, kā arī visu gāzes sensoru vērtības jaukā diagrammā. Man arī jāparāda RPi IP adrese.

Sensoru lapā man ir nepieciešams viena sensora izvēle un izvēles laiks. Es izvēlējos vienu dienu un pēc tam periodu no šīs dienas. Tas man to padarīja daudz vieglāku, jo es varēju to vairāk kontrolēt.

Pēdējā lapā iestatījumu lapā ir iespējams pārvaldīt noteiktas vērtības, piemēram, veselībai bīstamas vai bīstamas gāzes un temperatūras līmeņus. Varat arī veikt RPi atsāknēšanu, ja jūtat vajadzību to darīt.

Tāpēc vispirms es izveidoju dizainu, lai es varētu viegli sākt strādāt pie kodēšanas daļas. Es pakāpeniski guvu progresu vienā reizē. Uzdevums vispirms bija mobilais, tāpēc es vispirms koncentrēšos uz to. Tad es došos uz lielākiem ekrāniem.

Manas lapas, css un js varat atrast manā Github.

8. solis: aizmugure

Šī daļa ir tā daļa, kuru es sajaucu ar priekšpusi. Kad es kaut ko izveidoju priekšējai daļai, es liku tam darboties aizmugurē. Tāpēc vēlāk to nevajadzēs pārskatīt. Tas bija kaut kas, ko es vispirms nedarīju, un tāpēc es noteikti zaudēju 2 nedēļas laika. Stulba es! Bet mācība, ko es steidzami izmantoju citiem projektiem.

Tātad, veidojot aizmuguri, izveidojiet kaut ko tādu, ko izmantosit. Bet padariet to par pierādījumu nākotnei, padarot to atkārtoti lietojamu un nekodētu. Tātad, kad man vajadzēs pēdējās 50 DHT11 vērtības, es pārbaudīšu, vai tiek veiktas vērtības? Jā, kā tos ievietot datu bāzē. Kā tos izņemt no datu bāzes. Kā to parādīt? Diagramma, grafiks vai vienkārši dati? Tad es izveidoju jaunu maršrutu ar dažādiem parametriem un īpašībām, piemēram, datumiem, konkrētiem jutekļu nosaukumiem vai to, ko es saucu. Es domāju, vai es saucu visas vērtības no MQ sensoriem, vai arī es saucu visus sensorus ar MQ tā nosaukumā. Tad es ievietoju kļūdu apstrādi. Ja zvana pieprasījums ir pareizā metode, tad tas var turpināties, pretējā gadījumā tiek iegūta jauka kļūda.

Šeit ir arī pavedieni, kas ir programmatūras gabali, kas ļauj palaist paralēlu kodu. Jūs varētu palaist vietņu zvanus, vērtību radīšanas funkciju un vadīto+maiņu reģistru. Šīs funkcijas darbojas pilnīgi neatkarīgi viena no otras.

Tātad par vadītajiem. Es izveidoju CO2 apakšējo/ veselīgo vērtību. Šī vērtība tika iegūta no vairākiem valsts avotiem. Veselīga vērtība klasēs ir zem 600 ppm CO2 uz kubikmetru. Neveselīgā vērtība ir viss virs 2000 ppm. Tātad gaismas diodes veido tiltu. Ja MQ4 sensora vērtība ir 1400, tas automātiski aprēķinās, kādā bīstamības līmenī tas ir. 2000 - 600 = 1400, tāpēc kopējais diapazons ir 1400 /7 = 200. Tātad, kad vērtība sasniedz 550, tas parāda zaļu gaismas diodi. 750 parāda 2 zaļas gaismas diodes, 950 1 dzeltenas 2 zaļas gaismas diodes. Un tā tālāk.

Kad vērtība pārsniedz vidu, tiek atvērts logs. Es izmantoju steppenmotoru lielā griezes momenta un precizitātes dēļ. Un, kad vērtība pārsniedz 2000, atskan neliels trauksmes signāls. Tas ir trauksme cilvēkiem telpā.

Mēs varam arī noteikt dūmu gāzes, lai ugunsgrēka gadījumā. Tas to arī reģistrē. Kad tas pārsniedz noteiktu vērtību, ieslēdzas modinātājs un mirgo gaismas diode.

LCD galvenokārt ir paredzēts, lai parādītu IP adresi, lai jūs varētu sērfot vietnē.

Visu + kodu varat atrast manā Githubin lietotnē.py

9. solis: lietas izveidošana

Lietas izveide
Lietas izveide
Lietas izveide
Lietas izveide
Lietas izveide
Lietas izveide

Es atradu nelielu datora korpusu visām manām sastāvdaļām.

Es sagriezu alumīnija loksni pēc izmēra. Un urbja dažus caurumus, kur loksne varētu atpūsties. Tas atbilst mātesplates caurumiem.

Tad es paskatījos, kā viss ietilptu korpusā. Es visu izklāju un sāku kustēties.

Kad biju apmierināts ar to, kā tas darbosies, es sāku iezīmēt vajadzīgos caurumus sensoriem, RPi, PCB, spēka moduļiem un steppenmotora modulim. Caurumi ir paredzēti PCB nošķiršanai, tas padarīs zināmu vietu, lai metāla detaļas nesaskartos ar alumīnija loksni. Tas arī piešķir tai jauku izskatu.

Es paķēru no katras IC vai citas ierīces kabeļus un sasēju tos kopā. Tas ir tāpēc, ka es varētu redzēt, kādi kabeļi ir paredzēti. Es visu kārtīgi novietoju uz dažiem stendiem un izmantoju dažus uzgriežņus un skrūves, lai visu labi noturētu vietā.

Lai to visu darbinātu, es izmantoju 2 baterijas. Tie nodrošina daudz enerģijas, taču tās joprojām ir baterijas, tāpēc tās laika gaitā izlādēsies. Es tos uzstādīju ar kādu velcro. Es izmantoju velcro, jo tad es varētu viegli nomainīt vai atbrīvoties no baterijām.

Steppenmotor, LCD un LED iznāks no korpusa augšdaļas. Tāpēc es rūpīgi uzliku korpusa vāku uz augšu un atzīmēju caurumus un urbju tos ar urbi. Tātad mēs varam viegli redzēt visu.

Tā kā lieta ir pabeigta, mums viss ir jāpievieno vadiem, šeit varat atrast elektroinstalācijas shēmu.

10. solis: novērtēšana un secinājumi

Novērtējums un secinājumi
Novērtējums un secinājumi

Tātad šis ir/bija mans pirmais projekts.

Izskatās labi, es domāju.

Es uzzināju daudz jauna, uzzināju projekta vadības lielo un slikto pusi. Tā patiešām bija vērtīga mācība. Es noliecos, ka jūs nevarat gaidīt, ka jums patiešām ir jāturpina dot. Jums ir jādokumentē katrs gājiens (gandrīz ļoti gājiens) un tas jādara, kad to tikko izdarījāt.

Koncentrējieties uz 1 lietu vienlaikus. Vai vēlaties ekrānā redzēt temperatūru? Dariet to, šo un to. Negaidiet un nemēģiniet to palaist garām. Tas nepalīdzēs. Un tas zaudēs tik dārgo laiku.

Arī 4 nedēļas šķiet daudz laika. Bet mazāk ir taisnība. Tas vienkārši nav pareizi. Jums ir tikai 4 nedēļas. Pirmās 2 nedēļas nav tik liels spiediens. 3 nedēļas beigu un 4 nedēļas bezmiega nakts. Šādi nevajadzētu to darīt.

Es varbūt biju nedaudz ambiciozs: man ir ļoti mazs korpuss, nav viegli lietojamu sensoru, bateriju … Padariet to daudz vienkāršāku un pēc tam pakāpeniski padariet to grūtāku un grūtāku, tikai tad jūs iegūsit labu prototipu/ produktu.

Ieteicams: