Sommario:

TheAir - Progetto Sensore di Gas: 10 Passi
TheAir - Progetto Sensore di Gas: 10 Passi

Video: TheAir - Progetto Sensore di Gas: 10 Passi

Video: TheAir - Progetto Sensore di Gas: 10 Passi
Video: Невероятное Изобретение - Этот Дрон Изменит Все 2024, Novembre
Anonim
TheAir - Progetto Sensore di Gas
TheAir - Progetto Sensore di Gas

Monossido di carbonio e anidride carbonica, noti anche come CO e CO2. Gas che sono incolori, inodori, insapori e francamente pericolosi se in alta concentrazione in una stanza chiusa. Se vivi, ad esempio, in una stanza di uno studente che è male isolata, non c'è un buon flusso d'aria e per qualche motivo, il tostapane emette uno strano rumore mentre fa il toast. Quindi potresti entrare in contatto con questi gas e quando ciò accade, speriamo che finisca solo con un piccolo mal di testa, perché ad alta concentrazione potrebbe renderti inabile o addirittura ucciderti (anche se molto raramente).

Così ho deciso di realizzare questo progetto. La mia idea è semplice, usa i ventilatori per creare un flusso d'aria. Aria buona in entrata e aria cattiva in uscita, per così dire. Per ulteriore utilità, ho aggiunto un sensore di temperatura extra, un pulsante per l'attivazione manuale delle ventole e anche un sito Web per coloro a cui piace vedere le statistiche e/o attivare le ventole dal proprio computer.

Come studente, genitore, single o essere vivente. Questo è qualcosa che normalmente vorresti evitare quando vivi nel comfort di casa tua. Questo aiuta coloro a cui piace rendere la vita un po' più facile.

Forniture

  • Raspberry Pi 3+
  • Caricabatterie mini-usb 5V/2,5A
  • Scheda micro-sd
  • Sensori

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatura)
  • 2 x ventola da 12 V CC
  • 2 x 2n2222 transistor
  • Display LCD 16*2
  • Premi il bottone
  • MCP3008
  • Convertitore di livello Logi
  • Cavo Ethernet (per motivi di configurazione)

Passaggio 1: installazione di Raspberry Pi

Configurazione Raspberry Pi
Configurazione Raspberry Pi
Configurazione Raspberry Pi
Configurazione Raspberry Pi

Prima di lavorare con Rpi, avremo bisogno di un software.

  • WinSCP o FilleZilla (opzionale se vuoi trasferire file dal tuo computer a Rpi)
  • Disco Win32 o Etcher (che preferisci di più)
  • Putty o MobaXterm (che preferisci di più)
  • Immagine Raspbian con desktop

Prima di iniziare vorrei ricordare che quando realizzo questo tutorial, quando scelgo un programma piuttosto che un altro, NON significa che lo consiglio. Ad esempio, mi piace usare l'etch perché più facile da usare, ma Win32 ha la possibilità di eseguire backup. Ora che è fuori dal mio sistema, iniziamo.

Se hai già un Rpi connesso alla tua rete Wi-Fi, vai al passaggio 3.

Per prima cosa useremo Etcher per mettere l'immagine Raspbian sulla tua scheda SD. Ora, prima di estrarre la scheda SD, andremo a modificare alcune "cose" nel file cmdline.txt, che si trova nell'immagine. Apri il file.txt -> Aggiungi questa riga "ip=169.254.10.1" (senza virgolette) alla fine della riga (tutto su 1 riga) -> Salva file

In secondo luogo, crea una cartella vuota chiamata "ssh" nella partizione di avvio (senza virgolette).

Dopodiché puoi espellere in sicurezza la Microsd e inserirla nell'Rpi.

Il motivo dell'IP statico codificato è quello di semplificare la connessione a Rpi. Se per qualche motivo Rpi non ha un IP con DHCP, puoi facilmente utilizzare l'ip statico.

Passaggio 2: creazione di una connessione e connessione wireless Rpi alla rete locale

Effettuare una connessione e connettere Rpi Wireless alla rete locale
Effettuare una connessione e connettere Rpi Wireless alla rete locale
Effettuare una connessione e connettere Rpi Wireless alla rete locale
Effettuare una connessione e connettere Rpi Wireless alla rete locale
Effettuare una connessione e connettere Rpi Wireless alla rete locale
Effettuare una connessione e connettere Rpi Wireless alla rete locale
Effettuare una connessione e connettere Rpi Wireless alla rete locale
Effettuare una connessione e connettere Rpi Wireless alla rete locale

Avviamo Rpi -> colleghiamo il cavo ethernet tra computer e Rpi.

  1. Avvia Putty e compila questo:

    • Nome host (o indirizzo IP): 169.254.10.1
    • Porta: 22
  2. Viene visualizzato un terminale e si digita il nome utente e la password predefiniti:

    • Nome utente: pi
    • Parola d'ordine: lampone

Ora che siamo connessi localmente all'rpi, vogliamo che l'Rpi abbia una connessione al tuo wifi.

  1. Extra: digita "sudo raspi-config"
  2. Qui dovrai cambiare la password per l'utente pi (motivi di sicurezza)
  3. Successivamente vai su Opzioni di localizzazione -> Modifica ora (scegli quello corretto) -> Quindi vai su Paese Wifi -> scegli Paese.
  4. Chiudi raspi-config e riavvia.
  5. Una volta effettuato l'accesso, renditi temporaneamente utente root -> sudo -i
  6. Scrivi questo comando per aggiungere la tua rete a Rpi (codice sotto l'elenco)

    • password = "password" (tra virgolette)
    • Nome rete = "SSID"
    • Ricorda di usare il doppio >> !Importante!

echo "password" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Ora riavvia di nuovo

Quando ti riconnetti, controlla il tuo IP digitando:

ifconfig

e controlla wlan0, accanto a inet.

Ora che abbiamo la connessione a Internet, facciamo un aggiornamento "rapido".

sudo apt update

sudo apt dist-upgrade -y

Questo potrebbe richiedere del tempo.

Passaggio 3: sensore DS18B20 (temperatura) -- 1 filo

Sensore DS18B20 (temperatura) -- 1 filo
Sensore DS18B20 (temperatura) -- 1 filo
Sensore DS18B20 (temperatura) -- 1 filo
Sensore DS18B20 (temperatura) -- 1 filo

Con ogni progetto, ci sarà sempre qualcosa di speciale che deve essere fatto, altrimenti non funzionerà.

Questa volta ce l'abbiamo con il sensore di temperatura DS18B20 che richiede 1 filo che non spiegherò perché ma spiegherò almeno come farlo funzionare.

Per questo dobbiamo tornare alla raspi-config su Rpi, la bella schermata blu.

  1. Vai a Opzioni di interfaccia
  2. Scegli 1-Wire e scegli abilita.

Fatto…

Stavo solo scherzando.

Ora dovremo regolare /boot/config.txt

sudo nano /boot/config.txt

Aggiungi questa riga in fondo.

# Abilita onewire

dtoverlay=w1-gpio

Ora sudo riavvia quella cosa e ora abbiamo finito.

Per verificare se funziona, collegare il sensore all'Rpi quindi tornare al terminale e digitare questo codice (Vedi passaggio successivo Hardware su come collegare il sensore di temperatura).

cd /sys/bus/w1/devices/w1_bus_master1

ls

Dovresti vedere qualcosa con numeri e lettere in blu scuro in alto a sinistra, assicurati di scrivere queste informazioni per dopo quando lavoreremo con il codice di github.

Se per qualche motivo non funziona, controlla questo collegamento che va più in profondità.

Passaggio 4: MCP3008 - Rilevamento analogico

MCP3008 - Rilevamento analogico
MCP3008 - Rilevamento analogico
MCP3008 - Rilevamento analogico
MCP3008 - Rilevamento analogico

Poiché abbiamo apportato una modifica al sensore di temperatura, dobbiamo apportare alcune modifiche anche agli altri sensori poiché devono leggere i dati analogici. Questo dove l'MCP3008 è utile, abbiamo anche bisogno di cambiare l'interfaccia SPI.

sudo raspi-config

Vai a Opzioni di interfaccia -> Seleziona SPI -> abilita.

Poi Finisci.

Passaggio 5: hardware

Non abbiamo finito del tutto con Rpi, ma abbastanza da poter iniziare a costruire e mettere insieme l'hardware.

Alcuni consigli sono di controllare accuratamente le connessioni durante la costruzione per assicurarsi di non… far esplodere l'Rpi.

Inoltre, nello schema noterai che alcuni componenti sono presenti solo una volta, anche se lavoreremo con più di uno dello stesso componente. Significa solo che devi ripetere lo stesso processo di costruzione di quel 1 componente. C'è 1 piccola eccezione, i sensori mq-x non hanno bisogno di un convertitore di livello extra o MCP3008. Basta aggiungere un cavo verde extra (in pdf) al convertitore di livello e all'MCP3008.

Modifica extra: le ventole devono utilizzare un transistor come interruttore. Uso un transistor 2n2222A per 1 ventola, perché 2 ventole potrebbero essere un carico pesante.

Se hai un transistor in grado di gestire una corrente più grande che buona, salta l'ultima parte di questo passaggio.

Se non ne hai uno come me, dovrai farlo in questo modo, 1 ventola = 1 transistor, 2 ventole = 2 transistor e così via (ogni ventola ha un proprio transistor + diodo come nel pdf).

Dovrai anche aggiungere del codice a app.py in backend_project più avanti nel passaggio 7: codice Git….

Passaggio 6: creazione di un database Mariadb

Creazione di un database Mariadb
Creazione di un database Mariadb

Come suggerisce il titolo, creeremo un database in modo da avere spazio per memorizzare i dati dei nostri sensori.

Per prima cosa, scarica Mariadb su Rpi.

sudo apt-get install mariadb-server

Dopo l'installazione, usiamolo.

mysql -u root

La password è vuota, quindi niente da digitare. Premere Invio.

Creiamo un utente ora.

CREA UTENTE 'user'@'%' IDENTIFICATO DA 'userdb';

CONCEDERE TUTTI I PRIVILEGI SU *.* A 'user'@'%' CON L'OPZIONE DI CONCESSIONE;

PRIVILEGI DI SCARICO;

Premi Ctrl + C per uscire ed eseguire un rapido riavvio del servizio:

sudo service mysql riavvio

Accedi con username: user & password: userdb:

mysql -u utente -p

È ora di creare il database ora.

CREATE DATABASE project_db SET CARATTERI PREDEFINITO utf8;

USE project_db

Crea una tabella "historiek" (significa cronologia).

CREATE TABLE IF NOT EXISTS `historiek` (`id` INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR(5) NOT NULL, `datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT(4) NULL DEFAULT 0, PRIMARY KEY (`id`)) ENGINE = InnoDB;

E voilà, il database è fatto.

Passaggio 7: codice Github e test

Codice Github e test
Codice Github e test

Ci stiamo avvicinando alla fine del nostro progetto.

Prima di ottenere il codice, dovremo importare alcuni moduli in Rpi:

pip3 installa Flask_MySQL

pip3 install flask-socketio

pip3 install -U flask-cors

pip3 installa spidev

Ora abbiamo bisogno del codice per farlo funzionare, digita nel terminale:

git clone

Controlla se la cartella è lì con:

ls

Ora avrai bisogno di 2 terminali, quindi è utile fare clic con il pulsante destro del mouse sul terminale e fare clic su Duplica sessioni:

Vai a backend_project e temperature usando il comando cd.

Ora, prima di avviare i programmi a scopo di test. Ricordi ancora il passaggio 3 con il sensore a 1 filo in cui devi scrivere alcuni numeri? Non preoccuparti se lo hai, dai una rapida occhiata al passaggio 3.

Aggiungeremo questi numeri al codice perché sarà necessario conoscere il sensore corretto quando lo si utilizza.

Il terminale con la cartella della temperatura, troverai app.py. Lo apriremo.

sudo nano app.py

Cerca la funzione che si chiama "def temperatuur():", lì dovrai sostituire "**" con i numeri che hai scritto. Nel mio caso otterrei questa riga di codice (ogni numero è unico).

nome_file_sensore = '/sys/devices/w1_bus_master1/28-0316a4be59ff/w1_slave

Tempo di prova. Entrambi i terminali sia nella cartella backend_project che nella cartella temperature, digitare:

python3 app.py

Ora ricorda il passaggio 5: hardware in cui è necessario aggiungere codice se si utilizzano più ventole e transistor?

Bene, in caso contrario torna al passaggio 5.

Ora dobbiamo aggiungere il codice come ho detto ad app.py in backend_project. Per semplificare, ne ho fatto un esempio nel codice. Ogni riga di codice di commento che contiene "fan1", decommenta quelle righe e voilà, ora puoi usare 2 fan.

Se desideri utilizzare più di 2 ventole, copia e incolla lo stesso codice sotto di esso ma con un numero diverso. Lo svantaggio di questo è un lavoro più personale per te e meno gpio.pins disponibili. Non ci sono vantaggi in questo che io sappia.

Passaggio 8: eseguire il codice all'avvio

Esegui codice all'avvio
Esegui codice all'avvio

Vogliamo che questi 2 script Python vengano eseguiti nel momento in cui il nostro Rpi si avvia e nel caso in cui uno script si arresti in modo anomalo, dovrebbe riavviarsi da solo. Per fare questo faremo 2 servizi.

Per fare ciò, digita:

sudo nano /etc/systemd/system/temperature.service

Copia e incolla questo per un temperature.service:

[Unit]Description=Servizio temperatura dopo=multi-user.target

[Servizio] Tipo=semplice

ExecStart=/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py

StandardInput=tty-force

Riavvia=in caso di errore

RiavviaSec=60s

[Installare]

WantedBy=multi-user.target

Chiudi e ripeti ma poi per un backend_project.service:

Primo testo aperto:

sudo nano /etc/systemd/system/backend_project.service

Quindi di nuovo copia e incolla:

[Unità]Descrizione=servizio di backend_project

After=multi-user.target

[Servizio]

Tipo=semplice

ExecStart=/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py

StandardInput=tty-force

Riavvia=in caso di errore

RiavviaSec=60s

[Installare]

WantedBy=multi-user.target

Salva e chiudi.

L'ultima parte sta scrivendo questo:

sudo systemctl demone-reload

sudo systemctl enable temperature.service sudo reboot

Ora i nostri 2 script Python dovrebbero essere eseguiti automaticamente all'avvio.

Passaggio 9: configurazione del sito Web

Quando hai scaricato il repository, dovresti aver ottenuto anche una cartella chiamata front. Qui è dove si trovano i contenuti per il sito web.

Per prima cosa abbiamo bisogno di Apache prima di poter usare la cartella. Segui la guida su questo link per apache.

Quando sei pronto. Vai dove si trova la cartella principale:

cd /Documents/nmct-s2-project-1-TheryBrian

Quindi digitare:

sudo mv front /var/www/html

Fatto ciò, vai nella cartella html, preparati per un lavoro noioso (colpa mia).

cd /var/www/html/

quindi vai nella cartella principale e inizia a spostare tutto nella cartella html.

esempio:

sudo mv css /var/www/html

Quindi eliminare la cartella principale.

E abbiamo finito con tutto.

Buona fortuna:).

Passaggio 10: Opzionale - Prototipo in miniatura

Opzionale - Prototipo in miniatura
Opzionale - Prototipo in miniatura
Opzionale - Prototipo in miniatura
Opzionale - Prototipo in miniatura

Per motivi di test ho realizzato un prototipo di una scatola con tutto l'hardware all'interno in modo da poter vedere se tutto funziona come previsto.

Normalmente questo progetto sarebbe fatto su una scala più grande. Ad esempio: una stanza, una casa, una fabbrica, un negozio e così via…

Ma ovviamente prima di iniziare a fare dei buchi nei muri (bella filastrocca). Vogliamo prima vedere se funziona. In realtà non è necessario creare una scatola per i test, ma è sempre divertente fare un po' di crafting.

Ecco il mio esempio.

Consigliato: