Sadržaj:
- Pribor
- Korak 1: Postavljanje RPi -ja
- Korak 2: MCP3008 + TMP36
- Korak 3: Baza podataka
- Korak 4: HNT11, za prave dječake
- Korak 5: Senzori plina (samo legende)
- Korak 6: Registar Shift, 74HC595AG
- Korak 7: Prednji dio, vrijedna lekcija
- Korak 8: Pozadina
- Korak 9: Dokazivanje slučaja
- Korak 10: Evaluacija i zaključak
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47
Pozdrav, student sam iz Belgije i ovo mi je prvi veliki projekt za diplomu! Ovaj Instructable govori o tome kako napraviti mjerač zračnog zagađenja za zatvorene prostorije, posebno učionice!
Čujem vas kako razmišljate zašto ovaj projekt? Pa, sve je počelo kad sam krenuo u srednju školu. U popodnevnim satima nakon dobrog ručka i odmora, nastava počinje ponovno. Ali postoji problem, doktorica je zaboravila otvoriti prozor dok smo ručali pa je vruće, oznojeno i ne možete se koncentrirati jer ste zaspali. To je zato što u zraku ima previše CO2.
Moj projekt će to riješiti i učiniti sve učenike koncentriranijima na satovima.
Pribor
1 xRaspberry Pi 4 (55 €)
1 x step motor sa vozačem (5 €)
2 x 12v 6800 mAh baterije (2x 20 €)
2 x stepdown modul (2x 5 €)
1 x 16x2 LCD (1,5 €)
Senzori: 1x MQ8, 1x MQ4, 1x MQ7, 1x MQ135, 1x HNT11, 1x TMP36 (1 x 23 €)
IC -ovi: 1x MCP3008, 2x 74hc595AG (1x 2,30 €, 2x 0,40 €)
LED diode: 2x zelena, 2x crvena, 3x žuta (nalazi se u nekom starom hardveru, obično 0,01 € svaki)
Priključak za baterije (2 x 0,35 €)
40 priključnih kabela f-to-f (1,80 €)
40 priključnih kabela f-to-m (1,80 €)
Priključni kabeli 20 m na m (1,80 €)
2 x PCB na lemljenje (2x 0,70 €)
Alati:
Lemilica (poželjno 60 W)
Lim za lemljenje
Aluminijski lim 50x20
Kućište (koristio sam staru mini torbicu za računalo)
To bi lako mogli biti neki MDF ili vlastite ideje.
Korak 1: Postavljanje RPi -ja
Dakle, naše srce, naš mozak i naša duša su u ovom proizvodu. Dobro prijeti, jer te na ovaj ili onaj način može povrijediti. Koristim RPi 4B 4gb, drugi modeli bi trebali biti sasvim u redu. Mogli ste očekivati još kašnjenja na starijim modelima.
OS smo dobili iz škole s nekim unaprijed instaliranim softverom, poput phpMyAdmin.
Prije svega, provjerite možete li se povezati sa svojim Raspberry Pi putem ssh -a, trebat će nam puno vremena.
Dakle, prvo bismo trebali omogućiti SPI sabirnicu, GPIO-pinove i onemogućiti druge sabirnice, oni nam neće trebati.
To možete učiniti u izborniku raspi-config. Idite na Sučelja i omogućite GPIO i SPI. Obično to neće biti potrebno. Dok ste ovdje, proširite svoju pohranu tako da odete na napredno, a zatim pritisnite enter na proširenoj pohrani.
Sada ponovno pokrenite. Trebat će nam neka proširenja za korištenje VS koda na našem pi, za pokretanje našeg poslužitelja i baze podataka.
Postupak instalacije proširenja VS koda možete pronaći ovdje.
Sada ćemo instalirati proširenja za naš poslužitelj i bazu podataka. Upotrijebite terminal i upišite 'python install flask, flask-cors, mysql-python-connector, eventlet' pričekajte dok se ne finalizira.
Sada možemo početi s izradom projekta.
Korak 2: MCP3008 + TMP36
Dakle, imamo 6 senzora: 4 plina, 1 vlažnost + temperatura i 1 osjetnik temperature. Pravi je zadatak natjerati ih da rade. Svi senzori su analogni senzori pa moramo pretvoriti analogni signal u digitalni signal. To je zato što RPi (Rasberry Pi) može samo "razumjeti" digitalne signale. Za više informacija kliknite ovdje.
Da biste dovršili taj zadatak, trebat će vam MCP3008, ovo će odlično obaviti posao!
Ima 16 priključaka, računajući od vrha (mali mjehurić) lijevo, dolje, s druge strane i gore. Pin1-8 su ulazi za analogni signal s naših senzora. Pin 9 s druge strane je GND koji treba spojiti na GND cijelog kruga inače to ne bi funkcioniralo. Pin 10-13 potrebno je opreznije spojiti, oni će prenositi podatke u RPi i iz njega. Pin 14 je drugi GND, a pinovi 15 i 16 su VCC -ovi koji moraju biti povezani s pozitivnom stranom kruga.
Ovo je raspored za ožičenje:
- MCP3008 VDD na vanjski 3.3V MCP3008 VREF na vanjski 3.3V
- MCP3008 AGND na vanjski GND
- MCP3008 DGND na vanjskiGND
- MCP3008 CLK na Raspberry Pi pin 18
- MCP3008 DOUT na Raspberry Pi pin 23
- MCP3008 DIN na Raspberry Pi pin 24
- MCP3008 CS/SHDN na Raspberry Pi pin 25
Ovo je također dobar trenutak za spajanje GND -a iz RPI -a na vanjski GND. To će omogućiti protok električne energije iz RPi.
Evo kako ga spojiti na pravi način.
Spojite na pravi način, inače možete kratkim spojem spojiti sve!
Prvi dio koda dolazi na svoje mjesto ovdje.
Možete kopirati moj kôd iz mog projekta github pod models. Analog_Digital.
Pri dnu stranice pronaći ćete izvorni kôd kako bi funkcionirao.
Ali trebamo naš prvi senzor kako bismo mogli testirati.
Moramo testirati naš senzor radi li. Priključite napajanje od 3,3 V ili 5 V na pozitivnu stranu TMP36. Ne zaboravite ga spojiti i na GND, ovo se možda moglo dogoditi nešto glupo, ali vjerujte mi. To je realnost;) S multimetrom možete testirati izlaz senzora, to je srednji pin. Pomoću ove jednostavne jednadžbe možete provjeriti temperaturu u ° C. ((milivolti*ulazni napon) -500)/10 i voila donne! Zbogom! Pa ne hahah trebamo MCP3008. Spojite analogni pin za svoj TMP36 na prvi ulazni priključak na MCP3008. Ovo je pin 0.
Možete koristiti primjer koda pri dnu za ovu MCP klasu. Ili će nešto što ćete pronaći na internetu dobro obaviti posao.
Korak 3: Baza podataka
Dakle, sada kada možemo pročitati u našem prvom senzoru, moramo ga prijaviti u bazu podataka. Ovo je sjećanje na naš mozak. Dizajnirao sam ovu bazu podataka tako da se može proširiti i lako mijenjati za buduće promjene.
Dakle, prvo moramo razmisliti što ćemo dobiti kao ulazne podatke i moramo li zapisati određene stvari, poput statusa određenih objekata.
Moj odgovor bi bio: ulaz sa 6 senzora pa moramo napraviti tablicu senzora, s tim senzorima ćemo napraviti vrijednosti. Što je povezano s vrijednošću? Za mene je to status prozora, je li otvoren ili je zatvoren dok je senzor mjerio vrijednost. No, lokacija je također faktor moje vrijednosti pa ćemo to dodati. Vrijeme i datum vrijednosti su također važni pa ću to dodati.
Za buduće proširenje dodao sam korisničku tablicu.
Dakle, što ja mislim o tablicama: vrijednosti tablice, adresa tablice (povezana s prostorijom), soba tablice (povezana s vrijednošću), prozor tablice (povezan s vrijednošću), senzor tablice (povezan s vrijednošću) i tablica u divljini za korisnika.
Što se tiče povezivanja tablica. Za svaku vrijednost potreban je jedan senzor, jedan prozor, vrijednost za senzor, id kako bismo mogli napraviti vrijednost jedinstvenom, vremensku oznaku kada je vrijednost napravljena i kao posljednju nam nije potrebna soba tako da je izborna, ali može biti dodano.
Dakle, ovako sada izgleda. Ovo koristim za ostatak svog projekta.
Korak 4: HNT11, za prave dječake
Pa kako nam nije bilo dopušteno koristiti bilo koju vrstu knjižnica. Moramo sve sami programirati.
HNT11 je jednožični sustav pa to znači da imate GND i VCC kao i bilo koji drugi elektronički uređaj, no 3-pinski je ulaz i izlaz. Tako da je to nekako čudno, ali naučio sam mnogo iz toga.
Spojite VCC na vanjski 3.3V, a GND na vanjski GND.
Tehnički list DHT11 sadrži sve za korištenje ovih senzora.
Možemo utvrditi da visoki bit sadrži niži i visoki bit. No, trajanje visokog dijela određuje bit za stvarno. Ako se visoki dio emitira dulje od 100 μs (normalno 127 μs), bit je visok. Je li bit kraći od 100µs (normalno oko 78µs) bit je nizak.
Kad je HNT11 aktiviran, počet će emitirati signale. Ovo je uvijek 41 bit. Počinje s početnim bitom, to ne znači ništa pa možemo preskočiti ovaj. Prvih 16 bita/ 2 bajta su cijeli broj i plutajući dio za vlažnost. Isto je za zadnja 2 bajta, ali sada je za temperaturu.
Dakle, samo trebamo izračunati trajanje svakog bita i tada smo gotovi.
U izvornom kodu pod DHT11 pronaći ćete moju metodu u rješavanju ovog problema.
Korak 5: Senzori plina (samo legende)
Tako sam na početku projekta pomislio da bi bila izvrsna ideja koristiti mnoge senzore. Razmislite prije nego što postupite i kupujte lokalno, tako ćete uštedjeti mnogo sati za spavanje! Budući da možete početi ranije i time ćete spremnije krenuti.
Tako da imam 4 senzora za plin. MQ135, MQ8, MQ4 i MQ7 svi ti senzori imaju specifične plinove koje najbolje mjere. No, svi su oni različiti u svojoj konfiguraciji.
Dakle, prvo sam upotrijebio podatkovni list, to me nije učinilo nimalo željnim. Zatim sam potražio primjere koda. Ono što sam pronašao je jedna biblioteka iz Adafruit -a. Pokušao sam to ponoviti što je bolje moguće. Radio je s jednim od četiri senzora.
Ostavio sam da odmori neko vrijeme i vratio se na to.
Ono što sam učinio da funkcionira za taj jedan senzor je:
- Koristio sam podatkovni list za označavanje točaka plina koje sam želio mjeriti. Dakle 1 ro/rs do 400 ppm, 1,2 do 600 ppm …
- Zatim sam stavio sve te točke u excell i izvadio formulu za krivulju. Spremila sam ovo u svoju bazu podataka.
- Iz tablice sam također pročitao normalni otpor i otpor čistog zraka. Ove su vrijednosti također spremljene u bazi podataka.
Sve sam to pretočio u neki kôd, ovo možete pronaći kao posljednje tri funkcije u klasi MCP3008. Ali ovo još nije gotovo, nažalost nisam imao dovoljno vremena.
Korak 6: Registar Shift, 74HC595AG
Dakle, ovo je IC. I čini nešto posebno, s ovim je uređajem moguće koristiti manje GPIO izlaza za isti izlazni signal. Ovo sam koristio za LCD (zaslon s tekućim kristalima) i svoje LED diode. Pokazat ću ip adresu na LCD -u kako bi svi mogli surfati web lokacijom.
LED diode mudro se biraju 2 crvene, 3 žute i 2 zelene. To će u svakom trenutku pokazati kvalitetu zraka u prostoriji.
Registar pomaka je paralelni izlazni uređaj pa nije moguće izlaziti različite signale u vremenskom razdoblju. To bi bilo moguće ako se programira izvana, ali nije izvorno podržano.
Kako koristiti IC? Pa imate 5 ulaza i 9 izlaza. 8 logičkih izlaza za 8 pinova, a zatim 9. pinski za slanje preostalih podataka u drugi registar pomaka.
Spojimo pin 16 na vanjski VCC, sljedeći pin je prvi izlaz pa će nam za LCD biti potreban.. Pin 14 je podatkovna linija, ovdje ćemo slati podatke. 13. pin je prekidač za uključivanje, niski signal omogućuje IC, a za isključivanje je potreban visoki signal. Pin 12 je pin na kojem možemo odrediti kada je bit poslan, kada povučete ovaj pin prema dolje tako da s visokog na nisko čita status signala pina 13 i pohrani ga u svoju 8 -bitnu memoriju. Pin 11 je sličan kada je ovaj pin postavljen visoko, a zatim nisko, izbacuje 8 bita na svoj priključak. I zadnji pin, pin 10 je glavni reset, ovaj pin mora ostati visok ili neće raditi. Posljednja veza je GND pin 8 koji nam je potreban za spajanje na vanjski GND.
Pa sada spojite igle kako vam se sviđa s malinom pi. Način na koji sam to učinio spojio ih je što je moguće bliže jedno drugome kako bih bio siguran da znam gdje se nalaze.
Kad dobijete pravi izlaz. Ovo možete lemiti na PCB sa LED diodama. i otpornici od 220 ohma. Lemite izlaz IC na odgovarajući LED. Sada biste trebali imati ovako nešto.
Moj testni kôd možete pronaći ovdje pod Shiftregister. Kad radite sa 74HC595N, MR vam neće trebati pa ga možete ostaviti nepovezanim.
LCD je otprilike isti. Prilično je jednostavno koristiti ga sa shiftregistrom jer je ulaz za LCD upravo ulaz za shiftregister.
Za LCD postoji neki drugi kôd za rad, ali on je prilično isti kao i samo registar brojeva. Testni kôd možete pronaći ovdje ispod LCD -a.
Korak 7: Prednji dio, vrijedna lekcija
Ovdje ću odlutati, ovo je dio o tome kako biste to trebali učiniti. Ovo je nešto vrlo vrijedno što ste naučili.
Napravite frontend prije pozadine !!!!
Učinio sam to obrnuto. Upućivao sam beskorisne pozive za svoju bazu podataka, trošim previše vremena na to.
Na odredišnoj stranici trebala mi je trenutna temperatura i vlaga te vrijednosti svih senzora plina u lijepom grafikonu. Također moram pokazati ip adresu RPi -ja.
Na stranici senzora trebam izbor jednog senzora i vrijeme odabira. Za odabir sam odabrao jedan dan, a zatim razdoblje od tog dana. To mi je puno olakšalo jer sam to mogla više kontrolirati.
Na posljednjoj stranici, stranica s postavkama, moguće je upravljati određenim vrijednostima, poput zdravog opasnog ili opasnog plina i razinama temperature. Možete i ponovno pokrenuti RPi ako smatrate da je to potrebno.
Tako sam prvo napravio dizajn kako bih mogao lako početi raditi na dijelu kodiranja. Postepeno sam napredovao jednu po jednu stvar. Zadatak je prvo bio mobilni pa ću se prvo usredotočiti na to. Zatim ću se probiti do većih ekrana.
Moje stranice, css i js možete pronaći u mom Githubu.
Korak 8: Pozadina
Ovaj dio je dio koji sam pomiješao sa sučeljem. Kad sam napravio nešto za prednji dio, učinio sam da radi na pozadini. Tako da kasnije neće trebati reviziju. To je nešto što uopće nisam učinio i zbog toga sam izgubio sigurno 2 tjedna vremena. Baš sam glup! Ali lekciju koju sam slučajno uzeo drugim projektima.
Dakle, kad napravite pozadinu, napravite nešto što ćete koristiti. No učinite to dokazom za budućnost tako da ga učinite za višekratnu uporabu i neće biti teško kodiran. Pa kad mi zatreba posljednjih 50 vrijednosti DHT11, provjerit ću postoje li vrijednosti? Da, kako ih staviti u bazu podataka. Kako ih izvaditi iz baze podataka. Kako to mogu prikazati? Grafikon, grafikon ili samo obični podaci? Zatim napravim novu rutu s različitim parametrima i svojstvima kao što su datumi, specifična imena senzora ili ono što ću nazvati. Mislim zovem li sve vrijednosti s senzora MQ ili pozivam sve senzore s imenom MQ u svom imenu. Zatim sam stavio neke greške u rukovanje. Kada je zahtjev poziva pravi način, tada se može nastaviti, u protivnom dobiva lijepu pogrešku.
Ovdje se također nalaze niti, to su dijelovi softvera koji vam omogućuju pokretanje paralelnog koda. Možete pokrenuti pozive web stranica, funkciju stvaranja vrijednosti i LED+shiftregister. Ove funkcije rade potpuno neovisno jedna o drugoj.
Dakle za led. Napravio sam najnižu/ zdravu vrijednost za CO2. Ta je vrijednost dolazila iz više izvora vlasti. Zdrava vrijednost za učionice je ispod 600 ppm CO2 po kubičnom metru. Nezdrava vrijednost je sve iznad 2000 ppm. LED diode čine most. Ako je vrijednost senzora MQ4 1400, automatski će izračunati u kojoj je razini opasnosti. 2000 - 600 = 1400 pa je ukupni raspon 1400 /7 = 200. Dakle, kada vrijednost dosegne 550, prikazuje se zelena LED dioda. 750 prikazuje 2 zelene LED diode, 950 1 žutu 2 zelene LED diode. I tako dalje.
Kad vrijednost prijeđe sredinu, otvara se prozor. Koristio sam step motor zbog velikog okretnog momenta i preciznosti. A kad vrijednost prijeđe 2000, uključit će se mali alarm. Ovo želi alarmirati ljude u prostoriji.
Također možemo otkriti dimne plinove pa kad dođe do požara. To također registrira. Kad prijeđe određenu vrijednost, uključuje se alarm i LED treperi.
LCD je uglavnom tu da prikaže IP adresu kako biste mogli pregledavati web stranicu.
Možete pronaći sve + kôd unutar mog Githubina app.py
Korak 9: Dokazivanje slučaja
Pronašao sam malu računalnu futrolu za sve svoje komponente.
Izrezao sam aluminijski lim prema veličini. I izbušio neke rupe na kojima će ležati lim. To odgovara rupama na matičnoj ploči.
Zatim sam pogledao kako bi sve stalo u kućište. Rasporedio sam sve i krenuo.
Kad sam bio zadovoljan kako će to funkcionirati, počeo sam označavati rupe koje su mi bile potrebne za senzore, RPi, PCB -ove, module napajanja i modul koračnog motora. Rupe su namijenjene za izdvajanje PCB -a, što će učiniti malo mjesta tako da metalni dijelovi ne dolaze u dodir s aluminijskim limom. Također mu daje lijep izgled.
Uzeo sam kablove sa svakog IC -a ili drugog uređaja i vezao ih zajedno. To je zato što sam mogao vidjeti koji su kabeli za što. Sve sam lijepo postavio na neke odstupanja i upotrijebio neke matice i vijke da sve lijepo držim na mjestu.
Za napajanje sam koristio 2 baterije. Oni pružaju mnogo energije, ali to su još uvijek baterije pa će se s vremenom isprazniti. Montirao sam ih na neki čičak. Koristio sam čičak jer sam tada lako mogao zamijeniti ili riješiti baterije.
Steppenmotor, LCD i LED diode izlazit će s gornje strane kućišta. Pa sam pažljivo položio poklopac kućišta na vrh i označio rupe te ih izbušio bušilicom. Tako lako možemo vidjeti sve.
Kako je slučaj gotov, moramo sve ožičiti, ovdje možete pronaći shemu ožičenja.
Korak 10: Evaluacija i zaključak
Dakle, ovo je/bio moj prvi projekt.
Izgleda u redu valjda.
Naučio sam mnogo novih stvari, naučio sjajnu i lošu stranu upravljanja projektima. To je zaista bila vrijedna lekcija. Zaključio sam da jedva čekaš da stvarno moraš nastaviti davati. Morate dokumentirati svaki potez (gotovo vrlo potez) i to morate učiniti kad ste upravo učinili.
Usredotočite se na jednu stvar odjednom. Želite temperaturu na ekranu? Učini ovo, ovo i ono. Ne čekajte niti pokušajte dopustiti da prođe. Neće pomoći. I izgubit ćete toliko dragocjeno vrijeme.
Također 4 tjedna izgledaju kao puno vremena. Ali manje je istina. Ovo jednostavno nije u redu. Imate samo 4 tjedna. Prva 2 tjedna zapravo i nisu toliko veliki pritisak. 3 tjedna završetka i 4 sedmice neprospavane noći. Ovako to ne biste trebali učiniti.
Možda sam bio pomalo ambiciozan: Imam super malo kućište, bez lakih za korištenje senzora, baterija … Učinite to mnogo jednostavnijim, a zatim postupno otežavajte i otežavajte, tek tada ćete dobiti dobar prototip/ proizvod.
Preporučeni:
Provjera razumnosti: 5 koraka (sa slikama)
Provjera razumnosti: Ovaj projekt se bavi zdravim razumom ili redovitom provjerom. Najbolji način da se to dogodi je izgradnja maske koja nasumično svijetli očima. Dovoljno često da je to uočljivo, ali rijetko da izazove sumnju
AvoRipe - provjera je li vaš avokado zreo: 8 koraka (sa slikama)
AvoRipe - Provjera je li vaš avokado zreo: To se dogodilo svima, kupite avokado, još nije zreo. Prođe nekoliko dana, a dok sazri, već ste zaboravili na to … i za nekoliko dana, može vam se pokvariti! Srećom po vas, dizajnirali smo i napravili AvoRipe, uređaj koji provjerava vaš avokado
Provjera vrata hladnjaka: 5 koraka
Provjera vrata hladnjaka: Uvod: U današnje vrijeme ljudi imaju " pametan " hladnjak koji vam može pokazati temperaturu hladnjaka. Neki hladnjaci također imaju alarme koji podsjećaju korisnika da vrata nisu blizu. Međutim, nemaju svi ovakvu vrstu " pametnog & q
Provjera broja okretaja za mini motor DC: 11 koraka (sa slikama)
Kontrola broja okretaja za mini motor Dc: Obrtaj u minuti, ukratko je brzina rotacije izražena u okretajima u minuti. alati za mjerenje broja okretaja obično koriste tahometar. Prije prošle godine pronašao sam zanimljiv projekt koji je napravio electro18, i to je moja inspiracija, bio je lud
Prijenosno stereo pojačalo audio-klase klase D: 7 koraka (sa slikama)
Prijenosno stereo pojačalo audio-klase klase D: Ovo uputstvo služi za izradu prijenosnog stereo pojačala audio-klase klase D pomoću čipa Texas Instruments TPA3123D2. Ovu metodu možete koristiti i za sastavljanje bilo kojeg gotovog pojačala u kućište. Ovaj čip koristi minimalne komponente i izvrstan je