Índice:

JAWS: apenas outra estação meteorológica: 6 etapas
JAWS: apenas outra estação meteorológica: 6 etapas

Vídeo: JAWS: apenas outra estação meteorológica: 6 etapas

Vídeo: JAWS: apenas outra estação meteorológica: 6 etapas
Vídeo: AS MATÉRIAS NA ESCOLA CONFORME OS ANOS 2024, Novembro
Anonim
JAWS: Preparando nossas coisas
JAWS: Preparando nossas coisas
JAWS: Preparando nossas coisas
JAWS: Preparando nossas coisas
JAWS: Preparando nossas coisas
JAWS: Preparando nossas coisas

É muito simples fazer um JAWS.

Você pega seus sensores, os joga juntos em placas e começa a usar as bibliotecas que vêm com os sensores.

Vamos começar com a configuração do programa.

Como falo holandês (falante nativo), todos os dados e muitas das variáveis que utilizo estão em holandês. Agora você tem a chance de aprender outro idioma …

O que queremos do JAWS?

Fácil: queremos assistir a uma tela que nos mostre a hora real, a data, as efemérides (sol nascente, sol poente, duração do dia e meio-dia astronômico).

Além disso, seria bom ver a temperatura interna e externa, a umidade relativa, o ponto de orvalho e a pressão do ar.

Para facilitar as coisas, uso graus centígrados para temperatura e hPa (= mBar) para pressão. Então, ninguém precisa calcular de volta a partir de Fahrenheit ou libras por estádios quadrados …

No momento, apenas esses dados estão disponíveis …

No futuro, vou adicionar velocidade do ar, direção do vento e precipitação.

A ideia é que terei uma cabana meteorológica externa e todos os dados serão enviados em 2,4 GHz para a unidade interna.

Etapa 3: JAWS: Software

JAWS: Software
JAWS: Software

Para obter nosso software, a maioria pode ser encontrada com as bibliotecas existentes.

No JAWS eu uso os seguintes:

  1. SPI.h: A biblioteca original do Arduino para protocolo de 4 fios. Ela é usada para o escudo TFT
  2. Adafruit_GFX.h e MCUfriend_kbv.h: ambos usados para gráficos e tela. Isso torna muito fácil escrever texto, desenhar linhas e caixas na tela TFT.
  3. dht.h: para nossos DHTs: esta biblioteca pode ser usada para DHT11 (o azul) e DHT22.
  4. Wire.h: a biblioteca Arduino para facilitar a comunicação serial. É usado para o relógio e o cartão SD.
  5. SD.h: Novamente um original Arduino, para escrever e ler do cartão SD.
  6. TimeLord.h: este eu uso para manter o tempo, calcular o pôr do sol ou o nascer do sol a partir de qualquer posição geográfica. Também acerta o relógio para o horário de verão (verão ou inverno).

Vamos começar com o relógio.

Ao ler um relógio, você precisa das variáveis que obtém de diferentes registradores dentro do módulo de relógio. Quando os tornamos mais do que apenas números, podemos usar as seguintes linhas:

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

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

n

Com o TimeLord, obtemos isso como dados, para o meu local: (Lokeren, Bélgica)

TimeLord Lokeren; configurá-lo Lokeren. Position (51.096, 3,99); longitude e latitude

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

Lokeren. DstRules (3, 4, 10, 4, 60); DST do 3º mês, 4ª semana ao 10º mês, 4ª semana, + 60 minutos

int jaar = ano +2000;

byte sunRise = {0, 0, 12, dia do mês, mês, ano}; comece a calcular todos os dias a partir das 00 horas

byte sunSet = {0, 0, 12, dia do mês, mês, ano}; o mesmo que acima

byte maan = {0, 0, 12, dia do mês, mês, ano}; o mesmo que acima

fase de flutuação;

A partir daqui, os cálculos são feitos.

fase = Lokeren. MoonPhase (maan);

Lokeren. SunRise (sunRise);

Lokeren. SunSet (sunSet);

Lokeren. DST (sunRise);

Lokeren. DST (sunSet);

int ZonOpUur = sunRise [tl_hour];

int ZonOpMin = sunRise [tl_minute];

int ZonOnUur = sunSet [tl_hour];

int ZonOnMin = sunSet [tl_minute];

Este é o exemplo de como as coisas são calculadas no TimeLord. Com esta biblioteca, você obtém horas (bonitas) precisas do pôr do sol e do nascer do sol.

No final, colocarei todo o programa com este Instructable. É muito simples.

Etapa 4: Mais software …

Mais software …
Mais software …
Mais software …
Mais software …

Mais sobre o software …

Temos três grandes partes no software.

1) Obtemos alguns dados brutos de nossos diferentes sensores: de nosso relógio, DHTs e BMP180. Essa é a nossa opinião.

2) Precisamos traduzir os dados para (1 e 0) para algo que faça sentido. Para isso, usamos nossas bibliotecas e variáveis.

3) Queremos ler e armazenar nossos dados. Essa é a nossa saída. Para uso imediato, temos nosso LCD-TFT, para uso posterior, temos nossos dados salvos em nosso cartão SD.

Em nosso loop (), obtemos muitos "GOTOs": saltamos para as diferentes bibliotecas. Obtemos nossos dados de um dos sensores, obtemos os dados e os armazenamos em (principalmente) uma variável de dados flutuante. Escolhemos nossos nomes de variáveis sabiamente, não com x ou y, mas com nomes como "tempOutside" ou "pressão" ou coisas assim. Para torná-los mais legíveis. OK, isso torna um pouco mais pesado o uso de variáveis e mais consumo de memória.

Aí vem o truque: ao tornar nossas variáveis visíveis na tela, basta colocá-las na posição certa.

As duas bibliotecas usadas aqui, Adafruit_GFX.h e MCUfriend_kbv.h têm um bom conjunto de trabalho para usar cores, fontes e a capacidade de desenhar linhas. Em uma primeira instância, usei uma tela de 12864 com essas bibliotecas, depois mudei isso na tela tft. Tudo o que tive que fazer foi colocar caixas, retângulos e linhas, e ter certeza de que os dados saíram no lugar certo. Para isso, você pode usar setCursor e tft. Write como comando. Fácil. As cores também podem ser definidas como variáveis; há muitos exemplos nessas bibliotecas de como escolhê-las.

Para escrever no cartão SD, também precisamos de alguns truques simples.

Por exemplo, lemos nossos dados do relógio como horas, minutos e segundos separados. As temperaturas são DHT.temperature e DHTT.temperature, para diferenciar entre interior e exterior.

Quando queremos colocá-los no cartão SD, usamos uma string: iniciamos cada loop como uma string vazia:

variablestring = ""; Então, podemos preenchê-lo com todos os nossos dados:

cadeia variável = cadeia variável + horas + ":" + minutos + ":" + segundos. Isso dá a string como 12:00:00.

Como o escrevemos como um arquivo TXT (consulte o SD.h em Arduino.cc), para as próximas variáveis adicionamos uma guia, para que seja mais fácil importá-lo no Excel.

Então chegamos a: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.

E assim por diante.

Etapa 5: algumas capturas de tela …

Algumas capturas de tela …
Algumas capturas de tela …
Algumas capturas de tela …
Algumas capturas de tela …
Algumas capturas de tela …
Algumas capturas de tela …

Para ter certeza de não "sobrecarregar" nossos conjuntos de dados, escrevi dados apenas uma vez a cada 10 minutos. O que nos dá 144 entradas por dia. Nada mal, eu acho.

E, claro, você pode continuar a processar esses dados: você pode fazer médias, pode procurar máximos e mínimos, pode comparar com os anos anteriores …

Os escritórios atendidos geralmente fazem a média do dia e da noite, para as temperaturas: o dia começa às 8h e vai até as 20h.

Para vento, pressão e precipitação, as médias são tiradas da meia-noite à meia-noite.

Etapa 6: Concluído?

Finalizado?
Finalizado?
Finalizado?
Finalizado?

Na verdade, não … Como eu disse, gostaria de finalmente fazer o sensor de velocidade e direção do vento funcionar com o resto do JAWS.

A pequena construção que fiz tem cerca de 4m de altura. O meteorologista obtém a velocidade do vento de 10m de altura. Um pouco alto demais para mim …

Espero que você tenha gostado de ler isso!

Adafruit-GFX é explicado aqui:

MCUFRIEND_kbv.h pode ser encontrado aqui:

Mais sobre o BMP 120 (igual ao BMP085):

Sobre DHT22:

Recomendado: