Multă vreme am vrut să fac o mini stație meteo, obosită să mă uit pe fereastră pentru a privi un termometru din spatele geamului. Acest dispozitiv va înlocui higrometrul, barometrul și termometrul și va arăta și ora curentă. În acest post vă voi spune cum să asamblați rapid și ușor o stație meteorologică mică bazată pe Arduino. Baza va fi consiliul Arduino Nano poate folosi alte plăci - Arduino Uno, Arduino Pro mini). Vom primi date de presiune și temperatură atmosferică de la senzorul BMP180, precum și umiditatea și temperatura exterioară de la senzorul DHT11. Ceasul în timp real DS1302 va indica ora curentă. Toate informațiile sunt afișate pe un ecran LCD1602 cu două linii.
DHT11 transmite informații printr-un singur fir către un arduino. Este alimentat cu o tensiune de 5 V. Măsoară umiditatea în intervalul 20 - 80%. Temperatura măsoară între 0 și 50despreS.
Senzorul BMP180 măsoară presiunea atmosferică în intervalul 300-1100 hPa, temperatura în intervalul -40 +85despreC. Tensiunea de alimentare este de 3,3 V. Este conectată prin protocolul de comunicare I2C.
Ceasul în timp real DS1302 este alimentat de 5 V și este conectat prin intermediul protocolului de comunicare I2C. Când sunt instalate în slotul corespunzător, bateriile CR2032 suportă ceasul când alimentarea principală este oprită.
Ecranul LCD1602 este alimentat cu o tensiune de 5 volți și este conectat și prin intermediul protocolului de comunicare I2C.
aceasta produs home-made realizate pe baza plăcilor și senzorilor gata pregătiți, astfel încât acesta poate fi repetat oricărui iubit începător să lucreze cu un fier de lipit. În același timp, puteți obține elementele de bază ale programării Arduino. Am programat această stație meteo în programul vizual de programare FLPROG în 15 minute. Nu este nevoie să schițăm manual ore întregi, acest program îi ajută pe începători (și nu numai) să învețe rapid elementele de bază ale dispozitivelor de programare bazate pe platforma Arduino.
Cui este prea leneș pentru a juca programul - o schiță (doar va fi necesar să setați ora curentă a ceasului):
#include
#includeți „DHT_NEW.h”
#include
#include
#include
BMP085 _bmp085 = BMP085 ();
lung _bmp085P = 0;
lung _bmp085T = 0;
lung _bmp085A = 0;
LiquidCrystal_I2C _lcd1 (0x3f, 16, 2);
int _dispTempLength1 = 0;
boolean _isNeedClearDisp1;
DHT _dht1;
iarduino_RTC _RTC1 (RTC_DS1302, 7, 5, 6);
nesemnat lung _dht1LRT = 0UL;
nesemnat lung _dht1Tti = 0UL;
int _disp1oldLength = 0;
unsigned long _bmp0852Tti = 0UL;
String _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
void setup ()
{
Sârmă.begin ();
întârziere (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, adevărat);
_RTC1.begin ();
_RTC1.period (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = millis ();
_dht1Tti = millis ();
}
nul buclă ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
if (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = millis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTemperatura (& _ bmp085T);
}
// Taxa: 1
if (1) {
_dispTempLength1 = (((((String ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (String ("*")))) + ((String ( "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0)) + + (String ("*"))) + (((String ("")) + ((_floatToStringWitRaz (_dht1 .umiditate, 0))) + (Șir ((%)))))). lungime ();
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.humity, 0))) + (String ("%")))));
} altfel {
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))). lungime () );
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))));
} altfel {
if (_disp2oldLength> 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");
}
String _floatToStringWitRaz (float value, int raz)
{
String return (valoare, raz);
}
bool _isTimer (demontare lungă timp nesemnat, perioadă lungă nesemnată)
{
nesemnat lung curentTime;
currentTime = millis ();
if (currentTime> = startTime) {return (currentTime> = (startTime + perioada));} else {return (currentTime> = (4294967295-startTime + perioada));}
}
Puteți utiliza un astfel de dispozitiv oriunde sau acasă, în natură sau în loc o mașină. Este posibilă alimentarea circuitului de la baterii, folosind o placă de încărcare, în final va fi portabilă modelul stații meteo.
Toate informațiile pot fi obținute consultând videoclipul:
Lista materialelor și instrumentelor
Arduino Nano Board
ecran LCD1602 cu două linii;
- ceas în timp real DS1302;
- senzor de presiune și temperatură atmosferică BMP180;
- senzor de temperatură și umiditate DHT11;
-blocați încărcarea de la telefon;
- orice carcasă adecvată
-pintset;
foarfece;
fier de lipit;
-kembrik;
Un tester;
-conectarea firelor;
Cu patru fire pentru senzor de la distanță.
Primul pas. Realizarea unei clădiri pentru o stație meteo
Am ridicat o cutie de plastic din magazinul Fix Price (total 17p). Fereastra tăiată în prealabil pentru afișarea capacului Apoi a tăiat parțial partițiile din cutie, a făcut găuri pentru conectorul USB al plăcii Arduino, deschiderea pentru senzorul BMP180 Senzorul BMP180 va fi amplasat în partea exterioară a carcasei pentru a preveni încălzirea excesivă de la electronic rafturi în interior. După ce am vopsit corpul produsului de casă din interior, deoarece plasticul este transparent. Cutia se închide cu un zăvor și în ea se potrivesc toate elementele.
Pasul doi Schema de asamblare a dispozitivului.
Schema foto
În continuare, trebuie să conectați toate plăcile și senzorii stației meteo conform schemei. Facem acest lucru folosind fire de montare cu conectorii corespunzători. Nu am făcut o conexiune de lipit, așa că în viitor, atunci când un modul eșue (sau din alte motive), îl puteți înlocui cu ușurință. Pe conectorul cu șurub, este conectat cablul senzorului DHT11 care merge pe stradă. Alimentarea poate fi furnizată de la conectorul USB al placii Arduino la un computer sau prin furnizarea unei tensiuni de 7-12V la pinul VIN și GND.
În primul rând, am asamblat circuitul în afara incintei și l-am programat și l-am depanat în programul FLPROG.
Diagrama blocului foto din programul FLPROG.
Când am programat prima dată și am pornit circuitul stației meteo, a funcționat. Acum a devenit posibil să existe date meteorologice peste bord și în cameră. În general, s-a dovedit o interesantă stație meteo acasă cu multe funcții diferite.
Fotografie completă
La sfârșit de săptămână a fost montat un design bun de casă. A fost interesant să faceți singur un aparat interesant și util. Pentru a face singur un astfel de dispozitiv, cred că poate chiar și un începător. Nu necesită mult timp și bani. O puteți aplica oriunde doriți într-o casă dintr-o căsuță de țară. Pentru întreaga muncă, au trecut două nopți de weekend, am dus toată electronica la Aliexpress. Restul materialelor le-am găsit pe tocător. Pe baza platformei Arduino, puteți asambla o mare varietate de dispozitive utile.
Vă mulțumesc tuturor pentru atenție, vă urez succes și mult noroc atât în viața voastră, cât și în munca voastră!