Estación meteorológica de bricolaje (Estación meteorológica). Estación meteorológica interior Sensor de presión y temperatura

Hoy en día, para ensamblar un prototipo funcional de una estación meteorológica doméstica básica, no es necesario tener grandes habilidades de programación (en nuestro caso, aún más) ni diseño de circuitos. Todo lo que necesitas es la capacidad de "Google" y un poco de ganas de hacer algo con tus propias manos. En este material, contaré y mostraré cómo montar una estación meteorológica doméstica con conexión de red por la noche. El presupuesto básico es de sólo $10.

El texto puede contener, y muy probablemente contiene, errores gramaticales, ortográficos, de puntuación y de otro tipo, incluidos los semánticos. Animo a los lectores a señalar estos errores utilizando el sistema ORPHUS. Para hacer esto, simplemente seleccione la sección de texto requerida y presione la combinación de teclas CTRL+Enter.

Conjunto básico de componentes.

La base de nuestro futuro dispositivo es una placa de desarrollo NodeMCU basada en el módulo ESP8266. Lo conseguí en Gearbest, pero si quieres, puedes buscarlo en otros sitios.

Para conectar los módulos, puede utilizar un cable con conectores BLS ($0,9) o una placa sin soldadura con un juego de cables de conexión ($3,74).

Conexión y configuración

A pesar de los 4 pines disponibles, nuestro sensor está conectado a través de solo 3 cables: fuente de alimentación de +5 V (1 pin), tierra (4) y línea de datos (2). Tomamos energía para el sensor desde el pin VUSB o desde 3V, si el primero no está en su placa. Conectamos la línea de datos al puerto GPIO14 (pin D5).

Permítanme recordarles que en nuestro caso no se necesitan absolutamente ningún conocimiento de programación. Generaremos el firmware para el módulo utilizando el sitio web WiFi-IoT.ru, escrito por Maxim Malkin, también conocido por el proyecto de automatización del hogar homes-smart.ru. Para comenzar, simplemente regístrese en WIFi-IoT y confirme su correo electrónico.

Antes de ensamblar el firmware, es necesario preparar el módulo comprado para su funcionamiento y limpiarlo de posible software chino preinstalado. Para hacer esto, necesitamos un cable USB-microUSB que funcione y una computadora o máquina virtual con Windows. Después de registrarse en el sitio, accederá a la página en inglés "Cómo comenzar" con explicaciones sobre cómo preparar el módulo para su funcionamiento. Descargue los archivos de software de los dos primeros pasos de las instrucciones.

Teóricamente, después de conectar el módulo a la computadora, el propio Windows debería encontrar los controladores e instalarlos. En caso de que esto no suceda, intente identificar el microcircuito en la placa (que se distingue por una gran cantidad de "patas") cerca del puerto microUSB. Lo más probable es que sea CP2102 o CH340 (los controladores para ellos están disponibles a través de enlaces).

Después de instalar los controladores, volvemos a conectar nuestra placa a la computadora y ejecutamos el programa NodeMCU Flasher, que descargamos anteriormente. En la lista desplegable seleccionamos el puerto COM asignado a nuestro dispositivo. Lo más probable es que haya uno; de lo contrario, puede verificar su número en el Administrador de dispositivos de Windows. En la pestaña Configuración, indique la ubicación del archivo en blanco descargado previamente con la extensión .bin.

Para NodeMCU, los parámetros en la pestaña Avanzado deben configurarse de acuerdo con la captura de pantalla a continuación, luego de lo cual regresamos a la página de inicio y hacemos clic en el botón Flash. El programa indicará la finalización del proceso de firmware con una marca de verificación verde en la esquina inferior izquierda.

Después de estas manipulaciones, el módulo está listo para descargar el firmware, que aún nos queda por componer. Vayamos al constructor y marquemos los puntos que necesitamos:

  • "DHT22" es nuestro sensor de temperatura y humedad;
  • “Hora y NTP” - para mostrar la hora en la interfaz web;
  • "Configuración por defecto". Haga clic en el engranaje al lado de este elemento e ingrese el nombre de usuario y la contraseña del punto de acceso al que se conectará el módulo. Los puntos restantes no tocamos por ahora.

Presionamos el botón “Compilar” en la parte inferior de la página y el resultado es el software listo para instalar. Descargar en un solo archivo.

A continuación se repite el proceso con el firmware del archivo en blanco, solo que en lugar de este seleccionamos el firmware ya descargado en el ordenador. Una vez completado el proceso, reiniciamos completamente el módulo (desconectamos y volvemos a conectar el cable USB) y nos dirigimos al panel de administración del enrutador en busca del módulo. Como no utilizamos la asignación previa de una IP estática, el propio enrutador debe proporcionarle una dirección. Permítame recordarle que el panel de administración suele estar ubicado en 192.168.0.1 o 192.168.1.1. El enrutador le dio a mi módulo la dirección 192.168.1.142. Después de hacer clic en esta IP, accedemos a la interfaz web de nuestra estación meteorológica. Primero deberá ingresar el inicio de sesión estándar "esp8266" y la contraseña "0000" en la ventana emergente.

Ahora debe decirle al módulo a qué puerto está conectado el sensor para que el primero pueda leer sus lecturas. Esto se hace en la página "Hardware". Activamos el primer sensor con la marca correspondiente, y en la línea GPIO indicamos el puerto 14. Se producirá la inicialización y aparecerá una visualización de la temperatura y la humedad en la página de la interfaz principal. ¡Hurra!

Finalmente, no olvide cambiar la contraseña para iniciar sesión en el sistema y la zona horaria para mostrar la hora en la página “Principal”. También es necesario transferir el módulo a una dirección IP estática (botón en la parte inferior de la página) para que después de reiniciar el enrutador su estación meteorológica no se “pierda”. Si comprende la configuración de su enrutador, es mejor alquilar una dirección IP para el módulo de forma indefinida, en lugar de configurar una IP estática.

El prototipo está listo, ahora yendo a la dirección IP configurada podrás ver la temperatura y humedad en el lugar donde instalaste el sensor.

Conexión de una estación meteorológica al servicio de métricas de Thingspeak.com

Pero simplemente mirar la temperatura no es interesante. La visualización de datos es necesaria para poder rastrear cualquier tendencia en los cambios en las lecturas. Para ello, regístrate en el servicio de métricas de Thingspeak.com y crea un nuevo canal en tu perfil.

En la página que se abre, complete el nombre del canal, marque los dos primeros campos e ingrese allí los valores "temp" (primer campo) y "humedad / temperatura" (segundo campo).

Ahora echemos un vistazo al módulo nuevamente. En el diseñador de firmware, además de todas las marcas anteriores, agrega “Thingspeak.com”, compila el firmware y actualízalo de la misma manera. Desafortunadamente, todos los ajustes en el módulo deberán realizarse nuevamente, porque... Las actualizaciones OTA con su preservación están disponibles solo en la versión paga del software (el precio de emisión es de solo 100 rublos por módulo).

Volvemos a la página del canal que creamos en el servicio Thingspeak.com y abrimos la pestaña “Api Keys”. Necesitaremos el código del campo "Escribir clave Api". Debe copiarse y pegarse en el campo correspondiente en la página "Servidores" en la interfaz web de nuestra estación meteorológica, recordando primero marcar la casilla "Habilitar envío de Thingspeak.com".

Las lecturas se enviarán cada 5 minutos. Y al final quedará así:

La apariencia de los gráficos se puede editar, ¡así que eres libre de crearlos! 🙂

Resultados

Probablemente alguien preguntará: “¿Por qué el resultado final es diferente al que se muestra en las imágenes de arriba y del título?” Como mínimo, porque la información contenida en este material definitivamente será suficiente para los recién llegados al tema durante una o dos noches, y conectar la pantalla y el barómetro requerirá habilidades básicas de soldadura y el equipo adecuado. Si está interesado en mejorar aún más la estación meteorológica y mis notas sobre este tema, asegúrese de escribirlo en los comentarios.

Este proyecto está diseñado como una estación meteorológica automática alimentada por baterías solares. El objetivo era construir una estación meteorológica pequeña y compacta que cumpliera los siguientes requisitos:

  • Funciona con energía solar y batería para funcionamiento nocturno.
  • De tamaño compacto, fácil de instalar
  • Capacidad para cargar datos a la red WeatherUnderground
  • Medición de temperatura, humedad, presión del aire, radiación ultravioleta.

Durante el proceso de desarrollo, la mayoría de estos requisitos se resolvieron. Actualmente, la estación meteorológica cuenta con termómetro, higrómetro, sensor de radiación UV y presión. Como parte de la red WeatherUnderground, la estación meteorológica ayuda a predecir el clima local. Aquí tienes un esquema completo de la estación meteorológica, que puedes ampliar guardándolo en tu PC:

La estación meteorológica consume 1 miliamperio. La batería auxiliar aquí es de sólo 1000 m/h: una batería de polímero de litio. En comparación con las antiguas estaciones meteorológicas, en las que las baterías eran de plomo-ácido selladas con una capacidad de 5 A/h, esto es un progreso. Las dimensiones de la placa de circuito impreso son 100 mm x 75 mm y así es como se veía cuando todo estuvo hecho en la placa de pruebas, y la siguiente foto está en su forma terminada:

La unidad de 433 MHz proporciona comunicación inalámbrica para el intercambio de datos. Actualmente, el dispositivo está conectado directamente al techo y carga datos a WeatherUnderground cada 11 minutos.

El circuito se alimenta mediante un regulador de voltaje MAX604. Este regulador era bastante caro ($7,00) pero tenía una caída de voltaje muy baja, lo que lo hacía muy eficiente. Este regulador se utiliza aquí para convertir una batería Li-po de 3,7-4,2 voltios a una ideal de 3,3 voltios.

Para cargar la batería se instala un módulo TP4056. Este módulo es muy eficiente y es capaz de funcionar con una potencia de entrada de 5 V. También había un pequeño panel solar de 5 V que podía cargar la batería a través del TP4056 incluso en condiciones de poca luz.

Para cargar datos en la red, tuve que escribir una aplicación especial para la computadora. El software fue escrito en C# usando Visual Studio. Puede descargar los archivos del proyecto en formato .

GUÍA PARA CREAR UNA ESTACIÓN METEOROLÓGICA DOMÉSTICA SENCILLA POR SU CUENTA

Si su computadora está encendida todo el día o incluso las 24 horas del día, puede usarla para operar la estación meteorológica de su hogar. El objetivo es crear una estación meteorológica sencilla y económica que utilice una computadora personal (PC). La PC actúa como lector, procesador y remitente de datos meteorológicos medidos al sitio web de Meteopost. La comunicación entre el ordenador y la unidad de medida se realizará a través de una red 1-Wire.

Composición del complejo de medición.
1. Computadora personal con sistema operativo Windows XP o superior y puerto COM libre.
2. Adaptador para puerto COM (1 cable - convertidor RS232)
3. Cable Ethernet de par trenzado de 4 núcleos, la longitud debe ser suficiente desde el puerto COM hasta la unidad de medición
Fuente de alimentación de 4, 5 V CC con buena regulación de voltaje
5. Unidad de medida (instalada en exteriores)
6. Software para PC: aplicación "Estación meteorológica".

OPCIÓN No. 1 - UN SENSOR

Primero, consideremos la opción más simple: una estación meteorológica con un sensor de temperatura. Esto no requiere una fuente de alimentación adicional (elemento 4). Y el sistema está muy simplificado. El adaptador para el puerto COM (elemento 2) se puede fabricar según este esquema. El adaptador consta de dos diodos Zener de 3,9 V y 6,2 V, dos diodos Schottky y una resistencia.

Diagrama del adaptador para puerto COM


Adaptador en carcasa D-SUB

El lugar donde se sueldan el cable y el sensor de temperatura, incluidos los terminales del sensor, debe estar bien protegido de la humedad. Lo mejor es utilizar pegamento a base de poliuretano.


Cables de sensores de impermeabilización

Este sistema proporcionará monitoreo de temperatura con una precisión de décimas de grado. En este caso, un gráfico de la temperatura del aire versus el tiempo será visible en la ventana de la aplicación y el ícono de la bandeja siempre mostrará la temperatura actual. La aplicación le permite configurar el intervalo de medición.

COSTE DE LAS PIEZAS DE RADIO: no más de 50 UAH.

OPCIÓN No. 2 - CUATRO SENSORES

Una estación meteorológica más compleja con cuatro sensores: temperatura, humedad, luz, presión. Dado que solo el sensor de temperatura será digital y el resto será analógico, el sistema utiliza un ADC ds2450 de cuatro canales. Este ADC admite el protocolo de 1 cable. El circuito requiere una fuente de energía adicional. La fuente de energía debe proporcionar estabilidad de alto voltaje. Pero dado que el circuito del adaptador descrito anteriormente tiene un inconveniente: la imposibilidad de conectar una fuente de alimentación externa a los sensores debido a la falta de conexión a tierra real (-), utilizamos un circuito adaptador diferente. Este adaptador también encaja en la carcasa del conector del puerto COM D-SUB. Ahora hay tres cables en el cable: tierra (-), +5V y datos.


Circuito adaptador para puerto COM con fuente de alimentación externa

El circuito de la unidad de medición se puede realizar fácilmente incluso en una placa de pruebas. Solo hay que prestar especial atención a la impermeabilización de los contactos. La forma más sencilla es derretir parafina y aplicarla con una brocha en todos los puntos desnudos del tablero. Si la placa no está protegida del agua, habrá fugas de voltaje y habrá muchos errores de medición. En nuestro caso, incluso las centésimas de voltio afectan significativamente los resultados.


Diagrama de bloques de medición

La unidad de medición debe colocarse en una carcasa tal que la placa y los sensores estén protegidos de la exposición directa a la precipitación y la radiación solar. Para estos fines, una caja hecha de espuma plástica densa es muy adecuada. En las paredes de la caja (parte inferior y pared del lado de la sombra) es necesario hacer más agujeros para ventilación. Es aconsejable cubrir las paredes interiores de la caja con papel de aluminio para una protección adicional contra la radiación infrarroja, de lo contrario se producirá un error en la medición de la temperatura. Todos los sensores, excepto el de luz, se colocan directamente en el tablero. El sensor de luz (fotorresistor) se retira de la placa mediante cables y se instala en el orificio en la parte inferior de la carcasa de espuma. De modo que la superficie del sensor mire hacia abajo. En este caso, las precipitaciones no caerán sobre el sensor y, especialmente en invierno, lo protegerán de la formación de hielo. Para la impermeabilización, el sensor de luz debe tratarse, por ejemplo, con pegamento transparente a base de poliuretano (el sellador de silicona no pasó la prueba, perdió corriente). Trate inclusive (!) la zona fotosensible del fotorresistor. Llene los cables del sensor con pegamento y colóquelos en un tubo aislante. Suelda los extremos de los cables a una pequeña tabla. Y suelde los cables de la unidad de medición a esta placa. Rellene las zonas de soldadura con parafina. De lo contrario, cuando llueve mucho y hay viento, la estación meteorológica puede dejar de funcionar y tendrás que desmontarla y secar todo. La unidad se puede conectar al cable mediante un conector. Pero es necesario utilizar un conector especial a prueba de humedad: el sistema funcionará en condiciones climáticas difíciles.

Si tiene que colocar la caja fuera de la ventana de un edificio de gran altura (no es posible instalarla en un soporte cerca del suelo), entonces la caja debe retirarse de la pared de la casa lo más lejos posible, en un soporte. De lo contrario, calentar el aire de la pared produce datos de temperatura muy distorsionados. En una casa privada, por supuesto, es mejor hacer una cabina meteorológica real. Debemos tener cuidado de que la carcasa esté bien sujeta, de lo contrario, fuertes ráfagas de viento pueden arrancar nuestra estructura.


Unidad de medida en soporte

El voltaje de salida de la fuente de alimentación (PSU) debe estar entre 4,8 y 5,3 V. La carga desde un teléfono antiguo también funcionará. Sin embargo, si la fuente de alimentación no tiene estabilizador, es necesario agregarlo a la fuente de alimentación, porque Para la precisión de la medición, la presencia de un voltaje estable es muy importante. Al menos se puede comprobar con un tester si en la salida de la fuente de alimentación cambian décimas o centésimas de voltio. No se permiten saltos de décimas de voltio. A continuación se muestra un circuito estabilizador simple de 5 V. La entrada de la fuente de alimentación puede ser de 7 a 17V. La salida será de unos 5V. Después de esto, debemos conectar nuestro cable (que va a la unidad de medición) a la fuente de alimentación y medir el voltaje con un probador en el otro extremo del cable. Este voltaje puede ser ligeramente menor que directamente en la salida de la fuente de alimentación debido a la resistencia del cable. Esta tensión medida debe introducirse en la configuración de la aplicación como "Tensión de alimentación del sensor".


Circuito regulador de voltaje típico

COSTO DE COMPONENTES PARA LA ESTACIÓN METEOROLÓGICA

Costo aproximado de los componentes de la radio (precios de 2015 en la tienda).
1. Sensor de temperatura ds18b20 - 25 UAH
2. ADC ds2450 - 120 grn.
3. Fotorresistor LDR07 - 6 UAH
4. Sensor de humedad HIH-5030 - 180 UAH
5. Sensor de presión MPX4115A - 520 UAH.
TOTAL: 850 UAH o 37$

El resto de elementos en total no cuestan más de 50 UAH; la fuente de alimentación se puede obtener, por ejemplo, de un viejo “cargador” de teléfono.


Marcado de elementos de radio.

SOFTWARE PARA ESTACIÓN METEOROLÓGICA

Hemos desarrollado una aplicación para Windows que proporcionaremos de forma gratuita a cualquiera que quiera construir una estación meteorológica de este tipo. Le permitirá monitorear el clima en su PC.


ventana de aplicación para PC

La bandeja del sistema muestra la temperatura del aire.

La aplicación puede enviar todos los datos medidos a nuestro servidor "Meteopost" y en una página especial (ejemplo) puede ver todos los datos meteorológicos desde un navegador de PC. La página también está adaptada para el navegador de un teléfono móvil.


Captura de pantalla del navegador del teléfono móvil

CONCLUSIÓN
Puede ahorrar en el costo de las piezas si las compra a los chinos en AliExpress. Es posible montar una estación meteorológica sin ninguno de los sensores, a excepción del sensor de temperatura. A nuestro ADC le queda una entrada libre, por lo que también puede recibir una señal del sensor de viento. Pero como estamos en la ciudad, simplemente no tenemos dónde instalar y probar dicho sensor. En las zonas urbanas no habrá una medición adecuada de la velocidad y dirección del viento. Muchos entusiastas de la red describen en detalle los métodos para fabricar usted mismo un sensor de velocidad del viento. El sensor de fábrica es bastante caro.

Un radioaficionado con habilidades medias puede montar una estación meteorológica de este tipo. Para hacerlo aún más simple, no puede diseñar la placa de circuito impreso, sino ensamblarla mediante montaje en superficie en una placa de pruebas. Probado: funciona.

Intentamos crear una estación meteorológica accesible y económica. Para ello se utiliza en particular en el sistema un ordenador. Si lo excluye, deberá fabricar una unidad de visualización adicional, una unidad de transmisión de datos a la red, etc., lo que aumentará significativamente el precio. Por ejemplo, la ahora popular “estación meteorológica Netatmo”, con parámetros medidos similares, cuesta alrededor de 4.000 grivnas (200 dólares).

Estamos dispuestos a ayudar con consultas a cualquiera que quiera fabricar una estación meteorológica de este tipo. También le proporcionaremos el software necesario y conectaremos su estación a nuestro sitio web.

Observar el tiempo es una actividad muy emocionante. Decidí construir mi propia estación meteorológica basada en el popular .

El prototipo de la estación meteorológica tiene este aspecto:

Funciones de mi estación meteorológica:

  • medición y visualización de temperaturas ambiente y exterior;
  • visualización de la hora actual (horas y minutos);
  • visualización de las fases lunares actuales y del día lunar;
  • transferir resultados de mediciones a una computadora a través de una conexión en serie;
  • transmisión de resultados de medición mediante protocolo MQTT usando una aplicación en su computadora.


Maleficio
-archivo
firmware para (versión del 9 de mayo de 2018) - .
como flashear maleficio-archivo al tablero arduino, Yo describí.

Microcontrolador Arduino Nano 3.0

El "corazón" de mi estación meteorológica es un microcontrolador eBay):

Para controlar la visualización y el sondeo de los sensores, utilizo el temporizador 1. arduino, provocando interrupciones con una frecuencia de 200 Hz (período - 5 ms).

Indicador

Para mostrar las lecturas medidas del sensor y la hora actual, me conecté a arduino indicador LED de cuatro dígitos Patio de entrada FYQ-5643BH con ánodos comunes (se combinan ánodos de segmentos idénticos de todas las descargas).
El indicador contiene cuatro dígitos de siete segmentos y dos puntos de separación (hora):

Los ánodos indicadores están conectados a través de resistencias limitadoras de corriente a los terminales. arduino:

descargar 1 2 3 4
conclusión A3 A2 D3 D9

Los cátodos de los segmentos están conectados a los pines. arduino:

segmento a b C d mi F gramo pag
conclusión D7 D12 D4 D5 D6 D11 D8 D13

El segmento indicador se enciende si hay un potencial alto en el ánodo de la descarga correspondiente (1) y un potencial bajo en el cátodo (0).

Utilizo la visualización dinámica para mostrar información en el indicador: solo hay un dígito activo a la vez. Las descargas activas se alternan con una frecuencia de 200 Hz (período de visualización de 5 ms). Al mismo tiempo, el parpadeo de los segmentos es invisible a la vista.

Sensor de temperatura DS18x20

Para poder medir la temperatura de forma remota, conecté un sensor , que proporciona medición de la temperatura exterior en un amplio rango. El sensor está conectado al bus. 1 cable y tiene tres salidas: potencia ( VCC), datos ( DAT), Tierra ( Tierra):

salida del sensor VCC DAT Tierra
conclusión arduino 5V A1 Tierra

entre pines VCC Y DAT Incluí una resistencia pull-up de 4,7 kOhm.

Para convertir entre grados Celsius y Fahrenheit, puede utilizar la siguiente tabla:

Coloqué el sensor fuera de la ventana de la casa en un estuche de plástico para bolígrafo:

\

Las estaciones meteorológicas profesionales utilizan una pantalla Stevenson para proteger el termómetro de la luz solar directa y garantizar la circulación del aire. pantalla stevenson):

Sensor de presión y temperatura BMP280

Para medir la presión atmosférica se utilizan tradicionalmente barómetros de mercurio y barómetros aneroide.

EN barómetro de mercurio La presión atmosférica se equilibra con el peso de una columna de mercurio, cuya altura se utiliza para medir la presión:

EN barómetro aneroide Se utiliza la compresión y expansión de la caja bajo presión atmosférica:

Para medir la presión atmosférica y la temperatura ambiente en la estación meteorológica de mi casa utilizo un sensor - pequeño SMD-tamaño del sensor 2 x 2,5 mm, basado en tecnología piezorresistiva:

La bufanda con el sensor fue comprada en la plataforma comercial. eBay:

El sensor está conectado al bus. I2C(Detalles de contacto - SDA/SDI, contacto de sincronización - SCL/SCK):

salida del sensor VCC Tierra IDE SCK
conclusión arduino 3V3 Tierra A4 A5

Adafruta- archivos Adafruit_Sensor.h, Adafruit_BMP280.h, Adafruit_BMP280.cpp.

Unidades de presión atmosférica

Sensor mediante función leerPresión Muestra la presión atmosférica en pascales. La unidad básica de medida de la presión atmosférica es hectopascal(hPa) (1 hPa = 100 Pa), cuyo análogo es la unidad no sistémica " milibares" (mbar) (1 mbar = 100Pa = 1hPa). Para conversión entre unidades de presión fuera del sistema comúnmente utilizadas " milímetro de mercurio" (mmHg) y hectopascales se utilizan las siguientes proporciones:
1 hPa = 0,75006 mmHg. Arte. ≈ 3/4 mmHg; 1mmHg =1,3332 hPa ≈ 4/3 hPa.

Dependencia de la presión atmosférica de la altitud sobre el nivel del mar.

La presión atmosférica se puede presentar tanto en forma absoluta como relativa.
Presión absoluta QFE(Inglés) presión absoluta) es la presión atmosférica actual, que no tiene en cuenta la corrección sobre el nivel del mar.
La presión atmosférica disminuye aproximadamente 1 hPa con un aumento de altitud de 1 m:

La fórmula barométrica le permite determinar la corrección de las lecturas del barómetro para obtener la presión relativa (en mmHg):
$\Delta P = 760 \cdot (1 - (1 \over (10^ ( (0.0081350 \cdot H) \over (T + 0.00178308 \cdot H) ))))$ ,
donde $T$ es la temperatura promedio del aire en la escala de Rankin, ° Real academia de bellas artes, $H$ - altitud sobre el nivel del mar, pies.
Convirtiendo grados Celsius a grados Rankine:
$^(\circ)Ra = (^(\circ)C \cdot 1.8) + $491.67
La fórmula barométrica se utiliza para la nivelación barométrica: determinación de alturas (con un error de 0,1 - 0,5%). La fórmula no tiene en cuenta la humedad del aire ni el cambio de la aceleración gravitacional con la altura. Para pequeñas diferencias de altura, esta dependencia exponencial se puede aproximar con suficiente precisión mediante una dependencia lineal.
Presión relativa QNH(Inglés) presión relativa, Altura náutica del código Q) es la presión atmosférica ajustada al nivel medio del mar. Nivel medio del mar, MSL) (Para ES UN y temperatura 15 grados centígrados), y se fija inicialmente teniendo en cuenta la altitud a la que se encuentra la estación meteorológica. Se puede averiguar a partir de datos de servicios meteorológicos, lecturas de instrumentos calibrados en lugares públicos, aeropuertos (de informes METAR), desde Internet.
Por ejemplo, para el cercano aeropuerto de Gomel ( UMGG) Puedo ver el informe meteorológico real METAR en ru.allmetsat.com/metar-taf/russia.php?icao=UMGG:
UMGG 191800Z 16003MPS CAVOK M06/M15 Q1014 R28/CLRD//NOSIG ,
Dónde Q1014- presión QNH en el aeródromo es 1014 hPa.
Historial de informes METAR disponible en Aviationwxchartsarchive.com/product/metar.
Para presión de aire relativa normal QNH Se supone una presión de 760 mm Hg. Arte. o 1013,25 hPa (a una temperatura de 0ºС, a una latitud de 45º del hemisferio norte o sur).
Configuré la presión para el barómetro aneroide. QNH usando el tornillo de ajuste de sensibilidad:

Pronóstico del tiempo

El análisis de los cambios de presión le permite elaborar un pronóstico del tiempo, y su precisión es mayor cuanto más bruscamente cambia la presión. Por ejemplo, una vieja regla general para los marineros es que una caída de presión de 10 hPa (7,5 mm Hg) durante un período de 8 horas indica la llegada de fuertes vientos.

¿De dónde viene el viento? El aire fluye hacia el centro del área de baja presión, creando viento- movimiento horizontal del aire desde áreas de alta presión a áreas de baja presión (la alta presión atmosférica aprieta masas de aire hacia áreas de baja presión atmosférica). Si la presión es muy baja, el viento puede llegar a ser fuerte tormentas. Al mismo tiempo, en la zona reducido presión (depresión de presión o ciclón), el aire caliente se eleva y forma nubes, que a menudo traen lluvia o nieve.

En meteorología, se entiende por dirección del viento la dirección desde la que sopla el viento:

Esta dirección se reduce a ocho puntos.

A menudo se utiliza un algoritmo para predecir el tiempo en función de la presión barométrica y la dirección del viento. Zambreti.

Sensor de humedad

Para determinar la humedad relativa del aire utilizo el módulo. DHT11(comprado en el mercado eBay):

Sensor de humedad DHT11 tiene tres salidas - fuente de alimentación ( + ), datos ( afuera), Tierra ( - ):

salida del sensor + afuera -
conclusión arduino 5V D10 Tierra

Para trabajar con el sensor utilizo la biblioteca de Adafruta- archivos DHT.h, DHT.cpp.

La humedad del aire caracteriza la cantidad de vapor de agua contenida en el aire. Humedad relativa muestra el porcentaje de humedad en el aire en relación con la cantidad máxima posible a la temperatura actual. Se utiliza para medir la humedad relativa. :

Para los humanos, el rango óptimo de humedad del aire es del 40 ... 60%.

Reloj en tiempo real

Utilicé el módulo como reloj en tiempo real. RTC DS1302(la bufanda con el reloj se compró en la plataforma comercial eBay):

Módulo DS1302 se conecta al autobús 3 hilos. Para utilizar este módulo junto con arduino biblioteca desarrollada iarduino_RTC ( de iarduino.ru).

Tablero con módulo DS1302 tiene cinco pines que conecté a los pines del tablero Arduino Nano:

conclusión RTC VCC Tierra primero CLK DAT
conclusión arduino 5V Tierra D2 D1 D0

Para mantener lecturas correctas del reloj cuando no hay energía, inserté una batería en la ranura de la placa. CR2032.

La precisión de mi módulo de reloj resultó no ser muy alta: el reloj se adelanta aproximadamente un minuto en cuatro días. Por lo tanto, restablezco los minutos a “cero” y la hora al más cercano manteniendo presionado el botón conectado al pin A0 del Arduino después de encender la estación meteorológica. Después de la inicialización, el pin A0 se utiliza para transmitir datos a través de una conexión en serie.

Transferir datos a una computadora y trabajar a través del protocolo MQTT

Para transferir datos a través de una conexión en serie a arduino conecta USB-UART convertidor:

Conclusión arduino utilizado para transmitir datos en el formato 8N1(8 bits de datos, sin paridad, 1 bit de parada) a 9600 bps. Los datos se transmiten en paquetes, cuya longitud es de 4 caracteres. La transferencia de datos se realiza en " bit-bang"modo, sin utilizar un puerto serie de hardware arduino.

Formato de datos transmitidos:

Parámetro 1er byte 2do byte 3er byte 4to byte
temperatura exterior oh espacio o menos decenas de grados o espacio unidades de grados
temperatura ambiente i espacio o menos decenas de grados o espacio unidades de grados
Presión atmosférica pag cientos de mm r. Arte. decenas de mmHg unidades mmHg Con.
humedad relativa h espacio decenas de por ciento o espacio unidades de porcentaje
tiempo actual decenas de horas unidades de horas decenas de minutos unidades de minutos

MQTT

golang aplicación cliente de protocolo MQTT, enviando la información recibida de la estación meteorológica al servidor ( MQTT-corredor) :

Servicio le permite crear una cuenta con un plan tarifario gratuito" " (límite: 10 conexiones, 10 Kb/s):

Para monitorear las lecturas de la estación meteorológica, puede usar Androide-solicitud :

Nutrición

Para alimentar la estación meteorológica utilizo un cargador de un teléfono móvil antiguo. Motorola, produciendo un voltaje de 5 V con una corriente de hasta 0,55 A y conectado a los contactos 5V(+) y Tierra (-):

También puede utilizar una batería de 9 V conectada a los contactos para el suministro de energía. Número de bastidor(+) y Tierra (-).

Funcionamiento de la estación meteorológica.

Al inicio, los sensores se inicializan y prueban.

En ausencia de un sensor DS18x20 Se muestra el error "E1" cuando no hay sensor. - error "E3".

Entonces comienza el ciclo de funcionamiento de la estación meteorológica:

  • medición y visualización de la temperatura exterior;
  • medición y visualización de la temperatura ambiente;
  • medición y visualización de la presión atmosférica y su tendencia;
  • medición y visualización de la humedad relativa del aire;
  • visualización de la hora actual;
  • visualización de la fase lunar y el día lunar.


Un vídeo de mi estación meteorológica en funcionamiento está disponible en mi -canal: https://youtu.be/vVLbirO-FVU

Visualización de temperatura

Al medir la temperatura, se muestran dos dígitos de temperatura y, para una temperatura negativa, un signo menos (con un símbolo de grado en el dígito más a la derecha);
para la temperatura exterior se muestra el signo de grados en la parte superior:


para temperatura ambiente - a continuación:

Pantalla de presión

Al medir la presión, se muestran tres dígitos de la presión en mmHg (con el símbolo " PAG" en el extremo derecho):

Si la presión cae bruscamente, en lugar del símbolo " PAG"el símbolo" se muestra en el dígito más a la derecha l"Si ha crecido mucho, entonces" h". El criterio para la intensidad del cambio es 8 mm Hg en 8 horas:

Dado que mi estación meteorológica muestra presión absoluta ( QFE), entonces las lecturas resultan estar algo subestimadas en comparación con la información del informe METAR(que proporciona QNH) (14 UTC del 28 de marzo de 2018):

Relación de presión (según ATIS) ascendió a $(1015 \sobre 998) = $1,017. Elevación del aeropuerto de Gomel (código OACI UMGG) sobre el nivel del mar es de 143,6 m La temperatura según ATIS era de 1 ° C.

Las lecturas de mi estación meteorológica casi coincidieron con la presión absoluta. QFE según la información ATIS!

Presión máxima/mínima ( QFE), registrado por mi estación meteorológica durante todo el período de observación:

Pantalla de humedad relativa

La humedad relativa del aire se muestra como porcentaje (el símbolo de porcentaje se muestra en los dos dígitos de la derecha):

Mostrar la hora actual

La hora actual se muestra en el indicador en el formato "HH:MM", con los dos puntos de separación parpadeando una vez por segundo:

Visualización de fases lunares y día lunar.

Los dos primeros dígitos del indicador muestran la fase lunar actual y los dos siguientes, el día lunar actual:

La Luna tiene ocho fases (se dan los nombres en inglés y ruso (en azul, inexactos)):

Las fases se muestran en el indicador mediante pictogramas:

fase pictograma
hoz creciente (media luna)
hoz menguante (media luna)

Transferir datos a una computadora

Si conecta una estación meteorológica con USB-UART convertidor (por ejemplo, basado en un microcircuito CP2102), conectado a USB- puerto de computadora, puede utilizar un programa de terminal para observar los datos transmitidos por la estación meteorológica:

Lo desarrollé en un lenguaje de programación. golang un programa que mantiene un registro de las observaciones meteorológicas y envía datos al servicio , y se puede ver en Androide-teléfono inteligente usando la aplicación :

Según el registro de observación meteorológica, se puede, por ejemplo, construir un gráfico de cambios en la presión atmosférica:
ejemplo de un gráfico con una presión mínima notable


Ejemplo de gráfico con un ligero aumento de presión.

Mejoras planificadas:

  • Agregar sensores de dirección y velocidad del viento.

En las estaciones meteorológicas, se utiliza un anemómetro de tres tazas (1) para medir la velocidad del viento y una veleta (2) para determinar la dirección del viento:

También se utiliza para medir la velocidad del viento. anemómetros de hilo caliente(Inglés) anemómetro de hilo caliente). Como cable calentado, puede utilizar un filamento de tungsteno de una bombilla con vidrios rotos. En los anemómetros de hilo caliente fabricados industrialmente, el sensor suele estar situado en un tubo telescópico:

El principio de funcionamiento de este dispositivo es que el calor se elimina del elemento calefactor mediante convección mediante el flujo de aire: el viento. En este caso, la resistencia del filamento está determinada por la temperatura del filamento. La ley del cambio en la resistencia del filamento $R_T$ dependiendo de la temperatura $T$ tiene la forma:
$R_T = R_0 \cdot (1 + (\alpha \cdot (T - T_0)))$ ,
donde $R_0$ es la resistencia del filamento a la temperatura $T_0$, $\alpha$ es el coeficiente de resistencia a la temperatura (para tungsteno $\alpha = 4.5\cdot(10^(-3) (^(\circ)( C^(-1))))$).

Con un cambio en la velocidad del flujo de aire, la temperatura cambia a una corriente de filamento constante (anemómetro de corriente constante, inglés. ACC). Si la temperatura del elemento calefactor se mantiene constante, entonces la corriente a través del elemento será proporcional a la velocidad del flujo de aire (anemómetro de temperatura constante, en inglés). llamada a la acción).

Continuará

La estación meteorológica está construida sobre un microcontrolador Picaxe de Revolution Education Ltd y consta de dos partes principales: una unidad exterior que envía sus datos cada 2 segundos mediante un transmisor de 433 MHz. Y una unidad interior que muestra los datos recibidos en una pantalla LCD de 20 x 4, así como la presión atmosférica, que se mide localmente en la unidad interior.

Intenté mantener el diseño lo más simple y funcional posible. El dispositivo se comunica con la computadora a través de un puerto COM. Actualmente, la computadora crea continuamente gráficos a partir de los valores obtenidos y también muestra los valores en indicadores convencionales. Los gráficos y las lecturas de los sensores están disponibles en el servidor web integrado, se guardarán todos los datos, etc. Puede ver datos de cualquier período de tiempo.

La construcción de la estación meteorológica llevó varios meses, desde el diseño hasta su finalización, y en general estoy muy satisfecho con el resultado. Estoy especialmente contento de haber podido construir todo desde cero utilizando herramientas habituales. Estoy completamente satisfecho con él, pero la perfección no tiene límites, y esto se aplica especialmente a la interfaz gráfica. No he hecho ningún intento de comercializar la estación meteorológica, pero si está pensando en construir una estación meteorológica usted mismo, esta es una buena opción.

Sensores de calles

Los sensores se utilizan para medir la temperatura, la humedad, las precipitaciones, la dirección y la velocidad del viento. Los sensores son una combinación de dispositivos mecánicos y electrónicos.

Sensor de temperatura y humedad relativa

Medir la temperatura es quizás la más sencilla. Para ello se utiliza el sensor DS18B20. Para medir la humedad se utilizó HIH-3610, que produce un voltaje de 0,8 - 3,9 V con una humedad del 0% al 100%.

Monté ambos sensores en una pequeña PCB. El tablero se instala dentro de una carcasa casera que evita la exposición a la lluvia y otros factores externos.

El código simplificado para cada uno de los sensores se muestra a continuación. En el sitio de Peter Anderson se muestra un código más preciso que lee valores con una precisión de una décima. Su código se utiliza en la versión final de la estación meteorológica.

El sensor de temperatura proporciona una precisión de ±0,5 °C. El sensor de humedad tiene una precisión de ±2%, por lo que realmente no importa cuántos decimales estén disponibles.

Un gráfico de ejemplo de un software que se ejecuta en una PC.

Temperatura

Principal: readtemp B.6, b1; lea el valor en b1 si b1 > 127 entonces neg; prueba de sertxd negativa (#b1, cr, lf); transmitir valor al terminal PE pausa 5000 ir a neg principal: b1 = b1 - 128; ajustar el valor negativo sertxt ("-"); transmitir el símbolo negativo sertxt (#b1, cr, lf); transmitir valor al terminal PE pausa 5000 ir a principal

Humedad

Principal: readadc B.7,b1 ; leer el valor de humedad b1 = b1 - 41 * 100/157; cambiar a %RH sertxd (#b1, "%", cr, lf) pausa 5000; espera 5 segundos ir a principal

Cálculo de lecturas del sensor de humedad.

Cálculos tomados de la documentación del sensor Honeywell HIH-3610. El gráfico muestra la dependencia estándar a 0 °C.

El voltaje del sensor se mide en la entrada del ADC (B.7) del microcontrolador Picaxe 18M2. En el código que se muestra arriba, el valor, que se representa como un número entre 0 y 255 (es decir, 256 valores), se almacena en la variable b1.

Nuestro circuito funciona con 5 V, por lo que cada paso del ADC es igual a:
5/256 = 0,0195 V.

El gráfico muestra el valor ADC inicial de 0,8 V:
0.8 / 0.0195 = 41

Tomando los valores del gráfico, la pendiente del gráfico (teniendo en cuenta el desplazamiento) es aproximadamente:
Tensión de salida/%RH o
(2,65 - 0,8) / 60 = 0,0308 V en% HR
(0,0306 en documentación)

Calculemos el número de pasos del ADC con un 1% de humedad:
(V por % RH) / (paso ADC)
0.0308 / 0.0195 = 1.57

%RH = valor de ADC - compensación de ADC / (pasos de ADC en %RH), o
% RH = valor con ADC - 41 / 1,57

La fórmula de cálculo final para el microcontrolador será la siguiente: % HR = valor con ADC - 41 * 100/157

Carcasa protectora

Comience cortando cada panel en dos pedazos. Los tablones de una parte quedarán firmemente sujetos por ambos lados y de la segunda parte solo por un lado. No deseche estas piezas: están usadas.

Coloque dos bloques de madera de 20 mm x 20 mm en todas las partes en la parte superior e inferior y atornille las otras partes.

Corta una de las piezas con un lado entero a medida y pégala en el interior de uno de los lados. Asegúrese de que las tablas estén pegadas de modo que formen una forma de "^" juntas. Haz esto por todos lados.

Medidor de velocidad y dirección del viento.

Parte mecánica

Los sensores de velocidad y dirección del viento son una combinación de componentes mecánicos y electrónicos. La parte mecánica es idéntica para ambos sensores.

Se coloca un inserto de capa marina de 12 mm entre el tubo de PVC y el disco de acero inoxidable en el extremo superior del tubo. El rodamiento está pegado a un disco de acero inoxidable y mantenido en su lugar mediante una placa de acero inoxidable.

Una vez que todo está completamente ensamblado y configurado, las áreas expuestas se sellan con masilla para impermeabilizarlas.

Los otros tres agujeros de la foto son para las palas. Las hojas de 80 mm de largo dan un radio de giro de 95 mm. Tazas de 50 mm de diámetro. Para estos, utilicé botellas de colonia cortadas que tienen forma casi esférica. No estoy seguro de su confiabilidad, así que los hice fácilmente reemplazables.

parte electronica

La electrónica del sensor de velocidad del viento consta únicamente de un interruptor de transistor, un fotodiodo y dos resistencias. Están montados en una pequeña PCB redonda con un diámetro de 32 mm. Se instalan libremente en la tubería para que, si entra humedad, fluya hacia abajo sin tocar los componentes electrónicos.

El anemómetro es uno de los tres sensores que deben calibrarse (los otros dos son el medidor de precipitación y el sensor de presión barométrica)

El fotodiodo proporciona dos pulsos por revolución. En el sistema "secuencial" simple que buscaba (todos los sensores sondeados por turno), debe haber un equilibrio entre el tiempo dedicado a sondear cada sensor (en este caso, contando pulsos) y la capacidad de respuesta del sistema como entero. Idealmente, un ciclo completo de sondeo de todos los sensores no debería tardar más de 2 a 3 segundos.

En la foto de arriba, comprobando el sensor mediante un motor con velocidad regulable.

; Los comandos específicos de la pantalla LCD se muestran en azul hsersetup B9600_4, %10000; Utilice el pin 1 del LCD, sin hserin hserout 0, (13): pausa 100; Inicializar LCD hserout 0, (13): pausa 100 hserout 0, (13): pausa 100 pausa 500 hserout 0, ("ac1", 13); Borrar pausa de visualización 50 hserout 0, ("acc", 13) hserout 0, ("ac81", 13, "adcount: ", 13); Imprimir los encabezados pausa 10 hserout 0, ("ac95", 13, "adpulsin:", 13) ; Imprime los encabezados pausa 10 cuenta C.2, 1000, w0 ; Cuente los pulsos (dos por revolución) w1 = 0 para b8 = 1 a 2; Mida la longitud del pulso dos veces pulsando C.2, 1, w2; por rev y... w1 = w1 + w2 siguiente w1 = w1 / 2 ; ...calcular el promedio hserout 0, ("ac89", 13, "ad ", #w0, " ", 13) ;Imprimir el valor de conteo hserout 0, ("ac9d", 13, "ad", #w1, " ", 13) ;Imprimir el valor de longitud del pulso pausar 100 bucles

Quería calibrarlo mientras conducía el coche, pero no había tiempo para eso. Vivo en una zona relativamente plana con un aeropuerto a unos pocos kilómetros cerca, así que calibré el sensor comparando mis lecturas de velocidad del viento con las lecturas del aeropuerto.

Si tuviéramos un 100% de eficiencia y las aspas giraran a la velocidad del viento, entonces:
Radio del rotor = 3,75"
Diámetro del rotor = 7,5" = 0,625 pies
Circunferencia del rotor = 1,9642 pies

1 pie/min = 0,0113636 m/h,
1,9642 pies/min = 1 revolución = 0,02232 m/h
1m/h = 1 / 0,02232 rpm

1 m/h = 44,8 rpm
? m/h = rpm / 44,8
= (rpm * 60) / 44,8

Porque del turno salen dos impulsos
? m/h = (pulsos por segundo * 30) / 44,8
= (pulsos por segundo) / 448

Sensor de dirección del viento - parte mecánica

En el sensor de dirección del viento, se utiliza un imán en lugar de una placa de aluminio y un chip especial AS5040 (codificador magnético) en lugar de una unidad optoelectrónica.

La foto de abajo muestra un imán de 5 mm montado en el extremo del tornillo central. La alineación del imán con respecto al chip es muy importante. El imán debe estar exactamente centrado a una altura de aproximadamente 1 mm por encima del chip. Una vez que todo esté perfectamente alineado, el sensor funcionará correctamente.

Sensor de dirección del viento - pieza electrónica

Existen varios esquemas para medir la dirección del viento. Básicamente constan de 8 interruptores de láminas colocados en un ángulo de 45 grados a intervalos de un imán giratorio o un potenciómetro que se puede girar completamente.

Ambos metodos tienen sus ventajas y desventajas. La principal ventaja es que ambos son fáciles de implementar. La desventaja es que están sujetos a desgaste, especialmente los potenciómetros. Una alternativa al uso de interruptores de láminas sería utilizar un sensor de efecto Hall para solucionar el desgaste mecánico, pero todavía están limitados a 8 posiciones diferentes... Idealmente, me gustaría probar algo diferente y finalmente me decidí por un sensor IC magnético giratorio. Aunque se trata de un dispositivo de montaje en superficie (lo cual trato de evitar), tiene una serie de ventajas que lo hacen atractivo de usar.

Tiene varios formatos de salida diferentes, dos de los cuales son los más adecuados para nuestro propósito. La mayor precisión se logra utilizando la interfaz SSI. El AS5040 produce pulsos que van desde 1 µs a 0° hasta 1024 µs a 359,6°

Comprobación de la calibración del sensor de dirección del viento:

Haga readadc10 B.3, w0; lea desde la pausa del rodamiento magnético AS5040 100 w0 = w0 * 64/182; Convertir a depuración de 0 a 360 (grados); Mostrar en el bucle de la ventana de depuración Prog/Editar

medidor de precipitaciones

En la medida de lo posible, hice el pluviómetro de plástico y acero inoxidable, la base está hecha de aluminio de 3 mm de espesor para mayor rigidez.

El pluviómetro tiene dos cubos. Cada balde contiene hasta 6 ml de agua antes de que su centro de gravedad se desplace, lo que hace que vierta agua en el recipiente y envíe una señal al sensor. Cuando el cubo se vuelca, la bandera de aluminio pasa a través de un sensor óptico, que envía una señal a la electrónica de la unidad exterior.

Por ahora, lo dejé con los lados despejados (¡porque es divertido verlo funcionar!). Pero sospecho que hay que pintarlo de blanco para reflejar el calor en verano y evitar la evaporación. No pude encontrar el pequeño embudo así que tuve que hacer el mío propio. Observe el cable dentro del embudo y en el centro del canal. Esto ayudará a detener la tensión superficial del agua en el embudo y ayudará a que el agua gotee. Sin el cable, la lluvia tendería a "girar" y su trayectoria sería impredecible.

Primer plano de los optocensores:

Parte electrónica del pluviómetro.

Debido a la naturaleza aleatoria del funcionamiento del sensor, una interrupción del software en el microcontrolador de la unidad exterior parecía ser un enfoque lógico. Desafortunadamente, algunos comandos de programa desactivan el mecanismo de interrupción mientras se ejecutan, es decir. existe la posibilidad de que la señal no llegue a ninguna parte. Por estos motivos, el pluviómetro cuenta con su propio microcontrolador Picaxe 08M.

El uso de un chip separado permite usarlo para crear un retraso de 1 hora lo suficientemente preciso como para contar cubos por hora.

Calibración

Picaxe 18m2 recibe el número actual de cubos por hora y lo muestra en la pantalla y en el ordenador.

Como punto de partida, utilizo los siguientes datos:
Diámetro del embudo 120 mm y área del contenedor 11.311 mm2
1 mm de lluvia = 11.311 mm3 o 11,3 ml.
Cada cubo es de 5,65 ml. Por tanto, 2 cubos 2 x 5,65 = 11,3 ml (o 1 mm) de precipitación. Un cubo = 0,5 mm de precipitación.

Para comprobarlo, compré un vaso de lluvia barato.

El circuito anterior y el circuito del sensor 08M Picaxe utilizan la misma topología de PCB. El dispositivo funciona con una batería de 12V 7Ah a través de un estabilizador 7805.
Utilicé el kit RF Connect para comunicación inalámbrica de 433 MHz. El kit contiene un par de controladores PIC especialmente programados. Durante las pruebas, el conjunto de módulos inalámbricos demostró ser bastante fiable.

El PP está equipado con Picaxe 08M y 18m2. Cada uno de ellos tiene su propio conector de programación. Hay conectores separados, cada uno con su propio +5 V, dedicados a cada sensor, con excepción de temperatura y humedad.

Tenga en cuenta que dibujé el dibujo en Paintshop Pro, por lo que no puedo garantizar la precisión del espaciado de los pines.

Unidad interior

La unidad interior utiliza Picaxe de 18 m2, sensor de presión y pantalla LCD. También hay un estabilizador de voltaje de 5V.

Medidor de presion

Después de varios intentos fallidos, me decidí por el MPX4115A. Aunque otros sensores tienen un rango de medición ligeramente mayor, su acceso es difícil. Además, otros sensores suelen funcionar con 3,3 V y requieren un estabilizador adicional. El MPX4115A produce un voltaje analógico de 3,79 a 4,25 V proporcional a la presión. Aunque esta resolución es casi suficiente para detectar un cambio de presión de 1 mbar, después de una discusión en el foro, agregué el ADC MCP3422. Puede ejecutarse en modo de 16 bits (o superior) en comparación con el modo de 10 bits de Picaxe. El MCP3422 se puede conectar (como en nuestro circuito) en modo diferencial a la entrada analógica del sensor. La principal ventaja es que esto permite ajustar la salida del sensor, compensando así fácilmente los errores del MPX4115A y proporcionando una forma sencilla de calibrar el sensor.

El MPC3422 en realidad tiene dos entradas diferenciales, pero como una no está en uso, están cerradas. La salida del MCP3422 tiene una interfaz I2C y se conecta a los pines SDA y SCL en el Picaxe de 18 m2: pines B.1 y B.4 respectivamente. Desde mi punto de vista, el único inconveniente de usar el MCP3422 es que es un dispositivo pequeño de montaje en superficie, pero lo soldé al adaptador. Además de la interfaz I2C, el MCP3422 18m2 simplemente procesa los datos entrantes del receptor inalámbrico de 433MHz, muestra los datos y los transmite a la PC. Para evitar errores de la unidad interior cuando la computadora no está funcionando, no hay respuesta de la PC. La unidad interior transmite los datos y continúa. Transmite datos a intervalos de aproximadamente 2 segundos para que los datos perdidos se compensen rápidamente la próxima vez. Utilicé los puertos de 18m2 no utilizados para conectar el botón del panel frontal. El interruptor S1 (entrada C.5) se utiliza para encender la luz de fondo de la pantalla LCD. El interruptor S2 (entrada C.0) restablece el valor de presión (mbar) en la pantalla LCD. El interruptor S3 (entrada C.1) cambia la precipitación mostrada en la pantalla LCD entre el total de la hora anterior y la actual. Se deben mantener presionados los botones durante más de 1 segundo para que respondan.

Montaje de la unidad interior

Al igual que con la PCB de la unidad exterior, el diseño lo dibujé a mano usando Paintshop Pro, por lo que puede haber errores en las distancias.

La placa es un poco más grande de lo necesario para caber en las ranuras de la carcasa de aluminio.
Deliberadamente hice el conector de programación un poco "hacia adentro" desde el borde de la placa para evitar que toque la carcasa. El recorte para la pantalla LCD se perfora y se ajusta a las dimensiones exactas.

La foto muestra todo lo que ya está instalado en el estuche.

Los pines de la placa dificultan la instalación en la carcasa, por lo que tuve que desoldarlos y soldar la pantalla a la placa con cables.

Unidad externa - Código Picaxe

; ==================================================== === ================= ; Código principal 18M2 para la unidad exterior (transmisora) de la estación meteorológica Picaxe; Precisión decimal Rutinas de humedad y temperatura; derechos de autor, Peter H Anderson, Baltimore, MD, enero, "04; ; ==================================== =============== ================================= #Picaxe 18M2 Símbolo HValue = w0 Símbolo HighWord = w1 Símbolo LowWord = w2 Símbolo RH10 = w3 Símbolo HQuotient = b0 Símbolo HFract = b1 Símbolo X = b0 Símbolo aDig = b1 Símbolo TFactor = b2 Símbolo Tc = b3 Símbolo SignBit = b4 Símbolo TValue = w4 Símbolo TQuotient = b10 Símbolo TFract = b11 Símbolo TempC_100 = w6 Símbolo MagDir = w7 Símbolo MagDirLo = b14 Símbolo MagDirHi = b15 Símbolo WindSpeed ​​= w8 Símbolo WindSpeedLo = b16 Símbolo WindSpeedHi = b17 Símbolo ThisHour = b18 Símbolo LastHour = b19 Símbolo RainRequest = b20; Hardware Símbolo HumidRaw = B.7 Símbolo TempRaw = B.6 Símbolo DirRaw = B. 3 Símbolo Velocidad = B.0 hacer; Leer humedad Leer ADC10 HumidRaw, HValue; Obtener humedad (HValue) HighWord = 1613 ** HValue; calcular RH LowWord = 1613 * HValue RH10 = LowWord / 1024 LowWord = Highword * 64 RH10 = RH10 + LowWord RH10 = RH10 - 258 pausa 100 Leer temperatura Readtemp12 TempRaw, TValue; Obtener temperatura SignBit = TValue / 256/128 si SignBit = 0 entonces positivo; Es negativo, por lo que TValue = TValue ^ $ffff + 1; toma dos comp positivo: TempC_100 = TValue * 6; TC = valor * 0.0625 TValue = TValue * 25/100 TempC_100 = TempC_100 + TValue TQuotient = TempC_100/100 TFract = TempC_100 % 100/10 X = TQuotient / 10; Calcular el factor de corrección de temperatura para la humedad si SignBit = 0 entonces SignBit = " " else SignBit = "-" endif si SignBit = "-" entonces X = 4 - X else X = X + 4 endif GoSub TempCorrection; compensar RH HQuotient = RH10 / 10; calcular RH Quotient y... HFract = RH10 % 10; ...lugar decimal. si HQuotient > 99 entonces; sobre rango HQuotient = 99 HFract = 9 endif si HQuotient > 127 luego; Bajo rango HQuotient = 0 HFract = 0 endif; Leer el codificador magnético AS540 para la dirección del viento readadc10 DirRaw, MagDir; Leer desde la pausa del rumbo magnético AS5040 100; Leer las rpm del contador de velocidad del viento Velocidad, 1000, Velocidad del viento; Cada 30 ciclos ( aproximadamente 1 minuto), solicite datos del pluviómetro de 08M inc RainRequest si RainRequest >= 30 entonces alto C.1 serin, C.0, N2400, ("r"), LastHour, ThisHour; Contadores de lluvia bajos C.1 RainRequest = 0 endif ; Envía datos a la unidad interior en bloques de 8 bytes; El primer grupo no necesita calibración, por lo que los cálculos se realizan aquí primero. ; El segundo grupo necesitará "ajustes", que se realizan más fácilmente en el extremo interior. serout C.2, N2400, ("t", SignBit, TQuotient, TFract, HQuotient, HFract, "A", "B") pausa 100 serout C.2, N2400, ("m", MagDirHi, MagDirLo, WindSpeedHi, WindSpeedLo, LastHour, ThisHour, "C") bucle TempCorrection: Búsqueda X, (87, 89, 91, 93, 95, 97, 99, 101, 103, 106, 108, 110, 113, 116, 119, 122, 126 ), TFactor " -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 si TFactor< 100 then aDig = TFactor / 10 RH10 = RH10 * aDig / 10 TFactor = TFactor % 10 aDig = TFactor RH10 = RH10 * aDig / 100 + RH10 else TFactor = TFactor % 100 aDig = TFactor / 10 RH10 = RH10 * aDig / 10 + RH10 TFactor = TFactor % 10 aDig = TFactor RH10 = RH10 * aDig / 100 + RH10 endif return

Memoria utilizada = 295 bytes de 2048

Medidor de precipitaciones - código 08M

#picaxe 08M Símbolo esta hora = b2; Almacene el recuento actual del sensor en b2 Símbolo Última Hora = b3; Guarde el recuento de horas anteriores en b3; Definiciones de hardware Símbolo DataRequest = pin3 Símbolo BucketSensor = pin4 setint %00010000, %00010000; pin4 es el pin principal de interrupción: para w0 = 1 a 60000; Bucle para pausa de 1 hora 60 next LastHour = ThisHour Actualizar el recuento de la última hora con ThisHour = 0; hora actual y restablecer la hora actual ir a principal; Realizar la interrupción de la siguiente hora: setint %00010000, %00010000; Restablezca la interrupción si DataRequest = 1 entonces; ¿La interrupción fue del 18M2? serout 2, N2400, ("r", Última Hora, Esta Hora); Sí, envíe el recuento de la hora anterior y el recuento actual. haga: bucle while DataRequest = 1; espere hasta que 18M2 deje de solicitar antes de continuar endif si BucketSensor = 1 entonces; ¿La interrupción fue del sensor de lluvia? Inc. ThisHour; Sí, entonces incremente cuenta de punta de cubo hacer: bucle mientras BucketSensor = 1; asegúrese de que la bandera haya borrado el sensor antes de continuar endif return

Unidad interior - código Picaxe

;=================================================== == ============================ ; Programa principal interior (receptor). ; ; Recibe datos de la unidad exterior, los muestra en la pantalla LCD y pasa los datos a la PC; También mide la presión barométrica (gracias a "matherp") ;====================================== ======================================== #PICAXE 18M2 ; Definiciones de variables (b2 a b5 se reutilizan para el código mBar cuando estén disponibles) símbolo Cociente = b2 símbolo Fracta = b3 símbolo SignBit = b4 símbolo Humedad = b5 símbolo HFract = b14 símbolo Dir = w5 símbolo DirLo = b10 símbolo DirHi = b11 símbolo Velocidad = w3 símbolo SpeedLo = b6 símbolo SpeedHi = b7 símbolo RainCountThisHour = b12 símbolo RainCountLastHour = b13 símbolo LCDRainWhole = b21 símbolo LCDRainFract = b22 símbolo LastOrThis = b23; Símbolo de variables ADC MCP3422 mb900 = 17429; Lectura de ADC para 900 Mbar, luego agregue 72,288 cuentas por mbar símbolo adj0 = 72 símbolo mBarADCValue = w0 símbolo adj1 = b4; usado para sumar 1 conteo cada 4 mbar símbolo adj2 = b5; se utiliza para sumar 1 cuenta cada símbolo de 24 mbar mBar = w4; Símbolo de variables de limpieza lastmbar = w8 ; Recuerde la lectura anterior de mBar símbolo RiseFall = b18; Indicador de subida o bajada de presión (flecha arriba o flecha abajo) símbolo activo = b19 ; Telltale muestra actividad en el símbolo de la pantalla LCD LCD_Status = b20; ¿La retroiluminación de la pantalla LCD está encendida o apagada (0 o 1)? ; Símbolo de definiciones de hardware Inalámbrico = C.7; Conexión entrante desde símbolo de receptor/decodificador inalámbrico Computadora = C.2; Conexión serie saliente al ordenador símbolo LCD = pinC.5 ; Botón del panel frontal para dejar en blanco/despejar el símbolo de retroiluminación de la pantalla LCD ClearRiseFall = pinC.0; Botón del panel frontal para borrar el símbolo indicador de "subida/bajada" de presión LastOrThisSwitch = pinC.1; Botón del panel frontal para mostrar la lluvia actual o de la hora anterior Init: hsersetup B9600_4, %10000; use LCD Pin 1, sin hserin; ByVac 20x4 IASI-2 Serial LCD hi2csetup i2cmaster, %11010000, i2cfast, i2cbyte; inicialice I2C para MCP3422 Chip ADC.hi2cout (%00011000); configura MCP3422 para conversión continua de 16 bits pausa 500 hserout 0, (13): pausa 100; inicializa LCD hserout 0, (13): pausa 100 hserout 0, (13): pausa 100 pausa 500 hserout 0, ("ac50", 13) hserout 0, ("ad", 32, 32, 32, 32, 49, 42, 36, 32, 13); Definir carácter de flecha hacia abajo (char 10) hserout 0, (" ac1", 13) ; Borrar pausa de visualización 50 hserout 0, ("acc", 13) ; Ocultar cursor hserout 0, ("ac81", 13, "ad", $df, "C", 13) ; Imprimir los encabezados hserout 0, ("ac88", 13, "admBar", 13) hserout 0, ("ac8e", 13, "adRH %", 13) hserout 0, ("acd5", 13, "ad", "dir" , 13) ; Imprimir zapatas hserout 0, ("acdc", 13, "ad", "mph", 13) ; hserout 0, ("ace3", 13, "ad", "mm", 13) lastmbar = 0 ; Inicializar variables LastOrThis = "c" ;========================================== ============== =================================== ; Bucle principal;================================================= ============================= ====================== ====== principal: ; Compruebe si se presiona un interruptor del panel frontal. El mecanismo de interrupción de Picaxe es; casi permanentemente deshabilitado debido a la gran cantidad de comandos serin y serout; por lo que es más necesario rociar el programa con "interruptores gosub" para verificar el estado del interruptor; eficaz que interrumpe. interruptores gosub; Obtenga el primer grupo de valores de la unidad exterior mediante enlace de radio de 433MHz. serin Wireless, N2400, ("t"), SignBit, Cociente, Fracta, Humedad, HFract, b15, b15; Flash "revelador" en la pantalla LCD para indicar actividad y "serin" exitosa desde la conexión inalámbrica. gosub delator; Mostrar el primer grupo en la pantalla LCD hserout 0, ("acc0", 13) hserout 0, ("ad", SignBit, #Quotient, ".", #Fract, " ", 13) hserout 0, ("acce", 13) hserout 0, ("ad", #Humidity,".", #HFract, " ", 13) interruptores gosub; Enviar el primer grupo al puerto COM de la computadora; Cada grupo tiene un identificador de inicio, datos y un identificador de fin: ; Inicio = "xS", Fin es "xE", por ejemplo, el inicio del viento es WS, el final del viento es WE; Varios datos están separados por un solo carácter de espacio. computadora serout, N2400, ("TS", SignBit, #Quotient", ", #Fract, "TE"); Computadora de temperatura, N2400, ("HS", #Humidity, " ", #HFract, "HE"); Humedad; Compruebe los interruptores nuevamente y a intervalos regulares durante todo el programa. interruptores gosub; Obtenga el segundo grupo de valores del enlace de radio de la unidad exterior. serin Wireless, N2400, ("m"), DirHi, DirLo, SpeedHi, SpeedLo, RainCountLastHour, RainCountThisHour, b15 gosub revelador Velocidad = Velocidad * 300/448; Conversión estimada de pulsos/seg a mph Dir = Dir * 64/182; Convertir 0-1023 a 0-359 grados; Para preservar la precisión, el pluviómetro debe calibrarse ajustando el ; topes mecánicos en la cubeta basculante para que 1 vertedera reciba 0,5 mm de lluvia. si LastOrThis = "c" entonces; Decida si desea mostrar la hora anterior LCDRainWhole = RainCountThisHour / 2; lluvia o la hora actual. LCDRainFract = RainCountThisHour * 5 // 10 else LCDRainWhole = RainCountLastHour / 2; LCDRainFract = RainCountLastHour * 5 // 10 endif; Envíe el segundo grupo a la pantalla LCD hserout 0, ("ac95", 13) hserout 0, ("ad", #Dir, " ", 13) hserout 0, ("ac9c", 13) hserout 0, ("ad", # Velocidad, " ", 13) hserout 0, ("aca1", 13) hserout 0, ("ad", LastOrThis, " ", #LCDRainWhole, ".", #LCDRainFract, " ", 13); Enviar el segundo grupo al puerto COM de la computadora serout Computer, N2400, ("WS", #Dir," ", #Speed, "WE"); Computadora de viento, N2400, ("RS", #RainCountLastHour", ", #RainCountThisHour, "RE"); Interruptores de lluvia gosub; Gracias a "matherp" en el foro de Picaxe por el bucle del código mbar:; Medición de la presión atmosférica con un MPX4115A; Conversión de analógico a digital utilizando un MCP3422; Salida MPX a V+, 2. 5V a V-; ADC en modo de 16 bits hi2cin (b1,b0,b2); Lea la lectura del ADC y el byte de estado de MCP3422 adj1 = 0 adj2 = 0 w1 = mb900 mbar = 900 do while mBarADCValue > w1; mBarADCValue = w0 = b1:b0 inc mbar w1 = w1 + adj0 inc adj1 si adj1 = 4 entonces inc adj2 w1 = w1 + 1 adj1 = 0 endif si adj2 = 6 entonces w1 = w1 + 1 adj2 = 0 endif bucle gosub cambia gosub indicador; Enviar presión al puerto COM de la computadora serout Computadora, N2400, ("PS:", #mbar, "PE"); Inicialice la lectura de presión anterior (lastmbar) si aún no está configurada si lastmbar = 0 entonces lastmbar = mbar RiseFall = " " endif ; Muestra una flecha hacia arriba o hacia abajo si la presión ha cambiado si mbar > lastmbar y luego RiseFall = "^"; ^ lastmbar = mbar endif si mbar< lastmbar then RiseFall = 10 ; Custom LCD character. Down arrow lastmbar = mbar endif hserout 0, ("acc7", 13) hserout 0, ("ad", RiseFall, #mbar, " ",13) gosub telltale goto main ; Check if one of the front panel buttons is pressed. switches: if LCD = 1 then ; LCD Backlight on/off Button is pressed if LCD_Status = 0 then ; Backlight is on so... hserout 0, ("ab0", 13) ; Turn it off LCD_Status = 1 else hserout 0, ("ab1", 13) ; Else turn it on. LCD_Status = 0 endif do: loop while LCD = 1 ; Don"t return while button is pressed endif if ClearRiseFall = 1 then ; Pressure rise/fall button is pressed RiseFall = " " ; Clear indicator and... hserout 0, ("acc7", 13) ; ... update display. hserout 0, ("ad", RiseFall, #mbar, " ",13) do: loop while ClearRiseFall = 1 endif if LastOrThisSwitch = 1 then ; Rain Previous Hour / Last Hour button. if LastOrThis = "c" then LastOrThis = "p" LCDRainWhole = RainCountLastHour / 2 ; Recalculate values and re-display to LCDRainFract = RainCountLastHour * 5 // 10 ; give visual confirmation of button-press else LastorThis = "c" LCDRainWhole = RainCountThisHour / 2 ; LCDRainFract = RainCountThisHour * 5 // 10 endif hserout 0, ("aca1", 13) hserout 0, ("ad", LastOrThis, " ", #LCDRainWhole, ".", #LCDRainFract, " ", 13) do: loop while LastOrThisSwitch = 1 endif return ; Flash "tell-tale" on LCD display to show activity telltale: if active = "*" then active = " " else active = "*" endif hserout 0, ("ac80", 13, "ad", active, 13) return

Memoria utilizada = 764 bytes de 2048

Software para PC

El software que se ejecuta en la PC fue escrito usando Borland Delphi 7. Es bastante primitivo en su forma actual, pero al menos muestra la conexión de Picaxe a la computadora.

Se pueden seleccionar gráficos para que se muestren en períodos de 1 hora o 12 horas. Los gráficos se pueden desplazar hacia delante y hacia atrás con el ratón. Se pueden salvar. Para hacer esto, debe hacer clic derecho sobre ellos y especificar el nombre y el valor del archivo. Puede configurar un conjunto limitado de datos APRS que se escriben una vez por minuto por línea del archivo APRS.TXT y que se guardan en la misma carpeta que Weather.exe. Tenga en cuenta que la temperatura está en grados Fahrenheit y la precipitación en 1/100 por pulgada.

Lista de radioelementos

Designación Tipo Denominación Cantidad NotaComerciomi bloc de notas
Sensor de temperatura y humedad relativa
sensor de temperatura

DS18B20

1 al bloc de notas
Sensor de humedadHIH-36101 al bloc de notas
Resistor

4,7 kOhmios

1 al bloc de notas
Medidor de velocidad y dirección del viento.
fototransistorIR1 al bloc de notas
Diodo emisor de luzIR1 al bloc de notas
Resistor

220 ohmios

1 al bloc de notas
Resistor

4,7 kOhmios

1 al bloc de notas
Codificador magnético1 al bloc de notas
Capacitor electrolítico10 µF4 al bloc de notas
Condensador100 nF1 al bloc de notas
Resistor

4,7 kOhmios

1 al bloc de notas
Resistor

10 kOhmios

1 al bloc de notas
medidor de precipitaciones
MK PICAXE

PICAXE-08M

1 al bloc de notas
Diodo rectificador

1N4148

2 al bloc de notas
Condensador100 nF1 al bloc de notas
Resistor

4,7 kOhmios

1 al bloc de notas
Resistor

10 kOhmios

4 al bloc de notas
Resistor

22 kOhmios

1 al bloc de notas
Resistor

220 ohmios

2 al bloc de notas
Diodo emisor de luzIR1