WiFi-modem va AT-buyruqlar.
Ma’lumki, WiFi orqali boshqaruvni soddalashtirish uchun tayyor bibliotekalar hamda ularning funksiya, klass hamda metodlaridan foydalaniladi. Bundan tashqari turli bog’lanish protokollarining har biri uchun ham alohida bibliotekalar mavjud. Biz ham asosan darslar davomida shunday bibliotekalardan foydalanib, turli protokollar yordamida boshqarish jarayonlarini ko’rib chiqamiz.
Biroq WiFi orqali bibliotekalar yordamida boshqaruv bo’limiga o’tishdan avval, mikrokontrollerning modem sifatidagi roli haqida qisqacha to’xtalib o’tamiz. Chunki, masofadan boshqarish uchun AVR, STM va boshqa mikrokontrollerlar asosida yaratiladigan loyihalarda aynan modem rolidagi boshqa mikrokontrollerlardan bog’lanish interfeysi sifatida foydalaniladi.
Oxirgi yillarda Internet orqali boshqaruv va IoT loyihalarini yaratishda mikrokontrollerlar orasida yetakchi o’rinni Expressif Systems kompaniyasining ESP8266 hamda ESP32 oilasidagi mikrokontrollerlari egallab kelmoqda. Ularning ilgari ma’lum qilingan qulayliklaridan tashqari yana bir afzalligi – ulardan IoT loyihalarini yaratishda keng foydalanilish mumkinligi hisoblanadi.
Asosiy mikrokontrollerdan axborotni uzatish uchun ularning kerakli pinlari WiFi-modemning RX va TX pinlaridaga ulanadi, ESPning boshqa pinlaridan umuman foydalanilmaydi. Shuning uchun, ko’p hollarda pinlari soni cheklangan ESP01 kabi arzon modullaridan foydalanish optimal variant hisoblanadi.
Modem rejimida foydalanish uchun ESP mikrokontrolleriga AT-buyruqlar bilan ishlashga mo’ljallangan maxsus proshivkaning oxirgi versiyasi oldindan yozilgan bo’lishi kerak (odatda, zavod tomonidan ularga aynan shunday proshivka yozilgan bo’ladi, uni kompyuterga Internetdan yuklab olish va “Flash download tool” yoki boshqa proshivkalash dasturi yordamida ESP platasiga yuklash mumkin). AT-buyruqlar soni ortishi va qo’shimcha imkoniyatlar yuzaga kelishi bilan, zaruratga qarab proshivkani ham yangilab borishga to’g’ri kelishi mumkin.
Proshivka dastlab ishga tushirilganda port ma’lumot almashish tezligi 74880 bodga o’tkazib olinsa, dastlabki ma’lumotni o’qish mumkin.

WiFi-modemga AT-buyruqlarni bevosita Arduino IDE port monitori yoki boshqa terminal dasturlar yordamida ham yuborish mumkin. Dasturlash yo’li bilan yuborish uchun esa, AT-buyruqlar asosiy mikrokontroller uchun yaratiladigan sketch kodida ko’rsatib ketiladi. Asosiy mikrokontroller va WiFi-modemni bog’lash uchun bevosita ularning RX/TX portlaridan yoki asosiy mikrokontroller dasturida SoftwareSerial bibliotekasidan foydalanib hosil qilingan virtual portlardan foydalanish mumkin.
Yuqoridagilardan kelib chiqib, biz amaliyotda o’zimiz tez-tez qo’llaydigan buyruqlar bilan qoisqacha tanishamiz. Barcha AT-buyruqlar ro’yxati va ularning vazifasi bilan tanishish uchun ushbu, ushbu, ushbu, ushbu yoki ushbu (rus tilida) havolalardan foydalanish mumikin (ESP8266 va ESP32 uchun ayrim buyruqlar farq qiladi).
Buyruqlar 4 xil rejimda qo’llaniladi (aksariyat buyruqlar uchun): 1) sinov rejimi (“=?” bilan), masalan “AT+CMD=?” kabi; 2) so’rov rejimi (“?” bilan), masalan “AT+CMD?” kabi; 3) sozlamani o’rnatish (“=” bilan), masalan “AT+CMD=<>” kabi; 4) bajarish (parametrsiz), masalan “AT+CMD” kabi.
Port tezligi 115000 bod qiymatiga o’rnatilgan bo’lishi kerak.
AT – WiFi modul ishga tushganligini tekshirish;
AT+RST – modulni qayta yuklash;
AT+GMR – modul proshivkasi versiyasini ko’rish;
ATE<rejim> – “Exo” rejimini ulash (ATE1) yoki uzish ATE0;
AT+GSLP – “chuqur uyqu” rejimiga o’tish;
AT+CWMODE -WiFi rejimini tanlash (STA – stansiya, AP – kirish nuqtasi, AP+STA – har ikki rejimni birdaniga qo’llash);
AT+CWJAP – AP rejimida tarmoq hosil qilish;
AT+CWLAP – WiFi-tarmoqlarni (kirish nuqtalarini) izlash;
AT+CWSAP – AP parametrlarini o’rnatish;
AT+CIPSEND – yuborilayotgan ma’lumot miqdorini ko’rsatish (baytlar soni), agar CIPMUX=1 bo’lsa, bog’lanish ID si va baytlar soni ko’rsatiladi;
AT+CIFSR – lokal IP-manzilni olish;
AT+CIPSERVER – veb-serverni ishga tushirish;
AT+CIPSTART – TCP rejimida bog’lanish yoki UDP rejimida portni ko’rsatish;
AT+CIPCLOSE – TCP yoki UDP bog’lanishini yakunlash (uzilish);
AT+CIUPDATE – proshivkani tarmoq orqali yangilash.
va hokazo.
Quyida ayrim AT-buyruqlarning bajarilishini bevosita port monitoriga kiritish orqali ko’rib chiqamiz. Port monitorini ochamiz va AT-buyruqlar bilan ishlash uchun port tezligini 115200 bodga va xabarni yakunlash rejimini “NL & CR” ga o’tkazib olamiz. Agar proshivka to’g’ri yozilgan bo’lsa, mikrokontroller ishga tushirilganda port monitorida tushunarsiz yozuvlar (bu yozuvlar faqat 74480 tezligida to’g’ri ko’rsatiladi) va oxirgi qatorda “ready” yozuvi ko’rsatiladi. Shundan keyin quyidagi buyruqlarni ketma-ket kiritamiz va natijalarni kuzatamiz:
AT – modulni dastlabki tekshiruv (OK javobini kutamiz. Xatolik yuz bersa, port tezligi yoki rejimi noto’g’ri o’rnatilgan bo’lishi yoki mikrokontrollerga mos kelmagan proshivka yozilganligini bildiradi). “OK” yozuvi qaytarilishi kerak;
AT+CWMODE=1 – modulni stansiya (STA) rejimiga o’tkazish. “OK” yozuvi qaytarilishi kerak;
AT+CWJAP=”Ofis”,”12345678″ – ko’rsatilgan parametrlar (SSID va parol) asosida modulni tegishli kirish nuqtasiga yoki routerga bog’lash. Ulanish muvaffaqiyatli bo’lsa, modulga router tomonidan IP manzil ajratiladi va ulanish haqida hisobot beriladi, oxirida “OK” yozuvi qaytariladi;
AT+CIFSR – modulning IP-manzili va MAC-manzilini ko’rish. Oxirida “OK” yozuvi qaytarilishi kerak.

Quyidagi misolda esa, WiFi-modemga AT-buyruqlarni asosiy mikrokontroller uchun yaratiladigan sketch kodida ko’rsatib ketamiz. Buning uchun sketchda SoftwareSerial bibliotekasidan foydalanamiz.
Kerakli materiallar:
1) Arduino UNO (asosiy mikrokontroller) + USB-kabel + o’tkazgichlar to’plami;
2) ESP01 moduli (modem);
3) rezistorlar – 1 kOm (1 ta) va 2 kOm (1 ta).
Oxirgi 2 ta rezistorlar “kuchlanishni bo’lgich” rolini bajaradi. Natijada, Arduino UNO TX pinidan chiquvchi kuchlanish maksimal qiymati 5V dan 3,3V gacha pasayadi va ESP01 moduli RX pinining ishdan chiqish ehtimoli yo’qoladi.
Sxema:
