Índice:

Estação meteorológica usando Arduino UNO: 7 etapas
Estação meteorológica usando Arduino UNO: 7 etapas

Vídeo: Estação meteorológica usando Arduino UNO: 7 etapas

Vídeo: Estação meteorológica usando Arduino UNO: 7 etapas
Vídeo: Mini estação metereológica - Curso de Arduino #55 2024, Novembro
Anonim
Estação meteorológica usando Arduino UNO
Estação meteorológica usando Arduino UNO

Criado por: Hazel Yang

Este projeto é uma estação meteorológica usando uma placa Arduino UNO para controlar o fluxo de dados, um sensor DHT22 para coletar os dados e uma tela OLED para mostrar os dados.

Etapa 1: Lista de Itens

Item da lista
Item da lista

1. Tela: OLED, visor SH1106 de 1,3 , cor branca I2C ---- PID: 18283

2. Sensor: Sensor Digital de Umidade e Temperatura DHT22 ---- PID: 7375

3. Conecta: Jumper Fios ---- PID: 10316 ou 10318 ou 10312 (depende do comprimento) ou você pode usar fio sólido 22 AWG ---- PID: 22490

Placa de ensaio ---- PID: 10686 ou 10698 ou 103142 (depende do tamanho)

4. Alimentação: Este cabo só pode ser conectado a uma porta USB do computador e o cabo também é usado para transferência de dados entre o IDE e a placa Arduino. CABO USB, A TO B, M / M, 0,5M (1,5FT) ---- PID: 29862

Ou você pode usar isto para alimentar a placa: 5V 2A AC / DC Adapter ---- PID: 10817.

Etapa 2: introdução relativa

Introdução Relativa
Introdução Relativa
Introdução Relativa
Introdução Relativa

Introdução da tela: display OLED de 1,3 branco

1. Você pode encontrar o documento que mostra a configuração básica e as descrições:

Introdução do Sensor: Sensor de Umidade e Temperatura DHT22 1. Você pode encontrar o documento que mostra as descrições:

Etapa 3: conectar o circuito

Conecte o circuito
Conecte o circuito

O sensor DHT22 envia dados seriais para o pino 2. Portanto, conecte o segundo pino da esquerda, o pino "SDA" deve ser conectado ao pino 2.

Para o display SSH1106, ele usa o pino analógico para transmitir. O circuito da tela será o pino "SCL" no "A5" do Arduino e o pino "SDA" no "A4" do Arduino. Enquanto os dados de posição do pixel estão sendo transmitidos continuamente, a função de exibição no programa apenas aciona o comando uma vez a cada vez que lê os dados do sensor.

Tanto o sensor quanto a tela podem usar 3,3 V para ligar o Arduino como uma entrada de alimentação CC. Para ligar, precisamos conectar os pinos "VCC" ao "3.3V" do Arduino. E os pinos "GND" podem ser simplesmente conectados ao pino "GND" na placa Arduino.

Use o cabo USB A para B, conecte o Arudino ao computador.

Etapa 4: Prepare-se para compilar

"u8glib" para a tela SSH1106 da Olikraus.

"Biblioteca de sensores DHT" para o sensor DHT22 da Adafruit. Você deve baixar as duas bibliotecas: Biblioteca de sensores DHT22:

U8glib:

E use “gerenciar biblioteca” no IDE para descompactá-los. Instruções online de gerenciamento de bibliotecas:

Etapa 5: Código de teste para porta serial do sensor DHT22

Coeficiente de teste para a porta serial do sensor DHT22 (que está dentro da biblioteca DHT22 >> exemplos):

(Você pode pular esta parte.)

É apenas para testar o sensor DHT22 que lê os dados normalmente

#incluir

#incluir

#incluir

#incluir

#incluir

# define DHTPIN 2

# define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.begin (9600);

Serial.println (F ("Teste DHT22!"));

dht.begin ();

}

void loop () {

// Aguarde alguns segundos entre as medições.

atraso (2000);

// A leitura da temperatura ou umidade leva cerca de 250 milissegundos!

// As leituras do sensor também podem ter até 2 segundos de idade (é um sensor muito lento)

float h = dht.readHumidity ();

// Lê a temperatura como Celsius (o padrão)

float t = dht.readTemperature ();

// Lê a temperatura como Fahrenheit (isFahrenheit = true)

float f = dht.readTemperature (true);

// Verifique se alguma leitura falhou e saia mais cedo (para tentar novamente).

if (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("Falha ao ler do sensor DHT!"));

Retorna;

}

// Calcula o índice de calor em Fahrenheit (o padrão)

float hif = dht.computeHeatIndex (f, h);

// Calcula o índice de calor em Celsius (isFahreheit = false)

float hic = dht.computeHeatIndex (t, h, false);

Serial.print (F ("Umidade:"));

Serial.print (h);

Serial.print (F ("% Temperatura:"));

Serial.print (t);

Serial.print (F ("° C"));

Serial.print (f);

Serial.print (F ("Índice de calor ° F:"));

Serial.print (hic);

Serial.print (F ("° C"));

Serial.print (hif);

Serial.println (F ("° F"));

}

// Após compilar o programa, clique em FERRAMENTAS >> MONITOR SERIAL para verificar os dados.

// Fim do programa de teste.

Etapa 6: Código para o Projeto

#incluir

#incluir

#incluir

#incluir

#incluir

# define DHTPIN 2

# define DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

Sensor DHT (DHTPIN, DHTTYPE);

void draw (void) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// Lê a temperatura como Celsius (o padrão)

float t = sensor.readTemperature ();

// Verifique se alguma leitura falhou e saia mais cedo (para tentar novamente).

if (isnan (h) || isnan (t)) {

u8g.print ("Erro.");

para(;;);

Retorna;

}

u8g.setPrintPos (4, 10);

u8g.print ("Temperatura (C):");

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Umidade (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

void setup (void) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

void loop (void) {

// loop de imagem

u8g.firstPage ();

Faz {

empate();

} while (u8g.nextPage ());

// reconstruir a imagem após algum atraso delay (2000);

}

// Fim do programa principal.

Etapa 7: Descrição

Descrição
Descrição

Em seguida, inicialize o circuito de pinos para a placa Arduino. Porque a biblioteca de sensores requer os dados para declarar o objeto.

E você pode testar os dados do sensor monitorando os dados de saída por meio do pino digital 2 usando a função chamada "Serial.print ()". Como a frequência de transmissão de dados é de aproximadamente 1 leitura a cada 2 segundos (que é 0,5 Hz), quando programado no IDE do Arduino, precisamos definir o atraso dentro da função de loop para mais de 2 segundos. Portanto, há um "atraso (2000)" dentro da função de loop. Isso garante que os dados sejam atualizados com frequência. Na função "desenhar", pegue os dados da porta de dados serial e coloque-os em números flutuantes usando as funções "readHumidity" e "readTemperature".

Imprima a umidade e a temperatura usando a função de impressão no arquivo "u8glib". Você pode ajustar a posição alterando o número na função "setPrintPos". A função de impressão pode mostrar diretamente o texto e os números.

Para configurar o hardware, dê à porta serial um atraso de 10 segundos. Em seguida, chame a função de início do sensor. De acordo com meu circuito, minha tela estava de cabeça para baixo. Então, também incluí uma função "setRot180" para girar a tela.

A função de loop da placa Arduino é a função principal. Ele continua chamando a função de desenho para exibir o texto e os dados sempre que o sensor é atualizado.

A tela fica assim:

Você pode desconectar o Arduino UNO do seu computador e ligá-lo usando um adaptador de energia 5 V CC conectado ao conector de energia de 2,1 mm. Ele armazena o programa em sua unidade e pode executá-lo continuamente novamente após ser ligado.

Recomendado: