19.04.2026

WiFi lokal tarmog’ida boshqaruv [18+]

Mikrokontroller yordamida WiFi tarmoqlariga bog’lanishni 2 xil usul bilan amalga oshirish mumkin:

  • Ichki WiFi-modulga ega bo’lgan mikrokontroller tomonidan tog’ridan-to’g’ri (Masalan, ESP8266 va ESP32 mikrokontrollerlari shunday imkoniyatga ega);
  • Ichki WiFi-modulga ega bo’lmagan mikrokontrollerlar tomonidan WiFi-modulga ega bo’lgan boshqa mikrokontroller orqali.

WiFi-modulga ega bo’lmagan mikrokontrollerlar bilan ishlash bo’yicha alohida materialda to’xtalib o’tilgan. Biz quyida faqat shunday modulga ega bo’lgan mikrokontroller yordamida WiFi orqali boshqaruvning variantlarini ko’rib chiqamiz.

WiFi orqali boshqaruv 

Quyidagi misollarda WiFi orqali boshqarishda ESP8266 mikrokontrollerlaridan foydalanamiz (ko’pgina misollarni deyarli o’zgarishsiz ESP32 mikrokontrollerlarida ham qo’llash mumkin). Xususan, ulardan qulay foydalanish maqsadida yaratilgan turli bibliotekalardan ham keng foydalanamiz.

Quyida biz ichki WiFi tarmog’ida TCP protokoli yordamida boshqaruv variantlarini, shuningdek, HTTP hamda WebSockets protokollari yordamidagi boshqaruvning veb-brauzerli hamda veb-brauzersiz (har bir protokol uchun 2 tadan) variantlarini ko’rib chiqamiz.

Barcha misollarda Wemos D1 mini platasidan foydalaniladi. Uning o’rniga ESP8266 hamda ESP32 oilasidagi har qanday boshqa plata va modullar jiddiy o’zgarishlarsiz qo’llanishi mumkin.

TCP protokoli yordamida boshqaruv

WiFi orqali boshqaruvning boshqa murakkab variantlariga o’tishdan oldin, faqatgina TCP protokolining o’zidan foydalanilgan holda boshqarish usuli bilan tanishamiz. Buning uchun bizga ESP8266 mikrokontrollerlari uchun mo’ljallangan umumiy biblioteka (ESP8266WiFi) yetarli bo’ladi.

Dastlab TCP-server hamda TCP-mijoz uchun alohida oddiy sketchlarni, oxirida esa, ularga ayrim qo’shimchalarni kiritib, mikrokontroller ichki svetodiodini boshqaruvchi hamda termistor ko’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’shamiz va 2-platadagi ichki svetodiodni boshqaramiz, port monitorida termistor ko’rsatkichlarini kuzatamiz.

1-misol. Ushbu misolda TCP-serverning IP manziliga kompyuterdagi yoki smatfondagi terminal ilova dasturi tomonidan bog’lanib, matnli ma’lumotlarni yuborish mumkin. Agar matn sifatida harf yoki belgilar o’rniga faqat raqamlar yuborilsa, mikrokontroller svetodiodining holati qarama-qarshisiga o’zgarayotganini ham kuzatishimiz mumkin. Bundan tashqari, port monitoriga matn kiritilsa, uni terminal dasturida ko’rish mumkin bo’ladi.

1-sketch (TCP-server).

Natija:

2-misol. Misolda TCP-mijoz port monitorida, o’sib boruvchi sonlarni har sekundda TCP-server IP-manziliga yuborilayotganini, TCP-server port monitorida esa, qabul qilingan matnlar ko’rsatilayotganini kuzatish mumkin.

2-sketch (TCP-mijoz).

Natija:

3-sketch (TCP-mijoz 2-varianti).

Natija:

 

WiFi ichki (lokal) tarmog’ida HTTP protokoli yordamida boshqaruvning umumiy shartlari:

  • Qurilmani WiFi tarmoq orqali boshqarish uchun undagi mikrokontrollerda aniq bir IP-manzilga ega bo’lgan veb-server (http-server yoki himoyalangan kanalli https-server) hosil qilinishi zarur (veb-server hosil qilish variantlari alohida dars misollarida ko’rsatilgan). Bunda, qurilmaga bog’lanishning qanday (STA, AP, AP+STA) usulidan foydalanilishining farqi yo’q. WebSockets protokoli orqali boshqaruv uchun esa, qo’shimcha ravishda WebSockets serveri (ws-server) yoki himoyalangan kanalli WebSockets serveri (wss-server) ham yaratiladi.
  • Veb-brauzer orqali boshqaruvda qurilmaga bog’lanuvchi http-mijoz rolini veb-brauzerga ega bo’lgan har qanday boshqa qurilma (kompyuter, smartfon, planshet, smart-tv va hokazo)larning brauzerlari yoki smartfondagi mobil ilova bajarishi mumkin. Bundan tashqari, yana bir Arduino qurilmasining mikrokontrolleri ham veb-mijoz rolini bajarishi mumkin. Bunda barcha http-so’rovlar mikrokontroller asosida hosil qilingan http-mijoz tomonidan yuboriladi. Zarurat bo’lsa, serverdan qaytgan javoblarni ham unda qayta ishlash mumkin.
  • http protokoli yordamida boshqarishda qurilmani boshqaruv buyruqlari va boshqa ma’lumotlar veb-serverga HTML tilidagi http-so’rovlar ko’rinishida yuboriladi. Ma’lumotlar http-server tomonidan qayta ishlanib (bajarilib) bo’lgach, natijalar bo’yicha HTML-sahifa shakllantiriladi uning matni (kontenti) mijozga qaytariladi va oxirida tomonlar o’rtasidagi aloqa uziladi.
  • WebSockets protokoli yordamida boshqarishda serverga dastlabki bog’lanish so’rovi asosiy port (masalan, 80-port) orqali veb-serverga yuboriladi. Dastlabki so’rovni yuborish va uning asosida serverda alohida portda (masalan, 81-portda) maxsus aloqa kanali (“socket”, “tunnel”) hosil qilinishi uchun bir necha sekund vaqt talab etilishi mumkin. Mijozning keyingi barcha so’rovlari va serverning ularga javob xabarlari shu kanal orqali real vaqtda yuboriladi va qabul qilinadi. Bunda serverda HTML-sahifa shakllantirilmaydi, buning o’rniga hosil qilingan qisqa xabar (foydali xabar, “payload”) o’sha mijozga yoki serverning barcha faol mijozlariga qaytariladi. Asosiysi, bunda mijozlar va server o’rtasidagi kanal (soket) uzilmaydi (texnik sabablarga uzilishlar bundan mustasno). Shu yo’l bilan boshqaruvning maksimal tezligiga erishiladi.

HTTP protokoli yordamida veb-brauzer orqali boshqarish

Demak, http-mijoz so’rovlarini bajarish va natijalarni qaytarish uchun Arduino sketchlariga http-so’rovlarni qayta ishlovchi, ular asosida qurilma yuklamalarini boshqaruvchi va boshqaruv natijalarini HTML yoki PHP kodi (skript) ko’rinishida http-mijozga qaytaruvchi tegishli kodni ham qo’shish zarur bo’ladi (Qurilmani mobil ilovadan boshqarish uchun esa, yuqoridagilardan tashqari, kerakli dasturlash vositalari yordamida ilovaning o’zini ham yaratib olish va uni mikrokontrollerdagi http-serverga bog’lash kerak bo’ladi. Arduinoning o’zi bunday imkoniyatga ega emas). Alohida darsda shunday ilovalarning sodda bir varianti haqida ma’lumot berilgan.

Faqat HTML-kod yordamida boshqariladigan veb-serverni yaratishda biz misol tariqasida ESP platalari uchun mo’ljallangan “WiFiManualWebServer” namunaviy sketchidan foydalanishimiz mumkin. Bunda, mikrokontroller mavjud WiFi tarmoqqa STA rejimida bog’lanadi va o’zida http-server hosil qiladi. Mavjud WiFi tarmoqdagi marshrutizator tomonidan mikrokontrollerga ajratilgan dinamik IP-manzilga http-mijoz tomonidan yuborilgan http-so’rov asosida platadagi ichki svetodiodni o’chirish yoki yoqish, shuningdek, svetodiod holati haqida HTML kodi hosil qilish va uni yana http-mijozga qaytarish mumkin bo’ladi.

Quyidagi misolda “WiFiManualWebServer” namunaviy sketchi yordamida Wemos D1 mini platasi ichki svetodiodini boshqaramiz. Bunda, mikrokontroller mavjud WiFi tarmoqqa STA rejimida bog’lanadi va o’zida http-server hosil qiladi. Mavjud WiFi tarmoqdagi marshrutizator tomonidan mikrokontrollerga ajratilgan IP-manzilga http-mijoz tomonidan yuborilgan http-so’rov asosida platadagi ichki svetodiodni o’chirish yoki yoqish, svetodiod holati haqida HTML kodi hosil qilish va uni yana http-mijozga qaytarish mumkin bo’ladi (Namunaviy sketchdagi ingliz tilidagi izohlar o’zbek tiliga o’girilgan holda keltiriladi):

1-sketch (veb-server):

Natija:

Ko’rinib turibdiki, mikrokontroller hududdagi WiFi tarmog’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’z ichiga olgan veb-sahifa ochiladi. Unda tegishli giperhavolalarga bosish orqali esa, platadagi svetodiodni yoqish va o’chirish mumkin bo’ladi.

Veb-server uchun yuqoridagiga o’xshash sketchni ArduBlock blokli dasturlash vositasi yordamida ham hosil qilishimiz mumkin. Dasturlash vositasining oxirgi 3-versiyasi (onlayn va offlayn versiyalari) ko’plab qo’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’g’ridan-to’g’ri mikrokontrollerga yuklab bo’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’rinishda bo’ladi:

Tayyor kodni (2-sketch) buferga nusxalab olamiz va Arduino IDE ga qo’yib, mikrokontrollerga yuklaymiz. Barcha jarayonlar “Kodsiz “WiFi-rozetka” loyihasida ham keltirilgan (shuning uchun alohida videorolik tayyorlanmadi).

Natija:

HTTP protokoli yordamida veb-brauzersiz boshqaruv

Yuqorida ko’rib chiqilgan misollarda, http-so’rovni yuboruvchi veb-brauzer – boshqaruvchi, mikrokontroller esa – ijrochi rolini bajargan. Lekin, zarurat bo’lsa, mikrokontroller ijrochi rolini ham bajarishi mumkin. Aniqrog’i, bir mikrokontroller – boshqaruvchi, ikkinchisi esa, ijrochi rolini bajaradi. Bunda, http-so’rovni yuboruvchi (boshqaruvchi) mikrokontrollerni o’z ichiga olgan Arduino qurilmalasi sxemasiga boshqaruv viklyuchateli yoki tugmasi quyidagi sxema asosida ulanadi.

Demak, navbatdagi misolda mikrokontroller boshqaruvchi rolini bajaradi. Ijrochi rolini esa, oldingi misoldagi 2-sketch yozilgan mikrokontroller bajaradi. Shuning uchun, boshqaruvchi mikrokontroller sketchidagi http-so’rov kodini veb-server kodiga moslashtiriladi.

Sxema:

Bu holda, http-so’rovni boshqaruv viklyichateli yoki tugmasi tomonidan hosil qilinadi. Boshqaruvchi sketchi quyidagicha bo’ladi:

3-sketch (http-mijoz):

Natija:

Har safar viklyuchaytel (tugma) holati o’zgarganda tegishli http-so’rov serverga yuboriladi va javobi kutiladi (o’zgaradigan joylar qizil rang bilan ajratilgan).

Yuqoridagi videorolikda ham aytib o’tilganidek, http protokoli yordamida boshqaruvning muhim bir kamchiligi haqida unutmaslik kerak. Ushbu texnologiya hozirda ham amalda keng qo’llanilayotganiga qaramay, serverga so’rov yuborish, unda so’rovni qayta ishlab, natijani http-mijozga qaytarish va oxirida server bilan albatta aloqani uzish bosqichlariga egaligi, odatda boshqa texnologiyalarga nisbatan ko’proq vaqt talab etishi http protokolining o’ziga xos kamchiligi hisoblanadi. Masalan, bitta boshqaruv so’rovini amalga oshirish vaqti, odatda 3-10 sekundni tashkil etishi mumkin (videorolikda vaqtni tejash maqsadida, ba’zi o’rinlarda boshqarish jarayonlari vaqti qisqartirilgan).

Qurilmalarni boshqarishda yuqori tezlik talab etilganda, WebSockets protokolidan yoki Bulutli texnologiyalardan foydalanish mumkin.

HTTP va WebSockets protokollari yordamida veb-brauzer orqali boshqaruv

Ilgari ma’lum qilinganidek, WebSockets protokoli – HTTP texnologiyasining takomillashtirilgan turi bo’lib, mijoz va server orasida ma’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’rtasida bitta boshqaruv buyrug’ini najarish vaqti WebSockets protokoli orqali sekundning o’ndan birgacha bo’lgan qisqa ulushlariga teng bo’lishi mumkin. WebSockets protokoli bilan ishlash uchun AVR/ESP8266/ESP32 ga qo’llash mumkin bo’lgan “WebSockets” bibliotekasidan foydalanamiz.

Navbatdagi misollarda Wemos D1 mini platasida hosil qilingan http-server yordamida ichki svetodiodini boshqarishning brauzer orqali hamda brauzersiz variantlarini ko’rib chiqamiz. Yuqoridagi bog’lanish sxemasiga o’zgartirish kiritilmaydi. http-serverni hosil qilish uchun “Примеры/WebSockets/esp8266_pico” menyusidagi “WebSocketServer” namunaviy sketchidan, veb-brauzersiz http-mijoz roli uchun “WebSocketClient” namunaviy sketchidan foydalanamiz (Sketchlar qisqartirilgan holda keltiriladi va izohlanadi).

Bunda ham mikrokontrollerlar mavjud WiFi tarmoqqa STA rejimida bog’lanadi va o’zida http-server hosil qiladi. Shundan keyin birinchi marta yuborilgan http-so’rov asosida server bilan mijoz IP-manzillari o’rtasida 81-portda aloqa kanali (tunnel) ochiladi. Lekin http protokolidan farqli ravishda ushbu aloqa kanali doimiy ulangan holda saqlanadi (texnik sabablarga ko’ra uzulishlardan tashqari). Shundan keyin barcha http-so’rovlar serverga yuboriladi. Javob deyarli o’sha zahoti yo faqat so’rovni yuborgan mijozning o’ziga, yoki (“broadcast” rejimida) serverning barcha faol mijozlariga qaytariladi.

4-sketch (WebSockets-server):

Natija:

WebSockets protokoli yordamida veb-brauzersiz boshqaruv

Oxirgi ko’rib chiqilgan misolda, http-so’rovni yuboruvchi veb-brauzer – boshqaruvchi, mikrokontroller esa – ijrochi rolini bajargan. Navbatdagi misolda, ikkita mikrokontrollerdan biri – mijoz (boshqaruvchi), ikkinchisi – server (ijrochi) rolini bajaradi. Bunda ham, yuqoridagi sxemadan foydalanamiz. Ya’ni, http-so’rovni yuboruvchi mikrokontrollerni o’z ichiga olgan Arduino qurilmalasida boshqaruv viklyuchateli yoki tugmasidan foydalaniladi.

5-sketch (WebSockets-mijoz):

 

1. Yuqoridagi http-server orqali boshqarish sketchidagi HTML-sahifaga tegishli kodni shunday o’zgartiringki, giperhavolalardagi “GPIO/0” va “GPIO/1” matnlari o’rniga “Yoq” va “O’chir” yozuvlari qatnashsin. Matn esa, shunga mos mazmunda o’zgartirilsin.
2. 2-sketchni ESP-01 moduli uchun o’zgartiring (unda foydalanish mumkin bo’lgan pinlar soni cheklanganini hisobga oling).
3. Wemos D1 mini platasidagi barcha pinlarga ulangan svetodiodlar misolida boshqarish bo’yicha sketchni yarating.
4. 2-sketch ishini Wemos D1 mini platasiga ulangan elektromagnit rele modullari bilan sinab ko’ring.
5. Wemos D1 mini platasidagi analog pinga yorug’likni sezuvchi datchik (fotorezistor) ulab, 2-sketchni datchikning ko’rsatkichlarini giperhavola yordamida veb-sahifada ko’rsatishga moslashtiring.
6. Wemos D1 mini platasi yordamida “Aqlli uy” loyihasini amalga oshirish uchun datchiklar va yuklamalar sonini o’zgartirilganda nechta datchik yordamida nechtagacha qurilmani boshqarish mumkinligi variantlarini hisoblab chiqing.
7. 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’shing. Ya’ni, server tomondagi plata svetodiodi yonganida yoki o’chganida mijoz tomondagi plata svetodiodi ham mos ravishda yonishi yoki o’chishi kerak.
8. Yuqoridagi barcha misollarda mos ravishda WebSocket protokoli qo’llangan 4- va 5-sketchlarga mos ravishda o’zgartirishlar kiriting.

Добавить комментарий