Stacioni i motit në Arduino. Stacioni i motit Arduino me sensorin e temperaturës me valë Arduino Stacioni i motit në shtëpi Presioni i lagështisë

Shikimi i motit është një aktivitet shumë emocionues. Vendosa të ndërtoj stacionin tim të motit bazuar në atë popullore .

Prototipi i stacionit të motit duket si ky:

Funksionet e stacionit tim meteorologjik:

  • matja dhe shfaqja e temperaturave të dhomës dhe të jashtme;
  • shfaqja e kohës aktuale (orë dhe minuta);
  • shfaqja e fazave aktuale të hënës dhe ditës hënore;
  • transferimi i rezultateve të matjes në një kompjuter nëpërmjet një lidhje serike;
  • transmetimi i rezultateve të matjes me protokoll MQTT duke përdorur një aplikacion në një kompjuter.


heks
- dosje
firmware për (versioni i datës 9 maj 2018) - .
Si të ndizet heks- dosje në bord Arduino e kam përshkruar.

Mikrokontrolluesi Arduino Nano 3.0

"Zemra" e stacionit tim meteorologjik është mikrokontrolluesi eBay):

Për të kontrolluar treguesin dhe marrjen në pyetje të sensorëve, unë përdor kohëmatësin 1 Arduino, duke shkaktuar ndërprerje me frekuencë 200 Hz (periudha - 5 ms).

Treguesi

Për të shfaqur leximet e matura të sensorëve dhe kohën aktuale, u lidha me Arduino tregues LED me katër shifra Foryard FYQ-5643BH me anodat e zakonshme (kombinohen anodet e segmenteve identike të të gjitha shkarkimeve).
Treguesi përmban katër shifra me shtatë segmente dhe dy pika ndarëse (orëshe):

Anodat e treguesit lidhen përmes rezistorëve kufizues të rrymës në terminalet Arduino:

shkarkimi 1 2 3 4
përfundimi A3 A2 D3 D9

Katoda të segmentit të lidhura me kunjat Arduino:

segment a b c d e f g fq
përfundimi D7 D12 D4 D5 D6 D11 D8 D13

Segmenti i treguesit ndizet nëse anoda e shkarkimit përkatës ka një potencial të lartë (1) dhe një potencial të ulët (0) në katodë.

Unë përdor tregues dinamik për të shfaqur informacionin mbi treguesin - vetëm një shifër është aktive në të njëjtën kohë. Shkarkimet aktive alternohen në një frekuencë prej 200 Hz (periudha e shfaqjes 5 ms). Në të njëjtën kohë, dridhja e segmenteve është e padukshme për sytë.

Sensori i temperaturës DS18x20

Për mundësinë e matjes së temperaturës në distancë, lidha një sensor , i cili ofron një gamë të gjerë të matjeve të temperaturës së jashtme. Sensori është i lidhur me autobusin 1 tel dhe ka tre dalje - fuqi ( KQV), të dhëna ( DAT), Toka ( GND):

prodhimi i sensorit KQV DAT GND
përfundimi Arduino 5 V A1 GND

Midis kunjave KQV dhe DAT Kam përfshirë një rezistencë tërheqëse 4,7 k om.

Për të kthyer midis gradë Celsius dhe Fahrenheit, mund të përdorni pllakën e mëposhtme:

E vendosa sensorin jashtë dritares së shtëpisë në një kuti plastike nga një stilolaps:

\

Stacionet profesionale të motit përdorin një ekran Stevenson për të mbrojtur termometrin nga rrezet e diellit direkte dhe për të lejuar që ajri të qarkullojë. ekran Stevenson):

Sensori i presionit dhe i temperaturës BMP280

Barometrat e merkurit dhe aneroidit përdoren tradicionalisht për të matur presionin atmosferik.

AT barometri i merkurit Presioni atmosferik balancohet nga pesha e kolonës së merkurit, lartësia e së cilës përdoret për të matur presionin:

AT barometri aneroid Përdoret ngjeshja dhe shtrirja e kutisë nën presionin atmosferik:

Për të matur presionin atmosferik dhe temperaturën e dhomës në stacionin tim të motit në shtëpi, përdor një sensor - i vogël smd- Sensori 2 x 2,5 mm i bazuar në teknologjinë piezoresistive:

Një shami me një sensor u ble në treg eBay:

Sensori është i lidhur me autobusin I2C(kontakti i të dhënave - SDA/SDI, pin sinkronizimi - SCL/SCK):

prodhimi i sensorit KQV GND SDI SCK
përfundimi Arduino 3v3 GND A4 A5

adafruit- skedarë Adafruit_Sensor.h, Adafruit_BMP280.h, Adafruit_BMP280.cpp.

Njësitë e presionit atmosferik

Sensori nëpërmjet funksionit Presioni i lexuar jep vlerën e presionit atmosferik në paskale. Njësia bazë për matjen e presionit atmosferik është hektopaskal(hPa) (1 hPa = 100 Pa), analog i të cilit është njësia jashtë sistemit " milibar" (mbar) (1 mbar = 100Pa = 1hPa). Për të konvertuar ndërmjet një njësie presioni josistematik të përdorur zakonisht " milimetër merkur" (mm Hg) dhe hektopaskalët, përdoren raportet e mëposhtme:
1 hPa = 0,75006 mmHg Art. ≈ 3/4 mm Hg; 1 mmHg =1,3332 hPa ≈ 4/3 hPa.

Varësia e presionit atmosferik nga lartësia mbi nivelin e detit

Presioni atmosferik mund të përfaqësohet në formë absolute dhe relative.
Presion absolut QFE(anglisht) presion absolut) është presioni aktual atmosferik, pa marrë parasysh korrigjimin mbi nivelin e detit.
Presioni atmosferik zvogëlohet me rreth 1 hPa me një rritje në lartësi prej 1 m:

Formula barometrike ju lejon të përcaktoni korrigjimin e leximeve të barometrit për të marrë presionin relativ (në mmHg):
$\Delta P = 760 \cdot (1 - (1 \mbi (10^ ( (0,0081350 \cdot H) \mbi (T + 0,00178308 \cdot H) ))))$ ,
ku $T$ është temperatura mesatare e ajrit në shkallën Rankin, ° Ra, $H$ - lartësia mbi nivelin e detit, këmbët.
Shndërrimi i gradëve Celsius në gradë Rankine:
$^(\circ)Ra = (^(\circ)C \cdot 1.8) + 491.67$
Formula barometrike përdoret për nivelim barometrik - përcaktim i lartësive (me gabim 0,1 - 0,5%). Formula nuk merr parasysh lagështinë e ajrit dhe ndryshimin e përshpejtimit të rënies së lirë me lartësinë. Për dallime të vogla në lartësi, kjo varësi eksponenciale mund të përafrohet me saktësi të mjaftueshme nga një varësi lineare.
Presioni relativ QNH(anglisht) presion relativ, Lartësia detare e kodit Q) është presioni atmosferik i rregulluar për nivelin mesatar të detit. Niveli mesatar i detit, MSL) (për ESHTE NJE dhe një temperaturë prej 15 gradë Celsius), dhe fillimisht vendoset duke marrë parasysh lartësinë në të cilën ndodhet stacioni i motit. Mund të gjendet nga të dhënat e shërbimit të motit, leximet e instrumenteve të kalibruar në vende publike, aeroporti (nga raportet METAR), nga interneti.
Për shembull, për aeroportin e afërt Gomel ( UMGG) Unë mund të shoh raportin aktual të motit METAR në ru.allmetsat.com/metar-taf/russia.php?icao=UMGG:
UMGG 191800Z 16003 MPS CAVOK M06/M15 Q1014 R28/CLRD//NOSIG ,
ku Q1014- presioni QNH në aeroport është 1014 hPa.
Historia e buletineve METAR në dispozicion nga aviationwxchartsarchive.com/product/metar.
Për presion normal relativ të ajrit QNH pranohet një presion prej 760 mm Hg. Art. ose 1013.25 hPa (në një temperaturë prej 0ºС, nën një gjerësi prej 45º të Hemisferës Veriore ose Jugore).
Vendosa presionin për barometrin aneroid QNH me vidën e rregullimit të ndjeshmërisë:

Parashikimi i Motit

Analiza e ndryshimeve të presionit ju lejon të ndërtoni një parashikim të motit, dhe saktësia e tij është sa më e lartë, aq më e papritur ndryshon presioni. Për shembull, rregulli praktik i një lundruesi të vjetër është se një rënie e presionit prej 10 hPa (7.5 mmHg) gjatë një periudhe 8-orëshe do të thotë se erërat e forta janë në rrugë.

Nga vjen era? Ajri rrjedh në qendër të zonës me presion të ulët, era- lëvizja horizontale e ajrit nga zonat me presion të lartë në zonat me presion të ulët (presioni i lartë atmosferik shtrydh masat e ajrit në një zonë me presion të ulët atmosferik). Nëse presioni është shumë i ulët, era mund të arrijë stuhi. Në të njëjtën kohë, në zonë reduktuar presioni (depresioni barik ose ciklon), ajri i ngrohtë ngrihet dhe formon retë, të cilat shpesh sjellin shiu ose borë.

Drejtimi i erës në meteorologji është drejtimi nga i cili fryn era:

Ky drejtim është reduktuar në tetë pikë.

Një algoritëm përdoret shpesh për të parashikuar motin bazuar në presionin atmosferik dhe drejtimin e erës. Zambretti.

Sensori i lagështisë

Për të përcaktuar lagështinë relative të ajrit, unë përdor modulin DHT11(blerë nga tregu eBay):

Sensori i lagështisë DHT11 ka tre dalje - fuqia ( + ), të dhëna ( jashtë), Toka ( - ):

prodhimi i sensorit + jashtë -
përfundimi Arduino 5 V D10 GND

Për të punuar me sensorin, përdor bibliotekën nga adafruit- skedarë DHT.h, DHT.cpp.

Lagështia karakterizon sasinë e avullit të ujit që përmbahet në ajër. Lageshtia relative tregon proporcionin e lagështisë në ajër (në përqindje) në raport me sasinë maksimale të mundshme në temperaturën aktuale. Përdoret për të matur lagështinë relative :

Për një person, diapazoni optimal i lagështisë së ajrit është 40 ... 60%.

Ora në kohë reale

Si një orë në kohë reale, unë aplikova modulin RTC DS1302(një shami me një orë është blerë në treg eBay):

Moduli DS1302 lidhur me autobusin 3 tela. Për të përdorur këtë modul me Arduino biblioteka e zhvilluar arduino_RTC( nga iarduino.ru).

Bordi me modul DS1302 ka pesë kunja që i lidha me kunjat e tabelës Arduino Nano:

përfundimi RTC KQV GND RST CLK DAT
përfundimi Arduino 5 V GND D2 D1 D0

Për të mbajtur leximet e sakta të orës kur rryma është e fikur, futa një bateri në prizën në tabelë. CR2032.

Saktësia e modulit tim të orës nuk ishte shumë e lartë - ora është më e shpejtë për rreth një minutë në katër ditë. Prandaj, i rivendos minutat në "zero" dhe orën në afërsinë më të afërt duke mbajtur butonin e lidhur me pinin A0 të Arduino-s pasi të ndizni fuqinë e stacionit të motit. Pas inicializimit, pin A0 përdoret për të transferuar të dhëna përmes lidhjes serike.

Transferimi i të dhënave në një kompjuter dhe puna përmes protokollit MQTT

Për të transferuar të dhëna nëpërmjet një lidhjeje serike në Arduino lidh USB-UART konvertues:

konkluzioni Arduino përdoret për të transferuar të dhëna në format 8N1(8 bit të dhënash, pa barazi, 1 bit ndalimi) në 9600 bps. Të dhënat transmetohen në pako dhe gjatësia e paketës është 4 karaktere. Transferimi i të dhënave kryhet në " bit zhurmë" mode, pa përdorur portën serike të harduerit Arduino.

Formati i të dhënave të transmetuara:

Parametri bajt 1 bajt i 2-të bajt i 3-të bajt i 4-të
temperatura e jashtme o hapësirë ​​ose minus dhjetëra gradë ose hapësirë njësitë e gradave
temperatura e dhomës i hapësirë ​​ose minus dhjetëra gradë ose hapësirë njësitë e gradave
Presioni i atmosferës fq qindra mm Art. dhjetëra mm Hg njësi mmHg Me.
lageshtia relative h hapësirë dhjetëra përqind ose hapësirë për qind njësi
koha aktuale dhjetëra orë njësitë e orëve dhjetëra minuta njësi minutash

MQTT

golang aplikacioni - klienti i protokollit MQTT, i cili dërgon informacionin e marrë nga stacioni i motit në server ( MQTT- ndërmjetësi) :

Shërbimi ju lejon të krijoni një llogari me një plan falas " " (kufijtë: 10 lidhje, 10 Kbps):

Për të monitoruar leximet e stacionit të motit, mund të përdorni Android-Shtojca :

Ushqimi

Për të fuqizuar stacionin e motit, përdor një karikues nga një celular i vjetër. Motorola, duke nxjerrë një tension prej 5 V me një rrymë deri në 0,55 A dhe të lidhur me kontaktet 5 V(+) dhe GND (-):

Ju gjithashtu mund të përdorni një bateri 9 V për energji, të lidhur me kontaktet VIN(+) dhe GND (-).

Funksionimi i stacionit të motit

Në fillimin, sensorët inicializohen dhe kontrollohen.

Në mungesë të një sensori DS18x20 lëshohet një gabim "E1", nëse nuk ka sensor - gabimi "E3".

Pastaj fillon cikli i punës së stacionit të motit:

  • matja dhe shfaqja e temperaturës së jashtme;
  • matja dhe shfaqja e temperaturës së dhomës;
  • matja dhe shfaqja e presionit atmosferik dhe tendenca e ndryshimit të tij;
  • matja dhe shfaqja e lagështisë relative të ajrit;
  • shfaqja e kohës aktuale;
  • shfaqja e fazës së hënës dhe ditës hënore.


Një video e stacionit tim të motit është në dispozicion në mua -kanali: https://youtu.be/vVLbirO-FVU

Shfaqja e temperaturës

Kur matni temperaturën, shfaqen dy shifra të temperaturës dhe për një temperaturë negative, një shenjë minus (me një simbol shkallë në shifrën më të djathtë);
për temperaturën e jashtme, shenja e shkallës shfaqet në krye:


për temperaturën e dhomës - më poshtë:

Shfaqja e presionit

Kur matni presionin, tre shifra të presionit shfaqen në mmHg (me simbolin " P"në shifrën e djathtë):

Nëse presioni ra ndjeshëm, atëherë në vend të simbolit " P" karakteri " shfaqet në shifrën e djathtë L"Nëse është rritur ndjeshëm - atëherë" H". Kriteri për mprehtësinë e ndryshimit është 8 mm Hg në 8 orë:

Meqenëse stacioni im i motit shfaq presion absolut ( QFE), atëherë leximet rezultojnë disi të nënvlerësuara në krahasim me informacionin në përmbledhje METAR(që parashikon QNH) (14 UTC, 28 mars 2018):

Raporti i presionit (sipas ATIS) ishte $(1015 \mbi 998) = 1,017 $. Lartësia e aeroportit Gomel (kodi ICAO UMGG) mbi nivelin e detit është 143.6 m Temperatura sipas ATIS ishte 1 ° C.

Leximet e stacionit tim meteorologjik pothuajse përkonin me presionin absolut QFE sipas ATIS!

Presioni maksimal/min ( QFE) regjistruar nga stacioni im i motit për të gjithë periudhën e vëzhgimit:

Shfaqja e lagështisë relative

Lagështia relative e ajrit shfaqet si përqindje (simboli i përqindjes shfaqet në dy shifrat në të djathtë):

Shfaqja e kohës aktuale

Koha aktuale shfaqet në tregues në formatin "HH:MM", me dy pika ndarëse që pulson një herë në sekondë:

Shfaqja e fazave të hënës dhe ditës hënore

Dy shifrat e para të treguesit tregojnë fazën aktuale hënore, dhe dy të tjerat - ditën aktuale hënore:

Hëna ka tetë faza (janë dhënë emrat anglisht dhe rusisht (blu - i pasaktë):

Në treguesin e fazës shfaqen piktograme:

faza piktogram
drapër në rritje (gjysmëhënë)
gjysmëhëna në rënie (gjysmëhëna)

Transferimi i të dhënave në një kompjuter

Nëse e lidhni stacionin e motit me USB-UART konvertues (për shembull, i bazuar në një mikroqark CP2102) lidhur me USB-portin e kompjuterit, atëherë mund të përdorni programin e terminalit për të vëzhguar të dhënat e transmetuara nga stacioni i motit:

Kam zhvilluar në një gjuhë programimi golang një program që mban një regjistër të vëzhgimeve meteorologjike dhe dërgon të dhëna në shërbim dhe mund të shikohet në Android-smartphone duke përdorur aplikacionin :

Sipas regjistrit të vëzhgimeve meteorologjike, për shembull, mund të ndërtoni një grafik të ndryshimeve në presionin atmosferik:
shembull i një grafiku me një minimum presioni të dukshëm


shembull i një grafiku me një rritje të lehtë të presionit

Përmirësimet e planifikuara:

  • duke shtuar sensorë të drejtimit dhe shpejtësisë së erës

Në stacionet e motit, një anemometër me tre filxhanë (1) përdoret për të matur shpejtësinë e erës dhe një korsi moti (2) përdoret për të përcaktuar drejtimin e erës:

Përdoret gjithashtu për të matur shpejtësinë e erës. anemometra me fije të nxehtë me tela(anglisht) Anemometri me tela të nxehtë). Si një tel i nxehtë, mund të përdorni një fije tungsteni nga një llambë me xham të thyer. Në anemometrat industrialë me tela të nxehtë, sensori zakonisht vendoset në një tub teleskopik:

Parimi i funksionimit të kësaj pajisjeje është që nxehtësia largohet nga elementi i ngrohjes për shkak të konvekcionit nga një rrjedhë ajri - era. Në këtë rast, rezistenca e filamentit përcaktohet nga temperatura e filamentit. Ligji i ndryshimit të rezistencës së filamentit $R_T$ nga temperatura $T$ ka formën:
$R_T = R_0 \cdot (1 + (\alfa \cdot (T - T_0)))$ ,
ku $R_0$ është rezistenca e filamentit në temperaturën $T_0$, $\alpha$ është koeficienti i temperaturës së rezistencës (për tungsten $\alfa = 4.5\cdot(10^(-3) (^(\circ)(C^ (-1))))$).

Me një ndryshim në shpejtësinë e rrjedhës së ajrit, temperatura ndryshon me një rrymë filamenti konstant (anemometër me rrymë të drejtpërdrejtë, eng. CCA). Nëse temperatura e elementit ngrohës mbahet konstante, atëherë rryma përmes elementit do të jetë proporcionale me shpejtësinë e rrjedhës së ajrit (anemometri i temperaturës konstante, eng. CTA).

Vazhdon

Bazuar në projektin e stacionit të motit nga libri i V. Petin "Projektet duke përdorur kontrolluesin Arduino" edicioni i dytë (projekti 5 i Shtojcës 2). Përdorur Arduino IDE 1.8.5 në Windows 10.
U shfaq një gabim gjatë ekzekutimit të skicës

Në internet, mund të shkarkoni biblioteka për Arduino që kanë të njëjtin emër, por përmbajtje të ndryshme. Skica mund të mos funksionojë nëse jeni duke përdorur bibliotekën "të gabuar". Me sa duket, kam marrë bibliotekat e gabuara. Shtova një sensor BMP180 në projekt për të matur presionin atmosferik dhe ripërpunova skicën.

Diagrami i lidhjes

Skanimi i adresave

Së pari, lidhni sensorin BMP180 dhe treguesin LCD1602 me Arduino. Përpiloni skicën e skanerit I2C dhe ekzekutoni atë për të përcaktuar adresat e pajisjes në autobusin I2C.

Çdo 5 sekonda, programi skanon pajisjet dhe adresat e problemeve në portën COM. Kam gjetur dy pajisje me adresat 0x3F dhe 0x77. BMP180 ka adresën 0x77 si parazgjedhje, kështu që treguesi LCD ka adresën 0x3F.
Në disa nga skemat, librat janë të përziera ku sinjalet SDA dhe SCL janë të lidhura me tabelën Arduino. Duhet të jetë: SDA - në A4, SCL - në A5. Nëse moduli BMP180 ka pesë kunja, atëherë +5 volt aplikohet në kutinë VIN.

Diagrami i instalimeve elektrike

Tani montoni plotësisht qarkun. Kam përdorur një katodë të zakonshme RGB LED të montuar në një tabelë së bashku me rezistorë 150 ohm. Katoda e zakonshme është e lidhur me pinin GND, kunjat e tjera janë të lidhura sipas diagramit. Nuk ka nevojë të bëni ndryshime në skicë, pasi shkëlqimi i LED-ve ndryshon sipas një ligji ciklik.
Diagrami tregon lidhjen e një LED RGB me një anodë të zakonshme, si në libër.
Nëse asnjë karakter nuk është i dukshëm në ekranin LCD1602, ktheni kontrollin e ndriçimit. Drita e prapme e treguesit konsumon mjaft rrymë, prandaj përdorni një furnizim me energji me një rrymë prej të paktën 2 A. Kam përdorur një shpërndarës USB me një furnizim të jashtëm 2 A.
Në qark, përdora një thirrje piezo ZP-22. Rezistenca e lidhur me zilen është 100 ohms. Frekuenca e zërit mund të ndryshohet në program. Zgjodha një frekuencë prej 1000 Hz. Nëse hasni një sinjalizues me një frekuencë fikse tingulli, atëherë mund ta ndizni dhe fikni thjesht duke aplikuar dhe hequr tensionin, si një LED i rregullt. Kur fillon skica, bie një bip i shkurtër. Mund të aktivizoni sinjalizimin periodik ndërkohë që programi është duke u ekzekutuar duke mos komentuar linjën //bzz(100); në një skicë.
Në projekt, unë përdora një sensor DHT11 në formën e një moduli me një rezistencë 4.7 kΩ të montuar tashmë. Rezistenca mund të jetë nga 4.7 në 10 kOhm.
Lidhni kunjin Vcc të modulit të orës DS1302 me shiritin +5 volt. Në këtë mënyrë ju do të reduktoni shkarkimin e baterisë, në fakt ajo do të funksionojë vetëm kur energjia e Arduino është e fikur.

Programi (skica)

Biblioteka bmp085 u përdor për të shërbyer BMP180. Vlera e presionit varet nga lartësia e terrenit. Për vlerën e saktë të presionit atmosferik, duhet të zgjidhni lartësinë. Për ta bërë këtë, modifikoni rreshtin dps.init(MODE_STANDARD, 10000, true); Lartësia ime është 100 m (10000 cm). Fragmenti i llogaritjes së presionit është marrë nga shembulli BMP085_test2.ino i bibliotekës bmp085.

skicë meteo_P

#përfshi
#përfshi
#përfshi
#përfshi "dht.h"
#përfshi
BMP085 dps = BMP085();
Presioni i gjatë = 0, Lartësia = 0;
kohë e gjatë e panënshkruar1 = 0;

#define DHTPIN 10
#define DHTTYPE 11 // 11 - DHT11, 22 - DHT22
DHT dht(DHTPIN, DHTTYPE);

int kCePin = 4; // RST DS1302
int kIoPin = 3; // Të dhënat DS1302
int kSclkPin = 2; // CLK DS1302
DS1302 rtc(kCePin, kIoPin, kSclkPin);

int REDpin = 9;
int gjilpërë E GJELBËR = 6;
int pin BLU = 11;

LiquidCrystal_I2C LCD (0x3f, 16, 2); // vendosni adresën tuaj 0x20...0xff adresën
memTime e gjatë e panënshkruar;
int bzzPin = 8;

void HumTempRead() (
float hum = dht.lexo Lagështia();
float temp = dht.lexoTemperature();
nëse (isnan(hum) || isnan(temp)) (
Serial.println("Dështoi të lexohej nga sensori DHT!");
lcd.setCursor(0, 1);
lcd.print("H=--% T=---");
lcd.setCursor(11, 1);
lcd.print((char)223);
lcd.setCursor(12, 1);
lcd.print("C");
) tjeter (
lcd.setCursor(0, 1);
lcd.print("H=");
lcd.setCursor(2, 1);
printim LCD (humë);
lcd.setCursor(4, 1);
lcd.print("%T=+");
lcd.setCursor(9, 1);
printim LCD (temperaturë);
lcd.setCursor(11, 1);
lcd.print((char)223);
lcd.setCursor(12, 1);
lcd.print("C");
}
}

void setup_bzz() (
pinMode (bzzPin, OUTPUT);
}

void bzz(int _bzzTime) (
ton (bzzPin, 1000, _bzzTime); // frekuenca 1000 Hz
}

konfigurimi i zbrazët ()(
Seriali.fillim(9600);
Wire.begin();
vonesë (1000);

dps.init (MODE_STANDARD, 10000, e vërtetë); // 100 metra (lartësia në cm)

dht.fillim();
setup_bzz();
bzz (100);

lcd.init();
lcd.backlight();
LCD.home();
// lcd.setCursor(0, 0);

rtc.ndalt(false);
rtc.writeProtect(false);

//rtc.setDOW(E Premte); // Cakto ditën e javës në FRIDAY cakto ditën e javës
//rtc.setTime(4, 58, 0); // Cakto orën në 12:00:00 (format 24 orë)
//rtc.setDate(6, 8, 2010); // Cakto datën në 6 gusht 2010, cakto datën (ditën, muajin, vitin)
}

lcd.setCursor(8, 0);
lcd.print(rtc.getTimeStr());

nëse ((millis() - memTime > 2000) ose (millis()< memTime)) { // DHT11/22 1 time each 2 seconds
HumTempRead();
memTime = millis();
}
vonesë (100);

nëse (((millis() - koha1) / 1000.0) >= 1.0) (
dps.calcTrueTemperature();
koha1 = millis();
}
dps.getPressure(&Pressure);
Serial.print("Presioni(Pa):");
Serial println(Presion);

longp2;
intpi;
p2 = (Presioni / 133.3224); // Pa në mmHg
pi = trunc(p2); // duke hedhur poshtë pjesën thyesore të numrit

lcd.setCursor(0, 0);
lcd.print("P=");
lcd.setCursor(2, 0);
printim LCD (pi); // atm dalje. presioni në LCD
lcd.setCursor(5, 0);
lcd.print("mm");
// vonesë (3000);
//bzz(100); // ankokomento nëse dëshiron të dëgjosh për sinjale
{
për (vlera int = 0 ; vlera<= 255; value += 1) {
analogWrite (REDpin, vlera);
analogWrite(GREENpin, 255 - vlera);
analogWrite (Bluepin, 255);
vonesë (5);
}

për (vlera int = 0; vlera<= 255; value += 1) {
analogWrite (REDpin, 255);
analogWrite(GREENpin, vlera);
analogWrite(Bluepin, 255 - vlera);
vonesë (5);
}

për (vlera int = 0; vlera<= 255; value += 1) {
analogWrite(REDpin, 255 - vlera);
analogWrite(GREENpin, 255);
analogWrite(Bluepin, vlera);
vonesë (5);
}
}
}

Në Katalogun e skedarëve mund të shkarkoni skicën dhe bibliotekat që janë përdorur në projekt.

Importoni bibliotekat LiquidCrystal_I2C.zip, bmp085.zip, DS1302.zip dhe DHT.zip nga arkivi i shkarkuar në Arduino IDE. Shkoni te menyja Skicë Lidh bibliotekën Shto bibliotekën .zip... dhe në dritare zgjidhni arkivin zip të bibliotekës.
Shkarkoni skicën meteo_P. Zëvendësoni adresën LCD1602 në skicë me vlerën e marrë nga skanimi i autobusit I2C. Përpiloni dhe ekzekutoni skicën.
Nëse skica funksionon, atëherë hapni monitorin e portit dhe shikoni mesazhet e daljes. Përputhni lartësinë në deklaratën dps.init(MODE_STANDARD, 10000, true); për të marrë vlerat reale të presionit.
Vendosni orën tuaj. Çkomentoni rreshtin //rtc.setTime(4, 58, 0); dhe në kllapa specifikoni kohën aktuale (orë, minuta dhe sekonda të ndara me presje) dhe ringarkoni skicën në kontrollues. Pasi të jetë caktuar koha, komentoni përsëri këtë rresht dhe rinisni skicën përsëri.
Nëse ndriçimi i dritës së natës ju bezdis, mund ta rregulloni atë duke ndryshuar gjatësinë e vonesës në sythe për në fund të skicës. Me vonesë (2); laku zgjat 2-3 sekonda, me vonesë (5); — nga 4 deri në 5 sekonda, me vonesë (30); - deri në 15-16 sekonda. Informacioni mbi treguesin do të përditësohet në të njëjtin interval.
Kur përdorni stacionin e motit në mënyrë autonome, d.m.th. pa u lidhur me portën USB të kompjuterit, komentoni rreshtat me fjalët Serial ... në skicë për të çaktivizuar daljen e informacionit në monitorin e portit COM.

PS. Në skicën e librit dhe në shembujt për bibliotekën DHT, tregohet linja e përkufizimit #define DHTTYPE DHT 11. Skica shfaqet, por rrëzohet pas disa orësh. Ora ndalon, ekrani nuk ndryshon. Një mesazh i paqartë shfaqet në monitorin e portit, në të cilin ka një referencë për dht.
Në këtë rresht kam hequr shkronjat DHT, d.m.th. bëri #define DHTTYPE 11. Pas kësaj, skica filloi të funksionojë në mënyrë të qëndrueshme.

Artikulli u përditësua më 25.06.2018

Burimet e përdorura
1. Petin V.A. Projekte duke përdorur kontrolluesin Arduino (Elektronikë) Edicioni i dytë, Shën Petersburg. BHV-Petersburg, 2015 464 f.
2. Petin V. A., Binyakovsky A. A. Enciklopedia praktike Arduino. - M., DMK Press, 2017. - 152 f.
3.http://arduinolearning.com/code/i2c-scanner.php
4. http://arduino.ru/forum/programmirovanie/ds1302lcd1602
5. http://robotics18.rf/how-to-connect-lcd-1602-to-arduino-by-i2c/
6. Shembull BMP085_test2.ino nga biblioteka bmp085.zip
7. http://proginfo.ru/round/
8. http://homes-smart.ru/index.php?id=14&Itemid=149&option=com_content&view=article
9. http://iarduino.ru/lib/datasheet%20bmp180.pdf
10. http://it-donnet.ru/hd44780_dht11_arduino/

Një herë, duke eksploruar internetin, hasa në një tabelë interesante Arduino. Isha shumë i interesuar për këtë bord. Me ndihmën e tij, ju mund të bëni vetë një robot, një stacion moti, një sistem alarmi dhe madje edhe diçka më serioze, për shembull, një shtëpi inteligjente.

Pasi bleva këtë pajisje, fillova të studioj veçoritë e saj. Pasi luajta mjaftueshëm me LED, një sensor të temperaturës dhe një ekran LCD, vendosa të bëj diçka kaq interesante dhe diçka që mund të jetë e dobishme për mua në shtëpi.
Dhe ja çfarë doli prej saj...

Sot dua të flas për projektin tim të vogël të shtëpisë, domethënë për një stacion moti në dhomë në Arduino. Unë mendoj se të gjithë do të dëshironin të shihnin, për shembull, cila është temperatura ose lagështia e dhomës së tyre, dhe kështu, projekti im do t'ju lejojë ta bëni këtë.

Ja si do të duket i montuar stacioni i motit:

Ju ndoshta keni dashur të montoni të njëjtën pajisje, mirë, le të mos tërhiqemi.

aftësitë

Por së pari, le të shohim se çfarë mund të bëjë stacioni ynë i motit:

1) Trego datën dhe orën aktuale;
2) Trego temperaturën aktuale;
3) Tregoni lagështinë aktuale;
4) Tregoni presionin aktual atmosferik.

Kompleksi

Çfarë na nevojitet për të zbatuar këtë stacion moti:

1) Vetë mikrokontrolluesi Arduino (kam përdorur Arduino nano v3);
2) Sensori i temperaturës dhe lagështisë Dht22 (gabime të vogla në lexime);
3) Barometri BMP085, mund të bëjë shumë gjëra, për shembull, të masë presionin atmosferik, temperaturën, nivelin mbi nivelin e detit;
4) Ora në kohë reale DS3231 (është shumë e saktë dhe e lehtë për t'u vendosur);
5) Ende duhet ta shfaqim diku, zgjodha ekranin e njohur nga Nokia 5110;
6) Krahët e drejtë, pa të në asnjë mënyrë.

Nga nevoja:

7) Bllok për bateritë, për të fuqizuar të gjithë strukturën. Unë jam i mundësuar nga usb. Bateritë nuk zgjasin disa ditë;
8) Çelësi është këtu për të ndezur dritën e prapme të ekranit sipas nevojës;
9) Një copë kompensatë dhe këmbë.
10) Konektori për lidhjen e furnizimit me energji elektrike.

Lidhje

Tani le të shohim se ku dhe si të lidhim çfarë.

1) E para do të jetë ekrani ynë:
pin 3 - Ora serike jashtë (SCLK)
pin 4 - Dalja e të dhënave serike (DIN)
pin 5 - Zgjedhja e të dhënave/komandës (D/C)
pin 7 - Zgjedhja e çipit LCD (CS)
kunja 6 - rivendosja e LCD-së (RST)
Furnizimi me energji elektrike 3.3V

3) E treta do të jetë një barometër:
kunja 4-SDA
kunja 5 - SCL
Furnizimi me energji elektrike 5V

Mos harroni të lidhni fuqinë dhe tokën.

Kodi

Epo, tani pjesa argëtuese është kodi ynë.
Jam munduar ta komentoj mirë për ta bërë të qartë, por do të ketë inserte në anglisht nga bibliotekat. Unë mendoj se nuk do të ketë probleme me përkthimin.

Kodi

#përfshi #include "dht.h" #include #përfshi #përfshi "RTClib.h" #define DHTPIN 10 // 10 pin për sensorin DHT22 #define DHTTYPE DHT22 RTC_DS1307 RTC; BMP085 dps = BMP085(); DHT dht(DHTPIN, DHTTYPE); temp i gjatë3 = 0, Presioni = 0, Lartësia = 0; // pin 3 - Ora serike (SCLK) // pin 4 - Dalje e të dhënave serike (DIN) // pin 5 - Zgjedhja e të dhënave/komandës (D/C) // pin 7 - Zgjedhja e çipit LCD (CS) // pin 6 - Rivendosja e LCD (RST) LCD5110 myGLCD(3, 4, 5, 6, 7); karakter i jashtëm i panënshkruar SmallFont; void setup() ( myGLCD.InitLCD(); myGLCD.setFont(SmallFont); Wire.begin(); RTC.begin(); dht.begin(); vonesë(2000); dps.init(MODE_ULTRA_HIGHRES, 3200, e vërtetë ); // 3200 është 32 metra mbi nivelin e detit (Shën Petersburgu ndodhet në një lartësi të tillë + duhet të shtoni disa metra në varësi të katit ku jetoni) ) void loop() ( dps.getPressure(&Pressure); dps.getAltitude(&Altitude); dps.getTemperature(&temp3); DataTime tani = RTC.now(); // Leximet e sensorit mund të jenë gjithashtu deri në 2 sekonda "të vjetra" (është një sensor shumë i ngadalshëm) noton h = dht.read Lagështia (). , LEFT, 0); //cakto kohën myGLCD.printNumI(int(tani.hour()), 32, 0); // 32.0 do të thotë 32=numri i boshllëkut në rresht, ato nga do të printojmë. 0=numri i rreshtit myGLCD.print(": ", 45, 0); myGLCD.printNumI(int(tani.minute()), 50, 0); myGLCD.print(":", 62, 0); myGLCD.printNumI(int(tani.second()), 67, 0); myGLCD.print("Data=", LEFT, 10); //cakto datën myGLCD.printNumI(int(tani.day()), 32, 10); myGLCD.print("/", 44, 10); myGLCD.printNumI(int(tani.month()), 50, 10); myGLCD.print("/", 62, 10); myGLCD.printNumI(int(tani.year() - 2000), 68, 10); myGLCD.print("T=", LEFT, 20); //cakto temperaturën myGLCD.printNumF(t, 2, 13, 20); //Kjo është temperatura nga DHT22 myGLCD.print("/", 45, 20); myGLCD.printNumF(temp3 * 0.1, 2, 53, 20); //Kjo është temperatura e barometrit myGLCD.print("Hum=", LEFT, 30); // vendos lagështinë me DHT22 myGLCD.printNumF(h, 2, 28, 30); myGLCD.print("%", 63, 30); myGLCD.print("Pres=", LEFT, 40); // vendos presionin atmosferik myGLCD.printNumF(Pressure / 133.3, 2, 31, 40); //llogaritja e presionit atmosferik myGLCD.print("mm", 68, 40); // Serial.print(" Alt(m):"); kujt i intereson kjo është lartësia aktuale // Serial.print(Altitude / 100); myGLCD.update(); // Shfaq vonesën e kapacitetit të tamponit (1000); // Vonesa 1s)

Doja të kisha stacionin tim të motit, i cili transmeton lexime nga sensorët në hartën e monitorimit të njerëzve (kërkimi në Google kërkon 5 sekonda). Doli të ishte jo aq e vështirë sa duket. Mendoni se çfarë është bërë.

Për këtë veprim, mora një Arduino Uno dhe një Ethernet Shield w5100 për të. E gjithë kjo është porositur nga Kina në Aliexpress.

Unë gjithashtu porosita sensorë atje: DHT22, DHT11, DS18B20, BMP280 (sensorët e gazit, tymit janë planifikuar gjithashtu ...)

Duke pasur forume të tymosur, Google, Yandex, gjeta një version të mirë të skicës - https://student-proger.ru/2014/11/meteostanciya-2-1/

Në të njëjtin vend, në komente, një person postoi një skicë të plotësuar me sensorë të dritës dhe gazit. I mora si bazë.

Në ato skica nuk kishte mbështetje për sensorin e presionit të 280-të, biseduam me autorin, ai e zëvendësoi 180 me 280. Gjithçka funksionoi mirë (faleminderit shumë për këtë)

Më poshtë është një shembull i skicës përfundimtare që kam marrë.

Për momentin kam sensorë të lidhur:
DHT22 - 1 copë.
DHT11 - 1 copë.
BMP280 - 1 pc.
DS18B20 - 2 copë.

KUJDES! Para se të ngarkoni skicën, mos harroni të ndryshoni adresën MAC të pajisjes në mënyrë që të mos mbivendoseni me të tjerët (për shembull, merrni adresën Mac të telefonit tuaj celular dhe ndryshoni shkronjat / numrat e fundit në të, të cilat nuk do të " shqetësoni" rrjetin tuaj lokal!

Diagrami i përafërt i lidhjes (foto e marrë në internet nga kjo skicë):

Për arsye teknike, nuk mund ta postoj skicën këtu. E futa në arkiv. Lidhja me të është më lart.

Siç mund ta shihni, ka lexime, ato po funksionojnë siç duhet, për shembull, unë do të postoj disa pamje nga sensorët e mi:

Një kolegu im organizoi kohët e fundit një panair të vogël shkencor.
Mësuesi im më kërkoi të prezantoj një projekt elektronik për studentët e kolegjit. Kisha dy ditë për të dalë me diçka interesante dhe mjaft të thjeshtë.



Meqenëse kushtet e motit këtu janë mjaft të ndryshueshme, dhe temperatura luhatet në intervalin 30-40 ° C, vendosa të bëj një stacion moti në shtëpi.

Cilat janë funksionet e një stacioni meteorologjik në shtëpi?
Një stacion meteorologjik Arduino me një ekran është një pajisje që mbledh të dhëna për motin dhe kushtet mjedisore duke përdorur një sërë sensorësh.

Zakonisht këta janë sensorët e mëposhtëm:

  • era
  • lagështia
  • shiu
  • temperatura
  • presioni
  • lartësitë

Qëllimi im është të bëj një stacion portativ të motit desktop me duart e mia.

Ai duhet të jetë në gjendje të përcaktojë parametrat e mëposhtëm:

  • temperatura
  • lagështia
  • presioni
  • lartësia

Hapi 1: Bleni komponentët e duhur







  • DHT22, sensori i temperaturës dhe lagështisë.
  • BMP180, sensor presioni.
  • Saldim
  • Lidhës me një rresht 40 dalje

Nga pajisjet do t'ju duhet:

  • Makine per ngjitjen e metalit
  • pincë jastëk hundë
  • telat

Hapi 2: Sensori i temperaturës dhe lagështisë DHT22







Për matjen e temperaturës përdoren sensorë të ndryshëm. DHT22, DHT11, SHT1x janë të njohura

Unë do të shpjegoj se si ato ndryshojnë nga njëri-tjetri dhe pse kam përdorur DHT22.

Sensori AM2302 përdor një sinjal dixhital. Ky sensor funksionon në një sistem unik kodimi dhe teknologji sensori, kështu që të dhënat e tij janë të besueshme. Elementi i tij sensor është i lidhur me një kompjuter 8-bit me një çip.

Çdo sensor i këtij modeli kompensohet termikisht dhe kalibrohet saktësisht, koeficienti i kalibrimit ruhet në një memorie të programueshme një herë (OTP memorie). Kur lexoni një lexim, sensori do të kujtojë koeficientin nga kujtesa.

Madhësia e vogël, konsumi i ulët i energjisë, distanca e gjatë e transmetimit (100 m) e bëjnë AM2302 të përshtatshëm për pothuajse të gjitha aplikacionet dhe 4 dalje me radhë e bëjnë instalimin shumë të lehtë.

Le të shohim të mirat dhe të këqijat e tre modeleve të sensorëve.

DHT11

Pro: nuk kërkon saldim, më i liri nga tre modelet, sinjal i shpejtë i qëndrueshëm, diapazon mbi 20 m, ndërhyrje e fortë.
Kundër: Biblioteka! Nuk ka opsione rezolucioni, gabimi i matjes së temperaturës +/- 2°С, gabimi i matjes së nivelit të lagështisë relative +/- 5%, diapazoni joadekuat i temperaturave të matura (0-50°С).
Aplikimet: kopshtari, bujqësi.

DHT22

Pro: nuk kërkon saldim, kosto të ulët, kthesa të lëmuara, gabime të vogla në matje, gamë e madhe matjeje, diapazon mbi 20 m, ndërhyrje të forta.
Kundër: ndjeshmëria mund të jetë më e lartë, gjurmimi i ngadaltë i ndryshimeve të temperaturës, nevojitet një bibliotekë.
Aplikimet: studime mjedisore.

SHT1x

Pro: nuk kërkohet saldim, kthesa të lëmuara, gabime të vogla në matje, reagim i shpejtë, konsum i ulët i energjisë, modaliteti automatik i fjetjes, stabilitet i lartë dhe konsistencë e të dhënave.
Kundër: dy ndërfaqe dixhitale, gabim në matjen e nivelit të lagështisë, diapazoni i temperaturave të matura është 0-50°C, nevojitet një bibliotekë.
Aplikimet: funksionimi në mjedise të vështira dhe në instalime afatgjatë. Të tre sensorët janë relativisht të lirë.

Kompleksi

  • Vcc - 5V ose 3.3V
  • Gnd - me Gnd
  • Të dhënat - në pinin e dytë Arduino

Hapi 3: Sensori i presionit BMP180



BMP180 është një sensor barometrik i presionit atmosferik me ndërfaqe I2C.
Sensorët barometrikë të presionit matin vlerën absolute të ajrit të ambientit. Ky tregues varet nga kushtet specifike të motit dhe nga lartësia mbi nivelin e detit.

Moduli BMP180 kishte një rregullator 3.3V 662k ohm, të cilin unë, nga marrëzia ime, e shpërtheva aksidentalisht. Më duhej të bëja një goditje elektrike direkt në çip.

Për shkak të mungesës së një stabilizuesi, unë jam i kufizuar në zgjedhjen e një burimi të energjisë - tensionet mbi 3.3 V do të shkatërrojnë sensorin.
Modelet e tjera mund të mos kenë një stabilizues, sigurohuni që ta kontrolloni për të.

Diagrami i lidhjes së sensorit dhe autobusit I2C me Arduino (nano ose uno)

  • SDA-A4
  • SCL-A5
  • KQV - 3.3V
  • GND-GND

Le të flasim pak për presionin, dhe si lidhet me temperaturën dhe lartësinë.

Presioni atmosferik në çdo pikë nuk është konstant. Ndërveprimi kompleks midis rrotullimit të Tokës dhe animit të boshtit të Tokës rezulton në shumë zona me presion të lartë dhe të ulët, gjë që rezulton në modele të përditshme të motit. Duke vëzhguar ndryshimin e presionit, mund të bëni një parashikim afatshkurtër të motit.

Për shembull, një rënie e presionit zakonisht nënkupton mot me shi ose afrimin e një stuhie (duke iu afruar një zone me presion të ulët, një ciklon). Rritja e presionit zakonisht nënkupton mot të thatë dhe të kthjellët (një zonë me presion të lartë, një anticiklon, po kalon mbi ju).

Presioni atmosferik gjithashtu ndryshon me lartësinë. Presioni absolut në kampin bazë në Everest (5400 m mbi nivelin e detit) është më i ulët se presioni absolut në Delhi (216 m mbi nivelin e detit).

Meqenëse leximet e presionit absolut ndryshojnë në çdo vend, ne do t'i referohemi presionit relativ ose presionit të nivelit të detit.

Matja e lartësisë

Presioni mesatar në nivelin e detit është 1013.25 GPa (ose milibar). Nëse ngriheni mbi atmosferën, kjo vlerë do të bjerë në zero. Kurba e kësaj rënieje është mjaft e kuptueshme, kështu që ju mund ta llogaritni vetë lartësinë duke përdorur ekuacionin e mëposhtëm: alti=44330*

Nëse e merrni presionin e nivelit të detit prej 1013,25 GPa si p0, zgjidhja e ekuacionit është lartësia juaj aktuale.

Masat paraprake

Mbani në mend se sensori BMP180 ka nevojë për qasje në atmosferë për të qenë në gjendje të lexojë presionin e ajrit, mos e vendosni sensorin në një kuti të mbyllur. Një ndenja e vogël do të jetë e mjaftueshme. Por mos e lini shumë të hapur - era do të rrëzojë presionin dhe leximet e lartësisë. Merrni parasysh mbrojtjen e erës.

Mbroni nga nxehtësia. Për të matur presionin kërkohen lexime të sakta të temperaturës. Mundohuni të mbroni sensorin nga luhatjet e temperaturës dhe mos e lini pranë burimeve të temperaturave të larta.

Mbroni nga lagështia. Sensori BMP180 është i ndjeshëm ndaj niveleve të lagështisë, përpiquni të parandaloni depërtimin e mundshëm të ujit në sensor.

Mos e verboni sensorin. Surpriza ishte ndjeshmëria e silikonit në sensor ndaj dritës, e cila mund të bjerë mbi të përmes një vrime në kapakun e çipit. Për matjet më të sakta, përpiquni të mbroni sensorin nga drita e ambientit.

Hapi 4: Montimi i pajisjes







Instalimi i lidhësve me një rresht për Arduino Nano. Në thelb, i kemi prerë në madhësi dhe i kemi lyer me rërë paksa që të duken si të ishin. Pastaj i bashkojmë ato. Pas kësaj, ne instalojmë lidhës me një rresht për sensorin DHT22.

Instaloni një rezistencë 10 kΩ nga dalja e të dhënave në tokë (Gnd). Ne bashkojmë gjithçka.
Pastaj, në të njëjtën mënyrë, instalojmë një lidhës me një rresht për sensorin BMP180, e bëjmë furnizimin me energji elektrike 3.3V. Ne lidhim gjithçka me autobusin I2C.

Së fundi, ne e lidhim ekranin LCD me të njëjtin autobus I2C si sensori BMP180.
(Unë planifikoj të lidh më vonë një modul RTC (orë në kohë reale) me lidhësin e katërt në mënyrë që pajisja të tregojë gjithashtu kohën).

Hapi 5: Kodimi




Shkarkoni Bibliotekat

Për të instaluar bibliotekat në Arduino, ndiqni lidhjen

#përfshi
#include #include #include "DHT.h" #include

Presioni SFE_BMP180;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 //<<- Add your address here. #define Rs_pin 0 #define Rw_pin 1 #define En_pin 2 #define BACKLIGHT_PIN 3 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7

#define DHTPIN 2 // me cilin pin dixhital jemi lidhur

// Hiq komentin çfarëdo lloji që po përdorni! //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 DHT dht(DHTPIN, DHTTYPE, LiquidCrydCrystal_DHTYPE, LiquidCrydCrystal_Pin Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);float t1,t2;

void setup() ( Serial.begin (9600); lcd.begin (16,2); //<<-- our LCD is a 20x4, change for your LCD if needed // LCD Backlight ON lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); // go home on LCD lcd.print("Weather Station"); delay(5000); dht.begin(); pressure.begin(); } void loop() { char status; double T,P,p0,a; status = pressure.startTemperature(); if (status != 0) { delay(status);

status = presion.getTemperature(T); if (statusi != 0) ( Serial.print ("1"); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Temperatura Baro: "); lcd.setCursor(0,1 lcd.print(T,2);lcd.print("gradë C");t1=T; vonesë(3000);

status = presion.startPressure(3); nëse (statusi != 0) ( // Prisni që matja të përfundojë: vonesë(status);

status = presion.getPressure(P,T); nëse (statusi != 0) (lcd.clear(); lcd.setCursor(0,0); lcd.print("presion abslt: "); lcd.setCursor(0,1); lcd.print(P,2 lcd.print(" mb "); vonesë (3000);

p0 = presion.nivel vulosje(P,ALTITUDE); // jemi në 1655 metra (Boulder, CO)

a = presioni.lartësia (P,p0); lcd.clear(); lcd.setCursor(0,0); lcd.print("Lartësia: "); lcd.setCursor(0,1); lcd.print(a,0); lcd.print("metra"); vonesë (3000); ) ) ) ) float h = dht.lexo Lagështia(); // Lexoni temperaturën si Celsius (e parazgjedhur) float t = dht.readTemperature(); t2=t; lcd.clear(); lcd.setCursor(0,0); // shkoni te fillimi i rreshtit të dytë lcd.print("Lagështia: "); lcd.setCursor(0,1);lcd.print(h); lcd.print("%"); vonesë (3000); lcd.clear(); lcd.setCursor(0,0); // shkoni te fillimi i printimit të LCD-së së linjës së dytë ("Temperatura DHT: "); lcd.setCursor(0,1); printim LCD(t); lcd.print ("degC"); vonesë (3000); lcd.clear(); lcd.setCursor(0,0); // shkoni te fillimi i rreshtit të dytë lcd.print("Temperatura mesatare: "); lcd.setCursor(0,1); lcd.print((t1+t2)/2); lcd.print ("degC"); vonesë (3000); )

Kam përdorur versionin 1.6.5 Arduino, kodi i përshtatet saktësisht, mund të funksionojnë edhe ato të mëvonshme. Nëse kodi nuk përshtatet për ndonjë arsye, përdorni versionin 1.6.5 si bazë.