» Eletrônicos » Arduino »Estação meteorológica doméstica baseada no Arduino

Estação meteorológica doméstica baseada no Arduino


Durante muito tempo, quis criar uma mini estação meteorológica, cansada de olhar pela janela para olhar para um termômetro atrás do vidro. Este dispositivo substituirá o higrômetro, barômetro e termômetro e também mostrará a hora atual. Neste post, mostrarei como montar rápida e facilmente uma pequena estação meteorológica baseada no Arduino. A base será o conselho Arduino O Nano pode usar outras placas - Arduino Uno, Arduino Pro mini). Receberemos dados de pressão atmosférica e temperatura do sensor BMP180 e umidade e temperatura externa do sensor DHT11. O relógio em tempo real do DS1302 indicará a hora atual. Todas as informações são exibidas em um visor LCD1602 de duas linhas.

O DHT11 transmite informações através de um único fio para um arduino. É alimentado por uma tensão de 5 V. Mede a umidade na faixa de 20 a 80%. Medidas de temperatura na faixa de 0 a 50sobreC.

Estação meteorológica doméstica baseada no Arduino

O sensor BMP180 mede a pressão atmosférica na faixa de 300-1100 hPa, a temperatura na faixa de -40 +85sobreC. A tensão de alimentação é de 3,3 V. É conectada através do protocolo de comunicação I2C.

O relógio em tempo real DS1302 é alimentado por 5 V e é conectado através do protocolo de comunicação I2C. Quando instaladas no slot apropriado, as baterias CR2032 suportam o relógio quando a energia principal é desligada.

O display LCD1602 é alimentado por uma tensão de 5 Volts e também é conectado através do protocolo de comunicação I2C.

Isto caseiro feito com base em placas e sensores prontos, para que possa ser repetido a qualquer amante iniciante que trabalhe com um ferro de soldar. Ao mesmo tempo, você pode obter o básico da programação do Arduino. Programei esta estação meteorológica no programa de programação visual FLPROG em 15 minutos. Não há necessidade de esboçar manualmente por horas, este programa ajuda os iniciantes (e não apenas) a aprender rapidamente o básico dos dispositivos de programação baseados na plataforma Arduino.

Quem está com preguiça de mexer no programa - um esboço (somente será necessário definir a hora atual do relógio):
#include 
#include "DHT_NEW.h"
#include 
#include 
#include 
BMP085 _bmp085 = BMP085 ();
long _bmp085P = 0;
long _bmp085T = 0;
long _bmp085A = 0;

LiquidCrystal_I2C _lcd1 (0x3f, 16, 2);
int _dispTempLength1 = 0;
_isNeedClearDisp1 booleano;

DHT _dht1;

iarduino_RTC _RTC1 (RTC_DS1302, 7, 5, 6);

_dht1LRT longo não assinado = 0UL;
_dht1Tti longo não assinado = 0UL;
int _disp1oldLength = 0;
_bmp0852Tti longo não assinado = 0UL;
String _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
configuração nula ()
{
Wire.begin ();
atraso (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, verdadeiro);
_RTC1.begin ();
_RTC1.period (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = millis ();
_dht1Tti = milis ();
}
loop vazio ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
if (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = millis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTemperature (& _ bmp085T);
}

// Taxa: 1
se (1) {
_dispTempLength1 = ((((((String ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (String ("*")))) + (((String ( "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (String ("*"))) + (((String (""))) + ((_floatToStringWitRaz (_dht1 umidade, 0))) + (String ("%"))))). length ();
if (_disp1oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 0);
_lcd1.print ((((((String ("T:"))) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1)))) + (String ("*"))))) + (((String ("P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (String ("*")))) + (((String (""))) + ((_floatToStringWitRaz ( _dht1.umidade, 0))) + (String ("%"))))));
} mais {
if (_disp1oldLength> 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (_isTimer (_dht1Tti, 2000)) {
if (_isTimer (_dht1LRT, (_dht1.getMinimumSamplingPeriod ()))) {
_dht1.readSensor ();
_dht1LRT = millis ();
_dht1Tti = milis ();
}
}
se (1) {
_dispTempLength1 = ((((((String ("t:")) + ((_floatToStringWitRaz (_dht1.temperature, 0))) + (String ("*")))) + (_RTC1_GetTime2_StrOut)))) length () );
if (_disp2oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 1);
_lcd1.print ((((((String ("t:"))) + ((_floatToStringWitRaz (_dht1.temperature, 0))) + (String ("*")))) + (_RTC1_GetTime2_StrOut)));
} mais {
if (_disp2oldLength> 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");

}
String _floatToStringWitRaz (valor flutuante, int raz)
{

return String (valor, raz);
}
bool _isTimer (startTime longo não assinado, período longo não assinado)
{
currentTime longo não assinado;
currentTime = millis ();
if (currentTime> = startTime) {return (currentTime> = (startTime + period));} else {return (currentTime> = (4294967295-startTime + period));}
}

Você pode usar esse dispositivo em qualquer lugar ou em casa, na natureza ou em um carro. É possível alimentar o circuito a partir das baterias, usando uma placa de carga, no final será portátil o modelo estações meteorológicas.

Todas as informações podem ser obtidas olhando o vídeo:


Lista de materiais e ferramentas

Arduino Nano Board
tela LCD1602 de duas linhas;
- relógio em tempo real DS1302;
- sensor de pressão e temperatura atmosférica BMP180;
- sensor de temperatura e umidade DHT11;
- bloquear o carregamento do telefone;
- qualquer caixa adequada
pinças;
tesoura;
ferro de soldar;
Cambridge;
testador;
fios de conexão;
Quatro fios para sensor remoto.

Primeiro passo Fazendo um edifício para uma estação meteorológica

Peguei uma caixa de plástico na loja Fix Price (total de 17p). Janela pré-cortada para exibição na tampa. Em seguida, ele cortou parcialmente as partições da caixa, fez orifícios para o conector USB da placa Arduino, a abertura para o sensor BMP180 O sensor BMP180 estará localizado na parte externa do gabinete para evitar aquecimento excessivo. e coberturas para dentro. Depois pintei o corpo do produto caseiro por dentro, porque o plástico é transparente. A caixa fecha com uma trava e nela todos os elementos se encaixam perfeitamente.


Etapa dois Diagrama de montagem do dispositivo.

Esquema de foto


Em seguida, você precisa conectar todas as placas e sensores da estação meteorológica de acordo com o esquema. Fazemos isso usando fios de montagem com os conectores apropriados. Como não fiz uma conexão de solda, no futuro, quando um módulo falhar (ou por outros motivos), você poderá substituí-lo facilmente. No conector do parafuso, o cabo do sensor DHT11 indo para a rua está conectado. A energia pode ser fornecida pelo conector USB da placa Arduino a um computador ou fornecendo uma tensão de 7 a 12V aos pinos VIN e GND.

Primeiro, montei o circuito fora do gabinete e o programei e depurei no programa FLPROG.

Diagrama de blocos de fotos no programa FLPROG.

Quando programei e liguei o circuito da estação meteorológica, ele funcionou. Agora tornou-se possível ter dados meteorológicos ao mar e na sala. Em geral, uma estação meteorológica interessante em casa com muitas funções diferentes acabou.

Foto concluída

Um bom design caseiro foi montado no fim de semana. Foi emocionante fazer você mesmo um aparelho interessante e útil. Para criar esse dispositivo você mesmo, acho que até mesmo um iniciante pode fazê-lo, pois não requer muito tempo e dinheiro. Você pode aplicá-lo onde quiser em uma casa em uma casa de campo. Durante todo o trabalho, duas noites de fim de semana foram, eu levei todos os eletrônicos para o Aliexpress. O resto dos materiais que encontrei no helicóptero. Com base na plataforma Arduino, você pode montar uma grande variedade de dispositivos úteis.

Obrigado a todos pela atenção, desejo-lhe sucesso e boa sorte, tanto em sua vida quanto em seu trabalho!
9.2
8.2
8.5

Adicionar um comentário

    • sorrirsorrisosxaxaoknão seiyahoonea
      chefearranhartolosimsim simagressivosegredo
      desculpedançardance2dance3perdãoajudabebidas
      pararamigosbomgoodgoodapitodesmaiarlíngua
      fumaçapalmascraydeclararirônicodon-t_mentionbaixar
      calorirritantelaugh1mdareuniãomoskingnegativo
      not_ipipocapunirlerassustarsustospesquisar
      provocarthank_youistoto_clueumnikagudoconcordar
      malbeeeblack_eyeblum3corargabar-setédio
      censuradobrincadeirasecret2ameaçarvitóriayusun_bespectacled
      sacudirrespektlolpreviubem vindoKrutoyya_za
      ya_dobryiajudantene_huliganne_othodifludproibirfechar

Aconselhamos que você leia:

Entregue-o para o smartphone ...