Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

$ 10 Estação meteorológica portátil Arduino (AWS)

Componentes e suprimentos

Arduino Nano R3
× 1
Sensor de temperatura DHT22
× 1
bmp180
× 1
Adafruit LCD padrão - 16x2 branco em azul
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Recentemente, minha faculdade teve uma pequena exposição de ciências. Então, fui solicitado pelo meu professor para apresentar um projeto na faculdade para ensinar eletrônica a jovens alunos, então eu tinha basicamente dois dias para fazer alguma coisa.

Como as condições climáticas aqui variam muito e recentemente a temperatura está em torno de 34-40 graus Celsius. Resolvi então fazer uma estação meteorológica.

Então, o que uma estação meteorológica faz?

Uma estação meteorológica é um dispositivo que coleta dados relacionados ao clima e ao meio ambiente usando muitos sensores diferentes

Sensores como
  • Vento
  • Umidade
  • chuva
  • Temperatura
  • Pressão
  • Altitude

O objetivo é fazer uma estação meteorológica portátil

Recursos que deveria ter
  • Temperatura
  • Umidade
  • Pressão
  • Altitude





Etapa 1:Ingredientes:hora de comprar coisas


Então aqui está o que precisamos para o projeto

Na verdade, comecei o projeto no My UNO, mas decidi mudar para uma solução compacta.

Eu tinha o nano comigo naquele momento então tive que ir com ele, adoraria usar o micro, porque é o menor.

De qualquer forma, deixando essas coisas, falando sobre orçamento e peças, aqui está a lista.
  • Sensor DHT22 de temperatura e umidade -> US $ 3,00
  • sensor de pressão BMP180 (BMP280 é mais barato, mas caro na minha localidade)> $ 2,00
  • Arduino Nano> $ 1,89
  • Solda
  • Display LCD com driver I2C> $ 3,0
  • Veroboard
  • Cabeçalho feminino

Para finalizar a ferramenta, você precisará
  • Ferro de soldar
  • Alicate de bico
  • fios

E também algum tempo





Etapa 2:Temperatura e Umidade - DHT22


A medição da temperatura pode ser feita usando diferentes sensores.

Os mais populares são DHT22, DHT11, SHT1x

Então, basicamente, vamos entender como esse sensor é diferente um do outro e por que usei o DHT22 em primeiro lugar.

Sinal digital calibrado de saída AM2302. Ele aplica uma técnica exclusiva de coleta de sinal digital e tecnologia de detecção de umidade, garantindo sua confiabilidade e estabilidade. Seus elementos sensores são conectados a um computador de chip único de 8 bits.

Todo sensor deste modelo é compensado por temperatura e calibrado em câmara de calibração precisa e o coeficiente de calibração é salvo em tipo de programa na memória OTP, quando o sensor estiver detectando, ele irá citar coeficiente da memória. Tamanho pequeno e baixo consumo e distância de transmissão longa (100m) permitem que o AM2302 seja adequado em todos os tipos de ocasiões de aplicação severa. Embalado em uma única linha com quatro pinos, tornando a conexão muito conveniente.

Vamos ver alguns prós e contras dos três.

DHT11

Prós:Não é necessária solda. O mais barato entre os três. Obtenha uma saída estável rapidamente. Transmissão acima de 20m. Interferência forte.

Contras:Biblioteca! Sem opção de resolução. Erros:Temp +/- 2 ° C; Úmido +/- 5% UR. Faixa de medição inadequada (0-50 ° C). Aplicações:Jardinagem, Agricultura.

DHT22

Prós:Não é necessária solda. Adicionando alguns dólares ao DHT11 e faça um upgrade. Curva suave. O menor erro. Grande variedade. Transmissão acima de 20m. Interferência forte.

Contras : Pode ser mais sensível. Rastreamento lento da temperatura. Biblioteca necessária. Aplicações : Monitoramento Ambiental. SHT1x

Prós:Sem solda. Curva suave. Pequeno erro. Resposta rápida. Baixo consumo de energia. Suspensão automática. Estabilidade e consistência extraordinárias a longo prazo.

Contras:Duas interfaces digitais. Erro de umidade. Mesma faixa de medição com DHT11. Biblioteca necessária. Aplicações:Serviços pesados ​​e instalações de longa data. A seguir estão três opções relativamente baratas.

Conexão

Vcc para 5V ou 3,3V

Gnd para Gnd

Dados para o pino 2 do Arduino





Etapa 3:Barômetro e sensor de pressão - BMP180


O bmp180 é um sensor de pressão barométrica com interface I2C (“Wire”).

Os sensores de pressão barométrica medem a pressão absoluta do ar ao seu redor. Essa pressão varia com o clima e a altitude.

este módulo bmp180 veio com um regulador de 3,3 V 662k que eu explodi com alguma estupidez, então conectei um fio para contornar todo o VCC diretamente para o chip.

Observação:ao fazer isso, me restrinjo de usar apenas 3,3 V, pois o uso de tensões acima pode arruinar o dispositivo.

Outro modelo pode não ter o regulador de tensão 662k. portanto, verifique cuidadosamente.

Ok, voltando vamos conectar o sensor ao arduino.

O sensor se conecta ao barramento i2c do Arduino, que do nano e do Uno são

SDA ==> A4

SCL ==> A5

VCC ==> 3,3V

GND ==> GND

Vamos falar um pouco sobre a pressão e como a pressão mede a altitude e a temperatura.

A pressão atmosférica em qualquer posição não é constante. A complexa interação entre a rotação da Terra, a inclinação do eixo e muitos outros fatores resultam em áreas móveis de maior e menor pressão, que por sua vez causam as variações no clima que vemos todos os dias. Ao observar as mudanças na pressão, você pode prever mudanças de curto prazo no clima.

Por exemplo, a queda de pressão geralmente significa tempo chuvoso ou uma tempestade se aproximando (um sistema de baixa pressão está se aproximando). O aumento da pressão geralmente significa que o tempo claro está se aproximando (um sistema de alta pressão está se movendo).

A pressão atmosférica também varia com a altitude. A pressão absoluta no acampamento base Mt.everest (5.400) é menor do que Delhi (216)

Como a pressão Abosoluta é difícil de comparar diretamente as medições de pressão de um local para outro. Usamos a pressão relativa, que é a pressão ao nível do mar.

Medindo altitude

A pressão média da atmosfera ao nível do mar é 1013,25 hPa (ou mbar). Isso cai para zero à medida que você sobe em direção ao vácuo do espaço. Como a curva dessa queda é bem compreendida, você pode calcular a diferença de altitude entre duas medições de pressão (p e p0) usando esta equação:

alti =44330 * [1- (p / p0) ^ (1 / 5,255)]

Se você usar a pressão ao nível do mar (1013,25 hPa) como a pressão de linha de base (p0), a saída da equação será sua altitude atual acima do nível do mar.

Precauções

Dê um ar: Lembre-se de que o BMP180 precisa de acesso ao ar ambiente para medir sua pressão, portanto, não o coloque em uma caixa lacrada. Fornecer um pequeno orifício de ventilação deve ser adequado. Mas não muito ar :Por outro lado, a exposição ao ar ou vento em movimento rápido pode causar variações momentâneas de pressão que afetarão suas leituras. Proteja o dispositivo de fortes correntes de ar.

Mantenha a calma: Como uma leitura precisa da temperatura é necessária para medir a pressão, tente não expor o dispositivo a mudanças bruscas de temperatura e mantenha-o longe de peças quentes próximas e outras fontes de calor.

Mantenha-o seco :O BMP180 é sensível à umidade. Não o submerja nem deixe que entre em contato com água líquida.

Não o cegue: Surpreendentemente, o silício dentro do BMP180 é sensível à luz, que pode entrar no dispositivo pelo orifício na parte superior do chip. Para máxima precisão, proteja o chip da luz ambiente.





Etapa 4:fazendo o circuito


Então, começamos fazendo o cabeçalho para o nano. Na verdade, cortamos os cabeçalhos fêmeas e depois os arquivamos para que pareçam ter originalmente esse tamanho. Nós então os soldamos. em seguida, fizemos os cabeçalhos para o sensor DHT22

. ele precisava de uma resistência de 10k para ser conectado dos dados ao aterramento. então soldamos tudo. Quando chegou a hora do bmp180, adicionamos o conector de uma maneira semelhante. Usamos 3,3 V como alimentação. Conectamos todos os barramentos i2c.

Por último, adicionamos a tela que estamos usando i2c lcd, então usamos o mesmo barramento que usamos para o módulo bmp180.

( Há um quarto slot no qual eu queria adicionar o módulo rtc mais tarde para também operar o relógio na máquina)





Etapa 5:Tempo para o código


Espere ....................

Baixe as bibliotecas

bmp180

https://github.com/sparkfun/BMP180_Breakout_Arduin ...
BMP180_Breakout_Arduino_Library-master.zip
Biblioteca Dht22

https://github.com/adafruit/DHT-sensor-library

Para instalar uma biblioteca no arduino verifique este link

https://www.arduino.cc/en/Guide/Libraries

Usei o arduino 1.6.5 então o código funcionará para esta versão com certeza, também pode ser para superior se algum caso não funcionar use 1.6.5 como versão base.
  

#include #include #include #include "DHT.h" #include

SFE_BMP180 pressure;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Adicione o seu endereço aqui. # define Rs_pin 0 # define Rw_pin 1 # define En_pin 2 # define BACKLIGHT_PIN 3 # define D4_pin 4 # define D5_pin 5 # define D6_pin 6 # define D7_pin 7

#define DHTPIN 2 // o que digital pino ao qual estamos conectados

// Descomente o tipo que você está usando! // # define DHTTYPE DHT11 // DHT 11 # define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht (DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); float t1, t2;

void setup () {Serial.begin (9600); lcd.begin (16,2); // <<- nosso LCD é de 20x4, altere para o seu LCD se necessário // Luz de fundo do LCD ONlcd.setBacklightPin (BACKLIGHT_PIN, POSITIVE); lcd.setBacklight (HIGH); lcd.home (); // vá para casa em LCDlcd.print ("Estação meteorológica"); delay (5000); dht.begin (); pressure.begin (); } void loop () {status do caractere; duplo T, P, p0, a; status =pressure.startTemperature (); if (status! =0) {delay (status);

status =pressure.getTemperature (T); if (status! =0) {Serial.print ("1"); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Temperatura Baro:"); lcd.setCursor (0,1); lcd.print (T, 2); lcd.print ("deg C"); t1 =T; atraso (3000);

status =pressure.startPressure (3); if (status! =0) {// Aguarde a conclusão da medição:delay (status);

status =pressure.getPressure (P, T); if (status! =0) {lcd.clear (); lcd.setCursor (0,0); lcd.print ("pressão abslt:"); lcd.setCursor (0,1); lcd.print (P, 2); lcd.print ("mb"); atraso (3000);

p0 =pressure.sealevel (P, ALTITUDE); // estamos a 1655 metros (Boulder, CO)

a =pressure.altitude (P, p0); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Altitude:"); lcd.setCursor (0,1); lcd.print (a, 0); lcd.print ("metros"); atraso (3000); }}}} float h =dht.readHumidity (); // Lê a temperatura como Celsius (o padrão) float t =dht.readTemperature (); t2 =t; lcd.clear (); lcd.setCursor (0,0); // vai para o início da 2ª linha lcd.print ("Umidade:"); lcd.setCursor (0,1); lcd.print (h); lcd.print ("%"); atraso (3000); lcd.clear (); lcd.setCursor (0,0); // vai para o início da 2ª linha lcd.print ("DHT Tempurature:"); lcd.setCursor (0,1); lcd.print (t); lcd.print ("deg C"); atraso (3000); lcd.clear (); lcd.setCursor (0,0); // vai para o início da 2ª linha lcd.print ("Mean Tempurature:"); lcd.setCursor (0,1); lcd.print ((t1 + t2) / 2); lcd.print ("deg C"); atraso (3000);}

FSIULGKING9D7SD.ino


Código

  • Snippet de código # 1
Snippet de código # 1 Texto simples
 

#include #include #include #include "DHT.h" #include

SFE_BMP180 pressure;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Adicione seu endereço aqui. # define Rs_pin 0 # define Rw_pin 1 # define En_pin 2 # define BACKLIGHT_PIN 3 # define D4_pin 4 # define D5_pin 5 # define D6_pin 6 # define D7_pin 7

#define DHTPIN 2 // qual pino digital nós ' está conectado a

// Remova o comentário de qualquer tipo que estiver usando! // # define DHTTYPE DHT11 // DHT 11 # define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht (DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); flutuante t1, t2;

void setup () {Serial.begin (9600); lcd.begin (16,2); // <<- nosso LCD é de 20x4, altere para o seu LCD se necessário // Luz de fundo do LCD ONlcd.setBacklightPin (BACKLIGHT_PIN, POSITIVE); lcd.setBacklight (HIGH); lcd.home (); // vá para casa em LCDlcd.print ("Estação meteorológica"); delay (5000); dht.begin (); pressure.begin (); } void loop () {status do caractere; duplo T, P, p0, a; status =pressure.startTemperature (); if (status! =0) {delay (status);

status =pressure.getTemperature (T); if (status! =0) {Serial.print ("1"); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Temperatura Baro:"); lcd.setCursor (0,1); lcd.print (T, 2); lcd.print ("deg C"); t1 =T; atraso (3000);

status =pressure.startPressure (3); if (status! =0) {// Aguarde a conclusão da medição:delay (status);

status =pressure.getPressure (P, T); if (status! =0) {lcd.clear (); lcd.setCursor (0,0); lcd.print ("pressão abslt:"); lcd.setCursor (0,1); lcd.print (P, 2); lcd.print ("mb"); atraso (3000);

p0 =pressure.sealevel (P, ALTITUDE); // estamos a 1655 metros (Boulder, CO)

a =pressure.altitude (P, p0); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Altitude:"); lcd.setCursor (0,1); lcd.print (a, 0); lcd.print ("metros"); atraso (3000); }}}} float h =dht.readHumidity (); // Lê a temperatura como Celsius (o padrão) float t =dht.readTemperature (); t2 =t; lcd.clear (); lcd.setCursor (0,0); // vai para o início da 2ª linha lcd.print ("Umidade:"); lcd.setCursor (0,1); lcd.print (h); lcd.print ("%"); atraso (3000); lcd.clear (); lcd.setCursor (0,0); // vai para o início da 2ª linha lcd.print ("DHT Tempurature:"); lcd.setCursor (0,1); lcd.print (t); lcd.print ("deg C"); atraso (3000); lcd.clear (); lcd.setCursor (0,0); // vai para o início da 2ª linha lcd.print ("Mean Tempurature:"); lcd.setCursor (0,1); lcd.print ((t1 + t2) / 2); lcd.print ("deg C"); atraso (3000);}

Github
https://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.ziphttps://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.zip
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library

Esquemas


Processo de manufatura

  1. Estação meteorológica Raspberry Pi 2
  2. Estação meteorológica Raspberry Pi
  3. Estação meteorológica V 2.0
  4. Estação de comando modelo Rail Digital DCC Arduino e aplicativo gratuito
  5. 6-Shooter:Estação de Mistura de Bebidas Arduino
  6. Dados digitais Arduino
  7. Piano portátil de toque capacitivo
  8. Controlador de jogo Arduino
  9. Detector de alcance portátil
  10. Jogo Pixel Chaser