Tabla de contenido:

JAWS: una estación meteorológica más: 6 pasos
JAWS: una estación meteorológica más: 6 pasos

Video: JAWS: una estación meteorológica más: 6 pasos

Video: JAWS: una estación meteorológica más: 6 pasos
Video: COMO VENCER: SHARKNADO 2024, Noviembre
Anonim
JAWS: Preparando nuestras cosas
JAWS: Preparando nuestras cosas
JAWS: Preparando nuestras cosas
JAWS: Preparando nuestras cosas
JAWS: Preparando nuestras cosas
JAWS: Preparando nuestras cosas

Es bastante sencillo hacer tales JAWS.

Obtiene sus sensores, los junta en tableros y comienza a usar las bibliotecas que vienen con los sensores.

Comencemos con la configuración del programa.

Como hablo holandés (hablante nativo), todos los datos y muchas de las variables que utilizo están en holandés. Así que ahora tienes la oportunidad de aprender otro idioma …

¿Qué queremos de JAWS?

Fácil: queremos ver una pantalla que nos muestre la hora real, la fecha, las efemérides (amanecer, atardecer, duración del día y mediodía astronómico).

Además de eso, sería bueno ver la temperatura interior y exterior, la humedad relativa y el punto de rocío, y la presión del aire.

Para facilitar las cosas, utilizo grados centígrados para la temperatura y hPa (= mBar) para la presión. Así que nadie tiene que volver a calcular desde Fahrenheit o libras por estadios cuadrados …

En este momento, solo estos datos están disponibles …

En el futuro, agregaré la velocidad del aire, la dirección del viento y la precipitación.

La idea es que tendré una cabaña para el clima exterior y todos los datos se enviarán a 2,4 GHz a la unidad interior.

Paso 3: JAWS: Software

JAWS: Software
JAWS: Software

Para acceder a nuestro software, la mayoría se puede encontrar con las bibliotecas existentes.

En JAWS utilizo los siguientes:

  1. SPI.h: La biblioteca original de Arduino para protocolo de 4 hilos. Ella se usa para el escudo TFT
  2. Adafruit_GFX.hy MCUfriend_kbv.h: ambos utilizados para los gráficos y la pantalla. Esto hace que sea muy fácil escribir texto, dibujar líneas y cuadros en la pantalla TFT.
  3. dht.h: para nuestros DHT: esta biblioteca se puede utilizar para DHT11 (el azul) y DHT22.
  4. Wire.h: la biblioteca Arduino para facilitar la comunicación en serie. Se utiliza para el reloj y la tarjeta SD.
  5. SD.h: De nuevo un original Arduino, para escribir y leer desde la tarjeta SD.
  6. TimeLord.h: este lo utilizo para mantener el tiempo, calcular la puesta o la salida del sol desde cualquier posición geográfica. También configuró el reloj para DST (verano o invierno).

Empecemos por el reloj.

Al leer un reloj, necesita las variables que obtiene de los diferentes registros dentro del módulo de reloj. Cuando los hacemos más que simples números, podemos usar las siguientes líneas:

const int DS1307 = 0x68; const char * days = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};

const char * meses = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 "," 12 "};

norte

Con TimeLord, obtenemos esto como datos, para mi lugar: (Lokeren, Bélgica)

TimeLord Lokeren; configurándolo Lokeren. Position (51.096, 3.99); longitud y latitud

Lokeren. TimeZone (+ 1 * 60); GMT +1 = +1 x 60 minutos

Lokeren. DstRules (3, 4, 10, 4, 60); DST desde el 3er mes, la 4ta semana al 10mo mes, la 4ta semana, + 60 minutos

int jaar = año +2000;

byte sunRise = {0, 0, 12, monthday, month, year}; empezar a calcular todos los días a partir de las 00 horas

byte sunSet = {0, 0, 12, monthday, month, year}; lo mismo que arriba

byte maan = {0, 0, 12, mes día, mes, año}; lo mismo que arriba

fase de flotación;

A partir de aquí, se realizan los cálculos.

fase = Lokeren. MoonPhase (maan);

Lokeren. SunRise (amanecer);

Lokeren. SunSet (sunSet);

Lokeren. DST (amanecer);

Lokeren. DST (puesta de sol);

int ZonOpUur = amanecer [tl_hora];

int ZonOpMin = amanecer [tl_minuto];

int ZonOnUur = sunSet [tl_hour];

int ZonOnMin = sunSet [tl_minute];

Este es el ejemplo de cómo se calculan las cosas en TimeLord. Con esta biblioteca, obtienes horas (bastante) precisas de la puesta y la salida del sol.

Al final, pondré todo el programa con este Instructable. Es bastante sencillo.

Paso 4: Más software …

Más software …
Más software …
Más software …
Más software …

Más sobre el software …

Tenemos tres partes importantes en el software.

1) Obtenemos algunos datos sin procesar de nuestros diferentes sensores: de nuestro reloj, DHT y BMP180. Ésa es nuestra aportación.

2) Necesitamos traducir los datos a (1 y 0) a algo que tenga sentido. Para ello, utilizamos nuestras bibliotecas y variables.

3) Queremos leer y almacenar nuestros datos. Esa es nuestra salida. Para uso inmediato, tenemos nuestro LCD-TFT, para uso posterior, tenemos nuestros datos guardados en nuestra tarjeta SD.

En nuestro loop (), obtenemos muchos "GOTO's": saltamos a las diferentes bibliotecas. Obtenemos nuestros datos de uno de los sensores, obtenemos los datos y los almacenamos en (principalmente) una variable de datos flotante. Elegimos nuestros nombres de variables sabiamente, no con x o y, sino con nombres como "tempOutside" o "presión" o cosas así. Para hacerlos más legibles. Bien, esto lo hace un poco más pesado en el uso de variables y consume más memoria.

Aquí viene el truco: al hacer que nuestras variables sean visibles en la pantalla, simplemente las coloca en la posición correcta.

Las dos bibliotecas utilizadas aquí, Adafruit_GFX.hy MCUfriend_kbv.h tienen un buen conjunto de trabajo para usar colores, fuentes y la capacidad de dibujar líneas. En una primera instancia, usé una pantalla 12864 con estas bibliotecas, luego cambié eso en la pantalla tft. Todo lo que tenía que hacer era colocar cuadros, rectángulos y líneas, y asegurarme de que los datos salieran en el lugar correcto. Para eso, puede usar setCursor y tft. Write como comando. Fácil lo hace. Los colores también se pueden establecer como variables, hay muchos ejemplos en esas bibliotecas de cómo elegirlos.

Para escribir en la tarjeta SD, también necesitamos algunos trucos simples.

Por ejemplo, leemos nuestros datos del reloj como horas, minutos y segundos separados. Las temperaturas son la temperatura DHT y la temperatura DHTT, para diferenciar entre interior y exterior.

Cuando queremos ponerlos en la tarjeta SD, usamos una cadena: comenzamos cada ciclo como una cadena vacía:

cadena de variables = ""; Entonces podemos llenarlo con todos nuestros datos:

cadena de variables = cadena de variables + horas + ":" + minutos + ":" + segundos. Esto le da a la cadena como 12:00:00.

Dado que lo escribimos como un archivo TXT (ver SD.h en Arduino.cc), para las siguientes variables agregamos una pestaña, por lo que es más fácil importarlo en Excel.

Entonces llegamos a: cadena de variables = cadena de variables + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.

Etcétera.

Paso 5: algunas capturas de pantalla …

Algunas capturas de pantalla …
Algunas capturas de pantalla …
Algunas capturas de pantalla …
Algunas capturas de pantalla …
Algunas capturas de pantalla …
Algunas capturas de pantalla …

Para asegurarnos de no "sobrecargar" nuestros conjuntos de datos, escribí datos solo una vez cada 10 minutos. Dándonos 144 entradas por día. No está mal, creo.

Y, por supuesto, puedes seguir procesando esos datos: puedes hacer promedios, puedes buscar máximos y mínimos, puedes comparar con años anteriores …

Las oficinas meteorológicas suelen hacer promedios de día y de noche para las temperaturas: el día comienza a las 8 a. M. Y termina a las 8 p. M.

Para viento, presión y precipitación, los promedios se toman desde la medianoche hasta la medianoche.

Paso 6: ¿Terminaste?

¿Finalizado?
¿Finalizado?
¿Finalizado?
¿Finalizado?

En realidad no … Como dije, me gustaría que finalmente el sensor de velocidad y dirección del viento funcione con el resto de JAWS.

La pequeña construcción que hice tiene unos 4 m de altura. El meteorólogo obtiene la velocidad del viento desde 10 m de altura. Un poco demasiado alto para mí …

¡Espero que hayas disfrutado leyendo esto!

Adafruit-GFX se explica aquí:

MCUFRIEND_kbv.h se encuentra aquí:

Más sobre BMP 120 (igual que BMP085):

Acerca de DHT22:

Recomendado: