{"id":1650,"date":"2024-02-17T20:32:33","date_gmt":"2024-02-17T15:32:33","guid":{"rendered":"https:\/\/yarat.uz\/?p=1650"},"modified":"2025-07-04T23:14:07","modified_gmt":"2025-07-04T18:14:07","slug":"wifi-orqali-lokal-boshqaruvga-misollar","status":"publish","type":"post","link":"https:\/\/yarat.uz\/?p=1650","title":{"rendered":"WiFi lokal tarmog&#8217;ida boshqaruv [18+]"},"content":{"rendered":"<p style=\"text-align: justify;\">Mikrokontroller yordamida WiFi tarmoqlariga bog&#8217;lanishni 2 xil usul bilan amalga oshirish mumkin:<\/p>\n<ul>\n<li style=\"text-align: justify;\">Ichki WiFi-modulga ega bo&#8217;lgan mikrokontroller tomonidan tog&#8217;ridan-to&#8217;g&#8217;ri (Masalan, ESP8266 va ESP32 mikrokontrollerlari shunday imkoniyatga ega);<\/li>\n<li style=\"text-align: justify;\">Ichki WiFi-modulga ega bo&#8217;lmagan mikrokontrollerlar tomonidan WiFi-modulga ega bo&#8217;lgan boshqa mikrokontroller orqali.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">WiFi-modulga ega bo&#8217;lmagan mikrokontrollerlar bilan ishlash bo&#8217;yicha alohida materialda to&#8217;xtalib o&#8217;tilgan. Biz quyida faqat shunday modulga ega bo&#8217;lgan mikrokontroller yordamida WiFi orqali boshqaruvning variantlarini ko&#8217;rib chiqamiz.<\/p>\n<p style=\"text-align: center;\"><strong>WiFi orqali boshqaruv\u00a0<\/strong><\/p>\n<p style=\"text-align: justify;\">Quyidagi misollarda WiFi orqali boshqarishda ESP8266 mikrokontrollerlaridan foydalanamiz (ko&#8217;pgina misollarni deyarli o&#8217;zgarishsiz ESP32 mikrokontrollerlarida ham qo&#8217;llash mumkin). Xususan, ulardan qulay foydalanish maqsadida yaratilgan turli bibliotekalardan ham keng foydalanamiz.<\/p>\n<p style=\"text-align: justify;\">Quyida biz ichki WiFi tarmog&#8217;ida <strong>TCP protokoli<\/strong> yordamida boshqaruv variantlarini, shuningdek, <strong>HTTP<\/strong> hamda <strong>WebSockets<\/strong> protokollari yordamidagi boshqaruvning <strong>veb-brauzerli<\/strong> hamda <strong>veb-brauzersiz<\/strong> (har bir protokol uchun 2 tadan) variantlarini ko&#8217;rib chiqamiz.<\/p>\n<p style=\"text-align: justify;\">Barcha misollarda Wemos D1 mini platasidan foydalaniladi. Uning o&#8217;rniga ESP8266 hamda ESP32 oilasidagi har qanday boshqa plata va modullar jiddiy o&#8217;zgarishlarsiz qo&#8217;llanishi mumkin.<\/p>\n<p style=\"text-align: center;\"><strong>TCP protokoli yordamida boshqaruv<\/strong><\/p>\n<p style=\"text-align: justify;\">WiFi orqali boshqaruvning boshqa murakkab variantlariga o&#8217;tishdan oldin, faqatgina TCP protokolining o&#8217;zidan foydalanilgan holda boshqarish usuli bilan tanishamiz. Buning uchun bizga ESP8266 mikrokontrollerlari uchun mo&#8217;ljallangan umumiy biblioteka (ESP8266WiFi) yetarli bo&#8217;ladi.<\/p>\n<p style=\"text-align: justify;\">Dastlab TCP-server hamda TCP-mijoz uchun alohida oddiy sketchlarni, oxirida esa, ularga ayrim qo&#8217;shimchalarni kiritib, mikrokontroller ichki svetodiodini boshqaruvchi hamda termistor ko&#8217;rsatkichlarini yuboruvchi dasturlarni yaratamiz. Bunda Wemos D1 mini platasidan foydalanamiz va dastlabki bosqichda unga boshqa elektron komponentlar ulanishi talab etilmaydi. Demak, 1-plata TCP-mijoz rolini, 2-si esa, TCP-server rolini bjaradi. 3-misolda esa, TCP-mijoz rolidagi plata sxemasiga boshqaruv tugmasini hamda termistorni qo&#8217;shamiz va 2-platadagi ichki svetodiodni boshqaramiz, port monitorida termistor ko&#8217;rsatkichlarini kuzatamiz.<\/p>\n<p style=\"text-align: justify;\"><strong>1-misol.<\/strong> Ushbu misolda TCP-serverning IP manziliga kompyuterdagi yoki smatfondagi terminal ilova dasturi tomonidan bog&#8217;lanib, matnli ma&#8217;lumotlarni yuborish mumkin. Agar matn sifatida harf yoki belgilar o&#8217;rniga faqat raqamlar yuborilsa, mikrokontroller svetodiodining holati qarama-qarshisiga o&#8217;zgarayotganini ham kuzatishimiz mumkin. Bundan tashqari, port monitoriga matn kiritilsa, uni terminal dasturida ko&#8217;rish mumkin bo&#8217;ladi.<\/p>\n<p><em>1-sketch (TCP-server).<\/em><\/p>\n<p><em>Natija:<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>2-misol.<\/strong> Misolda TCP-mijoz port monitorida, o&#8217;sib boruvchi sonlarni har sekundda TCP-server IP-manziliga yuborilayotganini, TCP-server port monitorida esa, qabul qilingan matnlar ko&#8217;rsatilayotganini kuzatish mumkin.<\/p>\n<p><em>2-sketch (TCP-mijoz).<\/em><\/p>\n<p><em>Natija:<\/em><\/p>\n<p><em>3-sketch (TCP-mijoz 2-varianti).<\/em><\/p>\n<p><em>Natija:<\/em><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><strong>WiFi ichki (lokal) tarmog&#8217;ida HTTP protokoli yordamida boshqaruvning umumiy shartlari:<\/strong><\/p>\n<ul>\n<li style=\"text-align: justify;\">Qurilmani WiFi tarmoq orqali boshqarish uchun undagi mikrokontrollerda aniq bir IP-manzilga ega bo&#8217;lgan <strong>veb-server <\/strong>(<strong>http-server<\/strong> yoki himoyalangan kanalli <strong>https-server<\/strong>) hosil qilinishi zarur (veb-server hosil qilish variantlari <a href=\"https:\/\/yarat.uz\/wp-admin\/post.php?post=4754&amp;action=edit\">alohida<\/a> dars misollarida ko&#8217;rsatilgan). Bunda, qurilmaga bog&#8217;lanishning qanday (STA, AP, AP+STA) usulidan foydalanilishining farqi yo&#8217;q. WebSockets protokoli orqali boshqaruv uchun esa, qo&#8217;shimcha ravishda\u00a0<strong>WebSockets serveri<\/strong> (ws-server) yoki <strong>himoyalangan kanalli WebSockets serveri<\/strong> (wss-server) ham yaratiladi.<\/li>\n<li style=\"text-align: justify;\">Veb-brauzer orqali boshqaruvda qurilmaga bog&#8217;lanuvchi <strong>http-mijoz<\/strong> rolini <strong>veb-brauzer<\/strong>ga ega bo&#8217;lgan har qanday boshqa qurilma (<strong>kompyuter, smartfon, planshet, smart-tv<\/strong> va hokazo)larning brauzerlari yoki smartfondagi <strong>mobil ilova<\/strong> bajarishi mumkin. Bundan tashqari, yana bir Arduino qurilmasining mikrokontrolleri ham veb-mijoz rolini bajarishi mumkin. Bunda barcha http-so&#8217;rovlar mikrokontroller asosida hosil qilingan http-mijoz tomonidan yuboriladi. Zarurat bo&#8217;lsa, serverdan qaytgan javoblarni ham unda qayta ishlash mumkin.<\/li>\n<li style=\"text-align: justify;\"><strong>http protokoli yordamida boshqarishda<\/strong> qurilmani boshqaruv buyruqlari va boshqa ma&#8217;lumotlar veb-serverga <strong>HTML<\/strong> tilidagi <strong>http-so&#8217;rovlar<\/strong> ko&#8217;rinishida yuboriladi. Ma&#8217;lumotlar http-server tomonidan qayta ishlanib (bajarilib) bo&#8217;lgach, natijalar bo&#8217;yicha HTML-sahifa shakllantiriladi uning matni (kontenti) mijozga qaytariladi va oxirida tomonlar o&#8217;rtasidagi aloqa uziladi.<\/li>\n<li style=\"text-align: justify;\"><strong>WebSockets protokoli yordamida boshqarishda<\/strong> serverga dastlabki bog&#8217;lanish so&#8217;rovi asosiy port (masalan, 80-port) orqali veb-serverga yuboriladi. Dastlabki so&#8217;rovni yuborish va uning asosida serverda alohida portda (masalan, 81-portda) maxsus aloqa kanali (&#8220;socket&#8221;, &#8220;tunnel&#8221;) hosil qilinishi uchun bir necha sekund vaqt talab etilishi mumkin. Mijozning keyingi barcha so&#8217;rovlari va serverning ularga javob xabarlari shu kanal orqali real vaqtda yuboriladi va qabul qilinadi. Bunda serverda HTML-sahifa shakllantirilmaydi, buning o&#8217;rniga hosil qilingan qisqa xabar (foydali xabar, &#8220;payload&#8221;) o&#8217;sha mijozga yoki serverning barcha faol mijozlariga qaytariladi. Asosiysi, bunda mijozlar va server o&#8217;rtasidagi kanal (soket) uzilmaydi (texnik sabablarga uzilishlar bundan mustasno). Shu yo&#8217;l bilan boshqaruvning maksimal tezligiga erishiladi.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><em><strong>HTTP protokoli yordamida veb-brauzer orqali boshqarish<\/strong><\/em><\/p>\n<p style=\"text-align: justify;\">Demak, http-mijoz so&#8217;rovlarini bajarish va natijalarni qaytarish uchun Arduino sketchlariga http-so&#8217;rovlarni qayta ishlovchi, ular asosida qurilma yuklamalarini boshqaruvchi va boshqaruv natijalarini HTML yoki PHP kodi (skript) ko&#8217;rinishida http-mijozga qaytaruvchi tegishli kodni ham qo&#8217;shish zarur bo&#8217;ladi (Qurilmani mobil ilovadan boshqarish uchun esa, yuqoridagilardan tashqari, kerakli dasturlash vositalari yordamida ilovaning o&#8217;zini ham yaratib olish va uni mikrokontrollerdagi http-serverga bog&#8217;lash kerak bo&#8217;ladi. Arduinoning o&#8217;zi bunday imkoniyatga ega emas). <a href=\"https:\/\/yarat.uz\/?p=1952\">Alohida darsda<\/a> shunday ilovalarning sodda bir varianti haqida ma&#8217;lumot berilgan.<\/p>\n<p style=\"text-align: justify;\">Faqat HTML-kod yordamida boshqariladigan veb-serverni yaratishda biz misol tariqasida ESP platalari uchun mo&#8217;ljallangan &#8220;<strong>WiFiManualWebServer<\/strong>&#8221; namunaviy sketchidan foydalanishimiz mumkin. Bunda, mikrokontroller mavjud WiFi tarmoqqa STA rejimida bog&#8217;lanadi va o&#8217;zida http-server hosil qiladi. Mavjud WiFi tarmoqdagi marshrutizator tomonidan mikrokontrollerga ajratilgan <strong>dinamik IP-manzil<\/strong>ga http-mijoz tomonidan yuborilgan http-so&#8217;rov asosida platadagi ichki svetodiodni o&#8217;chirish yoki yoqish, shuningdek, svetodiod holati haqida HTML kodi hosil qilish va uni yana http-mijozga qaytarish mumkin bo&#8217;ladi.<\/p>\n<p style=\"text-align: justify;\">Quyidagi misolda &#8220;WiFiManualWebServer&#8221; namunaviy sketchi yordamida Wemos D1 mini platasi <strong>ichki svetodiodini boshqaramiz<\/strong>. Bunda, mikrokontroller mavjud WiFi tarmoqqa STA rejimida bog&#8217;lanadi va o&#8217;zida http-server hosil qiladi. Mavjud WiFi tarmoqdagi marshrutizator tomonidan mikrokontrollerga ajratilgan IP-manzilga http-mijoz tomonidan yuborilgan http-so&#8217;rov asosida platadagi ichki svetodiodni o&#8217;chirish yoki yoqish, svetodiod holati haqida HTML kodi hosil qilish va uni yana http-mijozga qaytarish mumkin bo&#8217;ladi (Namunaviy sketchdagi ingliz tilidagi izohlar o&#8217;zbek tiliga o&#8217;girilgan holda keltiriladi):<\/p>\n<p><em>1-sketch (veb-server):<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><br \/>\n<div class=\"su-youtube su-u-responsive-media-yes\"><iframe loading=\"lazy\" width=\"640\" height=\"480\" src=\"https:\/\/www.youtube.com\/embed\/Z1dgHpS51rU?\" frameborder=\"0\" allowfullscreen allow=\"autoplay; encrypted-media; picture-in-picture\" title=\"Blink\"><\/iframe><\/div>\n<p style=\"text-align: justify;\">Ko&#8217;rinib turibdiki, mikrokontroller hududdagi WiFi tarmog&#8217;iga ishchi stansiya sifatida ulangan va marshrutizator tomonidan avtomatik ravishda unga 192.168.0.198 IP-manzili ajratilgan (farq qilishi mumkin). Shundan keyin mikrokontrollerda mazkur IP-manzilda http-server ham yaratilgan. Shuning uchun ushbu tarmoqqa ulangan ixtiyoriy qurilmaning veb-brauzerida ushbu manzil kiritilsa, Wemos D1 mini platasidagi svetodiodni boshqaruvchi kodni o&#8217;z ichiga olgan veb-sahifa ochiladi. Unda tegishli giperhavolalarga bosish orqali esa, platadagi svetodiodni yoqish va o&#8217;chirish mumkin bo&#8217;ladi.<\/p>\n<p style=\"text-align: justify;\">Veb-server uchun yuqoridagiga o&#8217;xshash sketchni <strong>ArduBlock\u00a0<\/strong>blokli dasturlash vositasi yordamida ham hosil qilishimiz mumkin. Dasturlash vositasining oxirgi 3-versiyasi (onlayn va offlayn versiyalari) ko&#8217;plab qo&#8217;shimcha imkoniyatlarga ega, lekin u pulli hisoblanadi. Bepul demo onlayn 3-versiyasi va oflayn 1-2-versiyalari imkoniyatlari cheklangan. Xususan, unda tayyorlangan dasturiy kodni to&#8217;g&#8217;ridan-to&#8217;g&#8217;ri mikrokontrollerga yuklab bo&#8217;lmaydi. Shuning uchun biz uning bepul 2-versiyasidan va tayyor kodni Wemos D1 mini mikrokontrolleriga yuklashda Arduino IDE dan foydalanamiz. Dasturning ArduBlock 2.0 dagi blokli kodi quyidagi ko&#8217;rinishda bo&#8217;ladi:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4662\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/10\/ardublock_sta.jpg\" alt=\"\" width=\"976\" height=\"697\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/10\/ardublock_sta.jpg 976w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/10\/ardublock_sta-300x214.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/10\/ardublock_sta-768x548.jpg 768w\" sizes=\"auto, (max-width: 976px) 100vw, 976px\" \/><\/p>\n<p style=\"text-align: justify;\">Tayyor kodni (2-sketch) buferga nusxalab olamiz va Arduino IDE ga qo&#8217;yib, mikrokontrollerga yuklaymiz. Barcha jarayonlar <a href=\"https:\/\/yarat.uz\/?p=4736\">&#8220;Kodsiz &#8220;WiFi-rozetka&#8221; loyihasi<\/a>da ham keltirilgan (shuning uchun alohida videorolik tayyorlanmadi).<\/p>\n<p><em>Natija:<\/em><\/p>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_51647\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/yjq3GCSI8mM?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p style=\"text-align: center;\"><em><strong> HTTP protokoli yordamida veb-brauzersiz boshqaruv<\/strong><\/em><\/p>\n<p style=\"text-align: justify;\">Yuqorida ko&#8217;rib chiqilgan misollarda, http-so&#8217;rovni yuboruvchi veb-brauzer &#8211; boshqaruvchi, mikrokontroller esa &#8211; ijrochi rolini bajargan. Lekin, zarurat bo&#8217;lsa, mikrokontroller ijrochi rolini ham bajarishi mumkin. Aniqrog&#8217;i, bir mikrokontroller &#8211; boshqaruvchi, ikkinchisi esa, ijrochi rolini bajaradi. Bunda, http-so&#8217;rovni yuboruvchi (boshqaruvchi) mikrokontrollerni o&#8217;z ichiga olgan Arduino qurilmalasi sxemasiga boshqaruv viklyuchateli yoki tugmasi quyidagi sxema asosida ulanadi.<\/p>\n<p style=\"text-align: justify;\">Demak, navbatdagi misolda mikrokontroller boshqaruvchi rolini bajaradi. Ijrochi rolini esa, oldingi misoldagi 2-sketch yozilgan mikrokontroller bajaradi. Shuning uchun, boshqaruvchi mikrokontroller sketchidagi http-so&#8217;rov kodini veb-server kodiga moslashtiriladi.<\/p>\n<p style=\"text-align: justify;\"><em>Sxema:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4776 size-medium\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/wemos-viklyuchatel_bb-e1733315302989-300x281.jpg\" alt=\"\" width=\"300\" height=\"281\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/wemos-viklyuchatel_bb-e1733315302989-300x281.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/wemos-viklyuchatel_bb-e1733315302989.jpg 613w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p style=\"text-align: justify;\">Bu holda, <strong>http-so&#8217;rovni boshqaruv viklyichateli yoki tugmasi tomonidan hosil qilinadi<\/strong>. Boshqaruvchi sketchi quyidagicha bo&#8217;ladi:<\/p>\n<p><em>3-sketch (http-mijoz):<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4780 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/wemos-viklyuchatel-run.jpg\" alt=\"\" width=\"897\" height=\"699\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/wemos-viklyuchatel-run.jpg 897w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/wemos-viklyuchatel-run-300x234.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/wemos-viklyuchatel-run-768x598.jpg 768w\" sizes=\"auto, (max-width: 897px) 100vw, 897px\" \/><\/p>\n<p style=\"text-align: justify;\">Har safar viklyuchaytel (tugma) holati o&#8217;zgarganda tegishli http-so&#8217;rov serverga yuboriladi va javobi kutiladi (o&#8217;zgaradigan joylar qizil rang bilan ajratilgan).<\/p>\n<p style=\"text-align: justify;\">Yuqoridagi videorolikda ham aytib o&#8217;tilganidek, http protokoli yordamida boshqaruvning muhim bir kamchiligi haqida unutmaslik kerak. Ushbu texnologiya hozirda ham amalda keng qo&#8217;llanilayotganiga qaramay, serverga so&#8217;rov yuborish, unda so&#8217;rovni qayta ishlab, natijani http-mijozga qaytarish va oxirida server bilan albatta aloqani uzish bosqichlariga egaligi, odatda boshqa texnologiyalarga nisbatan ko&#8217;proq vaqt talab etishi http protokolining o&#8217;ziga xos kamchiligi hisoblanadi. Masalan, bitta boshqaruv so&#8217;rovini amalga oshirish vaqti, odatda 3-10 sekundni tashkil etishi mumkin (videorolikda vaqtni tejash maqsadida, ba&#8217;zi o&#8217;rinlarda boshqarish jarayonlari vaqti qisqartirilgan).<\/p>\n<p style=\"text-align: justify;\">Qurilmalarni boshqarishda yuqori tezlik talab etilganda, <a href=\"https:\/\/yarat.uz\/?p=4764\">WebSockets protokoli<\/a>dan yoki <a href=\"https:\/\/yarat.uz\/?p=4303\">Bulutli texnologiyalar<\/a>dan foydalanish mumkin.<\/p>\n<p style=\"text-align: center;\"><em><strong>HTTP va WebSockets protokollari yordamida veb-brauzer orqali boshqaruv<\/strong><\/em><\/p>\n<p style=\"text-align: justify;\">Ilgari <a href=\"https:\/\/yarat.uz\/?p=2465\">ma&#8217;lum qilinganidek<\/a>, <strong>WebSockets<\/strong> protokoli &#8211; HTTP texnologiyasining takomillashtirilgan turi bo&#8217;lib, mijoz va server orasida ma&#8217;lumot almashinuvini tezlashtirish imkonini beradi. Ushbu protokol aloqa uchun asosiy (masalan, 80) portdan tashqari alohida (masalan, 81) portdan ham foydalanadi. Brauzer bilan Arduino qurilmasi o&#8217;rtasida bitta boshqaruv buyrug&#8217;ini najarish vaqti WebSockets protokoli orqali sekundning o&#8217;ndan birgacha bo&#8217;lgan qisqa ulushlariga teng bo&#8217;lishi mumkin. WebSockets protokoli bilan ishlash uchun AVR\/ESP8266\/ESP32 ga qo&#8217;llash mumkin bo&#8217;lgan &#8220;<a href=\"https:\/\/github.com\/Links2004\/arduinoWebSockets\">WebSockets<\/a>&#8221; bibliotekasidan foydalanamiz.<\/p>\n<p style=\"text-align: justify;\">Navbatdagi misollarda Wemos D1 mini platasida hosil qilingan http-server yordamida ichki svetodiodini boshqarishning brauzer orqali hamda brauzersiz variantlarini ko&#8217;rib chiqamiz. Yuqoridagi bog&#8217;lanish sxemasiga o&#8217;zgartirish kiritilmaydi. http-serverni hosil qilish uchun <strong>&#8220;\u041f\u0440\u0438\u043c\u0435\u0440\u044b\/WebSockets\/esp8266_pico&#8221;<\/strong> menyusidagi <strong>&#8220;WebSocketServer&#8221;<\/strong> namunaviy sketchidan, veb-brauzersiz http-mijoz roli uchun <strong>&#8220;WebSocketClient&#8221;<\/strong> namunaviy sketchidan foydalanamiz (Sketchlar qisqartirilgan holda keltiriladi va izohlanadi).<\/p>\n<p style=\"text-align: justify;\">Bunda ham mikrokontrollerlar mavjud WiFi tarmoqqa STA rejimida bog&#8217;lanadi va o&#8217;zida http-server hosil qiladi. Shundan keyin birinchi marta yuborilgan http-so&#8217;rov asosida server bilan mijoz IP-manzillari o&#8217;rtasida 81-portda aloqa kanali (tunnel) ochiladi. Lekin http protokolidan farqli ravishda ushbu aloqa kanali doimiy ulangan holda saqlanadi (texnik sabablarga ko&#8217;ra uzulishlardan tashqari). Shundan keyin barcha http-so&#8217;rovlar serverga yuboriladi. Javob deyarli o&#8217;sha zahoti yo faqat so&#8217;rovni yuborgan mijozning o&#8217;ziga, yoki (&#8220;broadcast&#8221; rejimida) serverning barcha faol mijozlariga qaytariladi.<\/p>\n<p><em>4-sketch (WebSockets-server):<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><\/p>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_19653\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/hfKbdOfFmxc?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p style=\"text-align: center;\"><em><strong>WebSockets protokoli yordamida <\/strong><\/em><em><strong>veb-brauzersiz boshqaruv<\/strong><\/em><\/p>\n<p style=\"text-align: justify;\">Oxirgi ko&#8217;rib chiqilgan misolda, http-so&#8217;rovni yuboruvchi veb-brauzer &#8211; boshqaruvchi, mikrokontroller esa &#8211; ijrochi rolini bajargan. Navbatdagi misolda, ikkita mikrokontrollerdan biri &#8211; mijoz (boshqaruvchi), ikkinchisi &#8211; server (ijrochi) rolini bajaradi. Bunda ham, yuqoridagi sxemadan foydalanamiz. Ya&#8217;ni, http-so&#8217;rovni yuboruvchi mikrokontrollerni o&#8217;z ichiga olgan Arduino qurilmalasida boshqaruv viklyuchateli yoki tugmasidan foydalaniladi.<\/p>\n<p><em>5-sketch (WebSockets-mijoz):<\/em><\/p>\n<pre><code><\/code><\/pre>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_37189\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/KtnGYmUZZBM?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><em>1. Yuqoridagi http-server orqali boshqarish sketchidagi HTML-sahifaga tegishli kodni shunday o&#8217;zgartiringki, giperhavolalardagi &#8220;GPIO\/0&#8221; va &#8220;GPIO\/1&#8221; matnlari o&#8217;rniga &#8220;Yoq&#8221; va &#8220;O&#8217;chir&#8221; yozuvlari qatnashsin. Matn esa, shunga mos mazmunda o&#8217;zgartirilsin.<br \/>\n2. 2-sketchni ESP-01 moduli uchun o&#8217;zgartiring (unda foydalanish mumkin bo&#8217;lgan pinlar soni cheklanganini hisobga oling).<br \/>\n3. Wemos D1 mini platasidagi barcha pinlarga ulangan svetodiodlar misolida boshqarish bo&#8217;yicha sketchni yarating.<br \/>\n4. 2-sketch ishini Wemos D1 mini platasiga ulangan elektromagnit rele modullari bilan sinab ko&#8217;ring.<br \/>\n5. Wemos D1 mini platasidagi analog pinga yorug&#8217;likni sezuvchi datchik (fotorezistor) ulab, 2-sketchni datchikning ko&#8217;rsatkichlarini giperhavola yordamida veb-sahifada ko&#8217;rsatishga moslashtiring.<br \/>\n6. Wemos D1 mini platasi yordamida &#8220;Aqlli uy&#8221; loyihasini amalga oshirish uchun datchiklar va yuklamalar sonini o&#8217;zgartirilganda nechta datchik yordamida nechtagacha qurilmani boshqarish mumkinligi variantlarini hisoblab chiqing.<br \/>\n7. 3-sketchda (veb-brauzersiz boshqaruvda) boshqaruv natijasidan kelib chiqib, server tomondagi plata ichki svetodiodi holatini mijoz tomonidagi plata ichki svetodiodida ham aks ettirish kodini qo&#8217;shing. Ya&#8217;ni, server tomondagi plata svetodiodi yonganida yoki o&#8217;chganida mijoz tomondagi plata svetodiodi ham mos ravishda yonishi yoki o&#8217;chishi kerak.<br \/>\n8. Yuqoridagi barcha misollarda mos ravishda WebSocket protokoli qo&#8217;llangan 4- va 5-sketchlarga mos ravishda o&#8217;zgartirishlar kiriting.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mikrokontroller yordamida WiFi tarmoqlariga bog&#8217;lanishni 2 xil usul bilan amalga oshirish mumkin: Ichki WiFi-modulga ega bo&#8217;lgan mikrokontroller tomonidan tog&#8217;ridan-to&#8217;g&#8217;ri (Masalan, ESP8266 va ESP32 mikrokontrollerlari shunday imkoniyatga ega); Ichki WiFi-modulga ega bo&#8217;lmagan mikrokontrollerlar tomonidan WiFi-modulga ega bo&#8217;lgan boshqa mikrokontroller orqali. WiFi-modulga ega bo&#8217;lmagan mikrokontrollerlar bilan ishlash bo&#8217;yicha alohida materialda to&#8217;xtalib o&#8217;tilgan. Biz quyida faqat shunday modulga [&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-1650","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\/1650","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=1650"}],"version-history":[{"count":126,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1650\/revisions"}],"predecessor-version":[{"id":5238,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1650\/revisions\/5238"}],"wp:attachment":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}