Tabla de contenido:

Estación meteorológica RPi con sitio web adaptable: 5 pasos
Estación meteorológica RPi con sitio web adaptable: 5 pasos

Video: Estación meteorológica RPi con sitio web adaptable: 5 pasos

Video: Estación meteorológica RPi con sitio web adaptable: 5 pasos
Video: BMP280 Raspberry Pi Pico W Proyecto IoT en la nube Thingspeak | Presión y Temperatura | MicroPython 2024, Mes de julio
Anonim
Estación meteorológica RPi con sitio web receptivo
Estación meteorológica RPi con sitio web receptivo
Estación meteorológica RPi con sitio web receptivo
Estación meteorológica RPi con sitio web receptivo

Para un proyecto escolar, tuvimos que hacer un dispositivo IoT con un sitio web para visualizar la información recopilada de una manera agradable. Elegí hacer una estación meteorológica con una Raspberry Pi 3 con Flask para el sitio web receptivo, MySQL (MariaDB) para mi base de datos. y una secuencia de comandos de Python para recopilar información con todos mis sensores. Me tomó alrededor de 2 semanas de principio a fin para completar.

Nos animaron a hacer un instructivo para compartir nuestro progreso con el resto de la comunidad de bricolaje, ¡así que aquí está!

Paso 1: Selección de piezas, herramientas y materiales

Primero necesitaba averiguar qué tipo de sensores eran esenciales para una estación meteorológica y decidí que quería medir todos los siguientes datos:

  • Temperatura
  • Presión del aire
  • Humedad
  • Velocidad del viento
  • Índice UV

Aquí están todas las herramientas, materiales y piezas que utilicé

Partes:

  • DHT22 / AM2302 para lecturas de temperatura y humedad. (15 euros)
  • Adafruit BMP280 para presión barométrica y temperatura. (12 euros)
  • Adafruit SI1145 para medir el índice UV. (10 euros)
  • Anemómetro analógico Adafruit para medir la velocidad del viento (50 EUR)
  • Un MCP3008 para convertir señales analógicas a digitales.
  • Resistencia de 10kOhmios como pull-up para mi AM2302.
  • Un adaptador de 9 V para 'alimentar' el anemómetro
  • Un adaptador de 5 V para Raspberry Pi
  • Raspberry Pi 3 (cualquier Pi debería ser suficiente)

Materiales:

Un recipiente de plástico para guardar todo y hacerlo a prueba de lluvia

Instrumentos:

  • Soldador y estaño
  • Multimetro
  • Silicona
  • Algo de cinta

Entonces, en total, todos los sensores me costaron alrededor de 85 euros, lo cual es bastante elevado, pero realmente quería incluir un medidor de velocidad del viento adecuado, así que creo que vale la pena.

Puede encontrar una lista más detallada con las tiendas en las que puede comprar todo, en el pdf a continuación:)

Paso 2: Conexión de nuestro hardware

Conectando nuestro hardware
Conectando nuestro hardware
Conectando nuestro hardware
Conectando nuestro hardware

Por supuesto que vamos a necesitar conectar nuestros sensores a nuestra Raspberry Pi, arriba puedes ver el esquema de fritzing que puedes seguir para conectar todo correctamente.

En el esquema, puede ver que se usa una batería de 9 V como fuente de alimentación para nuestro anemómetro, es mejor usarla correctamente solo para pruebas, ya que no durará demasiado, puede reemplazar la batería de 9 V por cualquier fuente de alimentación de 7-12 V que desee. escoger.

Nuestros sensores SI1145 y BMP280 se controlarán mediante el protocolo I2C, ya que es el más fácil de trabajar y necesita menos cables.

El anemómetro en el esquema se muestra aquí como un LDR, ya que tiene un cableado prácticamente idéntico al anemómetro y no pude encontrar un anemómetro real para poner mi esquemático fritzing:)

Paso 3: Conectando todo: Configurando el Pi

Conectando todo: configurando el Pi
Conectando todo: configurando el Pi

En primer lugar, debemos asegurarnos de estar conectados a Internet.

Para hacer esto en la terminal, puede ir a su archivo wpa_supplicant ejecutando el siguiente comando: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

En el archivo puede agregar esto:

network = {ssid = "Your_Wifi_SSID" psk = "Your_Wifi_Password" key_mgmt = WPA-PSK

}

También puede optar por establecer su dirección IP en estática para facilitar el acceso en el futuro. Para hacer esto, debe ir al archivo dhcpcd.conf ejecutando este comando: sudo nano /etc/dhcpcd.conf

Agregue esto en el archivo:

interfaz wlan0static ip_address = 192.168.0.100 / 24

Luego nos aseguraremos de que los paquetes que ya están instalados en nuestra Pi estén completamente actualizados:

sudo apt-get update && sudo apt-get upgrade

Esto puede llevar un tiempo, así que no te preocupes.

Deberá habilitar el protocolo I2C y SPI dentro de la configuración de raspi. Puede hacerlo ejecutando este comando:

sudo raspi-config

Luego vaya a las opciones de interfaz y habilite tanto I2C como SPI

Primero necesitas crear un directorio en el que quieras poner tu proyecto (lo llamaremos 'estación meteorológica'):

estación meteorológica cd ~ mkdir estación meteorológica cd

Luego configuramos nuestro entorno virtual python3:

python3 -m pip install --upgrade pip setuptools wheel virtualenvpython3 -m venv --system-site-packages envsource env / bin / activepython -m pip install mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -python-rf

Luego, necesitaremos instalar algunos otros paquetes que son necesarios para que todo funcione correctamente:

sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

Ahora vamos a hacer nuestra base de datos:

Sin embargo, todavía necesitamos configurar nuestra base de datos. Puede hacerlo ejecutando el archivo code / sql ubicado en la carpeta 'sql' de esta manera:

sudo mariadb <sql / db_init.sql

La consulta sql creará las tablas que necesitamos y también creará algunos usuarios para hacer que nuestra base de datos sea un poco más segura.

Esto también incluirá algunos datos del historial de muestra en nuestra base de datos para asegurarnos de que nuestro sitio web muestre todo correctamente cuando aún no se hayan recopilado datos reales.

Para instalar Adafruit_GPIO y MyPyDHT necesitará hacer algunas cosas más. Primero regrese a su carpeta de uso y luego:

git clone https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py install

cd..git clone --recursive https://github.com/freedom27/MyPyDHTsudo python3 setup.py install

Paso 4: Software / Código

Software / Código
Software / Código
Software / Código
Software / Código
Software / Código
Software / Código

Necesitamos configurar el back-end para la estación meteorológica, que incluye:

- Una base de datos mariadb para almacenar las lecturas de mis sensores y algunas otras cosas menores - Un servicio de matraz para ejecutar el sitio web - Otro servicio que ejecuta el archivo Python que lee todos los sensores. Arriba puede ver mi configuración de base de datos muy simple. La tabla de usuarios es innecesario, pero como quería un sistema de inicio de sesión porque yo (aunque todos los datos son iguales para todos los usuarios) decidí incluirlo en mi base de datos.

Puedes seguir adelante y clonar el código de mi proyecto desde Github en la carpeta de tu proyecto. Ve a tu carpeta de usuario y ejecuta: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp / * weatherstation /

Luego navegue hasta la carpeta conf en la estación meteorológica y todos los archivos en la carpeta.

Cambie todas las apariciones de "NOMBRE DE USUARIO" a su nombre de usuario

También necesitará copiar ambos archivos.service a systemd y probarlos así:

sudo cp conf / weatherstation - *. service / etc / systemd / system / sudo systemctl daemon-reloadsudo systemctl start weatherstation-flask.servicesudo systemctl start weatherstation-sensor.service

sudo systemctl estado meteorológico- *

Luego necesitamos editar la configuración de nginx.

sudo cp conf / nginx / etc / nginx / sites-available / weatherstationsudo rm / etc / nginx / sites-enabled / defaultsudo ln -s / etc / nginx / sites-available / weatherstation / etc / nginx / sites-enabled / weatherstationsudo systemctl reiniciar nginx.servicesudo systemctl status nginx.service

Si todo salió bien, debería poder ejecutar esto e imprimir un poco de html en la terminal:

wget -qO - localhost

Todo debería estar funcionando bien ahora. Puede navegar hasta la dirección IP de su Raspberry Pi que configuramos al principio y recibir una pantalla de inicio de sesión.

Paso 5: el recinto

El recinto
El recinto
El recinto
El recinto
El recinto
El recinto

Ahora que todo funciona, debemos poner todo en algo.

Elegí una caja de plástico simple con una tapa transparente, con el anemómetro montado encima y un pequeño recipiente secundario que contiene los sensores DHT22 y BMP280.

Estos sensores están montados dentro de un contenedor separado porque deben estar al aire libre (sin que llueva), pero el raspberry pi no necesita estarlo.

Como puede ver, agregué un poco de silicona alrededor de los bordes para hacerlo impermeable y también hice algunos agujeros en el recipiente superior para que entre aire fresco.

Espero que haya disfrutado de mi guía sobre cómo construir una estación meteorológica, puede ser un poco difícil ya que es la primera vez que escribo una guía como esta, pero espero que les haya gustado de todos modos:)

Recomendado: