Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-23 14:39
El mal tiempo siempre se ve peor a través de una ventana
Siempre nos ha interesado monitorear nuestro clima local y lo que vemos por la ventana. También queríamos un mejor control de nuestro sistema de calefacción y aire acondicionado. La construcción de una estación meteorológica personal es una gran experiencia de aprendizaje. Cuando termine de construir este proyecto, comprenderá mejor cómo funcionan las comunicaciones inalámbricas, cómo funcionan los sensores y cuán poderosa puede ser la plataforma Raspberry Pi. Con este proyecto como base y la experiencia adquirida, podrá construir fácilmente proyectos más complejos en el futuro.
Paso 1: Lista de equipos esenciales
1. Una Raspberry Pi
El primer paso es conseguir una placa Raspberry Pi. Raspberry Pi es una computadora de placa única con Linux. Su objetivo es mejorar las habilidades de programación y la comprensión del hardware. Fue rápidamente adoptado por aficionados y entusiastas de la electrónica para proyectos innovadores.
2. Escudo I²C para Raspberry Pi
El INPI2 (adaptador I2C) proporciona a la Raspberry Pi 2/3 un puerto I²C para usar con varios dispositivos I²C. 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 Dcube Store
4. Cable de conexión I²C
Teníamos el cable de conexión I²C disponible en 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. Interprete el acceso a Internet a través del adaptador EthernetCable / WiFi
Una de las primeras cosas que querrá hacer es conectar su Raspberry Pi a Internet. Podemos conectarnos mediante un cable Ethernet. Otra posibilidad es que pueda conectarse a una red inalámbrica mediante un adaptador inalámbrico USB.
7. Cable HDMI (cable de conectividad y pantalla)
Cualquier monitor HDMI / DVI y cualquier televisor debería funcionar como pantalla para el Pi. Pero es opcional. Tampoco se puede descartar la posibilidad de acceso remoto (como SSH). También puede obtener acceso con el software PUTTY.
Paso 2: Conexiones de hardware para la configuración
Realice el circuito según el esquema que se muestra.
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 un modelo para la electrónica. Dibuja un plano y sigue el diseño cuidadosamente. Hemos aplicado algunos conceptos básicos de la electrónica aquí. La lógica te lleva de A a B, ¡la imaginación te llevará a todas partes!
Conexión de Raspberry Pi y I²C Shield
En primer lugar, tome la Raspberry Pi y coloque el escudo I²C (con el puerto I²C orientado hacia adentro) en él. Presione el Shield suavemente sobre los pines GPIO de Pi y terminamos con este paso tan fácil como un pastel (vea la imagen).
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. Lo mismo se debe seguir para la Raspberry Pi con el escudo I²C montado sobre los pines GPIO. Tenemos el escudo I²C y los cables de conexión de nuestro lado como un gran alivio y una gran ventaja ya que nos quedamos solo con el Opción plug and play. No más problemas de pines y cableado y, por lo tanto, la confusión se ha ido. Imagínese en la red de cables y en eso. Un alivio de eso. Esto simplifica las cosas.
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 una necesidad
De hecho, tienes una opción aquí. Puede conectar Raspberry Pi con el cable LAN o el adaptador Nano USB inalámbrico para conectividad WIFI. De cualquier manera, el manifiesto es conectarse a Internet, lo cual se logra.
Encendido del circuito
Enchufe el cable Micro USB en el conector de alimentación de Raspberry Pi. ¡Golpea y listo! Todo está listo y comenzaremos de inmediato.
Conexión a la pantalla
Podemos tener el cable HDMI conectado a un monitor o un televisor. Podemos acceder a una Raspberry Pi sin conectarla a un monitor usando -SSH (Acceder a la línea de comandos de la Pi desde otro ordenador). 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í.
Escuché que va a haber una recesión, he decidido no participar
Paso 3: Programación de Raspberry Pi en Java
El código Java 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 tomará un momento hacerlo. Una estación meteorológica personal es un conjunto de instrumentos de medición del tiempo operados por un individuo, club, asociación o incluso empresa privada. Las estaciones meteorológicas personales pueden funcionar únicamente para el disfrute y la educación del propietario, pero muchos operadores de estaciones meteorológicas personales también comparten sus datos con otros, ya sea compilando datos manualmente y distribuyéndolos, o mediante el uso de Internet o radioaficionados.
El código está en la forma más simple que pueda imaginar y no debería tener ningún problema con él, pero pregunte si lo ha hecho. Incluso si sabes mil cosas, pregúntale a alguien que sepa.
También puede copiar el código Java de trabajo para este sensor desde aquí.
// Distribuido con licencia de libre albedrío.// Úselo de la forma que desee, lucrativa o gratuita, siempre que encaje en 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. //
import com.pi4j.io.i2c. I2CBus;
import com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; import java.io. IOException;
clase pública BME280
{public static void main (String args ) throws Exception {// Crear bus I2C bus I2CBus = I2CFactory.getInstance (I2CBus. BUS_1); // Obtener el dispositivo I2C, la dirección BME280 I2C es 0x76 (108) I2CDevice device = bus.getDevice (0x76); // Leer 24 bytes de datos de la dirección 0x88 (136) byte b1 = new byte [24]; device.read (0x88, b1, 0, 24); // Convertir los datos // coeficientes temporales int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] y 0xFF) + ((b1 [3] y 0xFF) * 256); si (dig_T2> 32767) {dig_T2 - = 65536; } int dig_T3 = (b1 [4] y 0xFF) + ((b1 [5] y 0xFF) * 256); si (dig_T3> 32767) {dig_T3 - = 65536; } // coeficientes de presión int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] y 0xFF) + ((b1 [9] y 0xFF) * 256); si (dig_P2> 32767) {dig_P2 - = 65536; } int dig_P3 = (b1 [10] y 0xFF) + ((b1 [11] y 0xFF) * 256); si (dig_P3> 32767) {dig_P3 - = 65536; } int dig_P4 = (b1 [12] y 0xFF) + ((b1 [13] y 0xFF) * 256); si (dig_P4> 32767) {dig_P4 - = 65536; } int dig_P5 = (b1 [14] y 0xFF) + ((b1 [15] y 0xFF) * 256); si (dig_P5> 32767) {dig_P5 - = 65536; } int dig_P6 = (b1 [16] y 0xFF) + ((b1 [17] y 0xFF) * 256); si (dig_P6> 32767) {dig_P6 - = 65536; } int dig_P7 = (b1 [18] y 0xFF) + ((b1 [19] y 0xFF) * 256); si (dig_P7> 32767) {dig_P7 - = 65536; } int dig_P8 = (b1 [20] y 0xFF) + ((b1 [21] y 0xFF) * 256); si (dig_P8> 32767) {dig_P8 - = 65536; } int dig_P9 = (b1 [22] y 0xFF) + ((b1 [23] y 0xFF) * 256); si (dig_P9> 32767) {dig_P9 - = 65536; } // Leer 1 byte de datos de la dirección 0xA1 (161) int dig_H1 = ((byte) device.read (0xA1) & 0xFF); // Leer 7 bytes de datos de la dirección 0xE1 (225) device.read (0xE1, b1, 0, 7); // Convertir los datos // coeficientes de humedad int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); si (dig_H2> 32767) {dig_H2 - = 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] y 0xFF) * 16) + (b1 [4] y 0xF); si (dig_H4> 32767) {dig_H4 - = 65536; } int dig_H5 = ((b1 [4] y 0xFF) / 16) + ((b1 [5] y 0xFF) * 16); si (dig_H5> 32767) {dig_H5 - = 65536; } int dig_H6 = b1 [6] & 0xFF; si (dig_H6> 127) {dig_H6 - = 256; } // Seleccione el registro de control de humedad // Humedad sobre la frecuencia de muestreo = 1 dispositivo.write (0xF2, (byte) 0x01); // Seleccione el registro de medición de control // Modo normal, temperatura y presión sobre la frecuencia de muestreo = 1 dispositivo.write (0xF4, (byte) 0x27); // Seleccione el registro de configuración // Tiempo de espera = 1000 ms device.write (0xF5, (byte) 0xA0); // Leer 8 bytes de datos de la dirección 0xF7 (247) // presión msb1, presión msb, presión lsb, temp msb1, temp msb, temp lsb, humedad lsb, humedad msb byte datos = nuevo byte [8]; device.read (0xF7, datos, 0, 8); // Convierta los datos de presión y temperatura a 19 bits de largo adc_p = (((largo) (datos [0] y 0xFF) * 65536) + ((largo) (datos [1] y 0xFF) * 256) + (largo) (datos [2] & 0xF0)) / 16; long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (data [5] & 0xF0)) / 16; // Convierta los datos de humedad long adc_h = ((long) (data [6] & 0xFF) * 256 + (long) (data [7] & 0xFF)); // Cálculos de compensación de temperatura double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); double var2 = ((((doble) adc_t) / 131072.0 - ((doble) dig_T1) / 8192.0) * (((doble) adc_t) /131072.0 - ((doble) dig_T1) /8192.0)) * ((doble) dig_T3); doble t_fine = (largo) (var1 + var2); cTemp doble = (var1 + var2) / 5120.0; fTemp doble = cTemp * 1.8 + 32; // Cálculos de compensación de presión var1 = ((doble) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((doble) dig_P6) / 32768.0; var2 = var2 + var1 * ((doble) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((doble) dig_P4) * 65536.0); var1 = (((doble) dig_P3) * var1 * var1 / 524288.0 + ((doble) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((doble) dig_P1); doble p = 1048576.0 - (doble) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((doble) dig_P9) * p * p / 2147483648.0; var2 = p * ((doble) dig_P8) / 32768.0; presión doble = (p + (var1 + var2 + ((doble) dig_P7)) / 16.0) / 100; // Cálculos de compensación de humedad double var_H = (((double) 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_H))); doble humedad = var_H * (1.0 - dig_H1 * var_H / 524288.0); si (humedad> 100,0) {humedad = 100,0; } else if (humedad <0.0) {humedad = 0.0; } // Enviar datos a la pantalla System.out.printf ("Temperatura en grados Celsius:%.2f C% n", cTemp); System.out.printf ("Temperatura en Fahrenheit:%.2f F% n", fTemp); System.out.printf ("Presión:%.2f hPa% n", presión); System.out.printf ("Humedad relativa:%.2f %% RH% n", humedad); }}
Paso 4: La practicidad del código
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 la salida en Monitor. Después de unos momentos, filtrará todos los parámetros. Asegurándose de tener una transición de código sin problemas y un resultado tranquilo (ish), piensa en más ideas para hacer más modificaciones (cada proyecto comienza con una historia).
Paso 5: Utilización en el mundo constructivo
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
Como puede ver, este proyecto es una gran demostración de lo que el hardware y el software son capaces de hacer. ¡En poco tiempo, se puede construir un proyecto tan impresionante! Por supuesto, esto es solo el comienzo. Hacer una estación meteorológica personal más sofisticada como las estaciones meteorológicas personales de aeropuerto automatizadas puede involucrar algunos sensores más como anemómetro (velocidad del viento), transmisómetro (visibilidad), piranómetro (radiación solar), etc. 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:
Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta: 8 pasos (con imágenes)
Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta: después de 1 año de operación exitosa en 2 ubicaciones diferentes, estoy compartiendo los planes del proyecto de mi estación meteorológica con energía solar y explicando cómo evolucionó a un sistema que realmente puede sobrevivir durante mucho tiempo períodos de energía solar. Si tu sigues
Estación meteorológica con Raspberry Pi con BME280 en Python: 6 pasos
Estación meteorológica que usa Raspberry Pi con BME280 en Python: is maith an scéalaí an aimir (El clima 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 problemas relacionados con el clima. desastres naturales (sequías, extremos
Estación meteorológica con Arduino, BME280 y pantalla para ver la tendencia en los últimos 1-2 días: 3 pasos (con imágenes)
Estación meteorológica con Arduino, BME280 y pantalla para ver la tendencia en los últimos 1-2 días: ¡Hola! Aquí en instructables, las estaciones meteorológicas ya se han introducido. Muestran la presión, la temperatura y la humedad actuales del aire. Lo que les faltaba hasta ahora era una presentación del curso en los últimos 1-2 días. Este proceso tendría el
Multi Task Raspberry 1 B (nube personal + estación meteorológica): 4 pasos
Multi Task Raspberry 1 B (Personal Cloud + Weather Station): Hace algún tiempo recordé que había un repuesto de RPiB después de comprar una versión más nueva. Pensando en la privacidad al mantener mis archivos de respaldo, decidí tener mi propio servidor en la nube. Feliz con un buen resultado pero no satisfecho con el desperdicio de potencial de R
Estación meteorológica WiFi ESP32 con sensor BME280: 7 pasos (con imágenes)
Estación meteorológica WiFi ESP32 con sensor BME280: Queridos amigos, ¡bienvenidos a otro tutorial! ¡En este tutorial vamos a construir un proyecto de estación meteorológica habilitada para WiFi! Vamos a utilizar el nuevo e impresionante chip ESP32 por primera vez junto con una pantalla Nextion. En este video, vamos