Tabla de contenido:

TheAir - Proyecto de sensor de gas: 10 pasos
TheAir - Proyecto de sensor de gas: 10 pasos

Video: TheAir - Proyecto de sensor de gas: 10 pasos

Video: TheAir - Proyecto de sensor de gas: 10 pasos
Video: PROYECTO SENSOR CO&CO2 2024, Noviembre
Anonim
TheAir - Proyecto de sensor de gas
TheAir - Proyecto de sensor de gas

Monóxido de carbono y dióxido de carbono, también conocidos como CO y CO2. Gases que son incoloros, inodoros, insípidos y francamente peligrosos cuando se encuentran en altas concentraciones en una habitación cerrada. Si vives, por ejemplo, en una habitación de estudiantes que está muy aislada, no hay buen flujo de aire y, por alguna razón, la tostadora hace un ruido extraño mientras tostadas. Entonces puede entrar en contacto con estos gases y cuando eso suceda, esperemos que solo termine con un pequeño dolor de cabeza, porque en alta concentración podría incapacitarlo o incluso matarlo (aunque muy raramente).

Entonces decidí proponer este proyecto. Mi idea es simple, use ventiladores para hacer un flujo de aire. Buen aire dentro y mal aire, por así decirlo. Para mayor utilidad, agregué un sensor de temperatura adicional, un botón para la activación manual de los ventiladores y también un sitio web para aquellos a los que les gusta ver estadísticas y / o activar ventiladores desde su computadora.

Como estudiante, padre, soltero o ser vivo. Esto es algo que normalmente le gustaría evitar cuando vive en la comodidad de su propia casa. Esto ayuda a quienes les gusta hacer su vida un poco más fácil.

Suministros

  • Frambuesa Pi 3+
  • Cargador mini-usb 5V / 2.5A
  • Tarjeta micro SD
  • Sensores

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatura)
  • 2 ventiladores de 12 V CC
  • 2 x transistores 2n2222
  • Pantalla LCD 16 * 2
  • Presionar el botón
  • MCP3008
  • Convertidor de nivel logi
  • Cable Ethernet (por motivos de configuración)

Paso 1: Configuración de Raspberry Pi

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

Antes de trabajar con Rpi, necesitaremos algún software.

  • WinSCP o FilleZilla (opcional si desea transferir archivos desde su computadora al Rpi)
  • Disco Win32 o Etcher (que prefieres más)
  • Putty o MobaXterm (que prefieres más)
  • Imagen de Raspbian con escritorio

Antes de comenzar me gustaría mencionar que al hacer este tutorial, cuando elijo un programa sobre otro, NO significa que lo recomiendo. Por ejemplo, me gusta usar etcher porque es más fácil de usar, pero Win32 tiene la opción de hacer copias de seguridad. Ahora que está fuera de mi sistema, comencemos.

Si ya tiene un Rpi conectado a su red wifi, vaya al paso 3.

Primero usaremos Etcher para poner la imagen de Raspbian en su tarjeta SD. Ahora, antes de sacar la tarjeta sd, vamos a cambiar algunas "cosas" en el archivo cmdline.txt, que se puede encontrar en la imagen. Abra el archivo.txt -> Agregue esta línea "ip = 169.254.10.1" (sin comillas) al final de la línea (todo en 1 línea) -> Guardar archivo

En segundo lugar, cree una carpeta vacía llamada "ssh" en la partición de arranque (sin las comillas).

Después de eso, puede expulsar el Microsd de forma segura y colocarlo en el Rpi.

El motivo de la IP estática codificada de forma rígida es facilitar la conexión al Rpi. Si por alguna razón el Rpi no tiene una ip con DHCP, entonces puede usar fácilmente la ip estática.

Paso 2: Realizar una conexión y conectar Rpi Wireless a su red local

Establecimiento de una conexión y conexión de Rpi Wireless a su red local
Establecimiento de una conexión y conexión de Rpi Wireless a su red local
Establecimiento de una conexión y conexión de Rpi Wireless a su red local
Establecimiento de una conexión y conexión de Rpi Wireless a su red local
Establecimiento de una conexión y conexión de Rpi Wireless a su red local
Establecimiento de una conexión y conexión de Rpi Wireless a su red local
Establecimiento de una conexión y conexión de Rpi Wireless a su red local
Establecimiento de una conexión y conexión de Rpi Wireless a su red local

Vamos a arrancar el Rpi -> conectamos el cable ethernet entre la computadora y el Rpi.

  1. Inicie Putty y complete esto:

    • Nombre de host (o dirección IP): 169.254.10.1
    • Puerto: 22
  2. Aparece una terminal y escribe el nombre de usuario y la contraseña predeterminados:

    • Nombre de usuario: pi
    • Contraseña: frambuesa

Ahora que estamos conectados localmente al rpi, queremos que el Rpi tenga una conexión a tu wifi.

  1. Extra: escriba "sudo raspi-config"
  2. Aquí deberá cambiar la contraseña para el usuario pi (razones de seguridad)
  3. Luego, vaya a Opciones de localización -> Cambiar hora (elija la correcta) -> Luego vaya a País Wifi -> elija país.
  4. Cierre raspi-config y reinicie.
  5. Cuando inicie sesión, hágase usuario root temporalmente -> sudo -i
  6. Escriba este comando para agregar su red al Rpi (código a continuación lista)

    • contraseña = "contraseña" (entre comillas)
    • Nombre de la red = "SSID"
    • ¡Recuerde usar doble >>! ¡Importante!

echo "contraseña" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Ahora reinicie de nuevo

Al reconectar, verifique su IP escribiendo:

ifconfig

y marque wlan0, junto a inet.

Ahora que tenemos conexión a Internet, hagamos una actualización "rápida".

actualización de sudo apt

sudo apt dist-upgrade -y

Esto puede llevar algo de tiempo.

Paso 3: Sensor DS18B20 (temperatura) - 1 cable

Sensor DS18B20 (temperatura) - 1 hilo
Sensor DS18B20 (temperatura) - 1 hilo
Sensor DS18B20 (temperatura) - 1 hilo
Sensor DS18B20 (temperatura) - 1 hilo

Con cada proyecto, siempre habrá algo especial que se debe hacer o de lo contrario no funcionará en el momento.

Esta vez lo tenemos con el sensor de temperatura DS18B20 que requiere 1 cable y no explicaré por qué, pero explicaré cómo hacer que funcione al menos.

Para ello tenemos que volver a raspi-config en el Rpi, la bonita pantalla azul.

  1. Ir a las opciones de interfaz
  2. Elija 1-Wire y elija habilitar.

Hecho…

Es una broma.

Ahora necesitaremos ajustar /boot/config.txt

sudo nano /boot/config.txt

Agrega esta línea en la parte inferior.

# Habilitar onewire

dtoverlay = w1-gpio

Ahora sudo reinicia esa cosa y ahora hemos terminado.

Para verificar si funciona, conecte el sensor al Rpi, luego regrese al terminal y escriba este código (consulte el siguiente paso Hardware sobre cómo conectar el sensor de temperatura).

cd / sys / bus / w1 / dispositivos / w1_bus_master1

ls

Debería ver algo con números y letras en azul oscuro en la parte superior izquierda, asegúrese de escribir esta información para más adelante, cuando estemos trabajando con el código de github.

Si por alguna razón no funciona, consulta este enlace que profundiza en él.

Paso 4: MCP3008 - Detección analógica

MCP3008 - Detección analógica
MCP3008 - Detección analógica
MCP3008 - Detección analógica
MCP3008 - Detección analógica

Como hicimos un cambio para el sensor de temperatura, también necesitamos hacer algunos cambios para los otros sensores, ya que necesitamos leer datos analógicos. Aquí donde el MCP3008 es útil, también necesitamos cambiar la interfaz SPI.

sudo raspi-config

Vaya a Opciones de interfaz -> Seleccione SPI -> habilitar.

Luego Termina.

Paso 5: hardware

No hemos terminado por completo con el Rpi, pero lo suficiente como para que podamos comenzar a construir y ensamblar el hardware.

Un consejo es que compruebe minuciosamente sus conexiones al construir para asegurarse de que no … explote el Rpi.

Además, en el esquema, notará que algunos componentes están en él solo una vez, aunque trabajaremos con más de 1 del mismo componente. Simplemente significa que tienes que repetir el mismo proceso de construcción de ese componente. Hay una pequeña excepción, los sensores mq-x no necesitan un convertidor de nivel adicional o MCP3008. Simplemente agregue un cable verde adicional (en pdf) al convertidor de nivel y al MCP3008.

Edición adicional: los ventiladores necesitan usar un transistor como interruptor. Yo uso un transistor 2n2222A para 1 ventilador, porque 2 ventiladores pueden ser una carga pesada.

Si tiene un transistor que puede manejar una corriente mayor que la buena, omita la última parte de este paso.

Si no tienes uno como yo, entonces tendrás que hacerlo así, 1 ventilador = 1 transistor, 2 ventiladores = 2 transistores, y así sucesivamente (cada ventilador tiene su propio transistor + diodo como en el pdf).

También necesitará agregar algo de código a app.py en backend_project más adelante en el Paso 7: Código de Git….

Paso 6: Crear una base de datos Mariadb

Crear una base de datos Mariadb
Crear una base de datos Mariadb

Como lo indica el título, vamos a crear una base de datos para que tengamos lugar para almacenar los datos de nuestros sensores.

Lo primero es lo primero, descargue Mariadb en Rpi.

sudo apt-get install mariadb-server

Después de la instalación, usémoslo.

mysql -u raíz

La contraseña está en blanco, por lo que no hay nada que escribir. Presione enter.

Creemos un usuario ahora.

CREAR USUARIO 'usuario' @ '%' IDENTIFICADO POR 'userdb';

OTORGAR TODOS LOS PRIVILEGIOS EN *. * A 'usuario' @ '%' CON OPCIÓN DE CONCESIÓN;

PRIVILEGIOS DE FLUSH;

Presione Ctrl + C para salir y reiniciar rápidamente el servicio:

reinicio de mysql del servicio sudo

Iniciar sesión con nombre de usuario: usuario y contraseña: userdb:

mysql -u usuario -p

Es hora de crear la base de datos ahora.

CREAR BASE DE DATOS project_db DEFAULT CHARACTER SET utf8;

USE project_db

Cree una tabla "historiek" (significa historia).

CREAR TABLA SI NO EXISTE `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;

Y listo, la base de datos está hecha.

Paso 7: prueba y código de Github

Prueba y código de Github
Prueba y código de Github

Nos acercamos al final de nuestro proyecto.

Antes de obtener el código, necesitaremos importar algunos módulos al Rpi:

pip3 instalar Flask_MySQL

pip3 instalar flask-socketio

instalación de pip3 -U flask-cors

pip3 instalar spidev

Ahora necesitamos el código para que funcione, escribe en la terminal:

clon de git

Compruebe si la carpeta está allí con:

ls

Ahora necesitará 2 terminales, por lo que es útil hacer clic con el botón derecho en el terminal y hacer clic en Duplicar sesiones:

Vaya a backend_project y temperature usando el comando cd.

Ahora, antes de que iniciemos los programas con fines de prueba. ¿Todavía recuerdas el paso 3 con el sensor de 1 cable en el que necesitas escribir algunos números? No se preocupe si lo ha hecho, solo eche un vistazo rápido al paso 3 nuevamente.

Vamos a agregar estos números al código porque necesitará saber el sensor correcto cuando lo use.

El terminal con la carpeta de temperatura, encontrará app.py. Lo vamos a abrir.

sudo nano app.py

Busque la función que se llama "def temperature ():", allí tendrá que reemplazar el "**" con los números que anotó. En mi caso, obtendría esta línea de código (cada número es único).

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

Tiempo de prueba. Ambos terminales en la carpeta backend_project y temperature, escriba:

python3 app.py

Ahora recuerde el paso 5: hardware donde necesita agregar código si está usando múltiples ventiladores y transistores?

Bien, si no, vuelva al paso 5.

Ahora necesitamos agregar código como mencioné a app.py en backend_project. Para hacerlo más fácil, hice un ejemplo de esto en el código. Cada línea de código de comentario que tiene "fan1" en ella, descomenta esas líneas y listo, ahora puedes usar 2 ventiladores.

Si desea utilizar más de 2 ventiladores, copie y pegue el mismo código debajo pero con un número diferente. La desventaja de esto es un trabajo más personal para usted y menos gpio.pins disponibles. No hay ventajas en esto que yo sepa.

Paso 8: Ejecute el código al arrancar

Ejecutar código al arrancar
Ejecutar código al arrancar

Queremos que estos 2 scripts de Python se ejecuten en el momento en que se inicie nuestro Rpi y, en caso de que un script se bloquee, debería reiniciarse por sí solo. Para ello vamos a realizar 2 servicios.

Para hacer esto, escriba:

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

Copie y pegue esto para un servicio de temperatura:

[Unidad] Descripción = Servicio de temperatura después de = multiusuario.target

[Servicio] Tipo = simple

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

Entrada estándar = tty-force

Reiniciar = en caso de falla

RestartSec = 60 s

[Instalar en pc]

WantedBy = multi-user.target

Cierra y hazlo de nuevo, pero luego para un backend_project.service:

Primer texto abierto:

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

Luego, nuevamente copie y pegue:

[Unidad] Descripción = servicio backend_project

Después = multi-user.target

[Servicio]

Tipo = simple

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

Entrada estándar = tty-force

Reiniciar = en caso de falla

RestartSec = 60 s

[Instalar en pc]

WantedBy = multi-user.target

Guardar y cerrar.

La última parte está escribiendo esto:

sudo systemctl daemon-reload

sudo systemctl enable temperature.service sudo reboot

Ahora nuestros 2 scripts de Python deberían ejecutarse automáticamente al arrancar.

Paso 9: Configurar el sitio web

Cuando descargó el repositorio, también debería haber obtenido una carpeta llamada front. Aquí es donde están los contenidos del sitio web.

Primero necesitamos apache antes de poder usar la carpeta. Siga la guía en este enlace para apache.

Cuando estés listo. Vaya a donde se encuentra la carpeta frontal:

cd / Documentos / nmct-s2-proyecto-1-TheryBrian

Luego escriba:

sudo mv front / var / www / html

Cuando haya terminado, vaya a la carpeta html, prepárese para un trabajo tedioso (culpa mía).

cd / var / www / html /

luego vaya a la carpeta frontal y comience a mover todo a la carpeta html.

ejemplo:

sudo mv css / var / www / html

Luego elimine la carpeta frontal.

Y hemos terminado con todo.

Buena suerte:).

Paso 10: Opcional - Prototipo en miniatura

Opcional: prototipo en miniatura
Opcional: prototipo en miniatura
Opcional: prototipo en miniatura
Opcional: prototipo en miniatura

Por razones de prueba, hice un prototipo de solo una caja con todo el hardware adentro para poder ver si todo funciona a pedido.

Normalmente, este proyecto se haría a mayor escala. Por ejemplo: una habitación, una casa, una fábrica, una tienda, etc.

Pero obviamente antes de empezar a hacer agujeros en las paredes (buena rima). Primero queremos ver si funciona. En realidad, no necesitas hacer una caja para probar, pero siempre es divertido hacer manualidades.

Este es mi ejemplo.

Recomendado: