Régóta mini meteorológiai állomást akartam készíteni, unatkozva, hogy kinézett az ablakon, hogy az üveg mögött hőmérőt nézzen. Ez a készülék lecseréli a nedvességmérőt, a barométert és a hőmérőt, és megmutatja az aktuális időt is. Ebben a bejegyzésben elmondom, hogyan lehet gyorsan és egyszerűen összeállítani egy kis Arduino-i meteorológiai állomást. Az alap a testület Arduino A Nano más táblákat is használhat - Arduino Uno, Arduino Pro mini). A légköri nyomást és hőmérsékletet a BMP180 érzékelőtől, a páratartalom és a külső hőmérsékletet a DHT11 érzékelőtől kapjuk. A DS1302 valós idejű óra jelzi az aktuális időt. Az összes információ egy kétsoros LCD1602 kijelzőn jelenik meg.
A DHT11 egyetlen kábellel továbbítja az információkat egy arduinónak. 5 V feszültség alatt áll, 20 és 80% közötti páratartalmat mér. Hőmérséklet 0 és 50 ° C közöttkörülbelülS.
A BMP180 érzékelő a légköri nyomást 300–1100 hPa tartományban méri, hőmérséklete –40 +85 tartománybankörülbelülC. A tápfeszültség 3,3 V. Ez az I2C kommunikációs protokollon keresztül csatlakozik.
A DS1302 valós idejű órát 5 V-os tápellátással látják el, és az I2C kommunikációs protokollon keresztül csatlakoztatják. A megfelelő nyílásba helyezve a CR2032 akkumulátorok támogatják az órát, amikor a fő áramellátás ki van kapcsolva.
Az LCD1602 kijelzőt 5 V feszültség táplálja, és az I2C kommunikációs protokollon keresztül is csatlakoztatva van.
ezt Házitermékek kész táblák és érzékelők alapján készülnek, így bármilyen kezdő szerető számára megismételhető a forrasztópáka segítségével. Ugyanakkor megismerheti az Arduino programozásának alapjait. Ezt az meteorológiai állomást 15 perc alatt beprogramoztam a FLPROG vizuális programozási programban. Nem kell órákig kézzel vázolni, ez a program segít a kezdőknek (és nem csak) az Arduino platformon alapuló programozási eszközök alapjainak gyors megtanulásában.
Ki túlságosan lusta ahhoz, hogy megbirkózzon a programmal - vázlat (csak az óra aktuális idejét kell beállítani):
#include
# beletartozik a "DHT_NEW.h"
#include
# beletartozik a
#include
BMP085 _bmp085 = BMP085 ();
hosszú _bmp085P = 0;
hosszú _bmp085T = 0;
hosszú _bmp085A = 0;
LiquidCrystal_I2C _lcd1 (0x3f, 16, 2);
int _dispTempLength1 = 0;
logikai _isNeedClearDisp1;
DHT _dht1;
iarduino_RTC _RTC1 (RTC_DS1302, 7, 5, 6);
alá nem írt hosszú _dht1LRT = 0UL;
alá nem írt hosszú _dht1Tti = 0UL;
int _disp1oldLength = 0;
alá nem írt hosszú _bmp0852Tti = 0UL;
String _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
érvénytelen beállítás ()
{
Wire.begin ();
késleltetés (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, igaz);
_RTC1.begin ();
_RTC1.period (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = millis ();
_dht1Tti = millis ();
}
üres hurok ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
if (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = millis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTemperature (& _ bmp085T);
}
// Díj: 1
ha (1) {
_dispTempLength1 = (((((((Karakterlánc ("T:"))) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (karakterlánc ("*")))) + (((karakterlánc ( "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (Húr ("*"))) + (((String ("")) + ((_floatToStringWitRaz (_dht1 .nedvesség, 0))) + (Karakterlánc ("%"))))) hosszúság ();
if (_disp1oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 0);
_lcd1.print (((((((Karakterlánc ("T:"))) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (karakterlánc ("*")))) + (((karakterlánc) ("P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (karakterlánc ("*")))) + + (((karakterlánc ("")) + ((_floatToStringWitRaz ( _dht1.nedvesség, 0))) + (Húr ("%")))));
} egyéb {
if (_disp1oldLength> 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (_isTimer (_dht1Tti, 2000)) {
if (_isTimer (_dht1LRT, (_dht1.getMinimumSamplingPeriod ()))))
_dht1.readSensor ();
_dht1LRT = millis ();
_dht1Tti = millis ();
}
}
ha (1) {
_dispTempLength1 = (((((((karakterlánc ("t:")) + (((_floatToStringWitRaz (_dht1.hőmérséklet, 0))) + (karakterlánc ("*"))))) (_RTC1_GetTime2_StrOut))). hossz () );
if (_disp2oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 1);
_lcd1.print (((((((karakterlánc ("t:")))) + ((_floatToStringWitRaz (_dht1.hőmérséklet, 0))) + (karakterlánc ("*"))) + (_RTC1_GetTime2_StrOut)));));
} egyéb {
if (_disp2oldLength> 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");
}
Karakterlánc _floatToStringWitRaz (úszó érték, int raz)
{
visszatérő karakterlánc (érték, raz);
}
bool _isTimer (aláíratlan hosszú indítási idő, aláíratlan hosszú időszak)
{
alá nem írt hosszú currentTime;
currentTime = millis ();
if (currentTime> = startTime) {return (currentTime> = (startTime + period));} else {return (currentTime> = (4294967295-startTime + period));}
}
Használhat ilyen készüléket bárhol vagy otthon, a természetben, vagy bárhol egy autó. Az áramkört az akkumulátorokról töltőlap segítségével lehet táplálni, a végén hordozható lesz a modell meteorológiai állomások.
Minden információ a videó megtekintésével szerezhető be:
Anyagok és eszközök listája
Arduino Nano fórum
kétsoros LCD1602 kijelző;
- DS1302 valós idejű óra;
- légköri nyomás és hőmérséklet érzékelő BMP180;
- DHT11 hőmérséklet- és páratartalom-érzékelő;
-blokkolja a töltést a telefonról;
- bármilyen megfelelő ház
-pintset;
olló;
forrasztópáka;
-kembrik;
A teszter;
-csatlakozó vezetékek;
Négy vezetékes a távoli érzékelőhöz.
Első lépés. Épület készítése egy meteorológiai állomás számára
Vettem egy műanyag dobozt a Fix Price üzletből (összesen 17p). Előre vágott ablak a fedélben történő megjelenítéshez. Ezután részben kivágta a dobozban lévő válaszfalakat, lyukakat készített az Arduino kártya USB-csatlakozójához, a BMP180 érzékelő nyílásához. A BMP180 érzékelőt a ház külső oldalán kell elhelyezni, hogy megakadályozzák a túlmelegedést. elektronikus öntetek belül. Miután belülről festettem a házi termék testét, mert a műanyag átlátszó. A doboz reteszel bezáródik, és az összes elem jól illeszkedik.
Második lépés Az eszköz összeszerelési rajza.
Fotó séma
Ezután össze kell kapcsolnia az időjárási állomás összes tábláját és érzékelőjét a séma szerint. Ezt a megfelelő csatlakozókkal ellátott rögzítőhuzalokkal hajtjuk végre. Nem hoztam létre a forrasztási kapcsolatot, így a jövőben, amikor egy modul meghibásodik (vagy egyéb okok miatt), könnyen kicserélheti. A csavaros csatlakozón az utcára menő DHT11 érzékelő kábel csatlakozik. Az áramellátást az Arduino kártya USB-csatlakozóján keresztül lehet a számítógéphez biztosítani, vagy a 7-12 V-os feszültséget szolgáltatni a VIN és a GND tűsnek.
Először összeállítottam az áramkört a házon kívül, programoztam és hibakeresést végeztem a FLPROG programban.
Fotóblokkdiagram a FLPROG programban.
Amikor először programoztam és bekapcsoltam az meteorológiai állomás áramkörét, az működött. Most lehetővé vált az időjárási adatok fedélzetén és a helyiségben tartása. Általában egy érdekes otthoni meteorológiai állomás váltott ki, amely számos különféle funkcióval rendelkezik.
A fotó kész
A hétvégén jó házimunka készült. Izgalmas volt egy érdekes és hasznos eszköz elkészítése. Úgy gondolom, hogy még egy kezdő is meg tudja csinálni egy ilyen készüléket, ehhez nincs sok idő és pénz. Bármelyik házban egy vidéki házban alkalmazhatja. Az egész munka során két hétvégi éjszaka elment, az elektronikát az Aliexpress-be vittek. A többi anyagot a aprítón találtam. Az Arduino platform alapján sokféle hasznos eszközt szerelhet össze.
Köszönöm mindenkinek a figyelmet, sok sikert és sok sikert kívánok neked az életedben és munkádban!