Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Konfigurere RPi
- Trinn 2: MCP3008 + TMP36
- Trinn 3: Database
- Trinn 4: HNT11, for Real Boys
- Trinn 5: Gassensorer (bare legender)
- Trinn 6: Shiftregister, 74HC595AG
- Trinn 7: Frontend, en verdifull leksjon
- Trinn 8: Backend
- Trinn 9: Lag saken
- Trinn 10: Evaluering og konklusjon
Video: CPC Class Polution Checker: 10 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Hei, jeg er en student fra Belgia, og dette er mitt første store prosjekt for min bachelorgrad! Denne instruksen handler om hvordan du lager en luftmåler for lukkede rom, spesielt klasserom!
Jeg hører deg tenke hvorfor dette prosjektet? Det hele begynte da jeg gikk på videregående. På ettermiddagen etter en god lunsj og en pause, starter timene igjen. Men det er et problem, læreren glemte å åpne vinduet mens vi spiste lunsj, så det er varmt, svett og du kan ikke konsentrere deg fordi du sovner. Det er fordi det er for mye CO2 i luften.
Prosjektet mitt vil løse dette og gjøre alle studenter mer konsentrerte mens de er i timene.
Rekvisita
1 x Raspberry Pi 4 (€ 55)
1 x steppenmotor med sjåfør (€ 5)
2 x 12v 6800 mAh batterier (2x € 20)
2 x nedstigningsmodul (2x € 5)
1 x 16x2 LCD (€ 1,5)
Sensorer: 1x MQ8, 1x MQ4, 1x MQ7, 1x MQ135, 1x HNT11, 1x TMP36 (1 x € 23)
IC -er: 1x MCP3008, 2x 74hc595AG (1x € 2,30, 2x € 0,40)
Lysdioder: 2x grønn, 2x rød, 3x gul (finnes i gammel maskinvare, normalt € 0,01 hver)
Kontakt for batteriene (2 x € 0,35)
40 f-til-f-tilkoblingskabler (€ 1,80)
40 f-til-m-tilkoblingskabler (€ 1,80)
20 m til m-tilkoblingskabler (€ 1,80)
2 x kretskort til lodding (2x € 0,70)
Verktøy:
Loddejern (helst 60 Watt)
Tinn til lodding
Aluminiumsplate 50x20
Kabinett (jeg brukte en gammel mini datamaskin etui)
Dette kan lett være noen MDF eller egne ideer.
Trinn 1: Konfigurere RPi
Så hjertet vårt er hjernen vår og sjelen vår i dette produktet. Tru det godt, for det kan på en eller annen måte skade deg. Jeg bruker en RPi 4B 4gb, andre modeller burde gjøre det fint. Du kan forvente noe mer forsinkelse på eldre modeller.
Vi fikk OS fra skolen vår med forhåndsinstallert programvare, for eksempel phpMyAdmin.
Først og fremst må du sørge for at du kan koble til Raspberry Pi via ssh, vi trenger det god tid.
Så først bør vi aktivere SPI-bussen, GPIO-pins og deaktivere andre busser, vi trenger dem ikke.
Du kan gjøre dette i raspi-config-menyen. Naviger til Grensesnitt og aktiver GPIO og SPI normalt, det vil ikke være nødvendig å Mens du er her, utvider du lagringsplassen din ved å gå til avansert og deretter trykke enter på utvid lagring.
Start på nytt. Vi trenger noen utvidelser for å bruke VS -koden på pi -en vår, for å kjøre serveren og databasen.
Installasjonsprosessen for VS -kodeutvidelsen finner du her.
Nå vil vi installere utvidelsene for serveren og databasen vår. Bruk terminalen og skriv 'python install flask, flask-cors, mysql-python-connector, eventlet' vent til den er ferdig.
Nå kan vi begynne med prosjektet.
Trinn 2: MCP3008 + TMP36
Så vi har 6 sensorer: 4 gass, 1 fuktighet + temperatur og 1 temperatursensor. Det er en virkelig oppgave å få dem til å fungere. Alle sensorer er analoge sensorer, så vi må konvertere det analoge signalet til et digitalt signal. Det er fordi RPi (Rasberry Pi) bare kan "forstå" digitale signaler. For mer info klikk her.
For å fullføre denne oppgaven trenger du en MCP3008, dette vil gjøre jobben bra!
Den har 16 porter, som teller fra toppen (den lille boblen) til venstre, ned, andre siden og opp. Pin1-8 er inngangene for det analoge signalet fra sensorene våre. Pin 9 på den andre siden er en GND denne må kobles til GND for hele kretsen ellers ville dette ikke fungere. Pin 10-13 må kobles mer nøye til, disse vil overføre data til og fra RPi. Pinne 14 er en annen GND og pinner 15 og 16 er VCC -ene, disse må være koblet til den positive siden av kretsen.
Dette er oppsettet for tr ledninger:
- MCP3008 VDD til ekstern 3.3V MCP3008 VREF til ekstern 3.3V
- MCP3008 AGND til ekstern GND
- MCP3008 DGND til eksternGND
- MCP3008 CLK til Raspberry Pi pin 18
- MCP3008 DOUT til Raspberry Pi pin 23
- MCP3008 DIN til Raspberry Pi pin 24
- MCP3008 CS/SHDN til Raspberry Pi pin 25
Dette er også et godt tidspunkt å koble GND fra RPI til den eksterne GND. Dette vil få elektrisiteten til å flyte fra RPi.
Slik kobler du den til på riktig måte.
Sørg for å koble til på riktig måte, ellers kan du kortslutte alt!
Den første koden kommer på plass her.
Du kan kopiere koden min fra github -prosjektet mitt under models. Analog_Digital.
Nederst på siden finner du kildekoden for å få den til å fungere.
Men vi trenger vår første sensor, så vi kan teste.
Vi må teste sensoren vår hvis den fungerer. Koble en 3.3V eller 5V strømforsyning til den positive siden av TMP36. Ikke glem å koble den til GND også, dette er kanskje noe dumt som kan skje, men tro meg. Det er virkeligheten;). Du kan teste utgangen til sensoren med multimeteret ditt, dette er den midterste pinnen. Med denne enkle ligningen kan du sjekke temperaturen i ° C. ((milivolt*inngangsspenning) -500)/10 og voila donne! Ha det! Nei nei hahah, vi trenger MCP3008. Koble den analoge pinnen for TMP36 til den første inngangspinnen på MCP3008. Dette er pin 0.
Du kan bruke eksempelkoden nederst for denne MCP-klassen. Eller noe du finner på nett, vil gjøre jobben bra.
Trinn 3: Database
Så nå vi at vi kan lese i vår første sensor, må vi logge den til en database. Dette er minnet om hjernen vår. Jeg designet denne databasen for å være utvidbar og lett modifiserbar for fremtidige endringer.
Så først må vi tenke hva vi får som innspill, og hvis vi trenger å logge bestemte ting, for eksempel statuser for bestemte objekter.
Mitt svar ville være: input fra 6 sensorer, så vi må lage et sensortabell, med disse sensorene vil vi lage verdier. Hva er knyttet til en verdi? For meg er det statusen til vinduet, er det åpent eller er det lukket mens sensoren målte verdien. Men beliggenheten er også en faktor for verdien min, så vi vil legge det til. Tid og dato for en verdi er også viktig, så jeg legger det til.
For fremtidig utvidelse la jeg til en brukertabell.
Så hva er tanken min for tabeller: tabellverdier, tabelladresse (koblet til rom), bordrom (knyttet til verdi), tabellvindu (knyttet til verdi), tabellsensor (knyttet til verdi) og et bord i naturen for brukere.
Når det gjelder å koble tabellene sammen. Hver verdi trenger en sensor, ett vindu, en verdi for sensoren, en id slik at vi kan gjøre verdien unik, et tidsstempel for når verdien ble gjort, og som siste trenger vi ikke et rom, så det er valgfritt, men kan være la til.
Så slik ser det ut nå. Dette er det jeg bruker for resten av prosjektet mitt.
Trinn 4: HNT11, for Real Boys
Så da vi ikke fikk bruke noen form for biblioteker. Vi må programmere alt selv.
HNT11 er et en-leders system, så dette betyr at du har en GND og VCC som alle andre elektroniske enheter, men 3-pinnen er en inn- og utgangspinne. Så det er litt rart, men jeg lærte mye av det.
Koble VCC til den eksterne 3.3V og GND til den eksterne GND.
Databladet til DHT11 inneholder alt for å bruke disse sensorene.
Vi kan bestemme at en høy bit inneholder en lav og høy bit. Men varigheten til den høye delen avgjør biten for ekte. Hvis den høye delen slippes ut lenger enn 100 µs (normalt 127 µs) er borkronen høy. Er biten kortere enn 100 µs (normalt rundt 78 µs) er biten lav.
Når HNT11 er aktivert, begynner den å avgi signaler. Dette er alltid 41 bits. Det starter med en startbit, dette betyr ikke noe, så vi kan hoppe over denne. De første 16 bitene/ 2 byte er heltall og flytedel for fuktigheten. Det er det samme for de siste 2 byte, men nå er det for temperaturen.
Så vi trenger bare å beregne varigheten til hver bit, og så er vi ferdige.
I kildekoden under DHT11 finner du min metode for å løse dette problemet.
Trinn 5: Gassensorer (bare legender)
Så jeg tenkte i begynnelsen av prosjektet at det ville være en god idé å bruke mange sensorer. Tenk før du handler og kjøper lokalt, dette vil spare deg for mange sovetimer! Fordi du kan starte tidligere, og dette vil du gjøre mer villig til å gå for det.
Så jeg har 4 gass sensorer. MQ135, MQ8, MQ4 og en MQ7 alle disse sensorene har spesifikke gasser som de måler best. Men disse er forskjellige i sin konfigurasjon.
Så først brukte jeg databladet, dette gjorde meg ikke noe som ønsket. Deretter søkte jeg etter kodeeksempler. Det jeg fant var ett bibliotek fra Adafruit. Jeg prøvde å replikere det så godt som mulig. Det fungerte med en av de fire sensorene.
Jeg lot det hvile en stund og kom tilbake til det.
Det jeg gjorde for å få den til å fungere for den ene sensoren er:
- Jeg brukte databladet til å markere punkter på gassen som jeg ønsket å måle. Så 1 ro/rs til 400ppm, 1,2 til 600ppm …
- Så satte jeg alle disse punktene i excell og hentet ut formelen for kurven. Jeg lagret dette i databasen min.
- Fra databladet leser jeg også normal motstand og ren luftmotstand. Disse verdiene ble også lagret i databasen.
Jeg helte alt inn i noen kode, du kan finne dette som de tre siste funksjonene i MCP3008 -klassen. Men dette er ikke ferdig ennå, dessverre hadde jeg ikke nok tid.
Trinn 6: Shiftregister, 74HC595AG
Så dette er en IC. Og det gjør noe spesielt, med denne enheten er det mulig å bruke mindre GPIO -utganger for det samme utgangssignalet. Jeg brukte dette til LCD -skjermen (Liquid Crystal Display) og lysdiodene mine. Jeg vil vise ip -adressen på LCD -skjermen slik at alle kan surfe til nettstedet.
LED -lampene er kloke med 2 røde, 3 gule og 2 grønne. Dette vil til enhver tid vise luftkvaliteten i rommet.
Skifteregisteret er en parallellutgangsenhet, så det er ikke mulig å sende ut forskjellige signaler i en tidsperiode. Dette ville være mulig hvis det er programmert til fra utsiden, men ikke er innebygd.
Hvordan bruke IC? Vel, du har 5 innganger og 9 utganger. 8 logiske utganger for de 8 pinnene og deretter 9. pinnen for å sende dataene som er til overs til et annet skiftregister.
Så vi kobler pin 16 til den eksterne VCC, neste pin er den første utgangen, så for LCD -en trenger vi den. Pin 14 er datalinjen, her sender vi data til. Den 13. pinnen er på av bryteren, et lavt signal er mulig for IC et høyt signal er nødvendig for å slå den av. Pinne 12 er pinnen hvor vi kan bestemme når litt ble sendt, når du trekker denne pinnen ned, så fra høy til lav leser den signalstatusen til pinne 13 og lagrer den i 8 -biters minne. Pinne 11 er lik når denne pinnen er satt høyt og lavt, sender den ut de 8 bitene til porten. Og den siste pinnen, pin 10 er master reset, denne pinnen må forbli høy, ellers fungerer den ikke. Den siste tilkoblingen er GND -pinnen 8, vi trenger for å koble denne til den eksterne GND -en.
Så nå koble pinnene du vil like til bringebærpi. Måten jeg gjorde det på var å koble dem så nært hverandre som mulig for å sikre at jeg visste hvor de var.
Når du får riktig utgang. Du kan lodde dette til en PCB med LED -lampene. og 220 Ohm motstander. Lodd utgangen til IC til den tilsvarende LEDen. Du burde nå ha noe slikt.
Du finner testkoden min her under Shiftregister. Når du jobber med en 74HC595N trenger du ikke MR, så du kan la den ikke være tilkoblet.
LCD -skjermen er ganske lik. Det er ganske enkelt å bruke det med shiftregister fordi inngangen for LCD -skjermen er nøyaktig input for shiftregister.
For LCD -skjermen er det en annen kode for å få det til å fungere, men det er ganske det samme som bare shifregister. Du finner testkoden her under LCD.
Trinn 7: Frontend, en verdifull leksjon
Så her vil jeg vandre bort, dette er en del av hvordan du skal gjøre det. Dette er noe veldig veldig verdifullt som lærte.
Gjør frontend før backend !!!!
Jeg gjorde det omvendt. Jeg ringte ubrukelig til databasen min, jeg bruker for mye tid på dette.
På landingssiden trengte jeg gjeldende temperatur og fuktighet og verdiene til alle gassensorene i et fint diagram. Jeg må også vise ip -adressen til RPi.
På siden til sensorene trenger jeg valg av én sensor og valgtid. Jeg valgte for valg av en dag og deretter perioden fra den dagen. Dette gjorde det mye lettere for meg fordi jeg kunne kontrollere det mer.
På den siste siden er innstillingssiden det mulig å administrere visse verdier, for eksempel sunne farlige eller farlige gasser og temperaturnivåer. Du kan også få RPi til å starte på nytt hvis du føler behov for det.
Så først laget jeg et design slik at jeg enkelt kunne begynne å jobbe med kodingsdelen. Jeg gjorde gradvis fremgang en ting om gangen. Oppgaven var mobil først, så jeg fokuserer først på det. Så tar jeg meg til de større skjermene.
Du finner sidene mine, css og js i min Github.
Trinn 8: Backend
Denne delen er delen jeg blandet med frontenden. Da jeg lagde noe for frontend, fikk jeg det til å fungere på backend. Så det trenger ikke revisjon senere. Dette var noe jeg ikke gjorde i utgangspunktet, og på grunn av dette mistet jeg absolutt 2 ukers tid. Dumme meg! Men en leksjon jeg gjerne tar til andre prosjekter.
Så når du lager backend, lag noe du vil bruke. Men gjør det fremtidssikkert ved å gjøre det gjenbrukbart og ikke hardt kodet. Så når jeg trenger de siste 50 verdiene til min DHT11, vil jeg sjekke om det blir gjort verdier? Ja, hvordan legger jeg dem i databasen. Hvordan får jeg dem ut av databasen. Hvordan viser jeg det? Diagram, graf eller bare vanlige data? Deretter lager jeg en ny rute med de forskjellige parameterne og egenskapene, for eksempel datoer, spesifikke sensornavn eller hva jeg skal ringe. Jeg mener, kaller jeg alle verdiene fra MQ -sensorene, eller kaller jeg alle sensorene med MQ i navnet. Deretter legger jeg inn noen feilhåndtering. Når forespørselen fra samtalen bare er den riktige metoden, kan den fortsette, ellers får den en fin feil.
Også her er trådene plassert. Disse er programvare som lar deg kjøre parallellkode. Du kan kjøre nettstedssamtaler, verdiskapingsfunksjonen og led+shiftregister. Disse funksjonene kjører helt uavhengige av hverandre.
Så for ledelsen. Jeg gjorde en bunn/ sunn verdi for CO2. Denne verdien kom fra flere statlige kilder. Den sunne verdien for klasserom er under 600 ppm CO2 per kubikkmeter. Den usunne verdien er alt over 2000 ppm. Så LED -ene lager broen. Hvis verdien til MQ4 -sensoren er 1400, beregnes den automatisk i hvilket farenivå det er. 2000 - 600 = 1400 så totalt område er 1400/7 = 200. Så når verdien når 550 viser det en grønn lysdiode. 750 viser 2 grønne lysdioder, 950 1 gule 2 grønne lysdioder. Og så videre.
Når verdien går over midten åpnes vinduet. Jeg brukte en steppenmotor på grunn av det høye dreiemomentet og presisjonen. Og når verdien går over 2000, går en liten alarm. Dette er for å alarmere menneskene inne i rommet.
Vi kan også oppdage røykgasser, så når det er brann. Det registrerer også dette. Når den går over en viss verdi, går alarmen og lysdioden blinker.
LCD -skjermen er hovedsakelig der for å vise IP -adressen slik at du kan surfe til nettstedet.
Du kan finne alt + kode inne i min Githubin app.py
Trinn 9: Lag saken
Jeg fant en liten datamaskinveske for alle komponentene mine.
Jeg kuttet et aluminiumsplate i størrelse. Og boret noen hull der arket ville hvile. Dette korresponderer med hovedkorthullene.
Så så jeg på hvordan alt ville passe inne i saken. Jeg la ut alt og begynte å bevege meg.
Da jeg var fornøyd med hvordan det ville fungere begynte jeg å markere hullene jeg trengte for sensorene, RPi, PCB, kraftmoduler og steppenmotormodul. Hullene er for PCB -avstanden, dette vil gjøre plass slik at metalldelene ikke kommer i kontakt med aluminiumsplaten. Det gir det også et fint utseende.
Jeg tok fra hver IC eller annen enhet kablene og bandt dem sammen. Dette er fordi jeg kunne se hva kabler er for hva. Jeg plasserte alt fint på noen distanser og brukte noen muttere og skruer for å holde alt pent på plass.
For å drive alt dette brukte jeg 2 batterier. Disse gir mye strøm, men dette er fortsatt batterier, så disse vil tømmes med tiden. Jeg monterte disse med litt borrelås. Jeg brukte borrelås fordi da kunne jeg enkelt bytte eller bli kvitt batteriene.
Steppenmotor, LCD og LED vil komme ut av toppen av saken. Så jeg la forsiktig dekselet på toppen og merket hullene og boret dem med et bor. Så vi kan lett se alt.
Etter hvert som saken er ferdig, må vi koble alt, her kan du finne ledningsopplegget.
Trinn 10: Evaluering og konklusjon
Så dette er/var mitt første prosjekt.
Det ser greit ut synes jeg.
Jeg lærte mye nytt, lærte den store og den dårlige siden av prosjektledelse. Det var virkelig en verdifull leksjon. Jeg lente at du ikke kan vente, du må virkelig fortsette å gi. Du må dokumentere hvert trekk (nesten veldig flytte), og at du må gjøre det når du nettopp gjorde det.
Fokuser på 1 ting om gangen. Vil du ha temperaturen på skjermen? Gjør dette, det og det. Ikke vent eller prøv å la det passere. Det vil ikke hjelpe. Og det vil miste deg så så dyrebar tid.
Også 4 uker virker mye tid. Men mindre er sant. Dette er bare ikke riktig. Du har bare 4 uker. De første 2 ukene egentlig ikke så mye press. 3 ukers etterbehandling og 4. uken søvnløs natt. Slik bør du ikke gjøre det.
Jeg var kanskje litt ambisiøs: Jeg er en super liten sak, ikke lett å bruke sensorer, batterier … Gjør det mye enklere og gjør det gradvis vanskeligere og vanskeligere, bare da får du en god prototype/ produkt.
Anbefalt:
Otto DIY Class Final: 4 trinn
Otto DIY Class Final: Dette prosjektet ble gjort mulig av Otto og Athens Technical College. For å starte må du først kjøpe settet fra: https://www.ottodiy.com/store/products/49452 Følg deretter trinnene på: https: //wikifactory.com/+OttoDIY/otto-diy
DIY 2.1 Class AB Hi -Fi Audio Amplifier - Under $ 5: 10 trinn (med bilder)
DIY 2.1 Class AB Hi -Fi Audio Amplifier - Under $ 5: Hei alle sammen! I dag skal jeg vise deg hvordan jeg bygde en lydforsterker for et 2.1-kanals system (venstre-høyre og subwoofer). Etter nesten en måned med forskning, design og testing, har jeg kommet opp med dette designet. I denne instruksen vil jeg gå
DIY Pocket Air Temperature Checker: 6 trinn
DIY Pocket Air Temperature Checker: Vi bruker en Nokia 5110 -skjerm, digital temperaturmodul og en Arduino Uno for å lage dette. En 9V jack med ledninger, ikke en fat, er også nødvendig, sammen med en bryter og ledninger. Et loddejern kan være nødvendig, men du kan også bare vri ledninger
Diskrete bukser Fly Checker: 17 trinn (med bilder)
Diskrete bukser Fly Checker: Folk lurer alltid på hvordan det er at jeg lager så mange oppfinnsomme ting. Dette er vanlige daglige ting for meg. Jeg bare gjør det. Jeg vet egentlig ikke hvordan jeg skal gjøre noe annet. Det som er mer forvirrende for meg er hvordan alle andre gjør de andre tingene
Bærbar stereo Class-D lydforsterker: 7 trinn (med bilder)
Bærbar stereoklasse-D lydforsterker: Denne instruksen er å bygge bærbar stereoklasse-D lydforsterker ved bruk av Texas Instruments Chip TPA3123D2. Du kan også bruke denne metoden til å sette sammen en ferdig forsterker i et kabinett. Denne brikken bruker minimale komponenter og er en flott