Taula de continguts:

Projecte TheAir - Sensor de gas: 10 passos
Projecte TheAir - Sensor de gas: 10 passos

Vídeo: Projecte TheAir - Sensor de gas: 10 passos

Vídeo: Projecte TheAir - Sensor de gas: 10 passos
Vídeo: Dust Sensor DSM501A with Arduino, PM10 & PM2.5 Air Quality Monitoring, Arduino Project 2024, Juliol
Anonim
TheAir - Projecte de sensor de gas
TheAir - Projecte de sensor de gas

Monòxid de carboni i diòxid de carboni, també coneguts com CO i CO2. Gasos incolors, inodors, insípids i francament perillosos quan es troben en concentracions elevades en una habitació tancada. Si viviu, per exemple, en una habitació d’estudiants molt aïllada, sense bon flux d’aire i, per alguna raó, la torradora fa un soroll estrany mentre fa brindis. Aleshores podeu entrar en contacte amb aquests gasos i, quan això passi, esperem que només acabi amb un petit mal de cap, ja que en concentracions elevades pot incapacitar-vos o fins i tot matar-vos (encara que molt rarament).

Així que vaig decidir plantejar aquest projecte. La meva idea és simple, utilitzeu ventiladors per crear un flux d’aire. Bona entrada d'aire i mala sortida d'aire per dir-ho d'alguna manera. Per obtenir més utilitat, he afegit un sensor de temperatura addicional, un botó per als ventiladors d’activació manual i també un lloc web per a aquells a qui els agrada veure estadístiques i / o activar els ventiladors des del seu ordinador.

Com a estudiant, pare, persona soltera o ésser viu. Això és una cosa que normalment voldríeu evitar quan viviu a la comoditat de casa vostra. Això ajuda els qui els agrada fer la seva vida una mica més fàcil.

Subministraments

  • Raspberry Pi 3+
  • Mini carregador usb 5V / 2.5A
  • Targeta micro-sd
  • Sensors

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatura)
  • 2 x 12V DC ventilador
  • 2 transistors 2n2222
  • Pantalla LCD 16 * 2
  • Polsador
  • MCP3008
  • Convertidor de nivell Logi
  • Cable Ethernet (per motius de configuració)

Pas 1: Configuració de Raspberry Pi

Configuració de Raspberry Pi
Configuració de Raspberry Pi
Configuració de Raspberry Pi
Configuració de Raspberry Pi

Abans de treballar amb el Rpi, necessitarem algun programari.

  • WinSCP o FilleZilla (opcional si voleu transferir fitxers des del vostre ordinador al Rpi)
  • Disc Win32 o Etcher (que preferiu més)
  • Putty o MobaXterm (que preferiu més)
  • Imatge Raspbian amb escriptori

Abans de començar, voldria esmentar que, quan faig aquest tutorial, quan trio un programa sobre l'altre, NO vol dir que el recomano. Per exemple, m'agrada utilitzar etcher perquè és més fàcil d'utilitzar, però Win32 té l'opció de fer còpies de seguretat. Ara, això està fora del meu sistema, comencem.

Si ja teniu un Rpi connectat a la vostra xarxa wifi, aneu al pas 3.

Primer farem servir Etcher per posar la imatge de Raspbian a la vostra targeta sd. Ara, abans de treure la targeta SD, canviarem algunes "coses" al fitxer cmdline.txt, que es poden trobar a la imatge. Obriu el fitxer.txt -> Afegiu aquesta línia "ip = 169.254.10.1" (sense cometes) al final de la línia (tot en una línia) -> Desa el fitxer

En segon lloc, feu una carpeta buida anomenada "ssh" a la partició d'arrencada (sense cometes).

Després, podeu expulsar el Microsd amb seguretat i posar-lo al Rpi.

La raó de la IP estàtica de codi dur és facilitar la connexió a l’Rpi. Si per alguna raó l’Rpi no té un ip amb DHCP, llavors utilitzeu fàcilment la ip estàtica.

Pas 2: fer una connexió i connectar Rpi Wireless a la vostra xarxa local

Establir una connexió i connectar Rpi Wireless a la vostra xarxa local
Establir una connexió i connectar Rpi Wireless a la vostra xarxa local
Establir una connexió i connectar Rpi Wireless a la vostra xarxa local
Establir una connexió i connectar Rpi Wireless a la vostra xarxa local
Establir una connexió i connectar Rpi Wireless a la vostra xarxa local
Establir una connexió i connectar Rpi Wireless a la vostra xarxa local
Establir una connexió i connectar Rpi Wireless a la vostra xarxa local
Establir una connexió i connectar Rpi Wireless a la vostra xarxa local

Iniciarem el Rpi -> connectar el cable ethernet entre l’ordinador i el Rpi.

  1. Comenceu Putty i empleneu-ho:

    • Nom de l’amfitrió (o adreça IP): 169.254.10.1
    • Port: 22
  2. Apareix un terminal i escriviu el nom d'usuari i la contrasenya per defecte:

    • Nom d'usuari: pi
    • Contrasenya: gerd

Ara que estem connectats localment al rpi, volem que el Rpi tingui una connexió al vostre wifi.

  1. Extra: escriviu "sudo raspi-config"
  2. Aquí haureu de canviar la contrasenya per l'usuari pi (motius de seguretat)
  3. Després aneu a Opcions de localització -> Canvia l'hora (trieu la correcta) -> A continuació, aneu a País de Wifi -> trieu el país.
  4. Tanqueu raspi-config i reinicieu.
  5. Quan hàgiu iniciat la sessió, feu-vos temporalment usuari root -> sudo -i
  6. Escriviu aquesta ordre per afegir la vostra xarxa al Rpi (codi a sota de la llista)

    • password = "contrasenya" (amb cometes)
    • Nom de xarxa = "SSID"
    • Recordeu fer servir el doble >>! Important!

ressò de "contrasenya" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Ara reinicieu de nou

Quan torneu a connectar-vos, comproveu la vostra IP escrivint:

ifconfig

i comproveu wlan0, al costat de inet.

Ara que tenim connexió a Internet, fem una actualització "ràpida".

actualització sudo apt

sudo apt dist-upgrade -y

Això pot trigar una mica.

Pas 3: sensor DS18B20 (temperatura): 1 cable

Sensor DS18B20 (temperatura) - 1 fil
Sensor DS18B20 (temperatura) - 1 fil
Sensor DS18B20 (temperatura) - 1 fil
Sensor DS18B20 (temperatura) - 1 fil

Amb cada projecte, sempre hi haurà alguna cosa especial que s'ha de fer o, si no, no funcionarà moment.

Aquesta vegada el tenim amb el sensor de temperatura DS18B20 que requereix 1 cable que no explicaré per què, però explicaré com fer-ho funcionar almenys.

Per a això, hem de tornar a la raspi-config del Rpi, la bonica pantalla blava.

  1. Aneu a Opcions d’interfície
  2. Trieu 1-Wire i trieu habilitar.

Fet …

Simplement bromejant.

Ara haurem d’ajustar /boot/config.txt

sudo nano /boot/config.txt

Afegiu aquesta línia a la part inferior.

# Activeu onewire

dtoverlay = w1-gpio

Ara sudo reiniciar aquesta cosa i ara ja hem acabat.

Per comprovar si funciona, connecteu el sensor al Rpi i, a continuació, torneu al terminal i escriviu aquest codi (vegeu el següent pas Maquinari sobre com connectar el sensor de temperatura).

cd / sys / bus / w1 / devices / w1_bus_master1

ls

Hauríeu de veure alguna cosa amb números i lletres en blau fosc a la part superior esquerra. Assegureu-vos d'escriure aquesta informació per més endavant quan treballarem amb el codi de github.

Si per algun motiu no funciona, consulteu aquest enllaç que hi aprofundeix.

Pas 4: MCP3008: detecció analògica

MCP3008: detecció analògica
MCP3008: detecció analògica
MCP3008: detecció analògica
MCP3008: detecció analògica

A mesura que vam fer un canvi per al sensor de temperatura, també hem de fer alguns canvis per als altres sensors, ja que hem de llegir-los en dades analògiques. Aquí, quan el MCP3008 és útil, també hem de canviar la interfície SPI.

sudo raspi-config

Aneu a Opcions d’interfície -> Seleccioneu SPI -> habilita.

Després Acaba.

Pas 5: maquinari

No hem acabat del tot amb el Rpi, sinó prou perquè puguem començar a construir i muntar el maquinari.

Alguns consells són comprovar a fons les vostres connexions a l’hora de construir per assegurar-vos que no … voleu el Rpi.

A més, a l’esquema notareu que alguns components hi són només una vegada, tot i que treballarem amb més d’un del mateix component. Només vol dir que heu de repetir el mateix procés de construcció d'aquest component. Hi ha una petita excepció, els sensors mq-x no necessiten un convertidor de nivell addicional ni MCP3008. Només cal afegir un cable verd extra (en pdf) al convertidor de nivell i MCP3008.

Edició addicional: els ventiladors han d’utilitzar un transistor com a commutador. Faig servir un transistor 2n2222A per a 1 ventilador, ja que 2 ventiladors poden ser massa pesats.

Si teniu un transistor que pugui manejar un corrent més gran que bo, ometeu la darrera part d’aquest pas.

Si no en teniu cap, heu de fer-ho així, 1 ventilador = 1 transistor, 2 ventiladors = 2 transistors, etc. (cada ventilador té el seu propi transistor + díode com al pdf).

També haureu d'afegir algun codi a app.py a backend_project més endavant al pas 7: codi Git ….

Pas 6: Creació d'una base de dades Mariadb

Creació d’una base de dades Mariadb
Creació d’una base de dades Mariadb

Com indica el títol, crearem una base de dades perquè tinguem lloc per emmagatzemar les dades dels nostres sensors.

Primer de tot, descarregueu Mariadb al Rpi.

sudo apt-get install mariadb-server

Després de la instal·lació, usem-la.

arrel mysql -u

La contrasenya està en blanc, de manera que no hi ha res a escriure. Premeu Retorn.

Permet crear un usuari ara.

CREA USUARI 'user' @ '%' IDENTIFICAT PER 'userdb';

CONCEDIU TOTS ELS PRIVILEGIS ACTIVATS *. * A "usuari" @ "%" AMB OPCIÓ DE CONCESSIÓ;

PRIVILEGIS DE FLUSH;

Premeu Ctrl + C per sortir i reiniciar ràpidament el servei:

sudo service reiniciar mysql

Inicieu la sessió amb nom d'usuari: usuari i contrasenya: userdb:

mysql -u usuari -p

És hora de crear la base de dades ara.

CREA BASE DE DADES project_db CONFIGURACIÓ DE CARÀCTERS DEFAULT utf8;

USE project_db

Creeu una taula "historiek" (significa història).

CREA TAULA SI NO EXISTEIX `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, CLAU PRIMÀRIA (` id`)) MOTOR = InnoDB;

I voila, la base de dades està feta.

Pas 7: Codi de Github i proves

Codi Github i proves
Codi Github i proves

Ens apropem al final del nostre projecte.

Abans d’obtenir el codi, haurem d’importar alguns mòduls al Rpi:

pip3 instal·la Flask_MySQL

pip3 instal·la flask-socketio

pip3 install -U flask-cors

pip3 instal·la spidev

Ara necessitem el codi perquè funcioni, escriviu el terminal:

git clon

Comproveu si la carpeta hi és amb:

ls

Ara necessitareu 2 terminals, de manera que és útil fer clic amb el botó dret del ratolí sobre el terminal i fer clic a Duplicar sessions:

Aneu a backend_project i temperature mitjançant l'ordre cd.

Ara abans d’iniciar els programes amb finalitats de prova. Encara recordeu el pas 3 amb el sensor de 1 cable on cal escriure alguns números? No us preocupeu si ho teniu, només cal que feu una ullada ràpida al pas 3.

Afegirem aquests números al codi perquè haurà de conèixer el sensor correcte quan l’utilitzeu.

El terminal amb la carpeta de temperatura, trobareu app.py. L’obrirem.

sudo nano app.py

Cerqueu la funció que s'anomena "def temperatuur ():", aquí haureu de substituir el "**" pels números que heu escrit. En el meu cas, obtindria aquesta línia de codi (cada número és únic).

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

Temps de prova. Ambdós terminals de la carpeta de temperatura i de backend_project, escriviu:

python3 app.py

Ara recordeu el pas 5: maquinari on heu d’afegir codi si feu servir diversos ventiladors i transistors?

Bé, si no, torneu al pas 5.

Ara hem d’afegir codi com he esmentat a app.py a backend_project. Per fer-ho més fàcil, he fet un exemple al codi. Totes les línies de codi de comentaris que contenen "fan1", descomenta aquestes línies i voilà, ara podeu utilitzar 2 ventiladors.

Si voleu utilitzar més de només 2 ventiladors, copieu i enganxeu el mateix codi a sota però amb un número diferent. L’inconvenient d’això és un treball més personal per a vosaltres i menys gpio.pins disponibles. No hi ha avantatges que conec.

Pas 8: executeu el codi en arrencar

Executeu el codi en arrencar
Executeu el codi en arrencar

Volem que aquests 2 scripts Python s’executin en el moment en què arrenca el nostre Rpi i, en cas que un script es bloquegi, s’hauria de reiniciar per si sol. Per fer-ho, farem 2 serveis.

Per fer-ho, escriviu:

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

Copieu-lo i enganxeu-lo per obtenir un servei de temperatura:

[Unitat] Descripció = Servei de temperatura després = multi-user.target

[Servei] Tipus = simple

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

Entrada normalitzada = força tty

Reinicia = si es produeix un error

RestartSec = 60s

[Instal·la]

WantedBy = multi-usuari.target

Tanqueu i torneu a fer, però després per a un backend_project.service:

Primer text obert:

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

A continuació, copieu i enganxeu de nou:

[Unitat] Descripció = backend_project Service

After = multi-user.target

[Servei]

Tipus = simple

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

Entrada normalitzada = força tty

Reinicia = si es produeix un error

RestartSec = 60s

[Instal·la]

WantedBy = multi-usuari.target

Desa i tanca.

L'última part és escriure això:

sudo systemctl daemon-recoad

sudo systemctl habilita el reinici de temperature.service sudo

Ara els nostres 2 scripts Python s’executaran automàticament a l’arrencada.

Pas 9: configureu el lloc web

En descarregar el dipòsit, també hauríeu d’haver obtingut una carpeta anomenada frontal. Aquí és on es troben els continguts del lloc web.

Primer necessitem apache abans de poder utilitzar la carpeta. Seguiu la guia d’aquest enllaç per apache.

Quan estigueu a punt. Aneu a on es troba la carpeta frontal:

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

A continuació, escriviu:

sudo mv front / var / www / html

Quan ho hàgiu fet, aneu a la carpeta html, prepareu-vos per a un treball tediós (culpa meva).

cd / var / www / html /

a continuació, aneu a la carpeta frontal i comenceu a moure-ho tot a la carpeta html.

exemple:

sudo mv css / var / www / html

A continuació, suprimiu la carpeta frontal.

I ja hem acabat amb tot.

Bona sort:).

Pas 10: opcional: prototip en miniatura

Opcional: prototip en miniatura
Opcional: prototip en miniatura
Opcional: prototip en miniatura
Opcional: prototip en miniatura

Per motius de proves, vaig fer un prototip de només una caixa amb tot el maquinari que hi havia a dins per poder veure si tot funciona per encàrrec.

Normalment, aquest projecte es faria a una escala més gran. Per exemple: una habitació, una casa, una fàbrica, una botiga, etc.

Però, òbviament, abans de començar a fer forats a les parets (bona rima). Primer volem veure si només funciona. De fet, no cal fer cap caixa per provar-les, però sempre és divertit fer algunes manualitats.

Aquí hi ha el meu exemple.

Recomanat: