mppss.ru – ВсС ΠΏΡ€ΠΎ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ

ВсС ΠΏΡ€ΠΎ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ

КакиС характСристики Ρƒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности Ардуино? ΠœΠΎΠ΄ΡƒΠ»ΡŒ DHT11 ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Arduino Π”Π°Ρ‚Ρ‡ΠΈΠΊ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠΉ влаТности Π²ΠΎΠ·Π΄ΡƒΡ…Π° Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

НовыС ΡΡ‚Π°Ρ‚ΡŒΠΈ

● 4.3. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ влаТности ΠΏΠΎΡ‡Π²Ρ‹

Π”ΠΎΠΌΠ°ΡˆΠ½ΠΈΠΉ ΡƒΡŽΡ‚ β€” это атмосфСра Ρ‚Π΅ΠΏΠ»Π° Π² вашСй ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π΅, ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ‚ΡƒΠ΄Π° послС Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΠ³ΠΎ дня. Π£ΡŽΡ‚ ΠΈ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚ Π² вашСм Π΄ΠΎΠΌΠ΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ нСпосрСдствСнноС влияниС Π½Π° вашС самочувствиС ΠΈ настроСниС. НСобходимоС условиС Π² создании ΡƒΡŽΡ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ использованиС ΠΊΠΎΠΌΠ½Π°Ρ‚Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ². Они доступны ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· нас ΠΈ ΠΏΡ€ΠΈ этом Π»ΡƒΡ‡ΡˆΠ΅ любой ΠΌΠ΅Π±Π΅Π»ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΡŽΡ‚ ΠΈ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚, ΠΈ ΠΊΠ°ΠΊ Π½ΠΈ Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ просто Π²Π΄ΠΎΡ…Π½ΡƒΡ‚ΡŒ Π² ваш Π΄ΠΎΠΌ Ρ‡ΠΈΡΡ‚ΡƒΡŽ ΡΠ½Π΅Ρ€Π³ΠΈΡŽ.
Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ домашниС Ρ†Π²Π΅Ρ‚Ρ‹ Ρ€Π°Π΄ΠΎΠ²Π°Π»ΠΈ вас красотой, слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎ ΡƒΡ…ΠΎΠ΄Ρƒ Π·Π° ΠΊΠΎΠΌΠ½Π°Ρ‚Π½Ρ‹ΠΌΠΈ растСниями - Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ благоприятный для Π½ΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ Π²ΠΎΠ·Π΄ΡƒΡ…Π°, влаТности ΠΈ освСщСния.
ΠœΠΎΠ΄ΡƒΠ»ΡŒ влаТности ΠΏΠΎΡ‡Π²Ρ‹ (рис. 4.12) ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для опрСдСлСния влаТности Π·Π΅ΠΌΠ»ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½. Он позволяСт ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ нСдостаточном ΠΈΠ»ΠΈ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠΌ ΠΏΠΎΠ»ΠΈΠ²Π΅ Π²Π°ΡˆΠΈΡ… Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… ΠΈΠ»ΠΈ садовых растСний. ΠœΠΎΠ΄ΡƒΠ»ΡŒ состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй: ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ‰ΡƒΠΏΠ° YL-28 ΠΈ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° YL-38, Ρ‰ΡƒΠΏ YL-28 соСдинСн с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ YL-38 ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°ΠΌ. ΠœΠ΅ΠΆΠ΄Ρƒ двумя элСктродами Ρ‰ΡƒΠΏΠ° YL-28 создаётся нСбольшоС напряТСниС. Если ΠΏΠΎΡ‡Π²Π° сухая, сопротивлСниС Π²Π΅Π»ΠΈΠΊΠΎ ΠΈ Ρ‚ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ мСньшС. Если зСмля влаТная β€” сопротивлСниС мСньшС, Ρ‚ΠΎΠΊ β€” Ρ‡ΡƒΡ‚ΡŒ большС. По ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ сигналу ΠΌΠΎΠΆΠ½ΠΎ ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΎ стСпСни влаТности.
ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ модуля ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ позволяСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс ΠΏΠΎΠ»ΠΈΠ²Π° Π²Π°ΡˆΠΈΡ… растСний (своСго Ρ€ΠΎΠ΄Π° "ΡƒΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠ²").

Рис. 4.12. Π”Π°Ρ‚Ρ‡ΠΈΠΊ увлаТнСнности ΠΏΠΎΡ‡Π²Ρ‹ Soil Moisture

ΠšΡ€ΠΎΠΌΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² соСдинСния с Ρ‰ΡƒΠΏΠΎΠΌ, Π΄Π°Ρ‚Ρ‡ΠΈΠΊ YL-38 ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ.

Vcc - ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°;
. GND - зСмля;
. A0 - Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;
. D0 - Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ уровня влаТности.

Π”Π°Ρ‚Ρ‡ΠΈΠΊ YL-38 построСн Π½Π° основС ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€Π° LM393, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π΄Π°Π΅Ρ‚ напряТСниС Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ D0 ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ: влаТная ΠΏΠΎΡ‡Π²Π° - Π½ΠΈΠ·ΠΊΠΈΠΉ логичСский ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, сухая ΠΏΠΎΡ‡Π²Π° - высокий логичСский ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ опрСдСляСтся ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°. На Π²Ρ‹Π²ΠΎΠ΄ A0 подаСтся Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ для дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.
Π”Π°Ρ‚Ρ‡ΠΈΠΊ YL-38 ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° свСтодиода, ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰Π΅Π³ΠΎ Π½Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊ питания ΠΈ уровня Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ сигналы Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ D0. НаличиС Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° D0 ΠΈ свСтодиода уровня D0 позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎ, Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ.
Рассмотрим ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° увлаТнСнности ΠΏΠΎΡ‡Π²Ρ‹ Soil Moisture ΠΊ ΠΏΠ»Π°Ρ‚Π΅ Arduino Mega ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ NodeMcu ESP8266.

4.3.1. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture ΠΊ ΠΏΠ»Π°Ρ‚Π΅ Arduino Mega

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture ΠΊ ΠΏΠ»Π°Ρ‚Π΅ Arduino Mega ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ Π²Ρ…ΠΎΠ΄Ρƒ. ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅ для Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Π±Π΅Ρ€Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΠ»Π°Ρ‚Ρ‹ Arduino. Π‘Ρ…Π΅ΠΌΠ° соСдинСний прСдставлСна Π½Π° рис. 4.13.

Рис. 4.13. Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture ΠΊ Arduino Mega

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π½Π° ΠΏΠ»Π°Ρ‚Ρƒ Arduino Mega скСтч получСния Π΄Π°Π½Π½Ρ‹Ρ… с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ DS18B20 ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ Arduino. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… влаТности ΠΎΡ„ΠΎΡ€ΠΌΠΈΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ get_data_soilmoisture(). Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ скСтча прСдставлСно Π² листингС 4.5.
Листинг 4.5

#// ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, мс #define SOILMOISTUREPIN A8 // ΠΏΠΈΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° A0 // Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠ²Π° # # void setup (void ) { Serial.begin(9600 ); } void loop (void ) { if (millis()-millis_int1 >= INTERVAL_GET_DATA) { Serial.print("soilmoisture =" );Serial.println(moisture); Serial.println(" %" ); // старт ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° отсчСта millis_int1=millis(); } } { int avalue=analogRead(SOILMOISTUREPIN);

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ скСтч Π½Π° ΠΏΠ»Π°Ρ‚Ρƒ Arduino Mega, ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° ΠΈ Π²ΠΈΠ΄ΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture (рис. 4.14). ΠŸΠΎΠ΄Π±Π΅Ρ€ΠΈΡ‚Π΅ практичСским ΠΏΡƒΡ‚Π΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния для констант MINVALUESOILMOISTURE (ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠ²) ΠΈ MINVALUESOILMOISTURE (критичСская ΡΡƒΡ…ΠΎΡΡ‚ΡŒ).

Рис. 4.14. Π’Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°

Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ скСтч ΠΌΠΎΠΆΠ½ΠΎ Π½Π° сайтС www..

4.3.2. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π²Ρ…ΠΎΠ΄ΠΎΠ² - ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ CD4051

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Node Mcu ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΊΠ°Π½Π°Π» АЦП доступный для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Однако Π½Π°ΠΌ понадобится ΠΈΡ… Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС. Как ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ количСство Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π²Ρ…ΠΎΠ΄ΠΎΠ²? Для этого Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ CD4051 (см. рис. 4.15).


Рис. 4.15. ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ CD4051

ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΠ° 4051 являСтся 8-ΠΊΠ°Π½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€/ Π΄Π΅ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ΠΎΠΌ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ 8 Π²Ρ…ΠΎΠ΄ΠΎΠ² (y0 - y7) ΠΈ 1 Π²Ρ‹Ρ…ΠΎΠ΄ Z (см. рис. 4.16). Π’Ρ‹Π±ΠΎΡ€ считываСмого Π²Ρ…ΠΎΠ΄Π° осущСствляСтся ΠΏΠΎΠ΄Π°Ρ‡Π΅ΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… сигналов Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹ s0 - s2. Π’.Π΅. для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Node Mcu 8 Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ 3 Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Ρ…ΠΎΠ΄Π° модуля ΠΈ 1 Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄.

Рис. 4.16. ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π° CD4051

И Π² листингС 4.6. прСдставлСн скСтч цикличСского опроса 8 Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊ 8 Π²Ρ…ΠΎΠ΄Π°ΠΌ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π° ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ…ΠΎΠ΄ Z ΠΊ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ Π²Ρ…ΠΎΠ΄Ρƒ A0 модуля Node Mcu.
Листинг 4.6

// список ΠΏΠΈΠ½ΠΎΠ² для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ s0, s1, s2 ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π° // D5, D7, D8 (GPIO 14, 13, 15) int pins={14 , 13 , 15 }; // Массив Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… числ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… Π½ΠΎΠΌΠ΅Ρ€ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π°/Π²Ρ‹Ρ…ΠΎΠ΄Π° // микросхСмы 4051, с 1 ΠΏΠΎ 8. int bin = { B000, B001, B010, B011, B100, B101, B110, B111 } ; // слуТСбныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ int row; int r0 = 0 ; int r1 = 0 ; int r2 = 0 ; int avalue =0 ; void setup (void ) { // Π²Ρ…ΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Ρƒ ΠΊΠ°ΠΊ OUTPUT for (int i=0 ;i<3 ;i++) { pinMode(pins[i],OUTPUT); } // запуск ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° Serial.begin(9600 ); } void loop (void ) { for (int i=0 ;i<8 ;i++) { // Π²Ρ‹Π±ΠΎΡ€ Π²Ρ…ΠΎΠ΄Π° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π° row = bin [i] ; r0 = row & 0x01 ; r1 = (row >> 1 ) & 0x01 ; // r2 = (row >> 2 ) & 0x01 ; // digitalWrite (pins[i], r0) ; digitalWrite (pins[i], r1) ; digitalWrite (pins[i], r2) ; // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… c A0 avalue= analogRead(A0); // Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° Serial.print("analog input =" );Serial.print(i); Serial.println(" = " ); Serial.println(avalue); } // ΠΏΠ°ΡƒΠ·Π° delay(2000 ); }

4.3.3. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ NodeMcu ESP8266

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ NodeMcu ESP8266. Π”Π°Ρ‚Ρ‡ΠΈΠΊ Soil Moisture ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊ Π²Ρ…ΠΎΠ΄Ρƒ y0 ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π°. Для Π²Ρ‹Π±ΠΎΡ€Π° Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ D5, D7, D8 модуля Node Mcu. Π‘Ρ…Π΅ΠΌΠ° соСдинСний прСдставлСна Π½Π° рис. 4.17.

Рис. 4.17. Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture ΠΊ NodeMcu ESP8266

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Node Mcu скСтч получСния Π΄Π°Π½Π½Ρ‹Ρ… с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ Arduino. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… влаТности ΠΎΡ„ΠΎΡ€ΠΌΠΈΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ get_data_soilmoisture(). Для Π²Ρ‹Π±ΠΎΡ€Π° Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π° y0 ΠΏΠΎΠ΄Π°Π΅ΠΌ Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ D5, D7, D8 сигнал Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня LOW. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ скСтча прСдставлСно Π² листингС 4.7.
Листинг 4.7

#define INTERVAL_GET_DATA 2000 // ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, мс #define SOILMOISTUREPIN A0 // Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ // Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠ²Π° #define MINVALUESOILMOISTURE 220 // Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ критичСской сухости #define MAXVALUESOILMOISTURE 900 // пСрСмСнная для ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ unsigned long millis_int1=0 ; void setup (void ) { // Π²Ρ…ΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Ρƒ D5, D7, D8 (GPIO 14, 13, 15) // ΠΊΠ°ΠΊ OUTPUT pinMode(14 ,OUTPUT); pinMode(13 ,OUTPUT); pinMode(15 ,OUTPUT); // запуск ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° Serial.begin(9600 ); } void loop (void ) { if (millis()-millis_int1 >= INTERVAL_GET_DATA) { // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… c Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° SoilMoisture float moisture= get_data_soilmoisture(); // Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° Serial.print("soilmoisture =" );Serial.print(moisture); Serial.println(" %" ); // старт ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° отсчСта millis_int1=millis(); } } // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° SoilMoisture float get_data_soilmoisture () { // Π²Ρ‹Π±ΠΎΡ€ Π²Ρ…ΠΎΠ΄Π° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π° CD4051 - y0 (000) digitalWrite(14 ,LOW); digitalWrite(13 ,LOW); digitalWrite(15 ,LOW); // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния с Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° int avalue=analogRead(SOILMOISTUREPIN); Serial.print("avalue =" );Serial.println(avalue); // ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Ρ‹ avalue=constrain(avalue, MINVALUESOILMOISTURE,MAXVALUESOILMOISTURE); int moisture=map (avalue, MINVALUESOILMOISTURE, MAXVALUESOILMOISTURE,100 ,0 ); return (float )moisture; }

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ скСтч Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Node Mcu, ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° ΠΈ Π²ΠΈΠ΄ΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Soil Moisture (рис. 4.18). ΠŸΠΎΠ΄Π±Π΅Ρ€ΠΈΡ‚Π΅ практичСским ΠΏΡƒΡ‚Π΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния для констант MINVALUESOILMOISTURE (ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠ²) ΠΈ MINVALUESOILMOISTURE (критичСская ΡΡƒΡ…ΠΎΡΡ‚ΡŒ).

Рис. 4.18. Π’Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… Soil Moisture Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°

Π₯ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π²Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваши растСния сообщали ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΡŒ? Или просто Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈ вас Π² курсС уровня влаТности ΠΏΠΎΡ‡Π²Ρ‹?

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠ²Π° с использованиСм Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° уровня влаТности ΠΏΠΎΡ‡Π²Ρ‹:

ΠžΠ±Π·ΠΎΡ€ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° уровня влаТности ΠΏΠΎΡ‡Π²Ρ‹

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ достаточно просто. Π”Π²Π° ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² - это ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ (VCC) ΠΈ зСмля (GND). ΠŸΡ€ΠΈ использовании Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ пСриодичСски ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚ источника питания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ окислСния. Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ - сигнал (sig), с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ показания. Π”Π²Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ рСзистора - Ρ‡Π΅ΠΌ большС Π²Π»Π°Π³ΠΈ Π² ΠΏΠΎΡ‡Π²Π΅, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ проводят элСктричСство, ΠΏΠ°Π΄Π°Π΅Ρ‚ сопротивлСниС, сигнал Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ SIG растСт. АналоговыС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ напряТСния питания ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅ΠΉ способности Π²Π°ΡˆΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΏΠΈΠ½ΠΎΠ² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½Π° рисункС Π½ΠΈΠΆΠ΅:

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ:

Ну ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π·Π°ΠΏΠ°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π½Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊ.

Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹, стоит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΎΡ‚ грязи ΠΈ прямого попадания солнСчных Π»ΡƒΡ‡Π΅ΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, стоит ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ корпусС ΠΈΠ»ΠΈ нанСсСнии Π·Π°Ρ‰ΠΈΡ‚Π½ΠΎΠ³ΠΎ покрытия нСпосрСдствСнно Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° уровня влаТности ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠΈ (смотритС Π½Π° рисунок Π½ΠΈΠΆΠ΅).

Π”Π°Ρ‚Ρ‡ΠΈΠΊ уровня влаТности ΠΏΠΎΡ‡Π²Ρ‹ с нанСсСнным Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹ΠΌ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°Ρ… ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° нСдолговСчности Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° уровня влаТности ΠΏΠΎΡ‡Π²Ρ‹

Один ΠΈΠ· нСдостатков Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° - Π½Π΅Π΄ΠΎΠ»Π³ΠΎΠ²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈΡ… Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, компания Sparkfun Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ (Electroless Nickel Immersion Gold). Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ продлСния срока дСйствия сСнсора - ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ нСпосрСдствСнно ΠΏΡ€ΠΈ снятии ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ. ΠŸΡ€ΠΈ использовании Arduino, всС ограничиваСтся ΠΏΠΎΠ΄Π°Ρ‡Π΅ΠΉ сигнала HIGH Π½Π° ΠΏΠΈΠ½, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ большим напряТСниСм Ρ‡Π΅ΠΌ прСдоставляСт Arduino, всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ транзистор.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ уровня влаТности ΠΏΠΎΡ‡Π²Ρ‹ - ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ уровня влаТности, Π°Π½Π°Π»ΠΎΠ³ ΠΏΠ»Π°Ρ‚Ρ‹ Arduino - RedBoard ΠΈ LCD дисплСй, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выводятся Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влаТности ΠΏΠΎΡ‡Π²Ρ‹.

Π”Π°Ρ‚Ρ‡ΠΈΠΊ уровня влаТности ΠΏΠΎΡ‡Π²Ρ‹ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ SparkFun:

ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ (VCC) ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ 5 Π’ Π½Π° Arduino, Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ - ΠΊ Π·Π΅ΠΌΠ»Π΅ (GND), Π·Π΅Π»Π΅Π½Ρ‹ΠΉ - сигнал - ΠΊ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠΈΠ½Ρƒ 0 (A0). Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΏΠΈΠ½ Π½Π° Arduino, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ внСсти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния Π² скСтч для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, прСдставлСнный Π½ΠΈΠΆΠ΅.

LCD дисплСй ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ 5 Π’, Π·Π΅ΠΌΠ»Π΅ ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠΈΠ½Ρƒ 2 (Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ внСсти измСнСния Π² ΠΊΠΎΠ΄) для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ ΠΏΠΎ сСрийному ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ связи.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄Π»ΠΈΡ‚ΡŒ срок слуТбы вашСго сСнсора, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠΈΠ½Ρƒ ΠΈ ΠΏΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ считывании Π΄Π°Π½Π½Ρ‹Ρ…, Π° послС - ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ. Если Π·Π°ΠΏΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ постоянно, Π΅Π³ΠΎ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты вскорС Π½Π°Ρ‡Π½ΡƒΡ‚ Ρ€ΠΆΠ°Π²Π΅Ρ‚ΡŒ. Π§Π΅ΠΌ большС Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‡Π²Ρ‹, Ρ‚Π΅ΠΌ быстрСС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ коррозия. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ – нанСсти гипс Π½Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Π»Π°Π³Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ, Π½ΠΎ коррозия Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ замСдляСтся.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Arduino

Π‘ΠΊΠ΅Ρ‚Ρ‡ достаточно простой. Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° LCD дисплСй Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Software Serial library. Если Ρƒ вас Π² Π΅Π΅ Π½Π΅Ρ‚, ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ здСсь: Arduino GitHub

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ пояснСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² коммСнтариях ΠΊ ΠΊΠΎΠ΄Ρƒ:

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° уровня влаТности ΠΏΠΎΡ‡Π²Ρ‹ с LCD дисплССм.

SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ)

int thresholdUp = 400;

int thresholdDown = 250;

int sensorPin = A0;

String DisplayWords;

int sensorValue;

mySerial.write(254);

mySerial.write(128);

// очистка дисплСя:

mySerial.write(" ");

mySerial.write(" ");

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки LCD дисплСя:

mySerial.write(254);

mySerial.write(128);

// "Dry, Water it!"

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

} else if (sensorValue >= thresholdUp){

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки дисплСя:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки дисплСя:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ минимальноС ΠΈ максимальноС значСния. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π²Π° увлаТняСтся ΠΈΠ»ΠΈ ΡΡƒΡˆΠΈΡ‚ΡΡ. Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, максимальноС ΠΈ минимальноС значСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. Однако экспСримСнты ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ происходят Π² ΠΏΠΎΡ‡Π²Π΅. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ срСднСго значСния Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях Π½Π΅ сущСствуСт. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ с Π²Ρ‹Π±ΠΎΡ€ΠΊΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒΡΡ. Если вас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ происходят Π² ΠΏΠΎΡ‡Π²Π΅ ΠΏΡ€ΠΈ взаимодСйствии с Π²ΠΎΠ΄ΠΎΠΉ, ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚ΡƒΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Wiki . ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ достаточно слоТныС ΠΈ интСрСсныС.

Π’ любом случаС, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π°ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ собствСнныС условия: Ρ‚ΠΈΠΏ ΠΏΠΎΡ‡Π²Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ увлаТнСния. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ тСстируйтС, экспСримСнтируйтС ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с подходящими значСниями.

ПослС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ считывания Π΄Π°Π½Π½Ρ‹Ρ… с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° уровня влаТности ΠΈ ΠΈΡ… отобраТСния, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ дальшС, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π² систСму автоматичСского ΠΏΠΎΠ»ΠΈΠ²Π°.

Π”Π°Ρ‚Ρ‡ΠΈΠΊ уровня влаТности Π² составС автоматичСской систСмы ΠΏΠΎΠ»ΠΈΠ²Π° Π½Π° основании Arduino:

Для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΠΈΠ²Π° Π½Π°ΠΌ понадобятся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡˆΠΊΠΈΠ²Ρ‹, Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹Π΅ ΡˆΠ΅ΡΡ‚Π΅Ρ€Π½ΠΈ, Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ, ΠΌΡƒΡ„Ρ‚Π°, транзисторы, рСзисторы. Бписок зависит ΠΎΡ‚ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Ну всС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒΡΡ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΡƒ Π² Π±Ρ‹Ρ‚Ρƒ. Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅:

Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· мноТСства Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² установки двигатСля для систСмы автоматичСского ΠΏΠΎΠ»ΠΈΠ²Π°. КолСсо ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ нСпосрСдствСнно Π² Π²ΠΎΠ΄Π΅. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΡ€ΠΈ Π΅Π³ΠΎ быстром Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ, Π²ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°ΡΡ‚Π΅Π½ΠΈΡŽ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒ Ρ„Π°Π½Ρ‚Π°Π·ΠΈΡŽ.

Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ двигатСля постоянного Ρ‚ΠΎΠΊΠ° () Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΏΠΈΠΈ Arduino ΠΎΡ‚ SparkFun ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅:

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ скСтч для Arduino (ΠΏΠΎ сути ΠΎΠ½ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ с нСбольшим Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ для управлСния Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ):

// Π’ скСтчС ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΈ отобраТаСтся ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влаТности ΠΏΠΎΡ‡Π²Ρ‹

// Ссли ΠΏΠΎΡ‡Π²Π° сухая, Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ

// Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с дисплССм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° softwareserial library

#include <SoftwareSerial.h>

// ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠΈΠ½ для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с использованиСм LCD дисплСя ΠΏΠΎ сСрийному ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ RX ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠΈΠ½Ρƒ 2 Arduino

SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (unused)

// УправляСм Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΈΠ½Π° 9.

// Π­Ρ‚ΠΎΡ‚ ΠΏΠΈΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ШИМ-ΠΌΠΎΠ΄ΡƒΠ»ΡΡ†ΠΈΡŽ.

const int motorPin = 9;

// Π’ΡƒΡ‚ ΠΌΡ‹ настраиваСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ константы.

// Настройка констант зависит ΠΎΡ‚ условий внСшнСй срСды, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ

int thresholdUp = 400;

int thresholdDown = 250;

// НастраиваСм ΠΏΠΈΠ½ A0 Π½Π° Arduino для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ:

int sensorPin = A0;

pinMode(motorPin, OUTPUT); // устанавливаСм ΠΏΠΈΠ½, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π² качСствС Π²Ρ‹Ρ…ΠΎΠ΄Π°

mySerial.begin(9600); // устанавливаСм ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π° 9600 baud

delay(500); // ΠΆΠ΄Π΅ΠΌ ΠΏΠΎΠΊΠ° дисплСй прогрузится

// Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ объявляСм строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранятся Π΄Π°Π½Π½Ρ‹Π΅ для отобраТСния

// Π½Π° ТидкокристалличСском дисплСС. ЗначСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ

// Π² зависимости ΠΎΡ‚ уровня влаТности ΠΏΠΎΡ‡Π²Ρ‹

String DisplayWords;

// Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sensorValue хранится Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° с ΠΏΠΈΠ½Π° А0

int sensorValue;

sensorValue = analogRead(sensorPin);

mySerial.write(128);

// очистка дисплСя:

mySerial.write(" ");

mySerial.write(" ");

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки LCD дисплСя: mySerial.write(254);

mySerial.write(128);

// запись Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° дисплСй:

mySerial.write("Water Level: ");

mySerial.print(sensorValue); //ИспользованиС.print вмСсто.write для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

// Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ уровня влаТности ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π°ΠΌΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ числовыми константами.

// Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС thresholdDown, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ слова:

// "Dry, Water it!"

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки дисплСя:

mySerial.write(254);

mySerial.write(192);

DisplayWords = "Dry, Water it!";

mySerial.print(DisplayWords);

// запуск двигатСля Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΠΎΡ€ΠΎΡ‚Π°Ρ… (0 – остановка, 255 – максимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ):

analogWrite(motorPin, 75);

// Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½ΠΈΠΆΠ΅ thresholdDown Π½Π°Π΄ΠΎ провСсти ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚

// ли оно большС нашСго thresholdUp и, Ссли, большС,

// ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ надпись "Wet, Leave it!":

} else if (sensorValue >= thresholdUp){

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки дисплСя:

mySerial.write(254);

mySerial.write(192);

DisplayWords = "Wet, Leave it!";

mySerial.print(DisplayWords);

// Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ двигатСля (0 – остановка, 255 – максимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ):

analogWrite(motorPin, 0);

// Если ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ

// ΠΈ ΠΏΠΎΡ‡Π²Π° Π±Ρ‹Π»Π° Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Π»Π°ΠΆΠ½ΠΎΠΉ, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сохнСт,

// ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ надпись "Dry, Water it!" (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹

// приблиТаСмся ΠΊ thresholdDown). Если ΠΏΠΎΡ‡Π²Π° Π±Ρ‹Π»Π° сухой, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ

//быстро увлаТняСтся, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ слова "Wet, Leave it!" (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹

// приблиТаСмся ΠΊ thresholdUp):

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки дисплСя:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

delay(500); //Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² ΠΏΠΎΠ» сСкунды ΠΌΠ΅ΠΆΠ΄Ρƒ считываниями

Π£Π΄Π°Ρ‡ΠΈ Π²Π°ΠΌ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ автоматичСского ΠΏΠΎΠ»ΠΈΠ²Π° Π²Π°ΡˆΠΈΡ… растСний!

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠ΅Ρ€ΠΈΡŽ ΡƒΡ€ΠΎΠΊΠΎΠ² . БСгодня ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Arduino Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности DHT11 ΠΈ DHT22.

Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ DHT11 ΠΈ DHT22 Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ высоким быстродСйствиСм ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ Π·Π°Ρ‚ΠΎ просты, Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΈ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ подходят для обучСния. Они Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΈΠ· Π΄Π²ΡƒΡ… частСй β€” Смкостного Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° влаТности ΠΈ тСрмистора. Π§ΠΈΠΏ, находящийся Π²Π½ΡƒΡ‚Ρ€ΠΈ, выполняСт Π°Π½Π°Π»ΠΎΠ³ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ сигнал, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ любого ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Бписок Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ для сборки ΠΌΠΎΠ΄Π΅Π»ΠΈ

Для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, описанного Π² этом ΡƒΡ€ΠΎΠΊΠ΅, понадобятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ:

  • ΠΏΠ»Π°Ρ‚Π° Arduino (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Arduino );
  • Π΄Π°Ρ‚Ρ‡ΠΈΠΊ DHT11 ΠΈΠ»ΠΈ DHT22 (ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡƒΠΏΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ»ΠΈ );
  • Breadboard;
  • рСзистор Π½Π° 10 кОм;
  • ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Arduino IDE, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с сайта Arduino .

Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ DHT11 ΠΈ DHT22

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ DHT11 ΠΈ DHT22?

Π”Π²Π΅ вСрсии сСнсоров DHT ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π° ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ распиновку. Π˜Ρ… отличия Π² характСристиках. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ:

БСнсор DHT11:

  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ влаТности Π² Π΄ΠΈΠ°ΠΏΠΎΠ·ΠΎΠ½Π΅ 20-80%
  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΎΡ‚ 0Β°C Π΄ΠΎ +50Β°C
  • частота опроса 1 Ρ€Π°Π· Π² сСкунду

БСнсор DHT22:

  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ влаТности Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 0-100%
  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΎΡ‚ -40Β°C Π΄ΠΎ +125Β°C
  • частота опроса 1 Ρ€Π°Π· Π² 2 сСкунды

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, характСристики Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° DHT22 Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с DHT11, ΠΈ поэтому ΠΎΠ½ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ Π΄ΠΎΡ€ΠΎΠΆΠ΅. Π‘Π½ΠΈΠΌΠ°Ρ‚ΡŒ показания Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Ρ€Π°Π· Π² 1-2 сСкунды Π½Π΅ получится, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΠΎΠ»Π΅Π΅ высокоС быстродСйствиС ΠΈ Π½Π΅ трСбуСтся.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ сСнсоров DHT ΠΊ Arduino

Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ DHT ΠΈΠΌΠ΅ΡŽΡ‚ стандартныС Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΈ ΠΈΡ… просто ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° breadboard.

Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ DHT ΠΈΠΌΠ΅ΡŽΡ‚ 4 Π²Ρ‹Π²ΠΎΠ΄Π°:

  1. ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅.
  2. Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…
  3. Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.
  4. GND (зСмля).

ΠœΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ питания ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ рСзистор Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠΌ 10 кОм.

Π”Π°Ρ‚Ρ‡ΠΈΠΊ DHT часто продаСтся Π² Π²ΠΈΠ΄Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ модуля. Π’ этом случаС ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π±Π΅Π· рСзистора, Ρ‚.ΠΊ. рСзистор ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π½Π° ΠΏΠ»Π°Ρ‚Π΅.

Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° с рСзистором:

Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° DHT ΠΊ Arduino

Arduino скСтч

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ DHT.h, созданной ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² DHT. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ . Для использования Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡΠΊΠ°Ρ‡Π°Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ Π² Π² ΠΏΠ°ΠΏΠΊΡƒ /libraries.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ DHT22 (ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Arduino IDE):
#include "DHT.h"
#define DHTPIN 2 // Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΈΠ½Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ подсоСдинСн Π΄Π°Ρ‚Ρ‡ΠΈΠΊ
// РаскоммСнтируйтС Π² соотвСтствии с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ
// Π˜Π½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ
DHT dht(DHTPIN, DHT22);
//DHT dht(DHTPIN, DHT11);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
// Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° 2 сСкунды ΠΌΠ΅ΠΆΠ΄Ρƒ измСрСниями
delay(2000);
//Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ
float h = dht.readHumidity();
// Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ
float t = dht.readTemperature();
// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡƒΠ΄Π°Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡˆΠ»ΠΎ Π»ΠΈ считываниС.
if (isnan(h) || isnan(t)) {
Serial.println("НС удаСтся ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ показания");
return;
}
Serial.print("Π’Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ: "+h+" %\t"+"Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°: "+t+" *C ");
}
ΠŸΡ€ΠΈ использовании Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° DHT11 Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ строку:
DHT dht(DHTPIN, DHT22);
И раскоммСнтируйтС строку:
//DHT dht(DHTPIN, DHT11);
Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ скСтч Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ БСрвис->ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡ€Ρ‚Π°:

Показания Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности (ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡ€Ρ‚Π°)

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ ΠΈ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ. ИзмСнСния ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, выдыхая Π½Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊ (ΠΊΠ°ΠΊ для затуманивания ΠΎΠΊΠ½Π°). Π”Ρ‹Ρ…Π°Π½ΠΈΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ.

ΠŸΠΎΡΡ‚Ρ‹ ΠΏΠΎ ΡƒΡ€ΠΎΠΊΠ°ΠΌ:

  1. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ:
  2. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠΊ:
  3. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠΊ:
  4. Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ:
  5. ΠŸΡΡ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ:
  6. ШСстой ΡƒΡ€ΠΎΠΊ:
  7. БСдьмой ΡƒΡ€ΠΎΠΊ:
  8. Π’ΠΎΡΡŒΠΌΠΎΠΉ ΡƒΡ€ΠΎΠΊ:
  9. ДСвятый ΡƒΡ€ΠΎΠΊ:

Π˜Ρ‚Π°ΠΊ, Π΄Π°Ρ‚Ρ‡ΠΈΠΊ DHT11 ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ характСристики:

  • Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ измСряСмой ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ влаТности - 20..90% с ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ 5%,
  • Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ измСряСмых Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€ - 0..50Β°C с ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ 2Β°C;
  • врСмя Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° измСнСния влаТности - Π΄ΠΎ 15 сСкунд, Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ - Π΄ΠΎ 30 сСкунд;
  • ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ опроса - 1 сСкунда.

Как Π²ΠΈΠ΄Π½ΠΎ, Π΄Π°Ρ‚Ρ‡ΠΈΠΊ DHT11 Π½Π΅ отличаСтся особой Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, Π΄Π° ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€ Π½Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния, Ρ‡Ρ‚ΠΎ вряд Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ для Π½Π°Ρ€ΡƒΠΆΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π² Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠ΅ врСмя Π³ΠΎΠ΄Π° ΠΏΡ€ΠΈ нашСм ΠΊΠ»ΠΈΠΌΠ°Ρ‚Π΅. Однако малая ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΌΠ°Π»Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ простота Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ частично ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ эти нСдостатки. На рисункС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ внСшний Π²ΠΈΠ΄ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΈ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π² ΠΌΠΈΠ»Π»ΠΈΠΌΠ΅Ρ‚Ρ€Π°Ρ….

2 Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности DHT11

Рассмотрим схСму ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности DHT11 ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ, Π² частности, ΠΊ Arduino.


Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС.

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° рисункС ОписаниС ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
MCU ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Arduino / Raspberry Pi ΠΈ Π΄Ρ€.
DHT11 Π”Π°Ρ‚Ρ‡ΠΈΠΊ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности Π’Ρ‹Π²ΠΎΠ΄Ρ‹ 1Pin, 2Pin ΠΈ 4Pin задСйствованы Π² схСмС, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° - 3-ΠΈΠΉ ΠΏΠΈΠ½ 3Pin - Π½ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ.
DATA Π¨ΠΈΠ½Π° Π΄Π°Π½Π½Ρ‹Ρ… Если Π΄Π»ΠΈΠ½Π° ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ кабСля ΠΎΡ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 20 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚ΠΎ эту ΡˆΠΈΠ½Ρƒ рСкомСндуСтся ΠΏΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ ΠΊ ΠΏΠΈΡ‚Π°Π½ΠΈΡŽ рСзистором 5,1 кОм; Ссли большС 20 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² - Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ подходящий Π½ΠΎΠΌΠΈΠ½Π°Π» (мСньший).
VDD ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Допустимы напряТСния ΠΎΡ‚ ~3,0 Π΄ΠΎ ~5,5 Π²ΠΎΠ»ΡŒΡ‚ постоянного Ρ‚ΠΎΠΊΠ°; Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ ~3,3 Π’, Ρ‚ΠΎ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ Π½Π΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅ 20 см.

Π‘ΠΎΠ±Π΅Ρ€Ρ‘ΠΌ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½ΡƒΡŽ схСму. Π― Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Ρƒ Π² Ρ†Π΅ΠΏΡŒ логичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ.



БСнсор DHT11 часто продаётся Π² Π²ΠΈΠ΄Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ сборки с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ обвязкой - ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ рСзистором ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‰ΠΈΠΌ кондСнсатором (ΠΊΠ°ΠΊ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ). Для экспСримСнтов с Arduino я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ.

3 Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с сСнсора DHT11 ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Arduino

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΉΠ΄Ρ‘ΠΌ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ: скачаСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° DHT11 , установим Π΅Ρ‘ стандартным способом (распаковав Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ \libraries\ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для Arduino).

НапишСм Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ скСтч. Он Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 2 сСкунды сообщСния ΠΎΠ± ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ влаТности ΠΈ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π΅, считанныС с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° DHT11.

#include // ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ dht11 sensor; // инициализация экзСмпляра Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° #define DHT11PIN 8 // Π²Ρ‹Π²ΠΎΠ΄ 8 Π±ΡƒΠ΄Π΅Ρ‚ шиной DATA void setup() { Serial.begin(9600); } void loop() { int chk = sensor.read(DHT11PIN); Serial.print("h="); Serial.print(sensor.humidity); Serial.print("%\t"); Serial.print("t="); Serial.print(sensor.temperature); Serial.println("C"); delay(2000); }

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ этот скСтч Π² Arduino. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ ΠΊ Arduino с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π° COM-ΠΏΠΎΡ€Ρ‚Π° ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:


Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎ влаТности, ΠΈ ΠΎ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ выводятся Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΊΡƒ.

4 ВрСмСнная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности DHT11 с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ с логичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, разбСрёмся, ΠΊΠ°ΠΊ осущСствляСтся ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½.

Для связи с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности DHT11 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ интСрфСйс. Один ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΊΠΎΠ»ΠΎ 4 мс содСрТит: 1 Π±ΠΈΡ‚ запроса ΠΎΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, 1 Π±ΠΈΡ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΈ 40 Π±ΠΈΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° (16 Π±ΠΈΡ‚ΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ влаТности, 16 Π±ΠΈΡ‚ΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ ΠΈ 8 ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ²). Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° Arduino с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ DHT11.



ВрСмСнная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° сСнсора DHT11 с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ

Из рисунка Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ²: ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅. ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π½ΡƒΠ»ΠΈ, Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ - Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹.

Π˜Ρ‚Π°ΠΊ, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° - это запрос Arduino ΠΊ DHT11 ΠΈ, соотвСтствСнно, ΠΎΡ‚Π²Π΅Ρ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°. Π”Π°Π»Π΅Π΅ ΠΈΠ΄ΡƒΡ‚ 16 Π±ΠΈΡ‚ влаТности. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° Π±Π°ΠΉΡ‚Ρ‹, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ ΠΈ младший, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ слСва. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° нашСм рисункС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ влаТности Ρ‚Π°ΠΊΠΈΠ΅: 0001000000000000 = 00000000 00010000 = 0x10 = 16% ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ влаТности.

Π”Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π΅, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ: 0001011100000000 = 00000000 00010111 = 0x17 = 23 градуса ЦСльсия.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма - это всСго-навсСго арифмСтичСскоС суммированиС 4-Ρ… ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС ΠΈΠ»ΠΈ 0 + 16 + 0 + 23 = 39 Π² дСсятичной.

5 Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ DHT11 Π±Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ достаточно для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСнсором Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности DHT11 Π±Π΅Π· использования сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. НапишСм скСтч, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π· Π² сСкунду Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° принятый ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π΅, влаТности, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚. На 13-ΡƒΡŽ Π½ΠΎΠΆΠΊΡƒ Arduino Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ сигнал ΠΈ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ Π² Π½Π΅ΠΉ логичСским Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²Π΅Ρ€Π½ΠΎ считываСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°.

Π‘ΠΊΠ΅Ρ‚Ρ‡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с DHT11 ΠΈ Arduino Π±Π΅Π· сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (разворачиваСтся) #define DHT11pin 8 // для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡˆΠΈΠ½Ρ‹ DATA сСнсора DHT11 #define LEDpin 13 // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для контроля const int NUM_READS = 500; // зависит ΠΎΡ‚ частоты ΠΊΠ²Π°Ρ€Ρ†Π° ΠΈ подбираСтся ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ long readsCounter = 0; // счётчик Ρ†ΠΈΠΊΠ»ΠΎΠ² чтСния int reads; // сырой массив считанных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ void setup() { Serial.begin(9600); pinMode(DHT11pin, INPUT); pinMode(LEDpin, OUTPUT); } void loop() { if (readsCounter void initLink() { pinMode(DHT11pin, OUTPUT); digitalWrite(DHT11pin, LOW); delay(15); pinMode(DHT11pin, INPUT); } // Π§ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° DHT11 ΠΈ записываСт Π² массив: void readSerialDHT11() { int sensorValue = digitalRead(DHT11pin); reads = sensorValue; digitalWrite(LEDpin, sensorValue); // для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π½ΠΎΠΆΠΊΡƒ readsCounter++; } // ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ массив Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° Ρ†ΠΈΠΊΠ» с DHT11: void processDht11Data() { byte dht11Data = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ массив (Π±ΠΈΡ‚Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π°) int zeroLen = 1; // минимальная Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚Π° "0" int oneLen = 3 * zeroLen; // примСрная Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚Π° "1" int wrongData = 6 * zeroLen; // допуск ΠΏΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для Π΄Π°Π½Π½Ρ‹Ρ… int currentBitLen = 0; // Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π±ΠΈΡ‚Π° int bitPosition = 0; // позиция Π±ΠΈΡ‚Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ for (int i=1; i = zeroLen) && (currentBitLen <= oneLen)) { dht11Data = 0; bitPosition++; } else if ((currentBitLen > oneLen) && (currentBitLen <= wrongData)) { dht11Data = 1; bitPosition++; } currentBitLen = 0; } else { if (reads[i] == HIGH) { // ΠΏΡ€ΠΈ сигналС HIGH currentBitLen += 1; // считаСм Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π±ΠΈΡ‚Π° } } } for (int i=0; i void getHumidTemperatureParity(byte data) { word humidity = 0; byte hLow = 0; byte hHi = 0; word temperature = 0; byte tLow = 0; byte tHi = 0; byte parity = 0; for (int i=1; i<9; i++){ //пропускаСм ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ-ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ hLow = hLow | (data[i] << (8 - i)); } for (int i=9; i<17; i++){ hHi = hHi | (data[i] readsCounter = 0; }

НСбольшая Ρ‚Π°Π±Π»ΠΈΡ†Π° даст Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠΌΡƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ.

Ѐункция НазначСниС

Π‘Π°ΠΌΡ‹Π΅ частыС измСряСмыС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΈ Π±Ρ‹Ρ‚Ρƒ β€” это Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΈ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΈ значСния ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ Π² ΡΡƒΡˆΠΊΠ΅ дрСвСсины, Π²Ρ‹ΠΏΠ΅Ρ‡ΠΊΠ΅ кондитСрских ΠΈΠ·Π΄Π΅Π»ΠΈΠΉ, Π² Ρ…ΠΎΠ»ΠΎΠ΄ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°ΠΌΠ΅Ρ€Π°Ρ…. Π’ Π±Ρ‹Ρ‚Ρƒ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ Π² Ρ‚Π΅ΠΏΠ»ΠΈΡ†Π°Ρ… ΠΈ Π² ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°Ρ… отоплСния ΠΈ горячСго водоснабТСния. Π”Π°Ρ‚Ρ‡ΠΈΠΊ DHT11 Ардуино прСкрасно справляСтся со своими Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ ΠΈ опрСдСляСт Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ ΠΈ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ.

Из этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅:

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ Вас! Π—Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ Π“Ρ€ΠΈΠ΄ΠΈΠ½ Π‘Π΅ΠΌΡ‘Π½ ΠΈ Π² этом постС я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности DHT11, ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠΎΠ΄Π° ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π”Π°Ρ‚Ρ‡ΠΈΠΊ DHT11

DHT11 β€” это Π² нСбольшом пластиковом корпусС. На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ сСнсора находится Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ сигнал, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ сразу Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΈ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ. Бмысл общСния с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Ардуино Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

  1. ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ показания ΠΈ мСняСт сигнал с 0 Π½Π° 1.
  2. Π”Π°Ρ‚Ρ‡ΠΈΠΊ Π²ΠΈΠ΄ΠΈΡ‚ запрос, ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π΅ΠΌΡƒ, мСняя Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сигнал с 0 Π½Π° 1.
  3. Когда ΠΎΠ½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈΡΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Π΅ΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ 5 Π±Π°ΠΉΡ‚(40 Π±ΠΈΡ‚), ΠΏΡ€ΠΈ Ρ‡Π΅ΠΌ Π² Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π±Π°ΠΉΡ‚Π°Ρ… Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°, Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ. ΠŸΡΡ‚Ρ‹ΠΉ Π±Π°ΠΉΡ‚ β€” ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ошибок измСрСния.

Π₯арактСристики сСнсора Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ влаТности DHT11

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ влаТности Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 20-80%
  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΎΡ‚ 0Β°C Π΄ΠΎ +50Β°C
  • Частота опроса 1 Ρ€Π°Π· Π² сСкунду

НСдостаток сСнсора Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ высокой Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ быстродСйствиСм. Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ плюс β€” это Ρ†Π΅Π½Π°. Ну, я Π΄ΡƒΠΌΠ°ΡŽ, Π²Ρ‹ ΠΈ Π±Π΅Π· мСня это Π·Π½Π°Π΅Ρ‚Π΅)).

Π’ составС сСнсора находится ёмкостной Π΄Π°Ρ‚Ρ‡ΠΈΠΊ для измСрСния влаТности ΠΈ тСрмистор для измСрСния Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹. ВсС показания снимаСт Ρ‡ΠΈΠΏ АЦП ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ сигнал.

ΠŸΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π΄Π°ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ сигнал Π½Π° 4-20 мА ΠΈΠ»ΠΈ 0-10 Π’. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ сСнсоры ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² ΠΏΠ°Ρ€Π΅. НапримСр продукция ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠžΠ’Π•Π ΠŸΠ’Π’10:

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях, ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ‹ примСняСтС Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…? ΠžΡ‡Π΅Π½ΡŒ интСрСсно вашС ΠΌΠ½Π΅Π½ΠΈΠ΅...

Π’ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΈ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ардуиновского сСнсора β€” DHT22. Π‘ΠΊΠ°ΠΆΡƒ, Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ измСрСния Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС, Ρ‡Π΅ΠΌ Ρƒ старой вСрсии.

  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ влаТности Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 0-100%
  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΎΡ‚ -40Β°C Π΄ΠΎ +125Β°C
  • частота опроса 1 Ρ€Π°Π· Π² 2 сСкунды

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° DHT11

Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΠ·Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π² Π²ΠΈΠ΄Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… шильдов. На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ 3 ΠΏΠΈΠ½Π°:

  • ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅ 5 Π’
  • Π‘ΠΈΠ³Π½Π°Π» (S)
  • ЗСмля GND

Π‘ΠΎΠΏΡ€ΠΎΡ‚ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ Π² 10 кОм ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΡƒΠΆΠ΅ впаяно Π² ΠΏΠ»Π°Ρ‚Ρƒ. Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΈ Ардуино UNO.


ОписаниС ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нашим Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ трСбуСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Она называСтся DHT.h . Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡ‚ ΠΏΠΎ этой ссылкС .

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим с Π²Π°ΠΌΠΈ скСтч ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСнсором.

Arduino

#include "DHT.h" #define DHTPIN 2 // Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΈΠ½Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ подсоСдинСн Π΄Π°Ρ‚Ρ‡ΠΈΠΊ // РаскоммСнтируйтС Π² соотвСтствии с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ // Π˜Π½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ //DHT dht(DHTPIN, DHT22); DHT dht(DHTPIN, DHT11); void setup() { Serial.begin(9600); dht.begin(); } void loop() { // Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° 2 сСкунды ΠΌΠ΅ΠΆΠ΄Ρƒ измСрСниями delay(1000); //Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ float h = dht.readHumidity(); // Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ float t = dht.readTemperature(); // ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡƒΠ΄Π°Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡˆΠ»ΠΎ Π»ΠΈ считываниС. if (isnan(h) || isnan(t)) { Serial.println("НС удаСтся ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ показания"); } else { Serial.print ("Humidity: "); Serial.print (h); Serial.print ("%\t"); Serial.print ("Temperature: "); Serial.print (t); Serial.println (" *C"); } }

#include "DHT.h"

#define DHTPIN 2 // Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΈΠ½Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ подсоСдинСн Π΄Π°Ρ‚Ρ‡ΠΈΠΊ

// РаскоммСнтируйтС Π² соотвСтствии с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ

// Π˜Π½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ

//DHT dht(DHTPIN, DHT22);

DHT dht (DHTPIN , DHT11 ) ;

void setup () {

Serial . begin (9600 ) ;

dht . begin () ;

void loop () {

// Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° 2 сСкунды ΠΌΠ΅ΠΆΠ΄Ρƒ измСрСниями

delay (1000 ) ;

//Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Π²Π»Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ

float h = dht . readHumidity () ;

// Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ

float t = dht . readTemperature () ;

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡƒΠ΄Π°Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡˆΠ»ΠΎ Π»ΠΈ считываниС.

if (isnan (h ) || isnan (t ) ) {

Serial . println ("НС удаСтся ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ показания" ) ;

} else {

Serial . print ("Humidity: " ) ;

Serial . print (h ) ;

Serial . print ("%\t" ) ;

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΠΎΡ€Ρ‚Π° Π² Arduino IDE:

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ интСрСсный инструмСнт для просмотра Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ β€” ΠŸΠ»ΠΎΡ‚Ρ‚Π΅Ρ€ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ соСдинСнию. НС знаю, Ρƒ мСня ΠΎΠ½ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ. Если ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях. Π’ΠΎΡ‚ такая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ:

Если ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π½Π΅ совсСм понятно, Π΅ΡΡ‚ΡŒ ΡˆΠΈΠΊΠ°Ρ€Π½Ρ‹ΠΉ Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ ΠΎΡ‚ рСбят.

На этом я Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽ свой пост. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Π½Π°ΠΏΠΈΡˆΡƒ ΠΎ . ΠŸΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ вопросы, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ!

УспСхов Π²Π°ΠΌ!!!

Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π“Ρ€ΠΈΠ΄ΠΈΠ½ Π‘Π΅ΠΌΡ‘Π½.


НаТимая ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ с ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ сайта, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ соглашСнии