» elektronik » Arduino »Ev hava istasyonu Arduino dayalı

Ev hava istasyonu Arduino dayalı


Uzun bir süre, camın arkasındaki bir termometreye bakmak için pencereden dışarı bakmaktan yorulan mini bir hava istasyonu yapmak istedim. Bu cihaz higrometre, barometre ve termometrenin yerini alacak ve geçerli saati gösterecektir. Bu yazıda size Arduino'ya dayanan küçük bir hava istasyonunu hızlı ve kolay bir şekilde nasıl monte edeceğinizi anlatacağım. Temel kurul olacak Arduino Nano diğer panoları kullanabilir - Arduino Uno, Arduino Pro mini). BMP180 sensöründen atmosferik basınç ve sıcaklık verileri ve DHT11 sensöründen nem ve dış ortam sıcaklığı alacağız. DS1302 gerçek zamanlı saati geçerli saati gösterecektir. Tüm bilgiler iki satırlı bir LCD1602 ekranında görüntülenir.

DHT11, bilgileri tek bir kablo üzerinden bir arduino'ya iletir. 5 V'luk bir voltajla çalışır.% 20 ila 80 arasındaki nemi ölçer. 0 ila 50 aralığında sıcaklık ölçümlerihakkındaS.

Ev hava istasyonu Arduino dayalı

BMP180 sensörü, 300-1100 hPa aralığında atmosfer basıncını, -40 +85 aralığında sıcaklığı ölçerhakkındaC. Besleme gerilimi 3,3 V'tur. I2C iletişim protokolü ile bağlanır.

DS1302 gerçek zamanlı saat 5 V ile çalışır ve I2C iletişim protokolü ile bağlanır. Uygun yuvaya takıldığında, CR2032 piller ana güç kapatıldığında saati destekler.

LCD1602 ekran 5 Volt'luk bir voltajla çalışır ve ayrıca I2C iletişim protokolü ile bağlanır.

bu ev yapımı ürün hazır tahtalar ve sensörler temelinde yapılır, böylece herhangi bir acemi sevgilisine bir havya ile çalışmak için tekrarlanabilir. Aynı zamanda, Arduino'nun programlanmasına ilişkin temel bilgileri edinebilirsiniz. Bu hava istasyonunu FLPROG görsel programlama programında 15 dakika içinde programladım. Saatlerce elle çizim yapmaya gerek yok, bu program yeni başlayanlara (ve sadece) Arduino platformuna dayanan programlama cihazlarının temellerini hızlı bir şekilde öğrenmelerine yardımcı olur.

Kim programla uğraşmak için çok tembel - bir eskiz (sadece saatin geçerli saatini ayarlamak gerekir):
#include 
#include "DHT_NEW.h"
#include 
#include 
#include 
BMP085 _bmp085 = BMP085 ();
uzun _bmp085P = 0;
uzun _bmp085T = 0;
uzun _bmp085A = 0;

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

DHT _dht1;

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

imzasız uzun _dht1LRT = 0UL;
imzasız uzun _dht1Tti = 0UL;
int _disp1oldLength = 0;
imzasız uzun _bmp0852Tti = 0UL;
Dize _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
geçersiz kurulum ()
{
Wire.begin ();
gecikme (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, doğru);
_RTC1.begin ();
_RTC1. periyodu (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = milis ();
_dht1Tti = milis ();
}
void loop ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
eğer (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = milis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getSıcaklık (& _ bmp085T);
}

// Ücret: 1
eğer (1) {
_dispTempLength1 = ((((((((T ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (Dize ("*")))) + ((Dize ( "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (String ("*"))) + (((String ("")) + ((_floatToStringWitRaz (_dht1) nem, 0))) + (Dize ("%"))))). uzunluk ();
if (_disp1oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 0);
_lcd1.print (((((((D ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (Dize ("*")))) + ((Dize ("P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (String ("*")))) + (((String ("")) + ((_floatToStringWitRaz ( _dht1.humidity, 0))) + (String ("%")))));
} başka {
eğer (_disp1oldLength> 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (_isTimer (_dht1Tti, 2000)) {
if (_isTimer (_dht1LRT, (_dht1.getMinimumSamplingPeriod ()))) {
_dht1.readSensor ();
_dht1LRT = milis ();
_dht1Tti = milis ();
}
}
eğer (1) {
_dispTempLength1 = ((((((((t ("t:")) + ((_floatToStringWitRaz (_dht1.temperature, 0))) + (Dize ("*"))) + (_RTC1_GetTime2_StrOut)))) uzunluğu ( );
if (_disp2oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 1);
_lcd1.print (((((((t ("t:"))) + ((_floatToStringWitRaz (_dht1.temperature, 0))) + (Dize ("*")))) + (_RTC1_GetTime2_StrOut))));
} başka {
eğer (_disp2oldLength> 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");

}
String _floatToStringWitRaz (kayan değer, int raz)
{

return String (değer; raz);
}
bool _isTimer (imzasız uzun startTime, imzasız uzun süre)
{
imzasız uzun currentTime;
currentTime = millis ();
if (currentTime> = startTime) {return (currentTime> = (startTime + nokta));} else {return (currentTime> = (4294967295-startTime + nokta));}
}

Böyle bir cihazı her yerde, evde, doğada veya bir araba. Bir şarj kartı kullanarak pillerden devreye güç vermek mümkündür, sonunda taşınabilir olacaktır model hava istasyonları.

Tüm bilgiler videoya bakarak elde edilebilir:


Malzeme ve araçların listesi

Arduino Nano Kartı
iki satırlı LCD1602 ekran;
- gerçek zamanlı saat DS1302;
- atmosferik basınç ve sıcaklık sensörü BMP180;
- sıcaklık ve nem sensörü DHT11;
- telefondan şarj engelleme;
- herhangi bir uygun muhafaza
-pintset;
makas;
havya;
-kembrik;
Bir test;
- bağlantı telleri;
Uzak sensör için dört telli.

İlk adım. Bir meteoroloji istasyonu için bir bina yapmak

Fix Price mağazasından plastik bir kutu aldım (toplam 17p). Kapakta görüntülemek için önceden kesilmiş pencere. Daha sonra kutudaki bölümleri kısmen kesti, Arduino kartının USB konektörü için delikler açtı, BMP180 sensörü için açıklık BMP180 sensörü, aşırı ısınmayı önlemek için kasanın dışına yerleştirilecektir. elektronik içinde Topingler. Ev yapımı ürünün gövdesini içeriden boyadıktan sonra plastik şeffaftır. Kutu bir mandalla kapanır ve içindeki tüm elemanlar iyi oturur.


İkinci Adım Cihazın montaj şeması.

Fotoğraf şeması


Ardından, hava istasyonunun tüm panolarını ve sensörlerini şemaya göre bağlamanız gerekir. Bunu uygun konektörlere sahip montaj telleri kullanarak yapıyoruz. Bir lehim bağlantısı yapmadım, bu nedenle gelecekte bir modül başarısız olduğunda (veya başka nedenlerle) kolayca değiştirebilirsiniz. Vidalı konektörde, sokağa giden DHT11 sensör kablosu bağlanır. Arduino kartının USB konektöründen bir bilgisayara güç veya VIN ve GND pinine 7-12V'luk bir voltaj sağlayarak güç sağlanabilir.

İlk olarak, devre muhafazanın dışında toplandım ve FLPROG programında programladım ve hata ayıkladım.

FLPROG programında fotoğraf blok şeması.

Hava istasyonu devresini ilk kez programlayıp açtığımda çalıştı. Hava durumu verilerinin denize ve odada olması artık mümkün hale geldi. Genel olarak, birçok farklı fonksiyona sahip ilginç bir ev hava istasyonu ortaya çıktı.

Fotoğraf tamamlandı

Hafta sonu iyi bir ev yapımı tasarım toplandı. İlginç ve kullanışlı bir cihazı kendiniz yapmak heyecan vericiydi. Böyle bir cihazı kendiniz yapmak için, yeni başlayanların bile bunu yapabileceğini düşünüyorum, çok fazla zaman ve para gerektirmiyor. Bir kır evinde bir evde istediğiniz yere uygulayabilirsiniz. Tüm çalışma için, iki hafta sonu gecesi gitti, tüm elektronikleri Aliexpress'e aldım. Helikopterde bulduğum malzemelerin geri kalanı. Arduino platformunu temel alarak çok çeşitli kullanışlı cihazlar monte edebilirsiniz.

İlginiz için hepinize teşekkür ederim, hem hayatınızda hem de işinizde başarılar ve iyi şanslar diliyorum!
9.2
8.2
8.5

Yorum ekle

    • gülümsegülümsemelerxaxatamamdontknowyahoonea
      patronçizikaptalevetevet-evetagresifgizli
      üzgünümdansdance2dance3pardonyardımiçecekler
      Durarkadaşlariyigoodgooddüdükbaygınlıkdil
      dumanzırıltıcraybeyanalaycıDon-t_mentionindir
      ısıöfkelilaugh1mdatoplantımoskingnegatif
      Not_ipatlamış mısırcezalandırmakokumakkorkutmakkorkutuyorarama
      alaythank_youbuto_clueumnikakutanlaşmak
      kötübeeeblack_eyeblum3kızarmakövünçcan sıkıntısı
      sansürlüşakasecret2tehdit etmekzaferyusun_bespectacled
      shokrespektlolPrevedkarşılamaKrutoyya_za
      ya_dobryiyardımcıne_huliganne_othodiFludyasakyakın

Okumanızı tavsiye ederiz:

Akıllı telefon için verin ...