INHOUDSOPGAWE:
- Voorrade
- Stap 1: Stel u RPi op
- Stap 2: MCP3008 + TMP36
- Stap 3: Databasis
- Stap 4: HNT11, vir die Real Boys
- Stap 5: Gassensors (slegs legendes)
- Stap 6: Die Shiftregister, 74HC595AG
- Stap 7: Frontend, 'n waardevolle les
- Stap 8: Die agterkant
- Stap 9: Maak die saak
- Stap 10: Evaluering en gevolgtrekking
Video: CPC -klasbesoedelingskontroleerder: 10 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Hallo daar, ek is 'n student uit België en dit is my eerste groot projek vir my baccalaureusgraad! Hierdie instruksie handel oor hoe om 'n lugoplossingsmeter te maak vir geslote kamers, veral klaskamers!
Ek hoor jou dink hoekom hierdie projek? Dit het alles begin toe ek na die hoërskool gegaan het. In die namiddag na 'n goeie middagete en 'n pouse, begin die lesse weer. Maar daar is 'n probleem, die onderwyser het vergeet om die venster oop te maak terwyl ons middagete geëet het, so dit is warm, sweet en jy kan nie konsentreer nie omdat jy aan die slaap raak. Dit is omdat daar te veel CO2 in die lug is.
My projek sal dit oplos en alle studente meer gekonsentreerd maak tydens hul lesse.
Voorrade
1 x Raspberry Pi 4 (€ 55)
1 x steppenmotor met bestuurder (€ 5)
2 x 12v 6800 mAh batterye (2x € 20)
2 x opstapmodule (2x € 5)
1 x 16x2 LCD (€ 1,5)
Sensors: 1x MQ8, 1x MQ4, 1x MQ7, 1x MQ135, 1x HNT11, 1x TMP36 (1 x € 23)
IC's: 1x MCP3008, 2x 74hc595AG (1x € 2,30, 2x € 0,40)
LED's: 2x groen, 2x rooi, 3x geel (gevind in ou hardeware, normaalweg € 0,01 elk)
Connector vir die batterye (2 x € 0,35)
40 f-to-f-aansluitkabels (€ 1,80)
40 f-tot-m-aansluitkabels (€ 1,80)
20 m-tot-m-aansluitkabels (€ 1,80)
2 x PCB om aan te soldeer (2x € 0,70)
Gereedskap:
Soldeerbout (verkieslik 60 Watt)
Blik om te soldeer
Aluminiumplaat 50x20
Omhulsel (ek het 'n ou mini -rekenaarkas gebruik)
Dit kan maklik MDF of eie idees wees.
Stap 1: Stel u RPi op
Ons hart, ons brein en ons siel is dus in hierdie produk. Dreig dit goed, want dit kan u op een of ander manier seermaak. Ek gebruik 'n RPi 4B 4gb, ander modelle behoort baie goed te doen. U kan meer vertraging op ouer modelle verwag.
Ons het die bedryfstelsel van ons skool gekry met vooraf geïnstalleerde sagteware, soos phpMyAdmin.
Maak eerstens seker dat u via ssh kan koppel aan u Raspberry Pi, ons benodig dit baie tyd.
Ons moet dus eers die SPI-bus, GPIO-penne aktiveer en ander busse deaktiveer; ons het dit nie nodig nie.
U kan dit doen in die raspi-config-kieslys. Navigeer na koppelvlakke en aktiveer GPIO en SPI normaalweg, maar dit is nie nodig nie, terwyl u hier is, brei u u berging uit deur na gevorderde te gaan en druk dan enter op die uitbreiding van berging.
Herlaai nou. Ons benodig 'n paar uitbreidings om VS -kode op ons pi te gebruik om ons bediener en databasis te bestuur.
Die installasieproses vir die VS -kode -uitbreiding kan hier gevind word.
Nou installeer ons die uitbreidings vir ons bediener en databasis. Gebruik die terminale en tik 'python install flask, flask-cors, mysql-python-connector, eventlet' wag totdat dit klaar is.
Nou kan ons begin met die opstel van die projek.
Stap 2: MCP3008 + TMP36
Ons het dus 6 sensors: 4 gas, 1 humiditeit + temperatuur en 1 temperatuursensor. Dit is 'n werklike taak om hulle te laat werk. Alle sensors is analoog sensors, dus moet ons die analoog sein na 'n digitale sein omskakel. Dit is omdat die RPi (Rasberry Pi) slegs digitale seine kan "verstaan". Vir meer inligting klik hier.
Om hierdie taak te voltooi, benodig u 'n MCP3008, dit sal die werk uitstekend doen!
Dit het 16 poorte, wat van bo (die borreltjie) links, af, na die ander kant en na bo tel. Pin1-8 is die insette vir die analoog sein van ons sensors. Speld 9 aan die ander kant is 'n GND, dit moet aan die GND van die volledige stroombaan gekoppel word, anders werk dit nie. Speld 10-13 moet noukeuriger gekoppel word, dit stuur data na en van die RPi. Speld 14 is 'n ander GND en penne 15 en 16 is die VCC's, dit moet aan die positiewe kant van die stroombaan gekoppel word.
Dit is die uitleg vir die bedrading:
- MCP3008 VDD na eksterne 3.3V MCP3008 VREF na eksterne 3.3V
- MCP3008 AGND na eksterne GND
- MCP3008 DGND na eksterneGND
- MCP3008 CLK tot Framboos Pi -pen 18
- MCP3008 DOUT na Framboos Pi -pen 23
- MCP3008 DIN tot Framboos Pi -pen 24
- MCP3008 CS/SHDN tot Raspberry Pi pin 25
Dit is ook 'n goeie tyd om die GND van die RPI aan die eksterne GND te koppel. Dit sal die elektrisiteit van die RPi laat vloei.
Hier is hoe u dit op die regte manier kan koppel.
Maak seker dat u op die regte manier aansluit, anders kan u alles kortsluit!
Die eerste stuk kode kom hier in plek.
U kan my kode van my github -projek kopieer onder models. Analog_Digital.
Onderaan die bladsy vind u bronkode om dit te laat werk.
Maar ons het ons eerste sensor nodig, sodat ons kan toets.
Ons moet ons sensor toets as dit werk. Koppel 'n 3.3V of 5V voeding aan die positiewe kant van die TMP36. Moenie vergeet om dit ook aan die GND te koppel nie; dit is miskien iets dom wat gebeur, maar glo my. Dit is die werklikheid;). U kan die uitset van die sensor met u multimeter toets, dit is die middelste pen. Met hierdie eenvoudige vergelyking kan u die temperatuur in ° C kontroleer. ((milivolts*ingangsspanning) -500)/10 en voila donne! Totsiens! Nee, hahah, ons het die MCP3008 nodig. Koppel die analoog pen vir u TMP36 aan die eerste invoerpen van die MCP3008. Dit is pen 0.
U kan die voorbeeldkode onderaan vir hierdie MCP-klas gebruik. Of iets wat u aanlyn vind, sal die werk goed doen.
Stap 3: Databasis
Dus, nou dat ons in ons eerste sensor kan lees, moet ons dit by 'n databasis aanmeld. Dit is die geheue van ons brein. Ek het hierdie databasis ontwerp om uitbreidbaar en maklik veranderbaar te wees vir toekomstige veranderinge.
Dus moet ons eers dink wat ons as insette sal kry, en as ons spesifieke dinge, soos die status van sekere voorwerpe, moet aanteken.
My antwoord sou wees: invoer van 6 sensors, dus moet ons 'n sensortafel maak, met hierdie sensors maak ons waardes. Wat is gekoppel aan 'n waarde? Vir my is dit die status van die venster, is dit oop of is dit gesluit terwyl die sensor die waarde gemeet het? Maar die ligging is ook 'n faktor vir my waarde, so ons sal dit byvoeg. Die tyd en datum vir 'n waarde is ook belangrik, so ek sal dit byvoeg.
Vir toekomstige uitbreiding het ek 'n gebruikerstabel bygevoeg.
Wat is my idee vir tabelle: tafelwaardes, tafeladres (gekoppel aan kamer), tafelkamer (gekoppel aan waarde), tafelvenster (gekoppel aan waarde), tafelsensor (gekoppel aan waarde) en 'n tabel in die natuur vir gebruikers.
Soos vir die koppeling van die tabelle. Elke waarde benodig een sensor, een venster, 'n waarde vir die sensor, 'n ID, sodat ons die waarde uniek kan maak, 'n tydstempel vir wanneer die waarde gemaak is, en as laaste het ons nie 'n kamer nodig nie, dit is opsioneel, maar kan bygevoeg.
So lyk dit nou. Dit is wat ek vir die res van my projek gebruik.
Stap 4: HNT11, vir die Real Boys
Ons mag dus geen biblioteke gebruik nie. Ons moet alles self programmeer.
Die HNT11 is 'n eendraadstelsel, so dit beteken dat u 'n GND en VCC het, soos enige ander elektroniese toestel, maar die 3-pen is 'n in- en uitsetpen. Dit is dus vreemd, maar ek het baie daaruit geleer.
Koppel die VCC aan die eksterne 3.3V en die GND aan die eksterne GND.
Die datablad van die DHT11 bevat alles om hierdie sensors te gebruik.
Ons kan bepaal dat 'n hoë bit 'n lae en hoë bit bevat. Maar die duur van die hoë deel bepaal die bietjie in werklikheid. As die hoë deel langer as 100µs (normaalweg 127µs) uitgestraal word, is die bietjie hoog. Is die bietjie korter as 100µs (normaalweg ongeveer 78µs), dan is die bietjie laag.
As die HNT11 geaktiveer is, begin dit seine afgee. Dit is altyd 41 stukkies. Dit begin met 'n begin, dit beteken niks, sodat ons hierdie een kan oorslaan. Die eerste 16 bisse/ 2 grepe is die heelgetal en dryfdeel vir die humiditeit. Dit is dieselfde vir die laaste 2 grepe, maar nou is dit vir die temperatuur.
Ons hoef dus net die duur van elke bietjie te bereken en dan is ons klaar.
In die bronkode onder DHT11 vind u my metode om hierdie probleem op te los.
Stap 5: Gassensors (slegs legendes)
Dus het ek aan die begin van die projek gedink dat dit 'n goeie idee sou wees om baie sensors te gebruik. Dink voordat u optree en plaaslik koop, dit sal u baie ure bespaar! Omdat u vroeër kan begin, en dit sal u meer gewillig maak om daarvoor te werk.
Ek het dus 4 gassensors. MQ135, MQ8, MQ4 en 'n MQ7 al hierdie sensors het spesifieke gasse wat hulle die beste meet. Maar dit is almal anders in hul opset.
Dus, eers het ek die datablad gebruik, dit het my geen begeerte gemaak nie. Toe soek ek na kode voorbeelde. Wat ek gevind het, was een biblioteek van Adafruit. Ek het probeer om dit so goed as moontlik te herhaal. Dit werk saam met een van die vier sensors.
Ek het dit 'n rukkie laat rus en teruggekom.
Wat ek gedoen het om dit vir die een sensor te laat werk, is:
- Ek het die datablad gebruik om die punte van die gas wat ek wou meet, te merk. Dus 1 ro/rs tot 400ppm, 1.2 tot 600ppm …
- Toe plaas ek al die punte uitstekend en haal die formule vir die kromme uit. Ek het dit in my databasis gestoor.
- Uit die datablad lees ek ook die normale weerstand en die weerstand teen skoon lug. Hierdie waardes is ook in die databasis gestoor.
Ek het dit alles in 'n kode gegooi; u kan dit as die laaste drie funksies in die MCP3008 -klas vind. Maar dit is nog nie klaar nie, maar ek het ongelukkig nie genoeg tyd gehad nie.
Stap 6: Die Shiftregister, 74HC595AG
Dit is dus 'n IC. En dit doen iets besonders; met hierdie toestel is dit moontlik om minder GPIO -uitsette vir dieselfde uitsetsein te gebruik. Ek het dit gebruik vir die LCD (Liquid Crystal Display) en my leds. Ek sal die ip -adres op die LCD wys sodat almal na die webwerf kan blaai.
Die LED's is verstandig: 2 rooi, 3 geel en 2 groen. Dit sal te alle tye die luggehalte in die kamer wys.
Die shiftregister is 'n parallelle uitsetapparaat, dus is dit nie moontlik om verskillende seine binne 'n tydperk uit te voer nie. Dit sou moontlik wees as dit van buite af geprogrammeer is, maar nie oorspronklik ondersteun word nie.
Hoe om die IC te gebruik? U het 5 insette en 9 uitsette. 8 logiese uitsette vir die 8 penne en dan die 9de pen om die oorblywende data na 'n ander verskuiwingsregister te stuur.
Dus verbind ons pen 16 met die eksterne VCC, die volgende pen is die eerste uitset, dus vir die LCD sal ons dit nodig hê. Pin 14 is die datalyn, hier stuur ons data. Die 13de pen is die aan -skakelaar, 'n lae sein kan die IC moontlik maak, 'n hoë sein is nodig om dit af te skakel. Speld 12 is die pen waar ons kan bepaal wanneer 'n bietjie gestuur is, as u hierdie pen af trek, van hoog na laag, lees dit die seinstatus van pen 13 en stoor dit in sy 8 -bits geheue. Speld 11 is soortgelyk as hierdie pen hoog is, dan laai dit die 8 bisse na die poort. En die laaste pen, pen 10 is die master reset, hierdie pen moet hoog bly, anders werk dit nie. Die laaste verbinding is die GND -pen 8 wat ons nodig het om hierdie een aan die eksterne GND te koppel.
Verbind dus die penne wat u wil hê met die framboospi. Die manier waarop ek dit gedoen het, was om hulle so na as moontlik aan mekaar te koppel om seker te maak ek weet waar hulle is.
As u die regte uitset kry. U kan dit met 'n LED op 'n PCB soldeer. en 220 Ohm weerstande. Soldeer die uitset van die IC aan die ooreenstemmende LED. U behoort nou so iets te hê.
U kan my toetskode hier onder Shiftregister vind. As u met 'n 74HC595N werk, benodig u nie die MR nie, sodat u dit nie aan mekaar kan laat nie.
Die LCD is amper dieselfde. Dit is redelik maklik om dit met die shiftregister te gebruik, want die ingang vir die LCD is presies die input vir die shiftregister.
Vir die LCD is daar 'n ander kode om dit te laat werk, maar dit is redelik dieselfde as net die shifregister. U kan die toetskode hier onder die LCD vind.
Stap 7: Frontend, 'n waardevolle les
So hier sal ek afdwaal, dit is 'n gedeelte van hoe u dit moet doen. Dit is iets baie waardevol wat geleer is.
Maak die voorkant voor die agterkant !!!!
Ek het dit andersom gedoen. Ek het nuttelose oproepe na my databasis gemaak; ek spandeer te veel tyd hieraan.
Op die bestemmingsbladsy het ek die huidige temperatuur en humiditeit en die waardes van al die gassensors in 'n goeie grafiek nodig. Ek moet ook die ip -adres van die RPi wys.
Op die bladsy van die sensors benodig ek die keuse van een sensor en die keuringstyd. Ek het gekies vir die keuse van een dag en dan die tydperk vanaf die dag. Dit het dit vir my baie makliker gemaak omdat ek dit meer kon beheer.
Op die laaste bladsy, op die instellingsbladsy, is dit moontlik om sekere waardes te bestuur, soos gesonde gevaarlike of gevaarlike gas- en temperatuurvlakke. U kan ook die RPi herlaai as u dit nodig het.
Dus het ek eers 'n ontwerp gemaak sodat ek maklik aan die koderinggedeelte kon begin werk. Ek het geleidelik een ding op 'n slag vordering gemaak. Die opdrag was eers mobiel, so ek fokus eers daarop. Dan gaan ek na die groter skerms.
U kan my bladsye, css en js in my Github vind.
Stap 8: Die agterkant
Hierdie deel is die deel wat ek met die voorkant gemeng het. Toe ek iets vir die voorkant maak, het ek dit aan die agterkant laat werk. Dit sal dus nie later hersien word nie. Dit was iets wat ek in die eerste plek nie gedoen het nie, en daarom het ek beslis 2 weke tyd verloor. Dom my! Maar 'n les wat ek graag vir ander projekte neem.
As u dus 'n back -end maak, maak dan iets wat u sal gebruik. Maar maak dit toekomstig bewys deur dit herbruikbaar en nie hardgekodeerd te maak nie. Dus, as ek die laaste 50 waardes van my DHT11 benodig, sal ek kyk of daar waardes gemaak word? Ja, hoe plaas ek dit in die databasis. Hoe kry ek hulle uit die databasis. Hoe wys ek dit? Grafiek, grafiek, of net die gewone data? Dan maak ek 'n nuwe roete met die verskillende parameters en eienskappe, soos datums, spesifieke sensorname of wat ek sal bel. Ek bedoel, noem ek al die waardes van die MQ -sensors, of noem ek al die sensors met MQ in sy naam? Dan sit ek 'n paar foute in. As die versoek van die oproep slegs die regte metode is, dan kan dit voortgaan, anders kry dit 'n goeie fout.
Hier is ook die drade, dit is sagteware wat u toelaat om parallelle kode uit te voer. U kan die webwerf -oproepe, die waardeskeppingsfunksie en die led+shiftregister uitvoer. Hierdie funksies loop heeltemal onafhanklik van mekaar.
So vir die ledes. Ek het 'n onderste/ gesonde waarde vir die CO2 gemaak. Hierdie waarde kom uit verskeie regeringsbronne. Die gesonde waarde vir klaskamers is onder 600 ppm CO2 per kubieke meter. Die ongesonde waarde is alles bo 2000 ppm. Die LED's maak dus die brug. As die waarde van die MQ4 -sensor 1400 is, word dit outomaties bereken in watter gevareniveau dit is. 2000 - 600 = 1400, dus die totale omvang is 1400/7 = 200. As die waarde 550 bereik, toon dit 'n groen led. 750 toon 2 groen LED's, 950 1 geel 2 groen LED's. En so aan.
As die waarde bo die middel styg, word die venster oopgemaak. Vanweë die hoë wringkrag en presisie het ek 'n steppenmotor gebruik. En as die waarde oor die 2000 gaan, gaan 'n klein alarm af. Dit is om die mense in die kamer alarm te maak.
Ons kan ook rookgasse opspoor, so as daar 'n brand is. Dit registreer dit ook. As dit bo 'n sekere waarde styg, gaan die alarm aan en die LED flikker.
Die LCD is hoofsaaklik daar om die IP -adres te wys sodat u na die webwerf kan blaai.
U kan alles + kode vind in my Githubin die app.py
Stap 9: Maak die saak
Ek het 'n klein rekenaarkas gevind vir al my komponente.
Ek het 'n aluminiumplaat in grootte gesny. En 'n paar gate geboor waar die laken sou rus. Dit stem ooreen met die moederbordgate.
Toe kyk ek hoe alles in die kas pas. Ek het alles uiteengesit en begin beweeg.
Toe ek tevrede was met hoe dit werk, het ek begin om die gate wat ek nodig het vir die sensors, RPi, PCB's, kragmodules en steppenmotormodules te merk. Die gate is geskik vir die afskakeling van die PCB; dit sal ruimte maak sodat die metaaldele nie met die aluminiumplaat in aanraking kom nie. Dit gee dit ook 'n mooi voorkoms.
Ek het die kabels van elke IC of ander toestel gegryp en vasgemaak. Dit is omdat ek kon sien waarvoor kabels is. Ek het alles mooi op 'n paar afstande geplaas en 'n paar moere en skroewe gebruik om alles mooi op hul plek te hou.
Om dit alles aan te dryf, het ek 2 batterye gebruik. Dit bied baie krag, maar dit is steeds batterye, sodat dit mettertyd leeg sal raak. Ek het dit met 'n klittenband aangebring. Ek het klittenband gebruik, want dan kan ek die batterye maklik vervang of daarvan ontslae raak.
Die steppenmotor, LCD en LED's kom uit die bokant van die saak. Ek het die omhulsel se deksel noukeurig daarop gelê en die gate gemerk en dit met 'n boor geboor. Ons kan dus maklik alles sien.
Aangesien die saak klaar is, moet ons alles bedraad, hier vind u die bedradingskema.
Stap 10: Evaluering en gevolgtrekking
Dit is/was dus my eerste projek.
Dit lyk reg, dink ek.
Ek het baie nuwe dinge geleer, die groot en die slegte kant van projekbestuur geleer. Dit was regtig 'n waardevolle les. Ek het geleun dat jy nie kan wag nie, jy moet regtig aanhou gee. U moet elke beweging (byna baie skuif) dokumenteer, en dat u dit moet doen as u dit net gedoen het.
Fokus op 1 ding op 'n slag. Wil u die temperatuur op u skerm hê? Doen dit, dit en dat. Moenie wag of probeer om dit te laat verbygaan nie. Dit sal nie help nie. En dit sal jou so kosbare tyd verloor.
4 weke lyk ook baie tyd. Maar minder is waar. Dit is net nie reg nie. U het net 4 weke. Eerste 2 weke nie regtig soveel druk nie. 3 weke afwerking en die 4de week slapelose nag. Dit is hoe jy dit nie moet doen nie.
Ek was miskien 'n bietjie ambisieus: ek was 'n baie klein tas, nie maklik om sensors, batterye te gebruik nie … Maak dit baie eenvoudiger en maak dit geleidelik moeiliker en harder, dan kry u 'n goeie prototipe/ produk.
Aanbeveel:
Spelontwerp in vyf stappe: 5 stappe
Spelontwerp in fliek in 5 stappe: Flick is 'n baie eenvoudige manier om 'n speletjie te maak, veral iets soos 'n legkaart, visuele roman of avontuurlike spel
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: 3 stappe
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: in hierdie instruksies gaan ons gesigsopsporing uitvoer op Raspberry Pi 4 met Shunya O/S met behulp van die Shunyaface-biblioteek. Shunyaface is 'n biblioteek vir gesigherkenning/opsporing. Die projek het ten doel om die vinnigste opsporing en herkenningssnelheid te bereik met
DIY Vanity Mirror in eenvoudige stappe (met LED -strookligte): 4 stappe
DIY Vanity Mirror in eenvoudige stappe (met behulp van LED Strip Lights): In hierdie pos het ek 'n DIY Vanity Mirror gemaak met behulp van die LED strips. Dit is regtig cool, en u moet dit ook probeer
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): 6 stappe
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): wil u u vriende skrik en 'n skreeu geraas maak tydens Halloween? Of wil u net 'n goeie grap maak? Hierdie pop-up skerm van Zombies kan dit doen! In hierdie instruksies sal ek u leer hoe u maklik Zombies kan spring deur Arduino te gebruik. Die HC-SR0
Speel Doom op u iPod in 5 maklike stappe !: 5 stappe
Speel Doom op u iPod in 5 maklike stappe !: 'n Stap-vir-stap gids oor hoe u Rockbox op u iPod kan dubbellaai om Doom en tientalle ander speletjies te speel. Dit is iets baie maklik om te doen, maar baie mense staan nog steeds verbaas as hulle sien hoe ek op my iPod doom speel en deurmekaar raak met die instruksies