Sadržaj:
- Supplies
- 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: Shiftregister, 74HC595AG
- Korak 7: Prednja strana, vrijedna lekcija
- Korak 8: Pozadina
- Korak 9: Iznošenje dokaza
- Korak 10: Evaluacija i zaključak
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
Zdravo, student sam iz Belgije i ovo je moj prvi veliki projekat 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 kada sam krenuo u srednju školu. U popodnevnim satima, nakon dobrog ručka i pauze, nastava počinje ponovo. 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 tokom nastave.
Supplies
1 xRaspberry Pi 4 (55 €)
1 x step motor sa vozačem (5 €)
2 x 12v baterije od 6800 mAh (2x 20 €)
2 x stepdown modula (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 kablovi 20 m na m (1,80 €)
2 x PCB za lemljenje (2x 0,70 €)
Alati:
Lemilica (poželjno 60 W)
Lim za lemljenje
Aluminijski lim 50x20
Kućište (koristio sam staru mini kompjutersku futrolu)
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 prijetite, jer vam na ovaj ili onaj način može nauditi. 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 sa 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 ostale sabirnice, neće nam trebati.
To možete učiniti u meniju raspi-config. Idite na Interfejsi i omogućite GPIO i SPI. Obično neće biti potrebno da Dok ste ovdje proširite svoju pohranu tako što ćete otići na napredno, a zatim pritisnite enter na proširenoj memoriji.
Sada ponovo pokrenite sistem. 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 za proširenje 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 senzor 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 na gore. Pin1-8 su ulazi za analogni signal sa 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 je potrebno pažljivije spojiti, oni će prenositi podatke u RPi i iz njega. Pin 14 je drugi GND, a pinovi 15 i 16 su VCC -ovi, oni moraju biti povezani s pozitivnom stranom kola.
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 povezivanje GND -a sa RPI -a na vanjski GND. Ovo će učiniti da električna energija teče iz RPi.
Evo kako ga spojiti na pravi način.
Povežite se na pravi način, jer u suprotnom 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.
Na dnu stranice pronaći ćete izvorni kôd kako bi funkcionirao.
Ali potreban nam je prvi senzor kako bismo mogli testirati.
Moramo testirati naš senzor ako radi. Priključite napajanje od 3,3 V ili 5 V na pozitivnu stranu TMP36. Ne zaboravite ga povezati i sa GND -om, možda se ovo dogodi nešto glupo, ali vjerujte mi. To je realnost;) S multimetrom možete testirati izlaz senzora, ovo je srednji pin. Pomoću ove jednostavne jednadžbe možete provjeriti temperaturu u ° C. ((milivolti*ulazni napon) -500)/10 i voila donne! Bye! Pa ne hahah treba nam MCP3008. Priključite analogni pin za svoj TMP36 na prvi ulazni priključak na MCP3008. Ovo je pin 0.
Za ovu MCP klasu možete koristiti primjer koda na dnu. 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 šta ć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, pomoću ovih senzora ćemo napraviti vrijednosti. Šta je povezano sa vrijednošću? Za mene je to status prozora, je li otvoren ili je zatvoren dok je senzor mjerio vrijednost. Ali 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, šta 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 tabela. 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 opcionalna, ali može biti dodano.
Dakle, evo kako to sada izgleda. Ovo koristim za ostatak svog projekta.
Korak 4: HNT11, za prave dječake
Pa nam nije bilo dozvoljeno koristiti bilo koju vrstu biblioteka. Moramo sve sami programirati.
HNT11 je jednožilni sistem pa to znači da imate GND i VCC kao i bilo koji drugi elektronički uređaj, ali je 3-pinski 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. Ali trajanje visokog dijela određuje bit za stvarno. Ako se visoki dio emitira duže od 100µs (uobičajeno 127µs), bit je visok. Ako je bit kraći od 100µs (normalno oko 78µs), bit je nizak.
Kada 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, potrebno je samo 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)
Pa sam na početku projekta pomislio da bi bila odlična ideja koristiti mnoge senzore. Razmislite prije nego što djelujete i kupujete lokalno, to će vam uštedjeti mnogo sati za spavanje! Zato što možete početi ranije i time ćete spremnije krenuti.
Tako da imam 4 senzora za gas. MQ135, MQ8, MQ4 i MQ7 svi ovi senzori imaju specifične plinove koje najbolje mjere. No, svi su oni različiti u svojoj konfiguraciji.
Dakle, prvo sam upotrijebio podatkovnu tablicu, a to me nije nimalo poželjelo. 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 odstoji neko vreme i vratio se na to.
Ono što sam učinio da funkcionira za taj jedan senzor je:
- Koristio sam tablicu s podacima za označavanje točaka plina koje sam želio mjeriti. Dakle 1 ro/rs do 400 ppm, 1,2 do 600 ppm …
- Zatim sam sve te tačke stavio u excell i izvukao formulu za krivu. Sačuvao sam ovo u svoju bazu podataka.
- Iz tablice sam također pročitao normalni otpor i otpor čistog zraka. Ove vrednosti su takođe sačuvane u bazi podataka.
Sve sam ovo 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: Shiftregister, 74HC595AG
Dakle, ovo je IC. I čini nešto posebno, s ovim uređajem je moguće koristiti manje GPIO izlaza za isti izlazni signal. Koristio sam ovo za LCD ekran (Liquid Crystal Display) i moje 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 periodu. 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 podataka o lijevoj strani drugom registru pomaka.
Pa povezujemo pin 16 na vanjski VCC, sljedeći pin je prvi izlaz pa će nam za LCD biti potreban.. Pin 14 je linija podataka, ovdje ćemo slati podatke. 13. pin je prekidač za uključivanje, niski signal omogućuje IC -u, a visok signal je potreban za njegovo isključivanje. 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, prenosi 8 bita na svoj port. 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.
Dakle, sada spojite pinove koliko želite i malinu pi. Način na koji sam to učinio bio je da ih povežem što je moguće bliže jedno drugom kako bih se uvjerio da znam gdje se nalaze.
Kada dobijete pravi izlaz. Ovo možete lemiti na PCB sa LED diodama. i 220 Ohm otpornika. 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. Kada 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 kod za njegovo funkcioniranje, ali je prilično isti kao i samo registar za pokretanje. Testni kôd možete pronaći ovdje ispod LCD -a.
Korak 7: Prednja strana, 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 !!!!
Uradio sam obrnuto. Upućivao sam beskorisne pozive za svoju bazu podataka, trošim puno vremena na to.
Na odredišnoj stranici su mi bile potrebne trenutna temperatura i vlaga te vrijednosti svih senzora za plin u lijepom grafikonu. Takođe moram pokazati ip adresu RPi -ja.
Na stranici senzora trebam izbor jednog senzora i vrijeme odabira. Odabrao sam jedan dan, a zatim period od tog dana. To mi je mnogo 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 učiniti da se RPi ponovo pokrene ako smatrate da je 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. Onda ć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 front, učinio sam da radi na pozadini. Tako da kasnije ne treba reviziju. To je nešto što nisam učinio i zbog toga sam izgubio sigurno 2 sedmice vremena. Glupi mene! Ali lekciju koju sam slučajno uzeo drugim projektima.
Dakle, kada napravite pozadinu, napravite nešto što ćete koristiti. Ali učinite to dokazom za budućnost tako što ćete ga učiniti za višekratnu upotrebu i neće biti teško kodiran. Dakle, kad mi zatreba posljednjih 50 vrijednosti mog DHT11, provjerit ću postoje li vrijednosti? Da, kako da ih stavim u bazu podataka. Kako da ih izvadim 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 da li pozivam sve vrijednosti sa senzora MQ ili pozivam sve senzore sa imenom MQ u svom imenu. Zatim sam uneo neke greške u rukovanje. Kada je zahtev poziva pravi način, tada se može nastaviti, u suprotnom dobija lepu grešku.
Ovdje se također nalaze niti, ovo 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 -ove. Napravio sam najnižu/ zdravu vrijednost za CO2. Ova vrijednost dolazi iz više izvora iz zemlje. Zdrava vrijednost za učionice je ispod 600 ppm CO2 po kubnom 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 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.
Kada vrijednost prijeđe sredinu, otvara se prozor. Koristio sam step motor zbog velikog okretnog momenta i preciznosti. A kad vrijednost pređe 2000, mali alarm se uključuje. Ovo će alarmirati ljude u prostoriji.
Također možemo otkriti dimne plinove, pa kad dođe do požara. Ovo takođe registruje. Kada pređ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 lokaciju.
Možete pronaći sve + kôd unutar mog Githubina app.py
Korak 9: Iznošenje dokaza
Našao sam malu računarsku futrolu za sve svoje komponente.
Rezao sam aluminijski lim prema veličini. I izbušio neke rupe na kojima bi lim ležao. 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 za napajanje 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đe mu daje lep 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 položaje 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 pomoću čičak trake. Koristio sam čičak jer sam tada mogao lako 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 da sve možemo lako vidjeti.
Kako je slučaj završen, moramo sve ožičiti, ovdje možete pronaći shemu ožičenja.
Korak 10: Evaluacija i zaključak
Dakle, ovo je/bio je 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. Prislonio sam se da ne možete čekati da zaista morate nastaviti davati. Morate dokumentirati svaki potez (gotovo vrlo potez) i to morate učiniti kad ste upravo učinili.
Fokusirajte se na jednu po jednu stvar. Želite temperaturu na ekranu? Uradi ovo, ovo i ono. Ne čekajte i ne pokušavajte to propustiti. Neće pomoći. I izgubit ćete toliko dragocjeno vrijeme.
Takođe 4 sedmice izgledaju kao puno vremena. Ali manje je istina. Ovo jednostavno nije u redu. Imate samo 4 sedmice. Prve 2 sedmice i nije toliko veliki pritisak. 3 sedmice završetka i 4 sedmice neprospavane noći. Ovako ne biste trebali to 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čuje se:
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 primjetno, ali dovoljno rijetko da izazove sumnju
AvoRipe - provjera je li vaš avokado zreo: 8 koraka (sa slikama)
AvoRipe - Provjera je li vaš avokado zreo: To se svakome dogodilo, kupite avokado, još nije sazrio. Prođe nekoliko dana, a dok sazri, već ste zaboravili na to … i za nekoliko dana, može vam poći po zlu! Na sreću za vas smo dizajnirali i napravili AvoRipe, uređaj koji provjerava vaš avokado
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 ljut
Arduino filmska kamera Provjera zatvarača: 4 koraka
Arduino Filter Camera Shutter Checker: Nedavno sam kupio dvije polovne, stare filmske kamere. Nakon što sam ih očistio, shvatio sam da brzina zatvarača može biti manja zbog prašine, korozije ili nedostatka ulja, pa sam odlučio napraviti nešto za mjerenje stvarnog vremena ekspozicije bilo koje kamere, jer, po m
Provjera izvještaja o saobraćaju (NL) sa otiračem: 6 koraka
Provjera izvještaja o prometu (NL) sa otiračem: U ovom uputstvu ću opisati kako izgraditi otirač koji će provjeravati izvještaje o saobraćaju na holandskim autoputevima. Nakon što izađete na otirač i na vašoj ruti dođe do gužve, prostirka će postati crvena. Kad nema saobraćaja