Tabla de contenido:

Estación meteorológica con Raspberry Pi con BME280 en Python: 6 pasos
Estación meteorológica con Raspberry Pi con BME280 en Python: 6 pasos

Video: Estación meteorológica con Raspberry Pi con BME280 en Python: 6 pasos

Video: Estación meteorológica con Raspberry Pi con BME280 en Python: 6 pasos
Video: BMP280 Raspberry Pi Pico W Proyecto IoT en la nube Thingspeak | Presión y Temperatura | MicroPython 2024, Noviembre
Anonim
Image
Image
Factura de equipo imperativo
Factura de equipo imperativo

is maith an scéalaí an aimir (El tiempo es un buen narrador)

Con los problemas del calentamiento global y el cambio climático, el patrón meteorológico global se está volviendo errático en todo el mundo, lo que lleva a una serie de desastres naturales relacionados con el clima (sequías, temperaturas extremas, inundaciones, tormentas e incendios forestales), una estación meteorológica parece ser una necesidad maldad en casa. Aprende mucho sobre electrónica básica en un proyecto de estación meteorológica utilizando un montón de piezas y sensores baratos. Es bastante fácil de configurar y en poco tiempo puede tenerlo.

Paso 1: Factura de equipo imperativa

Factura de equipo imperativo
Factura de equipo imperativo
Factura de equipo imperativo
Factura de equipo imperativo
Factura de equipo imperativo
Factura de equipo imperativo

1. Una Raspberry Pi

Pon tus manos en una placa Raspberry Pi. Raspberry Pi es una computadora de placa única con Linux. La Raspberry Pi es realmente barata, pequeña y versátil construida a partir de una computadora accesible y funcional para que los estudiantes ejerciten los conceptos básicos de programación y desarrollo de software.

2. Escudo I2C para Raspberry Pi

El INPI2 (adaptador I2C) proporciona a la Raspberry Pi 2/3 un puerto I²C para usar con varios dispositivos I2C. Está disponible en DCUBE Store.

3. Sensor digital de humedad, presión y temperatura, BME280

El BME280 es un sensor de humedad, presión y temperatura que tiene un tiempo de respuesta rápido y una alta precisión general. Compramos este sensor en la tienda DCUBE.

4. Cable de conexión I2C

Usamos el cable I²C disponible aquí DCUBE Store.

5. Cable micro USB

La fuente de alimentación del cable micro USB es una opción ideal para alimentar la Raspberry Pi.

6. Interpretar el acceso a Internet a través del adaptador de cable Ethernet / WiFi

El acceso a Internet se puede habilitar a través de un cable Ethernet conectado a una red local e Internet. Alternativamente, puede conectarse a una red inalámbrica mediante un dispositivo de seguridad inalámbrico USB, que requerirá configuración.

7. Cable HDMI (cable de conectividad y pantalla)

Cualquier monitor HDMI / DVI y cualquier televisor debería funcionar como pantalla para el Pi. Alternativamente, puede acceder de forma remota a la Pi a través de SSH sin necesidad de un monitor (solo para usuarios avanzados).

Paso 2: Conexiones de hardware para el circuito

Conexiones de hardware para circuito
Conexiones de hardware para circuito
Conexiones de hardware para circuito
Conexiones de hardware para circuito

Realice el circuito según el esquema que se muestra. En general, las conexiones son muy sencillas. Mantenga la calma y siga las instrucciones e imágenes anteriores, y no debería tener problemas. Mientras aprendíamos, adquirimos a fondo los conceptos básicos de la electrónica con respecto al conocimiento de hardware y software. Queríamos elaborar un esquema electrónico simple para este proyecto. Los esquemas electrónicos son como planos. Dibuja un plano y sigue el diseño cuidadosamente. ¡Algunos conceptos básicos de electrónica pueden ser útiles aquí!

Conexión de Raspberry Pi y I2C Shield

Primero, tome la Raspberry Pi y coloque el I²C Shield sobre ella. Presione el escudo suavemente y terminamos con este paso tan fácil como un pastel (ver la foto).

Conexión del sensor y Raspberry Pi

Tome el sensor y conecte el cable I²C con él. Asegúrese de que la salida I²C SIEMPRE se conecte a la entrada I²C. Se debe seguir lo mismo para la Raspberry Pi con el escudo I²C montado sobre los pines GPIO. Recomendamos el uso de cables I²C ya que niega la necesidad de leer los pines, soldaduras y malestar causado por incluso el más mínimo deslizamiento.. Con este simple cable plug and play, puede instalar, intercambiar placas o agregar más placas a una aplicación con facilidad.

Nota: El cable marrón siempre debe seguir la conexión de tierra (GND) entre la salida de un dispositivo y la entrada de otro dispositivo

La conectividad a Internet es clave

Tu tienes dos opciones aquí. Puede conectar la Raspberry Pi a la red mediante un cable ethernet o utilizar un adaptador de USB a WiFi para conectividad WIFI. De cualquier manera, siempre que esté conectado a Internet, estará cubierto.

Encendido del circuito

Enchufe el cable Micro USB en el conector de alimentación de Raspberry Pi. ¡Golpea y listo! Nuestro equipo es información.

Conexión a la pantalla

Podemos tener el cable HDMI conectado a un monitor oa un televisor. Además, podemos acceder a una Raspberry Pi sin conectarla a un monitor mediante acceso remoto. SSH es una herramienta útil para un acceso remoto seguro. También puede usar el software PUTTY para eso. Esta opción es para usuarios avanzados, por lo que no la cubriremos en detalle aquí.

Es un método económico si no quiere gastar mucho

Paso 3: Programación de Raspberry Pi en Python

Programación Raspberry Pi en Python
Programación Raspberry Pi en Python

El código Python para el sensor Raspberry Pi y BME280. Está disponible en nuestro repositorio de Github.

Antes de continuar con el código, asegúrese de leer las instrucciones dadas en el archivo Léame y configure su Raspberry Pi de acuerdo con él. Solo un poco de tiempo lo preparará para la configuración. Una estación meteorológica es una instalación, ya sea en tierra o en el mar, con instrumentos y equipos para medir las condiciones atmosféricas a fin de proporcionar información para los pronósticos meteorológicos y para estudiar el tiempo y el clima.

El código está claramente frente a usted y está en la forma más simple que pueda imaginar y no debería tener problemas. Aún pregunte si hay alguna (incluso si sabe mil cosas, aún pregúntele a alguien que sepa).

También puede copiar el código Python de trabajo para este sensor desde aquí.

# Distribuido con una licencia de libre albedrío. # Úselo de la forma que desee, lucrativa o gratuita, siempre que se ajuste a las licencias de sus obras asociadas. # BME280 # Este código está diseñado para funcionar con el mini módulo BME280_I2CS I2C disponible en ControlEverything.com. #

importar smbus

tiempo de importación

# Obtener bus I2C

bus = smbus. SMBus (1)

# Dirección BME280, 0x76 (118)

# Leer datos de 0x88 (136), 24 bytes b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Convierte los datos

# Coeficientes de temperatura dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] si dig_T2> 32767: dig_T2 - = 65536 dig_T3 = b1 [5] * 256 + b1 [4] si dig_T3> 32767: dig_T3 - = 65536

# Coeficientes de presión

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] si dig_P2> 32767: dig_P2 - = 65536 dig_P3 = b1 [11] * 256 + b1 [10] si dig_P3 > 32767: dig_P3 - = 65536 dig_P4 = b1 [13] * 256 + b1 [12] si dig_P4> 32767: dig_P4 - = 65536 dig_P5 = b1 [15] * 256 + b1 [14] si dig_P5> 32767: dig_P5 - = 65536 dig_P6 = b1 [17] * 256 + b1 [16] si dig_P6> 32767: dig_P6 - = 65536 dig_P7 = b1 [19] * 256 + b1 [18] si dig_P7> 32767: dig_P7 - = 65536 dig_P8 = b1 [21] * 256 + b1 [20] si dig_P8> 32767: dig_P8 - = 65536 dig_P9 = b1 [23] * 256 + b1 [22] si dig_P9> 32767: dig_P9 - = 65536

# Dirección BME280, 0x76 (118)

# Leer datos de 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)

# Dirección BME280, 0x76 (118)

# Leer datos de 0xE1 (225), 7 bytes b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Convierte los datos

# Coeficientes de humedad dig_H2 = b1 [1] * 256 + b1 [0] if dig_H2> 32767: dig_H2 - = 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) si dig_H4> 32767: dig_H4 - = 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) if dig_H5> 32767: dig_H5 - = 65536 dig_H6 = b1 [6] if dig_H6> 127: dig_H6 - = 256

# Dirección BME280, 0x76 (118)

# Seleccionar registro de humedad de control, 0xF2 (242) # 0x01 (01) Sobremuestreo de humedad = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # Dirección BME280, 0x76 (118) # Seleccionar registro de medición de control, 0xF4 (244) # 0x27 (39) Tasa de sobremuestreo de presión y temperatura = 1 # Modo normal bus.write_byte_data (0x76, 0xF4, 0x27) # Dirección BME280, 0x76 (118) # Seleccionar registro de configuración, 0xF5 (245) # 0xA0 (00) Tiempo de espera = bus de 1000 ms.write_byte_data (0x76, 0xF5, 0xA0)

tiempo. de sueño (0.5)

# Dirección BME280, 0x76 (118)

# Leer datos de 0xF7 (247), 8 bytes # Presión MSB, Presión LSB, Presión xLSB, Temperatura MSB, Temperatura LSB # Temperatura xLSB, Humedad MSB, Datos de humedad LSB = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Convierta los datos de presión y temperatura a 19 bits

adc_p = ((datos [0] * 65536) + (datos [1] * 256) + (datos [2] y 0xF0)) / 16 adc_t = ((datos [3] * 65536) + (datos [4] * 256) + (datos [5] y 0xF0)) / 16

# Convierta los datos de humedad

adc_h = datos [6] * 256 + datos [7]

# Cálculos de compensación de temperatura

var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t) /131072.0 - (dig_T1) /8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120.0 fTemp = cTemp * 1.8 + 32

# Cálculos de compensación de presión

var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 presión = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Cálculos de compensación de humedad

var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H2))) humedad = var_H * (1.0 - dig_H1 * var_H / 524288.0) si humedad> 100.0: humedad = 100.0 elif humedad <0.0: humedad = 0.0

# Salida de datos a la pantalla

print "Temperatura en Celsius:%.2f C"% cTemp print "Temperatura en Fahrenheit:%.2f F"% fTemp print "Presión:%.2f hPa"% de presión print "Humedad relativa:%.2f %%"% de humedad

Paso 4: el código de ejecución

El código de funcionamiento
El código de funcionamiento

Ahora, descargue (o git pull) el código y ábralo en la Raspberry Pi.

Ejecute los comandos para compilar y cargar el código en el terminal y vea el resultado en la pantalla. Después de unos segundos, mostrará todos los parámetros. Después de asegurarse de que todo funciona bien, puede desarrollar algunos más interesantes.

Paso 5: Utilización en el mundo práctico

El BME280 logra un alto rendimiento en todas las aplicaciones que requieren medición de humedad y presión. Estas aplicaciones emergentes son la conciencia del contexto, p. Ej. Detección de piel, Detección de cambio de habitación, Monitoreo de condición física / Bienestar, Advertencia sobre sequedad o altas temperaturas, Medición de volumen y flujo de aire, Control de automatización del hogar, Control de calefacción, ventilación, Aire acondicionado (HVAC), Internet de las cosas (IoT), Mejora del GPS (por ejemplo, mejora del tiempo hasta la primera localización, navegación a estima, detección de pendientes), navegación interior (detección de cambio de piso, detección de ascensor), navegación al aire libre, aplicaciones deportivas y de ocio, pronóstico del tiempo e indicación de velocidad vertical (subida / caída Velocidad).

Paso 6: Conclusión

Espero que este proyecto inspire más experimentación. Hacer una estación meteorológica más sofisticada puede involucrar más sensores como pluviómetro, sensor de luz, anemómetro (velocidad del viento), etc. Puede agregarlos y modificar el código. Tenemos un video tutorial en YouTube que tiene el funcionamiento básico del sensor I²C con Rasp Pi. Es realmente sorprendente ver los resultados y el funcionamiento de las comunicaciones I²C. Compruébalo también. ¡Diviértete construyendo y aprendiendo! Háganos saber lo que piensa de este instructivo. Nos encantaría hacer algunas mejoras si es necesario.

Recomendado: