Radioelektronika havaskorlari saytiga xush kelibsiz!
Raqamli termodatchiklar [14+]
DHT (DHT11, DHT21, DHT22) raqamli datchigi
DHT raqamli datchiklari nisbatan quyiroq aniqlikdagi lekin arzon va eng ko’p uchraydigan datchiklar hisoblanadi.
Raqamli termodatchiklar ishtirokidagi barcha loyihalarimizni Wemos D1 mini platasi uchun yaratamiz. Bu bizga kelgusida termometr ko’rsatkichlarini WiFi tarmoq yoki Internet orqali olish imkoniyatini ham yaratadi (Arduino UNO uchun ham sketch o’zgarmaydi, lekin uni to’g’ridan-tog’ri WiFi tarmog’iga ulash imkoniyati yo’q).
Bog’lanish sxemasi (datchik chiqish pini mikrokontrollerning D2 piniga ulanadi):
DHT11, DHT21 yoki DHT22 modullari asosida raqamli termometr yaratish uchun quyidagi oddiy sketchidan foydalanish mumkin. Bunda Arduinoning DHT.h bibliotekasidan foydalaniladi. Har bir notanish tushuncha yoki amallar bo’yicha izohlar keltiriladi.
'DHT modullari asosidagi termometr va gigrometr
#include <DHT.h> // DHT datchiklari bibliotekasini ulash
#define DHTPIN D2 // DHT datchigiga ulanadigan raqamli pinni ko’rsatish
// ESP8266 uchun: 3, 4, 5, 12, 13 yoki 14 pinlaridan foydalanish mumkin
// 15 pini ham ishlatilishi mumkin, lekin sketchni yuklash paytida DHT datchigini uzib turish kerak.
DHT dht(DHTPIN, DHT11); // dht nomli obyektni e’lon qilamiz (2-argumentni DHT21, DHT22 ga almashtirish mumkin)
void setup() {
Serial.begin(9600);
dht.begin(); // dht obyektini (datchikni) faollashtirish
}
void loop() {
delay(1000); // o’chash pauzasi
float temp = dht.readTemperature(); //temperaturani o’chash va o’zgaruvchiga o’zlashtirish
float hum = dht.readHumidity(); //havo namligini o’chash va o’zgaruvchiga o’zlashtirish
Serial.println(“Temperatura: ” + (String)temp + ” °C, havo namligi: ” + (String)hum + ” %”); // natijalarni port monitoriga chiqarish
}
DS18B20 raqamli datchigi
DS18B20 yuqori aniqlikdagi termodatchik hisoblanadi. DS18B20 datchigining 3 xil korpusdagi variantlari uchraydi (quyidagi rasm). Lekin ularning ishlatilishi bir xil. Bir-biridan tashqi ko’rinishi va korpusining shakli bilan farq qiladi. Bundan tashqari, datchikning 3 kabelli varianti uning o’chash elementini (metall element) yaratilayotgan Arduino qurilmasining korpusidan tashqarida ham qo’llash imkonini beradi (lekin narxi ham qimmatroq turadi).
Ushbu datchikning yana bir o’ziga xos tomoni – har bir datchik unikal manzilga egaligi hisoblanadi. Bitta mikrokontrollerga bir nechta datchik qo’llashga to’g’ri kelsa, ularning har birini alohida raqamli pinga ulamasdan, hamma datchikni Arduino platasining yagona raqamli piniga ulash mumkin. Sketchda har bir datchikning manzilini aniq ko’rsatish zarur bo’ladi.
DS18B20 datchigi asosidagi sketchlarni tuzishda biz tashqi “DallasTemperature.h” va “OneWire.h” bibliotekalaridan foydalanamiz.
DS18B20 datchigining 3 xil ko’rinishi (korpuslari)
Faqat 1 ta DS18B20 datchigi yordamida temperaturani ko’rsatadigan raqamli termometr yaratish uchun quyidagi oddiy sketchidan foydalanish mumkin (sketchda datchik ruxsatnomasi ko’rsatilmasa, maksimal 12 qiymati qabul qilinadi. Ruxsatnoma darajasi ortishi o’lchash aniqligini orttiradi, lekin o’chash vaqtini uzaytiradi. O’zgarish oralig’i: 90…750 millisekund. delay() funksiyasi argumenti shu qiymatdan past bo’lmasligi kerak).
}
void loop() {
datchik.requestTemperatures(); // Temperatura so’rovini yuboramiz va natijani 1 sekund kutamiz
delay(1000);
int temp = datchik.getTempCByIndex(0); // olingan natijani o’zgaruvchiga o’zlashtiramiz
Serial.println(“Temperatura: ” + (String)temp);
}
Yuqorida ta’kidlanganidek, mikrokontrollerga bir nechta datchik ulangan taqdirda, sketchda har bir datchikning manzilini aniq ko’rsatish zarur. Tabiiyki, datchik manzilini qayerdan olamiz, degan savol tug’ilishi aniq. Bunda bizga raqamli pinga ulangan datchik manzilini aniqlab beruvchi quyidagi sketch yordam beradi:
void loop() {
byte i;
byte addr[8];
if (!ds.search(addr)) {
Serial.println();
Serial.println(“Boshqa manzil yo’q!”);
ds.reset_search();
delay(1000);
return;
}
Serial.print(“Manzil:”);
for (i = 0; i < 8; i++) {
Serial.write(‘ ‘);
Serial.print(addr[i], HEX);
}
}
Endi aniqlangan datchiklar manzillaridan foydalanib, 2 ta datchik ishtirokidagi termometr sketchini yaratamiz (ular sonini yana ko’paytirish mumkin). Ushbu sketchda “microDS18B20.h” bibliotekasidan foydalanamiz (temperatura ko’rsatkichlari butun sonlarda ko’rsatiladi).
Sxemada deyarli o’zgarish bo’lmaydi (datchiklar parallel ulanadi):