Taula de continguts:

Corrector de polució de classe CPC: 10 passos
Corrector de polució de classe CPC: 10 passos

Vídeo: Corrector de polució de classe CPC: 10 passos

Vídeo: Corrector de polució de classe CPC: 10 passos
Vídeo: How to Get Web Design Clients 2024, De novembre
Anonim
Corrector de polució de classe CPC
Corrector de polució de classe CPC
Corrector de polució de classe CPC
Corrector de polució de classe CPC
Corrector de polució de classe CPC
Corrector de polució de classe CPC

Hola, sóc estudiant de Bèlgica i aquest és el meu primer gran projecte per obtenir el batxillerat. Aquest instructiu tracta sobre com fer un mesurador de solucions d’aire per a habitacions tancades, especialment a les aules.

T'escolto pensant per què aquest projecte? Bé, tot va començar quan vaig anar a l’institut. A la tarda, després d’un bon dinar i un descans, les classes tornen a començar. Però hi ha un problema, el professor s’ha oblidat d’obrir la finestra mentre dinàvem, de manera que fa calor, suat i no us podeu concentrar perquè dormiu. Això es deu a que hi ha molt CO2 a l’aire.

El meu projecte solucionarà això i farà que tots els estudiants estiguin més concentrats a les classes.

Subministraments

1 x Raspberry Pi 4 (55 €)

1 x motor esglaó amb conductor (5 €)

2 bateries de 12 x 6800 mAh (2x 20 €)

2 x mòdul stepdown (2x 5 €)

1 x 16x2 LCD (1,5 €)

Sensors: 1x MQ8, 1x MQ4, 1x MQ7, 1x MQ135, 1x HNT11, 1x TMP36 (1 x 23 €)

CI: 1x MCP3008, 2x 74hc595AG (1x 2,30 €, 2x 0,40 €)

LED: 2x verds, 2x vermells, 3x grocs (es troben en algun maquinari antic, normalment 0,01 € cadascun)

Connector per a les bateries (2 x 0,35 €)

40 cables de connector de f a f (1,80 €)

40 cables de connector de f a m (1,80 €)

Cables de connector de 20 m a m (1,80 €)

2 x PCB per soldar (2x 0,70 €)

Eines:

Soldador (preferible 60 watts)

Llauna per soldar

Xapa d'alumini 50x 20

Carcassa (he utilitzat una antiga carcassa per a mini ordinador)

Això podria ser fàcilment algun MDF o idees pròpies.

Pas 1: configuració del vostre RPi

Configuració del vostre RPi
Configuració del vostre RPi

Així doncs, el nostre cor, el nostre cervell i la nostra ànima estan en aquest producte. Amenaceu-lo bé, perquè us pot fer mal d’alguna manera o altra. Estic fent servir un RPi 4B de 4 GB, altres models haurien d’anar bé. Podríeu esperar un cert retard en els models anteriors.

Vam obtenir el sistema operatiu de la nostra escola amb alguns programes preinstal·lats com phpMyAdmin.

Primer de tot, assegureu-vos que pugueu connectar-vos al vostre Raspberry Pi mitjançant ssh, el necessitarem molt de temps.

Per tant, primer hauríem d’habilitar el bus SPI, els pins GPIO i desactivar altres autobusos, no els necessitarem.

Podeu fer-ho al menú raspi-config. Aneu a Interfaces i activeu GPIO i SPI normalment no serà necessari. Mentre esteu aquí, amplieu el vostre emmagatzematge anant a l'opció avançada i, a continuació, premeu Intro a Expandiu emmagatzematge.

Ara reinicieu. Necessitarem algunes extensions per utilitzar el codi VS al nostre pi, per executar el nostre servidor i la nostra base de dades.

El procés d’instal·lació de l’extensió de codi VS es pot trobar aquí.

Ara instal·larem les extensions del nostre servidor i base de dades. Utilitzeu el terminal i escriviu 'python install flask, flask-cors, mysql-python-connector, eventlet', espereu fins que finalitzi.

Ara podem començar amb la realització del projecte.

Pas 2: MCP3008 + TMP36

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

Així doncs, tenim 6 sensors: 4 de gas, 1 d’humitat + temperatura i 1 de temperatura. És una tasca real fer-los funcionar. Tots els sensors són sensors analògics, de manera que hem de convertir el senyal analògic en un senyal digital. Això es deu al fet que el RPi (Rasberry Pi) només pot "entendre" els senyals digitals. Per obtenir més informació, feu clic aquí.

Per completar aquesta tasca, necessitareu un MCP3008, això farà la feina molt bé.

Té 16 ports, comptant des de la part superior (la petita bombolla) a l'esquerra, cap avall, a l'altre costat i cap amunt. Pin1-8 són les entrades del senyal analògic dels nostres sensors. El pin 9 de l’altre costat és un GND que s’ha de connectar al GND del circuit complet, en cas contrari això no funcionaria. Cal connectar el pin 10-13 amb més cura perquè transmetin dades cap a i des del RPi. El pin 14 és un altre GND i els pins 15 i 16 són els VCC, aquests han d'estar connectats al costat positiu del circuit.

Aquest és el disseny del cablejat thr:

  • MCP3008 VDD a 3.3V extern MCP3008 VREF a 3.3V extern
  • MCP3008 AGND a GND extern
  • MCP3008 DGND a externalGND
  • MCP3008 CLK al pin 18 de Raspberry Pi
  • MCP3008 DOUT al pin 23 de Raspberry Pi
  • MCP3008 DIN a Raspberry Pi pin 24
  • MCP3008 CS / SHDN al pin 25 de Raspberry Pi

També és un bon moment per connectar el GND des del RPI al GND extern. Això farà que l’electricitat flueixi des del RPi.

A continuació s’explica com connectar-lo de la manera correcta.

Assegureu-vos de connectar-vos de la manera correcta; en cas contrari, podreu fer un curtcircuit de tot.

El primer fragment de codi apareix aquí.

Podeu copiar el meu codi des del meu projecte github a models. Analog_Digital.

A la part inferior de la pàgina trobareu el codi font perquè funcioni.

Però necessitem el nostre primer sensor per poder fer proves.

Hem de provar el sensor si funciona. Connecteu una font d'alimentació de 3,3 V o 5 V al costat positiu del TMP36. No us oblideu de connectar-lo també al GND, potser és alguna cosa estúpid, però cregueu-me. Aquesta és la realitat;). Podeu provar amb el multímetre la sortida del sensor, aquest és el pin central. Amb aquesta senzilla equació es pot comprovar la temperatura en ° C. ((milivolts * voltatge d'entrada) -500) / 10 i voila donne! Adéu! Doncs no hahah necessitem el MCP3008. Connecteu el pin analògic del vostre TMP36 al primer pin d'entrada del MCP3008. Aquest és el pin 0.

Podeu utilitzar l'exemple de codi a la part inferior per a aquesta classe MCP. O alguna cosa que trobareu en línia, ho farà bé.

Pas 3: base de dades

Per tant, ara que podem llegir al nostre primer sensor, hem de registrar-lo a una base de dades. Aquesta és la memòria del nostre cervell. He dissenyat aquesta base de dades per ampliar-la i modificar-la fàcilment per a futurs canvis.

Per tant, primer hem de pensar què aconseguirem com a entrades i si hem de registrar coses específiques, com ara els estats de determinats objectes.

La meva resposta seria: entrada de 6 sensors, de manera que hem de fer una taula de sensors, amb aquests sensors farem valors. Què està relacionat amb un valor? Per a mi és l'estat de la finestra, està oberta o està tancada mentre el sensor mesurava el valor. Però la ubicació també és un factor pel meu valor, així que ho afegirem a. L'hora i la data d'un valor també són importants, així que ho afegiré a.

Per a futures expansions, he afegit una taula d'usuaris.

Quina és la meva idea pel que fa a les taules: valors de taula, adreça de la taula (enllaçada a la sala), sala de la taula (enllaçada al valor), finestra de la taula (enllaçada al valor), sensor de taula (enllaçada al valor) i una taula en estat salvatge per a usuaris.

Pel que fa a l’enllaç de les taules. Cada valor necessita un sensor, una finestra, un valor per al sensor, un identificador perquè puguem fer que el valor sigui únic, una marca de temps per al moment en què es va fer el valor i, per últim, no necessitem una habitació perquè sigui opcional, però es pot afegit.

Així és com es veu ara. Això és el que estic fent servir per a la resta del meu projecte.

Pas 4: HNT11, per als Real Boys

Per tant, ja que no se'ns va permetre utilitzar cap tipus de biblioteca. Hem de programar-ho tot nosaltres mateixos.

L'HNT11 és un sistema d'un fil, de manera que això significa que teniu un GND i VCC com qualsevol altre dispositiu electrònic, però el 3 pin és un pin d'entrada i sortida. Per tant, és una cosa estranya, però n’he après moltes coses.

Connecteu el VCC al 3.3V extern i el GND al GND extern.

El full de dades del DHT11 conté tot el necessari per utilitzar aquests sensors.

Podem determinar que un bit alt conté un bit baix i alt. Però la durada de la part alta determina el bit de debò. Si la part alta s'emet més de 100µs (normalment 127µs), el bit és alt. El bit és inferior a 100 µs (normalment al voltant de 78 µs) el bit és baix.

Quan l'HNT11 estigui activat, començarà a emetre senyals. Sempre són 41 bits. Comença amb una mica inicial, això no vol dir res, de manera que podem saltar-ne aquest. Els primers 16 bits / 2 bytes són la part sencera i flotant de la humitat. És el mateix per als darrers 2 bytes, però ara ho és per a la temperatura.

Així doncs, només hem de calcular la durada de cada bit i, a continuació, acabem.

Al codi font de DHT11 trobareu el meu mètode per resoldre aquest problema.

Pas 5: Sensors de gas (només llegendes)

Sensors de gas (només llegendes)
Sensors de gas (només llegendes)
Sensors de gas (només llegendes)
Sensors de gas (només llegendes)

Així que al principi del projecte vaig pensar que seria una bona idea utilitzar molts sensors. Penseu abans d’actuar i comprar a nivell local, això us estalviarà moltes hores de son! Perquè es pot començar abans i això farà que vulgui anar amb més ganes.

Per tant, tinc 4 sensors de gas. MQ135, MQ8, MQ4 i un MQ7, tots aquests sensors tenen gasos específics que mesuren millor. Però tots són diferents en la seva configuració.

Així que primer vaig utilitzar el full de dades, això no em va fer desitjar. Després vaig buscar exemples de codi. El que vaig trobar va ser una biblioteca d'Adafruit. Vaig intentar replicar-lo el millor possible. Va funcionar amb un dels quatre sensors.

El vaig deixar reposar una estona i hi vaig tornar.

El que vaig fer perquè funcionés per a aquest sensor és:

- He utilitzat el full de dades per marcar els punts del gas que volia mesurar. Així, 1 ro / rs a 400 ppm, 1,2 a 600 ppm …

- Aleshores he posat tots aquests punts en excel·lència i he extret la fórmula de la corba. Ho he desat a la meva base de dades.

- Des del full de dades també he llegit la resistència normal i la resistència a l’aire net. Aquests valors també es van desar a la base de dades.

Ho he abocat tot a algun codi, ho podeu trobar com les tres darreres funcions de la classe MCP3008. Però això encara no està acabat, per desgràcia no vaig tenir prou temps.

Pas 6: el 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

Així que això és un CI. I fa alguna cosa especial, amb aquest dispositiu és possible utilitzar menys sortides GPIO per al mateix senyal de sortida. Ho he fet servir per a la pantalla LCD (Liquid Crystal Display) i els meus leds. Mostraré l'adreça IP a la pantalla LCD perquè tothom pugui navegar al lloc.

Els LED són elegants: 2 vermells, 3 grocs i 2 verds. Això mostrarà en qualsevol moment la qualitat de l'aire a l'habitació.

El shiftregister és un dispositiu de sortida paral·lel, de manera que no és possible emetre senyals diferents en un període de temps. Això seria possible si es programa des de fora, però no es recolza de forma nativa.

Com s'utilitza l'IC? Doncs teniu 5 entrades i 9 de sortida. 8 sortides lògiques per als 8 pins i després per al 9è pin per enviar les dades sobrades a un altre Shiftregister.

Per tant, connectem el pin 16 al VCC extern, el següent pin és la primera sortida, de manera que per a la pantalla LCD el necessitarem. El pin 14 és la línia de dades, aquí els enviarem. El tretzè pin és l’interruptor encès, un senyal baix permet activar l’IC, es necessita un senyal alt per apagar-lo. El pin 12 és el pin on podem determinar quan s’envia un bit, quan tireu aquest pin cap avall de manera que d’alt a baix llegeix l’estat del senyal del pin 13 i el deseu a la seva memòria de 8 bits. El pin 11 és similar quan aquest pin es posa alt i baix, emet els 8 bits al seu port. I l’últim pin, el pin 10 és el reinici principal, aquest pin ha de romandre alt o no funcionarà. L'última connexió és el pin GND 8 que necessitem per connectar aquest al GND extern.

Ara, connecteu els pins com us agradarà al raspberry pi. La forma en què ho vaig fer va ser connectar-los el més a prop possible entre ells per assegurar-me que sabia on eren.

Quan obtingueu una sortida adequada. Podeu soldar-ho a un PCB amb els LED. i resistències de 220 Ohm. Soldeu la sortida del CI al led corresponent. Ara hauríeu de tenir alguna cosa així.

Podeu trobar el meu codi de prova aquí a Shiftregister. Quan treballeu amb un 74HC595N, no necessitareu l'MR, de manera que podeu deixar-lo no connectat.

La pantalla LCD és pràcticament la mateixa. És bastant fàcil d'utilitzar-lo amb el shiftregister perquè l'entrada de la pantalla LCD és exactament l'entrada del shiftregister.

Per a la pantalla LCD hi ha algun altre codi per fer-lo funcionar, però és gairebé el mateix que només el Shifregister. Podeu trobar el codi de prova aquí a la pantalla LCD.

Pas 7: Frontend, una lliçó valuosa

Així que aquí em desviaré, aquesta és una secció de com hauríeu de fer-ho. Això és molt valuós que hem après.

Feu el frontend abans del backend !!!!

Ho vaig fer al revés. Vaig fer trucades inútils per a la meva base de dades; dedico molt de temps a això.

A la pàgina de destinació, necessitava la temperatura i la humitat actuals i els valors de tots els sensors de gas en un bon gràfic. També he de mostrar l'adreça IP del RPi.

A la pàgina dels sensors necessito la selecció d’un sensor i el temps de selecció. Vaig triar la selecció d’un dia i després el període d’aquest dia. Això em va fer molt més fàcil perquè podia controlar-ho més.

A la pàgina final, la pàgina de configuració permet gestionar certs valors, com ara nivells de temperatura i gasos perillosos saludables o perillosos. També podríeu reiniciar el RPi si sentiu la necessitat de fer-ho.

Per tant, primer vaig fer un disseny per poder començar a treballar fàcilment en la part de codificació. Vaig progressant progressivament d'una a una. La tasca va ser primer mòbil, de manera que primer em centraré en això. Després em dirigiré a les pantalles més grans.

Podeu trobar les meves pàgines, css i js al meu Github.

Pas 8: el backend

Aquesta part és la que he barrejat amb el frontend. Quan vaig fer alguna cosa per al frontend, vaig fer que funcionés al backend. Per tant, no necessitaria una revisió més endavant. Això va ser una cosa que no vaig fer en primer lloc i, per això, vaig perdre certament dues setmanes de temps. Estúpid! Però una lliçó que tinc encantada per a altres projectes.

Així, quan feu backend, feu alguna cosa que utilitzeu. Però feu-ne una prova futura fent-la reutilitzable i sense codificar durament. Per tant, quan necessiti els darrers 50 valors del meu DHT11, comprovaré si es fan valors? Sí, com puc posar-los a la base de dades. Com puc treure’ls de la base de dades. Com ho mostro? Gràfic, gràfic o només les dades simples? A continuació, faig una nova ruta amb els diferents paràmetres i propietats, com ara dates, noms específics de sensorn o el que trucaré. Vull dir, anomeno tots els valors dels sensors MQ o truco a tots els sensors amb MQ en el seu nom. A continuació, he posat una mica de maneig d'errors. Quan la sol·licitud de la trucada és només el mètode adequat, es pot procedir en cas contrari, es produeix un bon error.

Aquí també hi ha els fils localitzats, aquests són programes que us permeten executar codi paral·lel. Podeu executar les trucades als llocs web, la funció de creació de valor i el led + shiftregister. Aquestes funcions són completament independents entre si.

Així que per als leds. He fet un valor inferior / saludable per al CO2. Aquest valor provenia de múltiples fonts governamentals. El valor saludable de les aules és inferior a 600 ppm de CO2 per metre cúbic. El valor poc saludable és tot per sobre de 2000 ppm. Així, els LEDs fan el pont. Si el valor del sensor MQ4 és de 1400, es calcularà automàticament en quin nivell de perill es troba. 2000 - 600 = 1400, de manera que el rang total és de 1400/7 = 200. Així, quan el valor arriba a 550, es mostra un led verd. 750 mostra 2 leds verds, 950 1 grocs 2 leds verds. Etcètera.

Quan el valor passa per sobre del centre, s'obre la finestra. Vaig utilitzar un motor steppenmotor a causa de l’elevat parell i precisió. I quan el valor supera el 2000, s’activa una petita alarma. Això serveix per alarmar les persones que hi ha a l’habitació.

També podem detectar gasos de fum quan hi ha un incendi. També ho registra. Quan supera un valor determinat, l'alarma s'activa i el LED parpelleja.

La pantalla LCD hi és principalment per mostrar l'adreça IP perquè pugueu navegar al lloc.

Podeu trobar tot el codi + dins del meu Githubin a l’app.py

Pas 9: elaboració del cas

Fent el cas
Fent el cas
Fent el cas
Fent el cas
Fent el cas
Fent el cas

He trobat una petita caixa d’ordinador per a tots els meus components.

Vaig tallar una làmina d'alumini a mida. I va fer alguns forats on descansaria el llençol. Això es correspon amb els forats de la placa base.

Després vaig mirar com cabia tot dins de la caixa. Ho vaig disposar tot i vaig començar a moure'm.

Quan em conformava amb el seu funcionament, vaig començar a marcar els forats que necessitava per als sensors, RPi, PCB, mòduls de potència i mòdul steppenmotor. Els forats són per a la separació del PCB, cosa que deixarà espai perquè les parts metàl·liques no entrin en contacte amb la xapa d'alumini. També li dóna un aspecte agradable.

Vaig agafar de cada IC o un altre dispositiu els cabells i els vaig lligar més. Això es deu al fet que vaig poder veure quins cables serveixen per a què. Vaig col·locar cada cosa molt bé en alguns separadors i vaig utilitzar unes rosques i cargols per mantenir-ho tot al seu lloc.

Per alimentar-ho, he fet servir 2 bateries. Aquests proporcionen molta energia, però encara són bateries, de manera que esgotaran amb el temps. Els vaig muntar amb una mica de velcro. Vaig fer servir velcro perquè llavors podria substituir o desfer-me de les bateries fàcilment.

El motor steppen, LCD i LED sortiran de la part superior de la caixa. Així que vaig col·locar amb cura la tapa de la caixa a la part superior i vaig marcar els forats i els vaig perforar amb un trepant. Així ho podem veure tot fàcilment.

Quan el cas estigui acabat, hem de connectar-ho tot, aquí podeu trobar l'esquema de cablejat.

Pas 10: avaluació i conclusió

Avaluació i conclusió
Avaluació i conclusió

Aquest és el meu primer projecte.

Sembla bé, suposo.

Vaig aprendre moltes coses noves, vaig aprendre el gran i el dolent de la gestió de projectes. Realment va ser una valuosa lliçó. Em vaig inclinar per que no poguessis esperar que realment haguessis de continuar donant. Heu de documentar cada moviment (gairebé molt) i que heu de fer-ho quan ho acabeu de fer.

Centreu-vos en 1 cosa a la vegada. Voleu la temperatura a la pantalla? Feu això, això i allò. No espereu ni intenteu que passi. No ajudarà. I us perdrà un temps tan preciós.

També 4 setmanes semblen molt de temps. Però menys és cert. Això no és correcte. Només teniu 4 setmanes. Les primeres 2 setmanes no hi ha tanta pressió. Acabat 3 setmanes i la nit sense dormir de la 4a setmana. Així no ho hauríeu de fer.

Jo era potser una mica ambiciós: tenia una funda súper petita, sense sensors fàcils d’utilitzar, bateries … Feu que sigui molt més senzill i que, a continuació, sigui cada cop més difícil, només obtindreu un bon prototip / producte.

Recomanat: