Sommario:

Controllore dell'inquinamento della classe CPC: 10 passaggi
Controllore dell'inquinamento della classe CPC: 10 passaggi

Video: Controllore dell'inquinamento della classe CPC: 10 passaggi

Video: Controllore dell'inquinamento della classe CPC: 10 passaggi
Video: RESPONSABILITA' CONDUCENTE ED ASSICURAZIONE - IL RE DELLE PATENTI - PATENTE B - ESAME DI TEORIA 2024, Luglio
Anonim
Controllore dell'inquinamento della classe CPC
Controllore dell'inquinamento della classe CPC
Controllore dell'inquinamento della classe CPC
Controllore dell'inquinamento della classe CPC
Controllore dell'inquinamento della classe CPC
Controllore dell'inquinamento della classe CPC

Ciao, sono uno studente belga e questo è il mio primo grande progetto per la mia laurea! Questo Instructable riguarda come realizzare un misuratore di inquinamento atmosferico per stanze chiuse, in particolare le aule!

Ti sento pensare perché questo progetto? Beh, tutto è iniziato quando sono andato al liceo. Nel pomeriggio, dopo un buon pranzo e una pausa, riprendono le lezioni. Ma c'è un problema, l'insegnante ha dimenticato di aprire la finestra mentre pranzavamo quindi fa caldo, si suda e non riesci a concentrarti perché stai per addormentarti. Questo perché c'è troppa CO2 nell'aria.

Il mio progetto risolverà questo problema e renderà tutti gli studenti più concentrati durante le loro lezioni.

Forniture

1 xRaspberry Pi 4 (€55)

1 x motore passo-passo con autista (€5)

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

2 x modulo stepdown (2x €5)

1 x 16x2 LCD (€ 1,5)

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

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

LED: 2x verdi, 2x rossi, 3x gialli (trovati in alcuni vecchi hardware, normalmente €0.01 ciascuno)

Connettore per le batterie (2 x € 0,35)

40 cavi connettore f-to-f (1,80 €)

Cavi connettore 40 f-m (1,80 €)

Cavi connettore da 20 m a m (1,80 €)

2 x PCB da saldare (2x € 0,70)

Utensili:

Saldatore (preferibilmente 60 Watt)

Stagno da saldare

Foglio di alluminio 50x 20

Custodia (ho usato una vecchia custodia per mini computer)

Questo potrebbe facilmente essere un MDF o idee proprie.

Passaggio 1: configurazione del tuo RPi

Configurazione del tuo RPi
Configurazione del tuo RPi

Quindi il nostro cuore, il nostro cervello e la nostra anima sono in questo prodotto. Minaccialo bene, perché può ferirti in un modo o nell'altro. Sto usando un RPi 4B 4gb, altri modelli dovrebbero andare bene. Potresti aspettarti un po 'più di ritardo sui modelli più vecchi.

Abbiamo ottenuto il sistema operativo dalla nostra scuola con alcuni software preinstallati come phpMyAdmin.

Prima di tutto assicurati di poterti connettere al tuo Raspberry Pi tramite ssh, ci servirà molto tempo.

Quindi prima dovremmo abilitare il bus SPI, i pin GPIO e disabilitare altri bus, non ne avremo bisogno.

Puoi farlo nel menu raspi-config. Passa a Interfacce e abilita GPIO e SPI normalmente non sarà necessario Mentre sei qui, espandi lo spazio di archiviazione andando su avanzato e quindi premi invio su espandi lo spazio di archiviazione.

Ora riavvia. Avremo bisogno di alcune estensioni per utilizzare VS Code sul nostro pi, per eseguire il nostro server e database.

Il processo di installazione per l'estensione VS Code può essere trovato qui.

Ora installeremo le estensioni per il nostro server e database. Usa il terminale e digita "python install flask, flask-cors, mysql-python-connector, eventlet" attendi fino al termine.

Ora possiamo iniziare con la realizzazione del progetto.

Passaggio 2: MCP3008 + TMP36

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

Quindi abbiamo 6 sensori: 4 gas, 1 umidità + temperatura e 1 sensore di temperatura. È un vero compito farli funzionare tutti. Tutti i sensori sono sensori analogici, quindi dobbiamo convertire il segnale analogico in un segnale digitale. Questo perché RPi (Rasberry Pi) può solo "capire" i segnali digitali. Per maggiori informazioni clicca qui.

Per completare quell'attività avrai bisogno di un MCP3008, questo farà il lavoro alla grande!

Ha 16 porte, contando dall'alto (la piccola bolla) a sinistra, in basso, dall'altra parte e in alto. Pin1-8 sono gli ingressi per il segnale analogico dai nostri sensori. Il pin 9 dall'altra parte è un GND, questo deve essere collegato al GND del circuito completo, altrimenti non funzionerebbe. I pin 10-13 devono essere collegati con maggiore attenzione questi trasmetteranno i dati da e verso l'RPi. Il pin 14 è un altro GND e i pin 15 e 16 sono i VCC, questi devono essere collegati al lato positivo del circuito.

Questo è lo schema per il cablaggio:

  • MCP3008 VDD a 3,3 V esterno MCP3008 VREF a 3,3 V external esterno
  • MCP3008 AGND a GND esterno
  • MCP3008 DGND a esternoGND
  • MCP3008 CLK su Raspberry Pi pin 18
  • MCP3008 DOUT al pin 23. del Raspberry Pi
  • MCP3008 da DIN a pin Raspberry Pi 24
  • MCP3008 CS/SHDN a Raspberry Pi pin 25

Questo è anche un buon momento per collegare il GND dall'RPI al GND esterno. Questo farà fluire l'elettricità dall'RPi.

Ecco come collegarlo nel modo giusto.

Assicurati di collegare nel modo giusto, altrimenti puoi cortocircuitare tutto!

Il primo pezzo di codice viene inserito qui.

Puoi copiare il mio codice dal mio progetto github sotto models. Analog_Digital.

In fondo alla pagina troverai il codice sorgente per farlo funzionare.

Ma abbiamo bisogno del nostro primo sensore, così possiamo testare.

Dobbiamo testare il nostro sensore se funziona. Collegare un alimentatore da 3,3 V o 5 V al lato positivo del TMP36. Non dimenticare di collegarlo anche al GND, forse è successo qualcosa di stupido ma credimi. Questa è la realtà;). Puoi testare con il tuo multimetro l'uscita del sensore questo è il pin centrale. Con questa semplice equazione puoi controllare la temperatura in °C. ((millivolt*tensione di ingresso)-500)/10 e voilà donne! Ciao! Beh no hahah abbiamo bisogno dell'MCP3008. Collega il pin analogico del tuo TMP36 al primo pin di ingresso dell'MCP3008. Questo è il pin 0.

È possibile utilizzare il codice di esempio in basso per questa classe MCP. O qualcosa che troverai online farà bene il lavoro.

Passaggio 3: banca dati

Quindi ora che possiamo leggere nel nostro primo sensore, dobbiamo registrarlo in un database. Questa è la memoria del nostro cervello. Ho progettato questo database per essere espandibile e facilmente modificabile per cambiamenti futuri.

Quindi, prima dobbiamo pensare a cosa otterremo come input e se abbiamo bisogno di registrare cose specifiche come gli stati di determinati oggetti.

La mia risposta sarebbe: input da 6 sensori quindi dobbiamo creare una tabella dei sensori, con questi sensori faremo i valori. Cosa è legato a un valore? Per me è lo stato della finestra, è aperta o è chiusa mentre il sensore ha misurato il valore. Ma anche la posizione è un fattore per il mio valore, quindi lo aggiungeremo. Anche l'ora e la data per un valore sono importanti, quindi le aggiungerò.

Per future espansioni ho aggiunto una tabella utente.

Quindi qual è la mia idea per quanto riguarda le tabelle: valori della tabella, indirizzo della tabella (collegato alla stanza), stanza della tabella (collegata al valore), finestra della tabella (collegata al valore), sensore della tabella (collegato al valore) e una tabella in the wild per utenti.

Per quanto riguarda il collegamento tra le tabelle. Ogni valore ha bisogno di un sensore, una finestra, un valore per il sensore, un id in modo che possiamo rendere il valore univoco, un timestamp per quando è stato creato il valore e come ultimo non abbiamo bisogno di una stanza, quindi è facoltativo ma può essere aggiunto.

Quindi è così che appare ora. Questo è quello che sto usando per il resto del mio progetto.

Fase 4: HNT11, per i veri ragazzi

Così come non ci è stato permesso di usare nessun tipo di biblioteche. Dobbiamo programmare tutto noi stessi.

L'HNT11 è un sistema a un filo, quindi questo significa che hai un GND e un VCC come qualsiasi altro dispositivo elettronico, ma il pin 3 è un pin di ingresso e di uscita. Quindi è un po' strano, ma ho imparato molto da esso.

Collegare il VCC al 3.3V esterno e il GND al GND esterno.

La scheda tecnica del DHT11 contiene tutto per utilizzare questi sensori.

Possiamo determinare che un bit alto contiene un bit basso e uno alto. Ma la durata della parte alta determina davvero il bit. Se la parte alta viene emessa per più di 100µs (normalmente 127µs) il bit è alto. Se il bit è più corto di 100µs (normalmente intorno a 78µs) il bit è basso.

Quando l'HNT11 è attivato, inizierà a emettere segnali. Questo è sempre 41 bit. Inizia con un bit iniziale, questo non significa nulla, quindi possiamo saltare questo. I primi 16 bit/2 byte sono l'intero e la parte float per l'umidità. È lo stesso per gli ultimi 2 byte, ma ora è per la temperatura.

Quindi dobbiamo solo calcolare la durata di ogni bit e poi abbiamo finito.

Nel codice sorgente sotto DHT11 troverai il mio metodo per risolvere questo problema.

Passaggio 5: sensori di gas (solo legende)

Sensori di gas (solo legende)
Sensori di gas (solo legende)
Sensori di gas (solo legende)
Sensori di gas (solo legende)

Quindi ho pensato all'inizio del progetto che sarebbe stata una grande idea usare molti sensori. Pensa prima di agire e acquista localmente questo ti farà risparmiare molte ore di sonno! Perché puoi iniziare prima e questo ti farà più volentieri andare avanti.

Quindi ho 4 sensori di gas. MQ135, MQ8, MQ4 e un MQ7 tutti questi sensori hanno gas specifici che misurano meglio. Ma questi sono tutti diversi nella loro configurazione.

Quindi prima ho usato la scheda tecnica, questo non mi ha fatto desiderare. Poi ho cercato esempi di codice. Quello che ho trovato è stata una libreria di Adafruit. Ho cercato di replicarlo nel miglior modo possibile. Ha funzionato con uno dei quattro sensori.

L'ho lasciato riposare per un po' e sono tornato.

Quello che ho fatto per farlo funzionare per quel sensore è:

- Ho usato il datasheet per segnare i punti del gas che volevo misurare. Quindi da 1 ro/rs a 400ppm, da 1.2 a 600ppm…

- Poi ho messo tutti quei punti in excell ed ho estratto la formula per la curva. L'ho salvato nel mio database.

- Dal datasheet leggo anche la resistenza normale e la resistenza aria pulita. Questi valori sono stati salvati anche nel database.

Ho riversato tutto questo in un codice, puoi trovarlo come le ultime tre funzioni nella classe MCP3008. Ma questo non è ancora finito, purtroppo non ho avuto abbastanza tempo.

Passaggio 6: il registro del cambio, 74HC595AG

Il registro del cambio, 74HC595AG
Il registro del cambio, 74HC595AG
Il registro del cambio, 74HC595AG
Il registro del cambio, 74HC595AG
Il registro del cambio, 74HC595AG
Il registro del cambio, 74HC595AG
Il registro del cambio, 74HC595AG
Il registro del cambio, 74HC595AG

Quindi questo è un IC. E fa qualcosa di speciale, con questo dispositivo è possibile utilizzare meno uscite GPIO per lo stesso segnale di uscita. L'ho usato per il display LCD (display a cristalli liquidi) e i miei led. Mostrerò l'indirizzo IP sul display LCD in modo che tutti possano navigare sul sito.

I LED sono scelti saggiamente 2 rossi, 3 gialli e 2 verdi. Questo mostrerà in qualsiasi momento la qualità dell'aria nella stanza.

Lo shiftregister è un dispositivo di output parallelo, quindi non è possibile emettere segnali diversi in un periodo di tempo. Questo sarebbe possibile se programmato dall'esterno ma non è nativamente supportato.

Come usare l'IC? Bene, hai 5 input e 9 output. 8 uscite logiche per gli 8 pin e poi il 9° pin per inviare i dati rimasti a un altro registro a scorrimento.

Quindi colleghiamo il pin 16 al VCC esterno, il pin successivo è la prima uscita, quindi per l'LCD ne avremo bisogno. Il pin 14 è la linea dati, qui invieremo i dati. Il tredicesimo pin è l'accensione dell'interruttore, un segnale basso è l'abilitazione dell'IC, un segnale alto è necessario per spegnerlo. Il pin 12 è il pin in cui possiamo determinare quando è stato inviato un bit, quando abbassi questo pin in modo che dall'alto verso il basso legga lo stato del segnale del pin 13 e lo memorizzi nella sua memoria a 8 bit. Il pin 11 è simile quando questo pin è impostato su alto e poi su basso emette gli 8 bit sulla sua porta. E l'ultimo pin, il pin 10 è il reset principale, questo pin deve rimanere alto o non funzionerà. L'ultima connessione è il pin GND 8 che dobbiamo collegare questo al GND esterno.

Quindi ora collega i pin come preferisci al lampone pi. Il modo in cui l'ho fatto è stato collegarli il più vicino possibile l'uno all'altro per assicurarmi di sapere dove si trovavano.

Quando ottieni un output corretto. Puoi saldarlo a un PCB con i LED. e resistori da 220 Ohm. Saldare l'uscita dell'IC al led corrispondente. Ora dovresti avere qualcosa del genere.

Puoi trovare il mio codice di prova qui sotto Shiftregister. Quando lavori con un 74HC595N non avrai bisogno del MR, quindi puoi lasciarlo non collegato.

Il display LCD è più o meno lo stesso. È abbastanza facile da usare con il registro di spostamento perché l'ingresso per il display LCD è esattamente l'ingresso per il registro di spostamento.

Per l'LCD c'è qualche altro codice per farlo funzionare, ma è abbastanza uguale al solo shifregister. Puoi trovare il codice di prova qui sotto LCD.

Passaggio 7: frontend, una lezione preziosa

Quindi qui mi allontanerò, questa è una sezione di come dovresti farlo. Questo è qualcosa di molto prezioso che ho imparato.

Crea il frontend prima del backend!!!!

L'ho fatto al contrario. Ho fatto chiamate inutili per il mio database, passo troppo tempo su questo.

Sulla pagina di destinazione avevo bisogno della temperatura e dell'umidità attuali e dei valori di tutti i sensori di gas in un bel grafico. Devo anche mostrare l'indirizzo IP dell'RPi.

Nella pagina dei sensori ho bisogno della selezione di un sensore e del tempo di selezione. Ho scelto per la selezione di un giorno e poi il periodo da quel giorno. Questo mi ha reso molto più facile perché potevo controllarlo di più.

Nella pagina finale, la pagina delle impostazioni è possibile gestire determinati valori come i livelli di temperatura e gas pericolosi sani o pericolosi. Puoi anche riavviare l'RPi se ne senti il bisogno.

Quindi, prima ho realizzato un progetto in modo da poter facilmente iniziare a lavorare sulla parte di codifica. Gradualmente ho fatto progressi una cosa alla volta. L'incarico era prima mobile, quindi mi concentrerò prima su quello. Poi andrò sugli schermi più grandi.

Puoi trovare le mie pagine, css e js nel mio Github.

Passaggio 8: il backend

Questa parte è la parte che ho mescolato con il frontend. Quando ho creato qualcosa per il frontend, l'ho fatto funzionare sul backend. Quindi non avrebbe bisogno di revisione in seguito. Questo è stato qualcosa che non ho fatto in primo luogo e per questo ho perso sicuramente 2 settimane di tempo. Che stupido! Ma una lezione che porto volentieri ad altri progetti.

Quindi, quando fai backend, crea qualcosa che utilizzerai. Ma rendilo a prova di futuro rendendolo riutilizzabile e non codificato. Quindi, quando ho bisogno degli ultimi 50 valori del mio DHT11, controllerò se ci sono valori? Sì, come li inserisco nel database. Come li estraggo dal database. Come lo mostro? Grafico, grafico o solo dati semplici? Quindi creo un nuovo percorso con i diversi parametri e proprietà come date, nomi di sensori specifici o ciò che chiamerò. Voglio dire, chiamo tutti i valori dai sensori MQ o chiamo tutti i sensori con MQ nel nome. Quindi inserisco un po 'di gestione degli errori. Quando la richiesta dalla chiamata è il metodo giusto solo allora può procedere altrimenti ottiene un bell'errore.

Anche qui ci sono i thread che si trovano, questi sono pezzi di software che ti permettono di eseguire codice parallelo. Potresti eseguire le chiamate dei siti Web, la funzione di creazione del valore e il led+shiftregister. Queste funzioni sono completamente indipendenti l'una dall'altra.

Quindi per i led. Ho fatto un valore basso/sano per la CO2. Questo valore proveniva da più fonti governative. Il valore salutare per le aule è inferiore a 600 ppm di CO2 per metro cubo. Il valore malsano è tutto al di sopra di 2000 ppm. Quindi i LED fanno il ponte. Se il valore del sensore MQ4 è 1400 verrà calcolato automaticamente in quale livello di pericolo si trova. 2000 - 600 = 1400 quindi l'intervallo totale è 1400 /7 = 200. Quindi quando il valore raggiunge 550 mostra un led verde. 750 mostra 2 led verdi, 950 1 giallo 2 led verdi. E così via.

Quando il valore supera il centro si apre la finestra. Ho usato un motore passo-passo a causa della coppia elevata e della precisione. E quando il valore supera il 2000 scatta un piccolo allarme. Questo serve per allarmare le persone all'interno della stanza.

Possiamo anche rilevare i gas di fumo così quando c'è un incendio. Registra anche questo. Quando supera un certo valore si attiva l'allarme e il LED lampeggia.

Il display LCD è principalmente lì per mostrare l'indirizzo IP in modo da poter navigare nel sito.

Puoi trovare tutto + codice all'interno del mio Githubin nell'app.py

Passaggio 9: creare il caso

Fare il caso
Fare il caso
Fare il caso
Fare il caso
Fare il caso
Fare il caso

Ho trovato una piccola custodia per computer per tutti i miei componenti.

Ho tagliato a misura un foglio di alluminio. E ha praticato alcuni fori dove il foglio sarebbe rimasto. Corrisponde ai fori della scheda madre.

Poi ho guardato come tutto si sarebbe adattato all'interno della custodia. Ho sistemato tutto e ho iniziato a muovermi.

Quando ero soddisfatto di come avrebbe funzionato, ho iniziato a segnare i fori di cui avevo bisogno per i sensori, RPi, PCB, moduli di potenza e modulo motore passo-passo. I fori sono per il distanziatore del PCB, questo farà spazio in modo che le parti metalliche non entrino in contatto con il foglio di alluminio. Gli dà anche un bell'aspetto.

Ho preso i cavi da ogni IC o altro dispositivo e li ho legati insieme. Questo perché ho potuto vedere cosa sono i cavi per cosa. Ho posizionato ogni cosa bene su alcuni distanziatori e ho usato alcuni dadi e viti per tenere tutto bene in posizione.

Per alimentare tutto questo ho usato 2 batterie. Questi forniscono molta energia, ma queste sono ancora batterie, quindi queste si esauriranno nel tempo. Li ho montati con del velcro. Ho usato il velcro perché poi avrei potuto facilmente sostituire o sbarazzarmi delle batterie.

Il motore passo-passo, LCD e LED usciranno dalla parte superiore del case. Quindi ho posizionato con cura il coperchio della custodia sopra, ho segnato i fori e li ho praticati con un trapano. Quindi possiamo facilmente vedere tutto.

Finito il caso bisogna cablare il tutto, qui trovi lo schema di cablaggio.

Passaggio 10: valutazione e conclusione

Valutazione e conclusione
Valutazione e conclusione

Quindi questo è/era il mio primo progetto.

Sembra a posto, immagino.

Ho imparato molte cose nuove, ho imparato il lato buono e quello cattivo della gestione dei progetti. È stata davvero una lezione preziosa. Ho sostenuto che non puoi aspettare, devi davvero continuare a dare. Devi documentare ogni mossa (quasi molto mossa) e devi farlo quando l'hai appena fatto.

Concentrati su 1 cosa alla volta. Vuoi la temperatura sul tuo schermo? Fai questo, questo e quello. Non aspettare o prova a lasciarlo passare. Non aiuterà. E ti farà perdere così tanto tempo prezioso.

Inoltre 4 settimane sembrano un sacco di tempo. Ma meno è vero. Questo non è giusto. Hai solo 4 settimane. Prime 2 settimane non proprio così tanta pressione. 3 settimana di fine e la 4la notte insonne. Ecco come non dovresti farlo.

Forse ero un po' ambizioso: ho un case super piccolo, nessun sensore facile da usare, batterie… Rendilo molto più semplice e poi rendilo gradualmente sempre più difficile, solo allora otterrai un buon prototipo/prodotto.

Consigliato: