Cuprins:

Verificator de poluare a clasei CPC: 10 pași
Verificator de poluare a clasei CPC: 10 pași
Anonim
Verificator de poluare a clasei CPC
Verificator de poluare a clasei CPC
Verificator de poluare a clasei CPC
Verificator de poluare a clasei CPC
Verificator de poluare a clasei CPC
Verificator de poluare a clasei CPC

Salut, sunt student din Belgia și acesta este primul meu mare proiect pentru licență! Acest instructable este despre cum să faceți un contor de soluție de aer pentru camere închise, în special săli de clasă!

Te aud gândindu-te de ce acest proiect? Ei bine, totul a început când am mers la liceu. După-amiaza, după un prânz bun și o pauză, lecțiile încep din nou. Dar există o problemă, profesorul a uitat să deschidă fereastra în timp ce mâncam prânzul, deci este cald, transpirat și nu te poți concentra pentru că dormi. Asta pentru că există prea mult CO2 în aer.

Proiectul meu va rezolva acest lucru și îi va face pe toți elevii mai concentrați în timpul lecțiilor lor.

Provizii

1 xRaspberry Pi 4 (55 €)

1 x motor steppen cu șofer (5 €)

2 baterii 12v 6800 mAh (2x 20 €)

2 x modul stepdown (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-uri: 1x MCP3008, 2x 74hc595AG (1x 2,30 €, 2x 0,40 €)

LED-uri: 2x verde, 2x roșu, 3x galben (găsite în unele hardware vechi, în mod normal 0,01 € fiecare)

Conector pentru baterii (2 x 0,35 €)

40 cabluri conector f-to-f (1,80 €)

40 cabluri conector f-m (1,80 €)

Cabluri conector 20 m-m (1,80 €)

2 x PCB pentru lipire (2x 0,70 EUR)

Instrumente:

Fier de lipit (de preferat 60 Watt)

Staniu de lipit

Foaie de aluminiu 50x 20

Carcasă (am folosit o mini carcasă veche pentru computer)

Acest lucru ar putea fi ușor niște MDF sau idei proprii.

Pasul 1: Configurarea RPi

Configurarea RPi
Configurarea RPi

Deci inima noastră creierul și sufletul nostru se află în acest produs. Amenință-l bine, pentru că te poate răni într-un fel sau altul. Folosesc un RPi 4B de 4 GB, alte modele ar trebui să meargă bine. Te-ai putea aștepta la un alt decalaj la modelele mai vechi.

Am obținut sistemul de operare de la școala noastră cu unele programe preinstalate, cum ar fi phpMyAdmin.

În primul rând, asigurați-vă că vă puteți conecta la Raspberry Pi prin ssh, vom avea nevoie de el mult timp.

Deci, mai întâi ar trebui să activăm magistrala SPI, pinii GPIO și să dezactivăm alte autobuze, nu vom avea nevoie de ele.

Puteți face acest lucru în meniul raspi-config. Navigați la Interfețe și activați GPIO și SPI în mod normal, nu va fi necesar să În timp ce sunteți aici, extindeți spațiul de stocare mergând la avansat și apoi apăsați Enter pe extindeți spațiul de stocare.

Acum reporniți. Vom avea nevoie de câteva extensii pentru a folosi codul VS pe pi, pentru a rula serverul și baza de date.

Procesul de instalare pentru extensia de cod VS poate fi găsit aici.

Acum vom instala extensiile pentru serverul și baza noastră de date. Utilizați terminalul și tastați „python install flask, flask-cors, mysql-python-connector, eventlet” așteptați până la finalizare.

Acum putem începe cu realizarea proiectului.

Pasul 2: MCP3008 + TMP36

MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36

Deci avem 6 senzori: 4 gaz, 1 umiditate + temperatură și 1 senzor de temperatură. Este o sarcină reală să îi faci să funcționeze. Toți senzorii sunt senzori analogici, deci trebuie să convertim semnalul analogic într-un semnal digital. Asta pentru că RPi (Rasberry Pi) poate „înțelege” doar semnale digitale. Pentru mai multe informații, faceți clic aici.

Pentru a finaliza această sarcină, veți avea nevoie de un MCP3008, acest lucru va face treaba grozav!

Are 16 porturi, numărând din partea de sus (mica bulă) din stânga, în jos, de cealaltă parte și în sus. Pin1-8 sunt intrările pentru semnalul analogic de la senzorii noștri. Pinul 9 de cealaltă parte este un GND, acesta trebuie conectat la GND al circuitului complet, altfel acest lucru nu ar funcționa. Pinul 10-13 trebuie conectat mai atent, acestea vor transmite date către și de la RPi. Pinul 14 este un alt GND și pinii 15 și 16 sunt VCC-urile, acestea trebuie să fie conectate la partea pozitivă a circuitului.

Acesta este aspectul pentru cablarea thr:

  • MCP3008 VDD către extern 3.3V MCP3008 VREF către extern 3.3V
  • MCP3008 AGND către GND extern
  • MCP3008 DGND către externalGND
  • MCP3008 CLK la pinul Raspberry Pi 18
  • MCP3008 DOUT la Raspberry Pi pin 23
  • MCP3008 DIN la Raspberry Pi pin 24
  • MCP3008 CS / SHDN la Raspberry Pi pin 25

Acesta este, de asemenea, un moment bun pentru a conecta GND de la RPI la GND extern. Acest lucru va face ca elctricitatea să curgă din RPi.

Iată cum să îl conectați în mod corect.

Asigurați-vă că vă conectați în modul corect, altfel puteți scurtcircuita totul!

Prima bucată de cod vine aici.

Puteți copia codul meu din proiectul meu github sub models. Analog_Digital.

În partea de jos a paginii veți găsi codul sursă pentru ca acesta să funcționeze.

Dar avem nevoie de primul nostru senzor, astfel încât să putem testa.

Trebuie să ne testăm senzorul dacă funcționează. Conectați o sursă de alimentare de 3,3V sau 5V la partea pozitivă a TMP36. Nu uitați să-l conectați și la GND, poate că este ceva stupid, dar credeți-mă. Aceasta este realitatea;). Puteți testa cu multimetrul ieșirea senzorului, acesta este pinul din mijloc. Cu această ecuație simplă puteți verifica temperatura în ° C. ((milivolți * tensiune de intrare) -500) / 10 și voila donne! Pa! Ei bine, nu hahah avem nevoie de MCP3008. Conectați pinul analogic pentru TMP36 la primul pin de intrare al MCP3008. Acesta este pinul 0.

Puteți utiliza exemplul de cod din partea de jos pentru această clasă MCP. Sau ceva ce veți găsi online va face bine treaba.

Pasul 3: Baza de date

Deci, acum, că putem citi în primul nostru senzor, trebuie să-l conectăm la o bază de date. Aceasta este memoria creierului nostru. Am proiectat această bază de date pentru a putea fi extinsă și ușor modificabilă pentru viitoarele modificări.

Deci, mai întâi trebuie să ne gândim ce vom obține ca intrări și dacă trebuie să înregistrăm lucruri specifice, cum ar fi stările anumitor obiecte.

Răspunsul meu ar fi: intrarea de la 6 senzori, deci trebuie să realizăm o masă de senzori, cu acești senzori vom face valori. Ce este legat de o valoare? Pentru mine este starea ferestrei, este deschisă sau este închisă în timp ce senzorul măsoară valoarea. Dar locația este, de asemenea, un factor pentru valoarea mea, așa că vom adăuga asta. Ora și data pentru o valoare sunt, de asemenea, importante, așa că o voi adăuga la.

Pentru extinderea viitoare am adăugat un tabel de utilizator.

Deci, care este ideea mea în ceea ce privește tabelele: valorile tabelului, adresa tabelului (legată de cameră), camera tabelelor (legată de valoare), fereastra tabelului (legată de valoare), senzorul de tabel (legat de valoare) și un tabel în sălbăticie pentru utilizatori.

În ceea ce privește legarea tabelelor între ele. Fiecare valoare are nevoie de un senzor, o fereastră, o valoare pentru senzor, un ID, astfel încât să putem face valoarea unică, un timestamp pentru momentul în care a fost făcută valoarea și, ca ultim, nu avem nevoie de o cameră, astfel încât să fie opțională, dar poate fi adăugat.

Așa că așa arată acum. Aceasta este ceea ce folosesc pentru restul proiectului meu.

Pasul 4: HNT11, pentru Real Boys

Deci, deoarece nu ni s-a permis să folosim niciun fel de biblioteci. Trebuie să programăm totul noi înșine.

HNT11 este un sistem cu un singur fir, deci acest lucru înseamnă că aveți un GND și VCC, cum ar fi orice alt dispozitiv electronic, dar pinul 3 este un pin de intrare și de ieșire. Deci este cam ciudat, dar am învățat multe din asta.

Conectați VCC la 3.3V extern și GND la GND extern.

Fișa tehnică a DHT11 conține totul pentru utilizarea acestor senzori.

Putem determina că un bit înalt conține un bit mic și înalt. Dar durata părții înalte determină bitul real. Dacă partea înaltă este emisă mai mult de 100µs (în mod normal 127µs), bitul este ridicat. Bitul este mai scurt de 100µs (în mod normal în jur de 78µs) bitul este scăzut.

Când HNT11 este activat, acesta va începe să emită semnale. Acesta este întotdeauna 41 de biți. Începe cu un pic de început, acest lucru nu înseamnă nimic, așa că putem să-l omitem. Primii 16 biți / 2 biți sunt partea întreagă și partea plutitoare pentru umiditate. Este la fel pentru ultimii 2 octeți, dar acum este pentru temperatură.

Deci, trebuie doar să calculăm durata fiecărui bit și apoi am terminat.

În codul sursă din DHT11 veți găsi metoda mea în rezolvarea acestei probleme.

Pasul 5: senzori de gaz (numai legende)

Senzori de gaz (doar legende)
Senzori de gaz (doar legende)
Senzori de gaz (doar legende)
Senzori de gaz (doar legende)

Așa că m-am gândit la începutul proiectului că ar fi o idee minunată să folosesc mulți senzori. Gândiți-vă înainte de a acționa și cumpărați local, acest lucru vă va economisi multe ore de somn! Pentru că puteți începe mai devreme și acest lucru vă va face mai dispus să mergeți pentru asta.

Deci am 4 senzori de gaz. MQ135, MQ8, MQ4 și un MQ7, toți acești senzori au gaze specifice pe care le măsoară cel mai bine. Dar toate acestea sunt diferite în configurația lor.

Așa că am folosit mai întâi foaia tehnică, ceea ce nu mi-a făcut dorință. Apoi am căutat exemple de coduri. Ceea ce am găsit a fost o bibliotecă de la Adafruit. Am încercat să-l reproduc cât mai bine. A funcționat cu unul dintre cei patru senzori.

Am lăsat-o să se odihnească o vreme și m-am întors la ea.

Ceea ce am făcut pentru a funcționa pentru acel senzor este:

- Am folosit fișa tehnică pentru a marca punctele de gaz pe care am vrut să le măsoară. Deci, 1 ro / rs la 400ppm, 1,2 la 600ppm …

- Apoi am pus toate aceste puncte în excel și am extras formula curbei. Am salvat acest lucru în baza mea de date.

- Din foaia tehnică am citit și rezistența normală și rezistența la aer curat. Aceste valori au fost salvate și în baza de date.

Am turnat totul într-un cod, îl puteți găsi ca ultimele trei funcții din clasa MCP3008. Dar acest lucru nu este încă terminat, din păcate nu am avut suficient timp.

Pasul 6: Shiftregister, 74HC595AG

The Shiftregister, 74HC595AG
The Shiftregister, 74HC595AG
The Shiftregister, 74HC595AG
The Shiftregister, 74HC595AG
The Shiftregister, 74HC595AG
The Shiftregister, 74HC595AG
The Shiftregister, 74HC595AG
The Shiftregister, 74HC595AG

Deci, acesta este un IC. Și face ceva special, cu acest dispozitiv este posibil să utilizați mai puține ieșiri GPIO pentru același semnal de ieșire. Am folosit acest lucru pentru ecranul LCD (Liquid Crystal Display) și ledurile mele. Voi afișa adresa IP pe ecranul LCD, astfel încât toată lumea să poată naviga pe site.

LED-urile sunt alese cu înțelepciune 2 roșu, 3 galben și 2 verde. Aceasta va arăta în orice moment calitatea aerului din cameră.

Shiftregister este un dispozitiv de ieșire paralel, deci nu este posibil să emiteți semnale diferite într-o perioadă de timp. Acest lucru ar fi posibil dacă este programat din exterior, dar nu este susținut în mod nativ.

Cum se utilizează IC? Ei bine, aveți 5 intrări și 9 ieșiri. 8 ieșiri logice pentru cei 8 pini și apoi al 9-lea pin pentru a trimite datele rămase către un alt shiftregister.

Deci conectăm pinul 16 la VCC extern, următorul pin este prima ieșire, așa că pentru LCD vom avea nevoie de acesta. Pinul 14 este linia de date, aici vom trimite date. Cel de-al 13-lea pin este pornirea comutatorului, un semnal scăzut permite IC-ului este necesar un semnal înalt pentru a-l opri. Pinul 12 este pinul în care putem determina când a fost trimis un bit, când trageți acest pin în jos, astfel încât de la mare la mic să citească starea semnalului pinului 13 și să-l stocheze în memoria sa de 8 biți. Pinul 11 este similar atunci când acest pin este setat ridicat, apoi scăzut, transmite cei 8 biți la portul său. Și ultimul pin, pinul 10 este resetarea principală, acest pin trebuie să rămână ridicat sau nu va funcționa. Ultima conexiune este pinul GND 8, trebuie să îl conectăm la GND extern.

Așadar, conectați pinii cum vă va plăcea la zmeura pi. Modul în care am făcut-o a fost să-i conectez cât mai aproape unul de celălalt pentru a mă asigura că știu unde sunt.

Când obțineți o ieșire corectă. Puteți lipi acest lucru pe un PCB cu LED-uri. și rezistențe de 220 Ohm. Lipiți ieșirea IC pe ledul corespunzător. Acum ar trebui să ai așa ceva.

Puteți găsi codul meu de test aici în Shiftregister. Când lucrați cu un 74HC595N, nu veți avea nevoie de MR, astfel încât să îl puteți lăsa neconectat.

LCD-ul este cam la fel. Este destul de ușor să îl utilizați cu shiftregister, deoarece intrarea pentru LCD este exact intrarea pentru shiftregister.

Pentru ecranul LCD există un alt cod care să-l facă să funcționeze, dar este la fel ca doar registrul shifregister. Puteți găsi codul de test aici sub ecranul LCD.

Pasul 7: Frontend, o lecție valoroasă

Deci, aici voi rătăci, aceasta este o secțiune despre cum ar trebui să o faceți. Este ceva foarte foarte valoros pe care l-am învățat.

Faceți frontendul înainte de backend !!!!

Am făcut-o invers. Am făcut apeluri inutile pentru baza mea de date, petrec mult timp pe asta.

Pe pagina de destinație aveam nevoie de temperatura și umiditatea curente și de valorile tuturor senzorilor de gaz într-o diagramă frumoasă. De asemenea, trebuie să arăt adresa IP a RPi.

Pe pagina senzorilor am nevoie de selectarea unui senzor și de timpul de selecție. Am ales pentru selectarea unei zile și apoi perioada din ziua respectivă. Acest lucru mi-a făcut mult mai ușor pentru că aș putea să-l controlez mai mult.

Pe pagina finală, pagina de setări este posibilă gestionarea anumitor valori, cum ar fi gazele periculoase sau periculoase și nivelurile de temperatură. De asemenea, puteți face repornirea RPi dacă simțiți nevoia să faceți acest lucru.

Deci, mai întâi am făcut un design, astfel încât să pot începe cu ușurință să lucrez la partea de codare. Am progresat treptat câte un lucru pe rând. Sarcina a fost mai întâi mobilă, așa că mă voi concentra mai întâi pe asta. Apoi mă voi îndrepta spre ecranele mai mari.

Puteți găsi paginile mele, css și js în Github.

Pasul 8: Backend-ul

Această parte este partea pe care am amestecat-o cu frontendul. Când am făcut ceva pentru frontend, l-am făcut să funcționeze pe backend. Deci nu ar mai avea nevoie de revizuire mai târziu. Acest lucru a fost ceva ce nu am făcut în primul rând și din această cauză am pierdut cu siguranță 2 săptămâni de timp. Prostul de mine! Dar o lecție pe care o iau cu bucurie la alte proiecte.

Deci, când creați backend, creați ceva pe care îl veți folosi. Dar faceți-o dovadă pentru viitor, făcându-l reutilizabil și nu codificat. Deci, când am nevoie de ultimele 50 de valori ale DHT11, voi verifica dacă sunt făcute valori? Da, cum le pot introduce în baza de date. Cum le scot din baza de date. Cum o arăt? Diagramă, grafic sau doar datele simple? Apoi fac un nou traseu cu diferiți parametri și proprietăți, cum ar fi date, nume sensoriale specifice sau ceea ce voi apela. Adică apelez toate valorile de la senzorii MQ sau apelez la toți senzorii cu MQ în numele său. Apoi am pus unele erori de gestionare. Când cererea de la apel este metoda potrivită numai atunci poate continua, altfel devine o eroare frumoasă.

De asemenea, aici sunt localizate firele, acestea sunt bucăți de software care vă permit să rulați cod paralel. Puteți rula apelurile site-urilor web, funcția de creare a valorii și led + shiftregister. Aceste funcții rulează complet independente una de cealaltă.

Deci pentru led. Am făcut o valoare de jos / sănătoasă pentru CO2. Această valoare a venit din mai multe surse guvernamentale. Valoarea sănătoasă pentru sălile de clasă este sub 600 ppm CO2 pe metru cub. Valoarea nesănătoasă este totul peste 2000 ppm. Deci LED-urile fac podul. Dacă valoarea senzorului MQ4 este 1400, acesta va calcula automat în ce nivel de pericol este. 2000 - 600 = 1400 deci intervalul total este 1400/7 = 200. Deci, când valoarea ajunge la 550, acesta arată un led verde. 750 prezintă 2 leduri verzi, 950 1 galben 2 leduri verzi. Si asa mai departe.

Când valoarea depășește mijlocul, se deschide fereastra. Am folosit un motor steppen din cauza cuplului ridicat și a preciziei. Și când valoarea depășește 2000, se declanșează o mică alarmă. Aceasta este pentru a alarma oamenii din cameră.

De asemenea, putem detecta gaze de fum, deci atunci când există un incendiu. Înregistrează și acest lucru. Când depășește o anumită valoare, alarma pornește și LED-ul pâlpâie.

LCD-ul este în principal acolo pentru a afișa adresa IP, astfel încât să puteți naviga pe site.

Puteți găsi totul + cod în Githubin meu app.py

Pasul 9: Crearea cazului

Crearea cazului
Crearea cazului
Crearea cazului
Crearea cazului
Crearea cazului
Crearea cazului

Am găsit o carcasă mică pentru computer pentru toate componentele mele.

Am tăiat o foaie de aluminiu la dimensiune. Și am forat niște găuri unde se așteaptă foaia. Acest lucru corespunde cu găurile plăcii de bază.

Apoi m-am uitat la modul în care s-ar potrivi totul în carcasă. Am întins totul și am început să mă mișc.

Când m-am mulțumit cu modul în care ar funcționa, am început să marcez găurile de care aveam nevoie pentru senzori, RPi, PCB-uri, powermodule și modulul steppenmotor. Găurile sunt pentru standoff-ul PCB, acest lucru va face loc, astfel încât părțile metalice să nu intre în contact cu foaia de aluminiu. De asemenea, îi oferă un aspect frumos.

Am luat de la fiecare IC sau alt dispozitiv cabelele și le-am legat mai mult. Acest lucru se datorează faptului că am putut vedea ce cabluri sunt pentru ce. Am așezat fiecare totul frumos pe niște standoffs și am folosit niște piulițe și șuruburi pentru a ține totul frumos la locul său.

Pentru a alimenta acest lucru, am folosit 2 baterii. Acestea oferă multă putere, dar acestea sunt încă baterii, astfel încât acestea se vor epuiza în timp. Le-am montat cu niște velcro. Am folosit velcro pentru că atunci aș putea înlocui cu ușurință sau scăpa de baterii.

Motorul steppen, LCD și LED-urile vor ieși din partea superioară a carcasei. Așa că am așezat cu grijă capacul carcasei deasupra și am marcat găurile și le-am forat cu un burghiu. Deci, putem vedea cu ușurință totul.

Odată ce cazul este terminat, trebuie să conectăm totul, aici puteți găsi schema de cablare.

Pasul 10: Evaluare și concluzie

Evaluare și concluzie
Evaluare și concluzie

Deci acesta este / a fost primul meu proiect.

Arată bine, cred.

Am învățat o mulțime de lucruri noi, am învățat partea grozavă și cea proastă a managementului proiectului. A fost într-adevăr o lecție valoroasă. M-am aplecat că nu poți aștepta, trebuie să continui să dai. Trebuie să documentați fiecare mișcare (aproape foarte multă mișcare) și că trebuie să o faceți când tocmai ați făcut-o.

Concentrați-vă pe 1 lucru pe rând. Vrei temperatura pe ecran? Fă asta, asta și aia. Nu așteptați sau încercați să-l lăsați să treacă. Nu va ajuta. Și vă va pierde un timp atât de prețios.

De asemenea, 4 săptămâni par mult timp. Dar mai puțin este adevărat. Acest lucru nu este corect. Ai doar 4 săptămâni. Primele 2 săptămâni nu prea multă presiune. Terminare de 3 săptămâni și a 4-a săptămână nedormită. Așa nu ar trebui să o faci.

Eram poate puțin ambițios: carcasă super mică, fără senzori ușor de utilizat, baterii … Faceți-o mult mai simplă și apoi faceți-o treptat din ce în ce mai greu, doar atunci veți obține un bun prototip / produs.

Recomandat: