Innehållsförteckning:
- Tillbehör
- Steg 1: Konfigurera din RPi
- Steg 2: MCP3008 + TMP36
- Steg 3: Databas
- Steg 4: HNT11, för Real Boys
- Steg 5: Gassensorer (endast legender)
- Steg 6: Shiftregister, 74HC595AG
- Steg 7: Frontend, en värdefull lektion
- Steg 8: Backend
- Steg 9: Gör fallet
- Steg 10: Utvärdering och slutsats
Video: CPC Klass Polution Checker: 10 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:40
Hej, jag är student från Belgien och det här är mitt första stora projekt för min kandidatexamen! Denna instruktionsbok handlar om hur man gör en luftmätare för slutna rum, särskilt klassrum!
Jag hör dig tänka varför det här projektet? Allt började när jag gick på gymnasiet. På eftermiddagen efter en god lunch och en paus börjar lektionerna igen. Men det är ett problem, läraren glömde öppna fönstret medan vi åt lunch så det är varmt, svettigt och du kan inte koncentrera dig eftersom du somnar. Det beror på att det finns för mycket CO2 i luften.
Mitt projekt kommer att lösa detta och göra alla studenter mer koncentrerade under lektionerna.
Tillbehör
1 xRaspberry Pi 4 (€ 55)
1 x stegmotor med förare (€ 5)
2 x 12v 6800 mAh batterier (2x € 20)
2 x stepdown -modul (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: 1x MCP3008, 2x 74hc595AG (1x € 2,30, 2x € 0,40)
Lysdioder: 2x grön, 2x röd, 3x gul (finns i en gammal hårdvara, normalt € 0,01 styck)
Kontakt för batterier (2 x 0,35 €)
40 f-till-f-anslutningskablar (1,80 €)
40 f-till-m-anslutningskablar (1,80 €)
20 m-till-m-anslutningskablar (1,80 €)
2 x kretskort att lödda på (2x 0,70 €)
Verktyg:
Lödkolv (helst 60 Watt)
Tenn till lödning
Aluminiumplåt 50x20
Hölje (jag använde ett gammalt minidatorfodral)
Detta kan lätt vara några MDF eller egna idéer.
Steg 1: Konfigurera din RPi
Så vårt hjärta vår hjärna och vår själ är i denna produkt. Hota det väl, för det kan på något sätt skada dig. Jag använder en RPi 4B 4gb, andra modeller borde göra det bra. Du kan förvänta dig lite mer fördröjning på äldre modeller.
Vi fick OS från vår skola med några förinstallerade program som phpMyAdmin.
Först och främst se till att du kan ansluta till din Raspberry Pi via ssh vi behöver det gott om tid.
Så först borde vi aktivera SPI-bussen, GPIO-stiften och inaktivera andra bussar, vi kommer inte att behöva dem.
Du kan göra detta i menyn raspi-config. Navigera till gränssnitt och aktivera GPIO och SPI normalt kommer det inte att vara nödvändigt att medan du är här, expandera ditt lagringsutrymme genom att gå till avancerat och tryck sedan på enter på expandera lagring.
Starta om nu. Vi kommer att behöva några tillägg för att använda VS -kod på vår pi, för att köra vår server och databas.
Installationsprocessen för VS Code Extension hittar du här.
Nu kommer vi att installera tilläggen för vår server och databas. Använd terminalen och skriv 'python install flask, flask-cors, mysql-python-connector, eventlet' vänta tills det är klart.
Nu kan vi börja med att göra projektet.
Steg 2: MCP3008 + TMP36
Så vi har 6 sensorer: 4 gas, 1 luftfuktighet + temperatur och 1 temperaturgivare. Det är en verklig uppgift att få dem att fungera. Alla sensorer är analoga sensorer så vi måste konvertera den analoga signalen till en digital signal. Det beror på att RPi (Rasberry Pi) bara kan "förstå" digitala signaler. För mer info klicka här.
För att slutföra den uppgiften behöver du en MCP3008, detta kommer att göra jobbet bra!
Den har 16 portar, räknat uppifrån (den lilla bubblan) vänster, ner, andra sidan och uppåt. Pin1-8 är ingångarna för den analoga signalen från våra sensorer. Stift 9 på andra sidan är en GND som måste anslutas till hela kretsens GND annars skulle detta inte fungera. Pin 10-13 måste anslutas mer noggrant, dessa överför data till och från RPi. Stift 14 är en annan GND och stift 15 och 16 är VCC: erna måste anslutas till kretsens positiva sida.
Detta är upplägget för thr kablar:
- MCP3008 VDD till extern 3.3V MCP3008 VREF till extern 3.3V
- MCP3008 AGND till extern GND
- MCP3008 DGND till externGND
- MCP3008 CLK till Raspberry Pi pin 18
- MCP3008 DOUT till Raspberry Pi pin 23
- MCP3008 DIN till Raspberry Pi pin 24
- MCP3008 CS/SHDN till Raspberry Pi pin 25
Detta är också en bra tid att ansluta GND från RPI till den externa GND. Detta kommer att få elektriciteten att flöda från RPi.
Så här ansluter du det på rätt sätt.
Se till att ansluta på rätt sätt, annars kan du kortsluta allt!
Den första koden kommer in på plats här.
Du kan kopiera min kod från mitt github -projekt under models. Analog_Digital.
Längst ner på sidan hittar du källkod för att få det att fungera.
Men vi behöver vår första sensor så att vi kan testa.
Vi måste testa vår sensor om den fungerar. Anslut ett 3.3V eller 5V nätaggregat till den positiva sidan av TMP36. Glöm inte att ansluta den till GND också, detta är kanske något dumt att hända men tro mig. Det är verkligheten;). Du kan testa med din multimeter sensorns utgång, detta är mittstiftet. Med denna enkla ekvation kan du kontrollera temperaturen i ° C. ((milivolt*ingångsspänning) -500)/10 och voila donne! Hejdå! Tja nej hahah vi behöver MCP3008. Anslut den analoga stiftet för din TMP36 till den första ingången på MCP3008. Detta är pin 0.
Du kan använda exempelkoden längst ner för denna MCP-klass. Eller något som du hittar online kommer att göra jobbet bra.
Steg 3: Databas
Så nu vi som kan läsa i vår första sensor måste vi logga den till en databas. Detta är minnet av vår hjärna. Jag utformade den här databasen för att vara utbyggbar och lätt modifierbar för framtida förändringar.
Så först måste vi tänka på vad vi får som inmatningar och om vi behöver logga specifika saker som status för vissa objekt.
Mitt svar skulle vara: inmatning från 6 sensorer så vi måste göra en sensortabell, med dessa sensorer kommer vi att göra värden. Vad är kopplat till ett värde? För mig är det status för fönstret, är det öppet eller stängt medan sensorn mätte värdet. Men platsen är också en faktor för mitt värde så vi kommer att lägga till det. Tid och datum för ett värde är också viktigt så jag lägger till det i.
För framtida expansion lade jag till ett användartabell.
Så vad är min idé som för tabeller: tabellvärden, tabelladress (länkad till rum), tabellrum (länkat till värde), tabellfönster (länkat till värde), bordssensor (länkat till värde) och ett bord i naturen för användare.
När det gäller att länka ihop tabellerna. Varje värde behöver en sensor, ett fönster, ett värde för sensorn, ett id så att vi kan göra värdet unikt, en tidsstämpel för när värdet gjordes och som sista behöver vi inte ett rum så det är valfritt men kan vara Lagt till.
Så här ser det ut nu. Det här är vad jag använder för resten av mitt projekt.
Steg 4: HNT11, för Real Boys
Så som vi inte fick använda någon form av bibliotek. Vi måste programmera allt själva.
HNT11 är ett entrådigt system, så det betyder att du har en GND och VCC som alla andra elektroniska enheter men 3-stiftet är ett in- och utgångsstift. Så det är lite konstigt men jag lärde mig mycket av det.
Anslut VCC till den externa 3.3V och GND till den externa GND.
Databladet för DHT11 innehåller allt för att använda dessa sensorer.
Vi kan bestämma att en hög bit innehåller en låg och hög bit. Men längden på den höga delen avgör biten på riktigt. Om den höga delen avges längre än 100 µs (normalt 127 µs) är biten hög. Är biten kortare än 100 µs (normalt cirka 78 µs) är biten låg.
När HNT11 är aktiverat börjar den avge signaler. Detta är alltid 41 bitar. Det börjar med en startbit, det betyder ingenting, så vi kan hoppa över den här. De första 16 bitarna/ 2 byte är heltalet och float -delen för luftfuktigheten. Det är samma sak för de senaste 2 byte men nu är det för temperaturen.
Så vi behöver bara beräkna varaktigheten för varje bit och sedan är vi klara.
I källkoden under DHT11 hittar du min metod för att lösa detta problem.
Steg 5: Gassensorer (endast legender)
Så jag tänkte i början av projektet att det skulle vara en bra idé att använda många sensorer. Tänk på innan du agerar och köper lokalt, detta sparar dig många sovtimmar! Eftersom du kan börja tidigare och detta kommer du att göra mer villigt att gå för det.
Så jag har 4 gassensorer. MQ135, MQ8, MQ4 och en MQ7 alla dessa sensorer har specifika gaser som de mäter bäst. Men dessa är alla olika i sin konfiguration.
Så först använde jag databladet, det gjorde mig ingen önskare. Sedan sökte jag efter kodexempel. Det jag hittade var ett bibliotek från Adafruit. Jag försökte replikera det så bra som möjligt. Det fungerade med en av de fyra sensorerna.
Jag lät det vila ett tag och kom tillbaka till det.
Vad jag gjorde för att få den att fungera för den ena sensorn är:
- Jag använde databladet för att markera punkter på gasen som jag ville mäta. Så 1 ro/rs till 400ppm, 1,2 till 600ppm …
- Sedan lade jag in alla de punkterna i excell och extraherade formeln för kurvan. Jag sparade detta i min databas.
- Från databladet läste jag också det normala motståndet och ren luftmotståndet. Dessa värden sparades också i databasen.
Jag hällde allt in i någon kod, du kan hitta detta som de tre sista funktionerna i MCP3008 -klassen. Men det här är inte klart än, tyvärr hade jag inte tillräckligt med tid.
Steg 6: Shiftregister, 74HC595AG
Så detta är en IC. Och det gör något speciellt, med den här enheten är det möjligt att använda mindre GPIO -utgångar för samma utsignal. Jag använde detta för LCD -skärmen (Liquid Crystal Display) och mina lysdioder. Jag kommer att visa ip -adressen på LCD -skärmen så att alla kan surfa till webbplatsen.
Lysdioderna är väl valda 2 röda, 3 gula och 2 gröna. Detta visar när som helst luftkvaliteten i rummet.
Shiftregister är en parallellutmatningsenhet så det är inte möjligt att mata ut olika signaler under en tidsperiod. Detta skulle vara möjligt om det programmeras från utsidan men inte är inbyggt.
Hur använder jag IC? Du har 5 ingångar och 9 utgångar. 8 logiska utgångar för de 8 stiften och sedan 9: e stiftet för att skicka överbliven data till en annan skiftregister.
Så vi ansluter stift 16 till den externa VCC, nästa stift är den första utgången så för LCD: n kommer vi att behöva den. Stift 14 är datalinjen, här skickar vi data till. Den 13: e stiftet är på på omkopplaren, en låg signal gör det möjligt för IC en hög signal behövs för att stänga av den. Stift 12 är stiftet där vi kan avgöra när en bit skickades, när du drar ner denna stift så från hög till låg läser den signalstatus för stift 13 och lagrar den i sitt 8 -bitars minne. Stift 11 är liknande när denna stift är högt och sedan lågt matar det ut de 8 bitarna till dess port. Och den sista stiftet, stift 10 är huvudåterställningen, den här stiftet måste förbli högt annars fungerar det inte. Den sista anslutningen är GND -stift 8 vi behöver för att ansluta den här till den externa GND.
Så anslut nu stiften hur du kommer att tycka om hallon pi. Sättet jag gjorde det var att ansluta dem så nära varandra som möjligt för att se till att jag visste var de var.
När du får rätt utdata. Du kan löda detta till ett kretskort med lysdioderna. och 220 Ohm motstånd. Löd utgången från IC till motsvarande LED. Du borde nu ha något liknande.
Du hittar min testkod här under Shiftregister. När du arbetar med en 74HC595N behöver du inte MR så att du kan låta den vara ansluten.
LCD -skärmen är ungefär densamma. Det är ganska enkelt att använda det med shiftregister eftersom ingången för LCD -skärmen är exakt ingången för shiftregister.
För LCD -skärmen finns det en annan kod för att få det att fungera, men det är ganska samma som bara shifregister. Du hittar testkoden här under LCD.
Steg 7: Frontend, en värdefull lektion
Så här kommer jag att vandra iväg, detta är ett avsnitt om hur du ska göra det. Detta är något mycket mycket värdefullt som lärt sig.
Gör frontend före backend !!!!
Jag gjorde det tvärtom. Jag ringde värdelösa samtal för min databas, jag lägger mycket tid på detta.
På målsidan behövde jag aktuell temperatur och luftfuktighet och värdena för alla gassensorer i ett fint diagram. Jag måste också visa ip -adressen för RPi.
På sidan av sensorerna behöver jag välja en sensor och urvalstiden. Jag valde att välja en dag och sedan perioden från den dagen. Detta gjorde det mycket lättare för mig eftersom jag kunde kontrollera det mer.
På den sista sidan är inställningssidan det möjligt att hantera vissa värden som hälsosam farlig eller farlig gas och temperaturnivåer. Du kan också göra RPi omstart om du känner att du behöver göra det.
Så först gjorde jag en design så att jag enkelt kunde börja arbeta med kodningsdelen. Jag gjorde gradvis framsteg en sak i taget. Uppdraget var mobilt först så jag fokuserar först på det. Sedan tar jag mig till de större skärmarna.
Du hittar mina sidor, css och js i min Github.
Steg 8: Backend
Den här delen är den del som jag blandade med frontänden. När jag gjorde något för frontend fick jag det att fungera på backend. Så det skulle inte behöva revideras senare. Detta var något jag inte gjorde i första hand och på grund av detta tappade jag säkert 2 veckors tid. Dumma mig! Men en lektion jag gärna tar till andra projekt.
Så när du gör backend gör du något som du kommer att använda. Men gör det framtidssäkert genom att göra det återanvändbart och inte hårt kodat. Så när jag behöver de senaste 50 värdena på min DHT11, ska jag kontrollera om det görs värden? Ja, hur lägger jag dem i databasen. Hur får jag bort dem från databasen. Hur visar jag det? Diagram, diagram eller bara vanliga data? Sedan gör jag en ny rutt med de olika parametrarna och egenskaperna som datum, specifika sensornamn eller vad jag ska ringa. Jag menar att jag ringer alla värden från MQ -sensorerna eller ringer jag alla sensorer med MQ i sitt namn. Sedan lägger jag in lite felhantering. När förfrågan från samtalet är rätt metod bara då kan det gå vidare annars får det ett trevligt fel.
Här finns också trådarna, dessa programvaror låter dig köra parallell kod. Du kan köra webbplatsens samtal, värdeskapande funktion och led+shiftregister. Dessa funktioner körs helt oberoende av varandra.
Så för ledarna. Jag gjorde ett botten/ hälsosamt värde för CO2. Detta värde kom från flera statliga källor. Det hälsosamma värdet för klassrum är under 600 ppm CO2 per kubikmeter. Det ohälsosamma värdet är allt över 2000 ppm. Så lysdioderna gör bron. Om värdet på MQ4 -sensorn är 1400 beräknas det automatiskt i vilken risknivå det är. 2000 - 600 = 1400 så det totala intervallet är 1400/7 = 200. Så när värdet når 550 visar det en grön lysdiod. 750 visar 2 gröna lysdioder, 950 1 gula 2 gröna lysdioder. Och så vidare.
När värdet går över mitten öppnas fönstret. Jag använde en stegmotor på grund av det höga vridmomentet och precisionen. Och när värdet går över 2000 går ett litet larm. Detta för att larma människorna i rummet.
Vi kan också upptäcka rökgaser så när det är brand. Det registrerar detta också. När det går över ett visst värde går larmet och lysdioden blinkar.
LCD -skärmen är främst där för att visa IP -adressen så att du kan surfa till webbplatsen.
Du kan hitta allt + kod i min Githubin app.py
Steg 9: Gör fallet
Jag hittade ett litet datorfodral för alla mina komponenter.
Jag skär en aluminiumplåt i storlek. Och borrade några hål där arket skulle vila. Detta motsvarar moderkortets hål.
Sedan tittade jag på hur allt skulle passa inuti fodralet. Jag lade upp allt och började röra på mig.
När jag var nöjd med hur det skulle fungera började jag markera de hål jag behövde för sensorerna, RPi, kretskort, kraftmoduler och stegmotormodul. Hålen är för PCB -avståndet, detta kommer att göra lite utrymme så att metalldelarna inte kommer i kontakt med aluminiumplåten. Det ger det också ett fint utseende.
Jag tog från varje IC eller annan enhet kablarna och band dem ihop. Detta för att jag kunde se vad kablar är för vad. Jag placerade allt fint på några avstånd och använde några muttrar och skruvar för att hålla allt snyggt på plats.
För att driva allt jag använde 2 batterier. Dessa ger mycket ström men dessa är fortfarande batterier så dessa kommer att ta slut med tiden. Jag monterade dessa med kardborreband. Jag använde kardborreband för då kunde jag enkelt byta eller bli av med batterierna.
Steppenmotorn, LCD och lysdioder kommer ut ur fodralet. Så jag lade försiktigt höljet på toppen och markerade hålen och borrade dem med en borr. Så vi kan enkelt se allt.
När ärendet är klart måste vi koppla allt, här kan du hitta kopplingsschemat.
Steg 10: Utvärdering och slutsats
Så detta är/var mitt första projekt.
Det ser okej ut antar jag.
Jag lärde mig mycket nytt, lärde mig den stora och den dåliga sidan av projektledning. Det var verkligen en värdefull lektion. Jag lutade mig till att du inte kan vänta, du måste verkligen fortsätta ge. Du måste dokumentera varje drag (nästan mycket flytt), och att du måste göra det när du bara gjorde det.
Fokusera på en sak i taget. Vill du ha temperaturen på skärmen? Gör det här och det där. Vänta inte eller försök låta det passera. Det hjälper inte. Och det kommer att förlora dig så dyrbar tid.
4 veckor verkar också mycket tid. Men mindre är sant. Det här är helt enkelt inte rätt. Du har bara 4 veckor. Första 2 veckorna inte riktigt så mycket press. 3 veckors avslutning och 4: e veckan sömnlös natt. Så här ska du inte göra.
Jag var kanske lite ambitiös: jag är superlitet, inget lätt att använda sensorer, batterier … Gör det mycket enklare och gör det gradvis svårare och svårare, först då får du en bra prototyp/ produkt.
Rekommenderad:
Utformning av strömlägesbaserad oscillator för ljudförstärkare i klass D: 6 steg
Utformning av strömlägesbaserad oscillator för ljudförstärkare i klass D: Under senare år har ljudförstärkare i klass D blivit den föredragna lösningen för bärbara ljudsystem som MP3 och mobiltelefoner på grund av deras höga effektivitet och låga strömförbrukning. Oscillatorn är en viktig del av klass D au
DIY klass D ljudförstärkare: 4 steg (med bilder)
DIY klass D -ljudförstärkare: I det här projektet kommer jag att visa dig varför en klass AB -förstärkare är ganska ineffektiv och hur en klass D -förstärkare å andra sidan förbättrar denna effektivitet. I slutet kommer jag att visa dig hur vi kan tillämpa teorin om driften av en klass D -förstärkare på ett par
Förstärkare i klass AB: 5 steg
Klass AB -FÖRSTÄRKARE: Hej allihopa! I den här självstudien ska jag försöka förklara hur man gör en förstärkarkrets som kallas klass AB -förstärkare. Det finns många förstärkarkretsar och deras kretsanalysmetoder också. Jag kommer dock att täcka den enda grundläggande implementeringen
Klass för att hantera konfigurationen i ESP32 EEPROM: 5 steg
Klass för att hantera konfigurationen i ESP32 EEPROM: Hej, jag vill dela med mig alla klasser som jag har utvecklat och det förenklar uppgiften att lägga till konfigurationsinformation på ESP32 -enheter. Klassen följande mål: Underlätta skapandet av en konfiguration system på ESP32 -enheter
350 Watt självoscillerande klass D -förstärkare: 8 steg
350 Watt självoscillerande klass D -förstärkare: Introduktion och varför jag gjorde detta instruerbart: På internet finns det massor av självstudier som visar människor hur man bygger sina egna klass D -förstärkare. De är effektiva, enkla att förstå och använder alla samma allmänna topologi. Det finns ett hej