» Elektronika » Arduino »Domácí meteorologická stanice založená na Arduino

Domácí meteorologická stanice založená na Arduino


Dlouho jsem chtěl vyrobit mini meteorologickou stanici, unavený z pohledu z okna a podívat se na teploměr za sklem. Toto zařízení nahradí vlhkoměr, barometr a teploměr a také zobrazí aktuální čas. V tomto příspěvku vám řeknu, jak rychle a snadno sestavit malou meteorologickou stanici založenou na Arduinu. Základem bude představenstvo Arduino Nano může použít další desky - Arduino Uno, Arduino Pro mini). Údaje o atmosférickém tlaku a teplotě získáme ze senzoru BMP180 a vlhkosti a venkovní teplotě ze senzoru DHT11. Hodiny reálného času DS1302 označují aktuální čas. Všechny informace se zobrazují na dvouřádkovém LCD1602 displeji.

DHT11 přenáší informace přes jediný drát do arduina. Je napájen napětím 5 V. Měří vlhkost v rozmezí 20 až 80%. Měření teploty v rozsahu 0 až 50asiC.

Domácí meteorologická stanice založená na Arduino

Senzor BMP180 měří atmosférický tlak v rozmezí 300-1100 hPa, teplota v rozmezí -40 +85asiC. Napájecí napětí je 3,3 V. Je připojeno přes komunikační protokol I2C.

Hodiny reálného času DS1302 jsou napájeny 5 V a jsou připojeny pomocí komunikačního protokolu I2C. Při instalaci do příslušného slotu podporují baterie CR2032 hodiny, když je vypnuto napájení.

Displej LCD1602 je napájen 5 volty a je také připojen přes komunikační protokol I2C.

Tohle domácí Vyrobeno na základě hotových desek a senzorů, takže pro každého milovníka začátečníka lze opakovat práci s páječkou. Současně můžete získat základy programování Arduino. Naprogramoval jsem tuto meteorologickou stanici v programu vizuálního programování FLPROG za 15 minut. Není třeba ručně kreslit hodiny, tento program pomáhá začátečníkům (a nejen) rychle se naučit základům programovacích zařízení založených na platformě Arduino.

Kdo je příliš líný na to, aby si mohl hrát s programem - skica (pouze bude nutné nastavit aktuální čas hodin):
#include 
#include "DHT_NEW.h"
#include 
#include 
#include 
BMP085 _bmp085 = BMP085 ();
dlouhý _bmp085P = 0;
long _bmp085T = 0;
long _bmp085A = 0;

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

DHT _dht1;

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

unsigned long _dht1LRT = 0UL;
unsigned long _dht1Tti = 0UL;
int _disp1oldLength = 0;
unsigned long _bmp0852Tti = 0UL;
String _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
neplatné nastavení ()
{
Wire.begin ();
zpoždění (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, true);
_RTC1.begin ();
_RTC1.period (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = millis ();
_dht1Tti = millis ();
}
prázdná smyčka ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
if (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = millis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTemperature (& _ bmp085T);
}

// Poplatek: 1
if (1) {
_dispTempLength1 = ((((((String ("T:"))) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (String ("*")))) + (((String ( "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (String ("*"))) + (((String (""))) + ((_floatToStringWitRaz (_dht1) .vlhkost, 0))) + (String ("%"))))). délka ();
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.humidita, 0))) + (String ("%"))))));
} jinde {
if (_disp1oldLength> 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (_isTimer (_dht1Tti, 2000)) {
if (_isTimer (_dht1LRT, (_dht1.getMinimumSamplingPeriod ())))) {
_dht1.readSensor ();
_dht1LRT = millis ();
_dht1Tti = millis ();
}
}
if (1) {
_dispTempLength1 = ((((((String ("t:"))) + ((_floatToStringWitRaz (_dht1.temperature, 0))) + (String ("*")))) + (_RTC1_GetTime2_StrOut))). );
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))));
} jinde {
if (_disp2oldLength> 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");

}
String _floatToStringWitRaz (float value, int raz)
{

return String (value, raz);
}
bool _isTimer (dlouhý podpis bez podpisu, dlouhý podpis bez podpisu)
{
nepodepsaný dlouhý proudTime;
currentTime = millis ();
if (currentTime> = startTime) {return (currentTime> = (startTime + perioda));} else {return (currentTime> = (4294967295-startTime + perioda));}}
}

Takové zařízení můžete použít kdekoli nebo doma, v přírodě nebo na místě auto. Je možné napájet obvod z baterií, pomocí nabíjecí desky, nakonec bude přenosný model meteorologické stanice.

Všechny informace lze získat na videu:


Seznam materiálů a nástrojů

Arduino Nano Board
dvouřádkový LCD1602 displej;
- hodiny reálného času DS1302;
- snímač atmosférického tlaku a teploty BMP180;
- snímač teploty a vlhkosti DHT11;
-block nabíjení z telefonu;
- jakékoli vhodné bydlení
pinzety;
nůžky;
páječka;
Cambridge;
tester;
-spojovací dráty;
Čtyřvodič pro dálkový senzor.

První krok. Vytvoření budovy pro meteorologickou stanici

Z obchodu Fix Fix jsem vzal plastovou krabičku (celkem 17p). Předřezané okno pro zobrazení ve víku. Poté částečně vyřízl oddíly v krabici, vytvořil otvory pro USB konektor na desce Arduino, otvor pro senzor BMP180 Senzor BMP180 bude umístěn na vnější straně pouzdra, aby se zabránilo nadměrnému zahřívání e polevy uvnitř. Poté, co jsem maloval tělo domácího výrobku zevnitř, protože plast je průhledný. Krabička se uzavírá západkou a všechny prvky v ní dobře zapadají.


Krok dva Schéma montáže zařízení.

Foto schéma


Dále musíte podle schématu připojit všechny desky a senzory meteorologické stanice. Děláme to pomocí montážních vodičů s příslušnými konektory. Nepřipojil jsem pájecí spojení, takže v budoucnu, když modul selže (nebo z jiných důvodů), můžete jej snadno vyměnit. Na šroubovém konektoru je připojen kabel čidla DHT11 směřující do ulice. Napájení může být dodáváno z konektoru USB na desce Arduino do počítače nebo napájením napětí 7-12 V na pin VIN a GND.

Nejprve jsem sestavil obvod mimo kryt a naprogramoval a odladil ho v programu FLPROG.

Foto blokové schéma v programu FLPROG.

Když jsem poprvé naprogramoval a zapnul okruh meteorologické stanice, fungovalo to. Nyní je možné mít údaje o počasí přes palubu a v místnosti. Obecně se ukázala zajímavá domácí meteorologická stanice s mnoha různými funkcemi.

Foto je kompletní

O víkendu se shromáždil dobrý domácí design. Bylo zajímavé vyrobit si zajímavé a užitečné zařízení sami. Abychom si takové zařízení vyrobili sami, myslím, že to zvládne i začátečník. Vyžaduje to hodně času a peněz. Můžete ji použít kdekoli chcete v domě v chalupě. Za celou práci, dvě víkendové noci, jsem vzal veškerou elektroniku do Aliexpressu. Zbytek materiálů jsem našel na vrtulníku. Na základě platformy Arduino můžete sestavit širokou škálu užitečných zařízení.

Děkuji vám všem za pozornost, přeji vám mnoho úspěchů a hodně štěstí jak ve vašem životě, tak ve vaší práci!
9.2
8.2
8.5

Přidejte komentář

    • úsměvúsměvyxaxaokdontknowyahoone
      šéfeškrábnutíhlupákanoano-anoagresivnítajemství
      promiňtanecdance2dance3prominoutpomocnápoje
      zastavitpřátelédobředobrá náladapískatlžícejazyk
      kouřtleskánícrayprohlásitvýsměšnýdon-t_mentionstáhnout
      teploirefulsmích1mdasetkánímoskingnegativní
      not_ipopcorntrestatčístvyděsitděsíhledat
      posměchděkujitototo_clueumnikakutnísouhlasím
      špatnévčelablack_eyeblum3červenat sechlubit senuda
      cenzurovánopleasantrysecret2hrozitvítězstvíyusun_bespectacled
      třástrespektlolprovedenívítejtekrutoyya_za
      ya_dobryipomocníkne_huliganne_othodibludzákazblízko

Doporučujeme si přečíst:

Podejte to pro smartphone ...