{"id":119,"date":"2023-05-15T15:27:31","date_gmt":"2023-05-15T10:27:31","guid":{"rendered":"http:\/\/yarat.uz\/?p=119"},"modified":"2025-03-19T15:27:05","modified_gmt":"2025-03-19T10:27:05","slug":"raqamli-termometr","status":"publish","type":"post","link":"https:\/\/yarat.uz\/?p=119","title":{"rendered":"Raqamli termodatchiklar [14+]"},"content":{"rendered":"<p style=\"text-align: center;\"><strong>DHT (DHT11, DHT21, DHT22) raqamli datchigi<\/strong><\/p>\n<p style=\"text-align: justify;\">DHT raqamli datchiklari nisbatan quyiroq aniqlikdagi lekin arzon va eng ko&#8217;p uchraydigan datchiklar hisoblanadi.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2000 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dht11_2-e1709371268250.webp\" alt=\"\" width=\"1278\" height=\"596\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dht11_2-e1709371268250.webp 1278w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dht11_2-e1709371268250-300x140.webp 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dht11_2-e1709371268250-1024x478.webp 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dht11_2-e1709371268250-768x358.webp 768w\" sizes=\"auto, (max-width: 1278px) 100vw, 1278px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2001 size-medium\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dht22-e1709371425276-300x230.webp\" alt=\"\" width=\"300\" height=\"230\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dht22-e1709371425276-300x230.webp 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dht22-e1709371425276.webp 745w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p style=\"text-align: justify;\">Raqamli termodatchiklar ishtirokidagi barcha loyihalarimizni Wemos D1 mini platasi uchun yaratamiz. Bu bizga kelgusida termometr ko&#8217;rsatkichlarini WiFi tarmoq yoki Internet orqali olish imkoniyatini ham yaratadi (Arduino UNO uchun ham sketch o&#8217;zgarmaydi, lekin uni to&#8217;g&#8217;ridan-tog&#8217;ri WiFi tarmog&#8217;iga ulash imkoniyati yo&#8217;q).<\/p>\n<p>Bog&#8217;lanish sxemasi (datchik chiqish pini mikrokontrollerning D2 piniga ulanadi):<\/p>\n<p><em><strong><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2290\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/wemos_dht11_bb-e1711018992877.jpg\" alt=\"\" width=\"574\" height=\"675\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/wemos_dht11_bb-e1711018992877.jpg 574w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/wemos_dht11_bb-e1711018992877-255x300.jpg 255w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><\/strong><\/em><\/p>\n<p style=\"text-align: justify;\">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&#8217;yicha izohlar keltiriladi.<\/p>\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>'DHT modullari asosidagi termometr va gigrometr<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n#include &lt;DHT.h&gt; \/\/ DHT datchiklari bibliotekasini ulash<br \/>\n#define DHTPIN D2 \/\/ DHT datchigiga ulanadigan raqamli pinni ko&#8217;rsatish<br \/>\n\/\/ ESP8266 uchun: 3, 4, 5, 12, 13 yoki 14 pinlaridan foydalanish mumkin<br \/>\n\/\/ 15 pini ham ishlatilishi mumkin, lekin sketchni yuklash paytida DHT datchigini uzib turish kerak.<\/p>\n<p style=\"text-align: justify;\">DHT dht(DHTPIN, DHT11); \/\/ dht nomli obyektni e&#8217;lon qilamiz (2-argumentni DHT21, DHT22 ga almashtirish mumkin)<br \/>\nvoid setup() {<br \/>\nSerial.begin(9600);<br \/>\ndht.begin(); \/\/ dht obyektini (datchikni) faollashtirish<br \/>\n}<\/p>\n<p>void loop() {<br \/>\ndelay(1000); \/\/ o&#8217;chash pauzasi<br \/>\nfloat temp = dht.readTemperature(); \/\/temperaturani o&#8217;chash va o&#8217;zgaruvchiga o&#8217;zlashtirish<br \/>\nfloat hum = dht.readHumidity(); \/\/havo namligini o&#8217;chash va o&#8217;zgaruvchiga o&#8217;zlashtirish<br \/>\nSerial.println(&#8220;Temperatura: &#8221; + (String)temp + &#8221; \u00b0C, havo namligi: &#8221; + (String)hum + &#8221; %&#8221;); \/\/ natijalarni port monitoriga chiqarish<br \/>\n}<\/div><\/div>\n<p style=\"text-align: center;\"><strong>DS18B20 raqamli datchigi<br \/>\n<\/strong><\/p>\n<p style=\"text-align: justify;\">DS18B20 yuqori aniqlikdagi termodatchik hisoblanadi. DS18B20 datchigining <strong>3 xil korpus<\/strong>dagi variantlari uchraydi (quyidagi rasm). Lekin ularning ishlatilishi bir xil. Bir-biridan tashqi ko&#8217;rinishi va korpusining shakli bilan farq qiladi. Bundan tashqari, datchikning 3 kabelli varianti uning o&#8217;chash elementini (metall element) yaratilayotgan Arduino qurilmasining korpusidan tashqarida ham qo&#8217;llash imkonini beradi (lekin narxi ham qimmatroq turadi).<\/p>\n<p style=\"text-align: justify;\">Ushbu datchikning yana bir o&#8217;ziga xos tomoni &#8211; har bir datchik unikal manzilga egaligi hisoblanadi. Bitta mikrokontrollerga bir nechta datchik qo&#8217;llashga to&#8217;g&#8217;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&#8217;rsatish zarur bo&#8217;ladi.<\/p>\n<p style=\"text-align: justify;\">DS18B20 datchigi asosidagi sketchlarni tuzishda biz tashqi &#8220;<a href=\"https:\/\/github.com\/milesburton\/Arduino-Temperature-Control-Library\">DallasTemperature.h<\/a>&#8221; va &#8220;<a href=\"https:\/\/github.com\/PaulStoffregen\/OneWire\">OneWire.h<\/a>&#8221; bibliotekalaridan foydalanamiz.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2005 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ds18b20.png\" alt=\"\" width=\"900\" height=\"260\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ds18b20.png 900w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ds18b20-300x87.png 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ds18b20-768x222.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p style=\"text-align: center;\"><em>DS18B20 datchigining 3 xil ko&#8217;rinishi (korpuslari)<\/em><\/p>\n<p style=\"text-align: justify;\">Faqat 1 ta DS18B20 datchigi yordamida temperaturani ko&#8217;rsatadigan raqamli termometr yaratish uchun quyidagi oddiy sketchidan foydalanish mumkin (sketchda datchik ruxsatnomasi ko&#8217;rsatilmasa, maksimal 12 qiymati qabul qilinadi. Ruxsatnoma darajasi ortishi o&#8217;lchash aniqligini orttiradi, lekin o&#8217;chash vaqtini uzaytiradi. O&#8217;zgarish oralig&#8217;i: 90&#8230;750 millisekund. delay() funksiyasi argumenti shu qiymatdan past bo&#8217;lmasligi kerak).<\/p>\n<p>Wemos D1 mini platasiga bog&#8217;lanish sxemasi:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2236 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_ds18b20_bb-e1710663435553.jpg\" alt=\"\" width=\"606\" height=\"642\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_ds18b20_bb-e1710663435553.jpg 606w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_ds18b20_bb-e1710663435553-283x300.jpg 283w\" sizes=\"auto, (max-width: 606px) 100vw, 606px\" \/><\/p>\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>'DS18B20 datchigi asosidagi termometr<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n#include &lt;OneWire.h&gt; \/\/ OneWire bibliotekasini ulaymiz<br \/>\n#include &lt;DallasTemperature.h&gt; \/\/ DallasTemperature bibliotekasini ulaymiz<br \/>\nOneWire ow(D1); \/\/ D1-pinga ulangan OneWire turidagi &#8220;ow&#8221; obyektini e&#8217;lon qilamiz<br \/>\nDallasTemperature datchik(&amp;ow); \/\/ DallasTemperature turidagi datchik obyektini e&#8217;lon qilamiz<br \/>\nvoid setup() {<br \/>\nSerial.begin(9600);<br \/>\ndatchik.begin(); \/\/ &#8220;datchik&#8221; obyektini (datchikni) faollashtiramiz<br \/>\n\/\/ datchik.setResolution(D1, 12); \/\/ D1-pin raqami, 12 &#8211; ruxsatnoma (sezgirlik: 9-12) maksimal darajasi<\/p>\n<p>}<br \/>\nvoid loop() {<br \/>\ndatchik.requestTemperatures(); \/\/ Temperatura so&#8217;rovini yuboramiz va natijani 1 sekund kutamiz<br \/>\ndelay(1000);<br \/>\nint temp = datchik.getTempCByIndex(0); \/\/ olingan natijani o&#8217;zgaruvchiga o&#8217;zlashtiramiz<br \/>\nSerial.println(&#8220;Temperatura: &#8221; + (String)temp);<br \/>\n}<\/div><\/div>\n<p style=\"text-align: justify;\">Yuqorida ta&#8217;kidlanganidek, mikrokontrollerga bir nechta datchik ulangan taqdirda, sketchda har bir datchikning manzilini aniq ko&#8217;rsatish zarur.\u00a0 Tabiiyki, datchik manzilini qayerdan olamiz, degan savol tug&#8217;ilishi aniq. Bunda bizga raqamli pinga ulangan datchik manzilini aniqlab beruvchi quyidagi sketch yordam beradi:<\/p>\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>'DS18B20 datchigi manzilini aniqlash<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\"><span class=\"enlighter-k4 wp-dark-mode-ignore\">#include #include &lt;OneWire.h&gt;<br \/>\nOneWire ds(D1); \/\/ datchik ulangan pin<br \/>\nvoid setup() {<br \/>\nSerial.begin(9600);<br \/>\n}<\/span><\/p>\n<p>void loop() {<br \/>\nbyte i;<br \/>\nbyte addr[8];<br \/>\nif (!ds.search(addr)) {<br \/>\nSerial.println();<br \/>\nSerial.println(&#8220;Boshqa manzil yo&#8217;q!&#8221;);<br \/>\nds.reset_search();<br \/>\ndelay(1000);<br \/>\nreturn;<br \/>\n}<br \/>\nSerial.print(&#8220;Manzil:&#8221;);<br \/>\nfor (i = 0; i &lt; 8; i++) {<br \/>\nSerial.write(&#8216; &#8216;);<br \/>\nSerial.print(addr[i], HEX);<br \/>\n}<br \/>\n}<\/div><\/div>\n<p style=\"text-align: justify;\">Endi aniqlangan datchiklar manzillaridan foydalanib, 2 ta datchik ishtirokidagi termometr sketchini yaratamiz (ular sonini yana ko&#8217;paytirish mumkin). Ushbu sketchda &#8220;<a href=\"https:\/\/github.com\/GyverLibs\/microDS18B20\">microDS18B20.h<\/a>&#8221; bibliotekasidan foydalanamiz (temperatura ko&#8217;rsatkichlari butun sonlarda ko&#8217;rsatiladi).<\/p>\n<p>Sxemada deyarli o&#8217;zgarish bo&#8217;lmaydi (datchiklar parallel ulanadi):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2238 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_ds18b20x2_bb-e1710665281542.jpg\" alt=\"\" width=\"666\" height=\"641\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_ds18b20x2_bb-e1710665281542.jpg 666w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_ds18b20x2_bb-e1710665281542-300x289.jpg 300w\" sizes=\"auto, (max-width: 666px) 100vw, 666px\" \/><\/p>\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>2 ta DS18B20 datchigi asosidagi termometr<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n#include &lt;microDS18B20.h&gt;<br \/>\nuint8_t s1_addr[] = {0x28, 0x61, 0x64, 0x9, 0x56, 0x37, 0x5D, 0xB5}; \/\/ 1-datchik manzili<br \/>\nuint8_t s2_addr[] = {0x28, 0x61, 0x64, 0x9, 0x56, 0x37, 0x5D, 0xB8}; \/\/ 2-datchik manzili<br \/>\nMicroDS18B20&lt;D1, s1_addr&gt; datchik1; \/\/ datchik1 nomli MicroDS18B20 obyektini e&#8217;lon qilamiz<br \/>\nMicroDS18B20&lt;D1, s2_addr&gt; datchik2; \/\/ datchik2 nomli MicroDS18B20 obyektini e&#8217;lon qilamiz<br \/>\nvoid setup() {<br \/>\nSerial.begin(9600);<br \/>\n}<br \/>\nvoid loop() {<br \/>\ndatchik1.requestTemp(); \/\/ 1-datchikka temperatura so&#8217;rovini yuboramiz<br \/>\ndatchik2.requestTemp(); \/\/ 2-datchikka temperatura so&#8217;rovini yuboramiz<br \/>\ndelay(1000); \/\/ so&#8217;rov natijalarini 1 sekund kutamiz<br \/>\nint temp1 = datchik1.getTemp(); \/\/ 1-datchik natijasini o&#8217;zgaruvchiga o&#8217;zlashtiramiz<br \/>\nint temp2 = datchik2.getTemp(); \/\/ 2-datchik natijasini o&#8217;zgaruvchiga o&#8217;zlashtiramiz<br \/>\nSerial.println(&#8220;Xona temperaturasi: &#8221; + (String)temp1);<br \/>\nSerial.println(&#8220;Hovli temperaturasi: &#8221; + (String)temp2);<br \/>\n}<span class=\"enlighter-k4 wp-dark-mode-ignore\"><\/div><\/div><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DHT (DHT11, DHT21, DHT22) raqamli datchigi DHT raqamli datchiklari nisbatan quyiroq aniqlikdagi lekin arzon va eng ko&#8217;p uchraydigan datchiklar hisoblanadi. Raqamli termodatchiklar ishtirokidagi barcha loyihalarimizni Wemos D1 mini platasi uchun yaratamiz. Bu bizga kelgusida termometr ko&#8217;rsatkichlarini WiFi tarmoq yoki Internet orqali olish imkoniyatini ham yaratadi (Arduino UNO uchun ham sketch o&#8217;zgarmaydi, lekin uni to&#8217;g&#8217;ridan-tog&#8217;ri WiFi [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-119","post","type-post","status-publish","format-standard","hentry","category-namunaviy-sketchlar"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=119"}],"version-history":[{"count":28,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/119\/revisions"}],"predecessor-version":[{"id":5116,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/119\/revisions\/5116"}],"wp:attachment":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}