Bluetooth texnologiyasi haqidagi ayrim nazariy ma’lumotlar alohida darsda keltirilgan. Quyida Bluetooth texnologiyasidan foydalanuvchi Arduino qurilmalari sketchlarini yaratish bo’yicha sodda amaliy misollarni ko’rib chiqamiz.
Dastlab, alohida utilita yordamida Bluetooth moduli ishga tayyorligini aniqlab olamiz. Uning yordamida modulga port monitori orqali xizmatchi buyruqlarni (bundan keyin AT-buyruqlar deb yuritiladi) yuborib, qaytgan javoblar asosida modulning ishga tayyorligini aniqlashimiz mumkin. Bundan tashqari, uning yordamida modulning ayrim sozlamalarini o’zgartirishimiz ham mumkin.
Sketch:
Navbatdagi 1-4-misollarda Arduino platasiga ulangan alohida Bluetooth moduli bilan smartfondagi Bluetooth moduli o’rtasida, 5-7-misollarda ESP32 ichki bluetooth moduli bilan smartfon o’rtasida, 8-misolda esa, 2 ta Wemos D1 mini platalari o’rtasida aloqa o’rnatamiz. Shuningdek, barcha misollardagi sketchlarning ishga tushirilishi natijasini 2 xil variantdagi (tayyor universal mobil ilova va o’zimiz yaratadigan oddiy mobil ilova) lardan foydalangan holda ko’rib chiqamiz (tanlangan mikrokontroller yoki platalar tasodifiy yoki material tayyorlangan kunda muallifda mavjud bo’lganligiga bog’liq, ko’p hollarda ularni boshqasiga almashtirish mumkin).
Shuningdek, keltiriladigan misollarda Bluetooth texnologiyasining 2 ta turi – Bluetooth Classic hamda BLE turlari qo’llanilgan. Shu bilan birga, mazkur misollar uchun yaratiladigan mobil ilovalar ham mos ravishda Classic yoki BLE texnologiyasini qo’llab-quvvatlashi zarur. BLE texnologiyasi qo’llanilgan misollarda tayyor universal ilova sifatida Kai-Morich muallifligidagi “Serial Bluetooth terminal” mobil ilovasidan foydalanamiz. Uni Google Playdan yuklab olish mumkin.
Biz ko’rib chiqadigan misollarning ayrimlarida Arduino qurilmasi sketchini har ikki turdagi Bluetooth modullari uchun umumiy qo’llash mumkin bo’lsa-da, ularni boshqaruvchi mobil ilovalar Bluetooth Classic va BLE uchun alohida yaratilishi zarur.
1-misol. Dastlab, bibliotekalardan foydalanmagan holda, Arduino UNO platasi “A0” piniga ulangan analog datchik ko’rsatkichlarini ma’lum davriylikda plataning TX va RX pinlari orqali ulangan alohida Bluetooth moduli (uzatkich, “emitter”) yordamida smartfon (qabul qilgich, “receiver”) ga yuboramiz hamda ularni mobil ilovada kuzatamiz. Shuningdek, ilovadan yuborilgan buyruq yordamida Arduino platasidagi ichki svetyodiodni boshqaramiz.
Shundan keyin smartfonning ichki Bluetooth moduli yordamida Arduinoga ulangan “MLT BT-05” (HC-05 modulining analogi) Bluetooth moduliga bog’lanamiz. Natijada ma’lum bir davriylikda plataga ulangan termistor ko’rsatkichlari (0…1023) mobil ilovaga yuborila boshlaydi (sketchga alohida darsdagi sketchdan foydalanib ayrim qo’shimchalarni kiritish orqali, mobil ilovaga termistor ko’rsatkichlari o’rniga havo harorati qiymatini yuborish mumkin).
Ushbu misolda Bluetooth moduli bevosita Arduino platasining TX va RX pinlariga (ketma-ket portga) ulanadi. Mobil ilova bilan o’zaro aloqa “Serial” obyekti yordamida amalga oshiriladi.
Diqqat!
1) Sketchda Arduino platasining TX va RX pinlaridan foydalanilishi ko’zda tutilganligi va ushbu pinlar USB-porti orqali kompyuterga ulanishi sababli, sketchni plataga yuklash paytida ushbu pinlardan Bluetooth modulini vaqtincha uzib turish kerak bo’ladi! Aks holda, Bluetooth moduli sketchning plataga yuklanishiga xalaqit beradi.
2) Ketma-ket port orqali ma’lumot xatosiz almashinishi uchun port monitorida (yoki boshqa terminalda) “NL & CR” rejimini o’rnatish zarur!
Kerakli materiallar:
1) Arduino UNO, maket platasi, USB-kabel, o’tkazgichlar;
2) HC-05 Bluetooth moduli (yoki analogi);
3) termistor;
4) rezistor 10 kOm.
Bog’lanish sxemasi:

Sketch:
2-misol. Yuqoridagi sketchni Arduino platasining TX va RX pinlari o’rniga boshqa ixtiyoriy raqamli pinlardan foydalanish mumkin bo’lgan ko’rinishga o’tkazish ham mumkin. Buning uchun, Arduinoning “SoftwareSerial” ichki bibliotekasidan foydalaniladi, Bluetooth orqali ma’lumot almashinish uchun dasturiy ketma-ket port (software serial port) obyektidan foydalaniladi. “Serial” obyektidan esa, faqat port monitoriga ma’lumotlarning nusxasini chiqarish uchun foydalanish mimkin bo’ladi. Quyidagi sketchda Arduino platasining TX va RX pinlari o’rniga 2- va 3-raqamli pinlaridan foydalaniladi.
Sxema o’zgarmaydi.
Sketch:
1- va 2-misollar natijasi.
1-variant (universal mobil ilova qo’llaniladi):
Navbatdagi 3-4-misollarda yuqoridagi misollarni mobil ilovadan yuborilgan maxsus buyruq kodlari orqali Arduino platasi ichki svetodiodini o’chirib-yoqishga moslashtiramiz.
Kerakli materiallar:
1) Arduino UNO, maket platasi, USB-kabel, o’tkazgichlar;
2) HC-05 Bluetooth moduli (yoki analogi);
Sxema:

3-misol. Bibliotekadan foydalanilmaydigan variant.
Sketch:
4-misol. “SoftwareSerial” bibliotekasidan foydalanilgan variant (sxema o’zgarmaydi).
Sketch:
3- va 4-misollar natijasi.
1-variant (universal mobil ilova qo’llaniladi):
2-variant (o’zimiz yaratgan mobil ilova qo’llaniladi):
Yuqoridagi sketchlarni birlashtirib, yagona ilova yordamida boshqariladigan umumlashgan sketchga aylantirish mumkin.
Kerakli materiallar:
1) Arduino UNO, maket platasi, USB-kabel, o’tkazgichlar;
2) HC-05 Bluetooth moduli (yoki analogi);
3) termistor;
4) rezistor 10 kOm.
Sxema:

1-variant (universal mobil ilova qo’llaniladi):
5-misol. Ushbu misolda ESP32 platasining ichki bluetooth modulidan foydalangan holda plataga ulangan termodatchik ko’rsatkichlarini smartfonga yuborish jarayonini ko’rib chiqamiz. ESP32 platasining ichki bluetooth modulidan foydalanish uchun mazkur platalar uchun yaratilgan maxsus “BluetoothSerial.h” bibliotekasidan foydalanamiz.
Sketch:
6-misol. Ushbu misolda smartfon yordamida plataga ulangan svetodiodni boshqarish jarayonini ko’rib chiqamiz.
Sketch:
7-misol. Ushbu variantda ESP32 platasidagi ichki Bluetooth modulining BLE rejimidan foydalangan holda plataga ulangan termistor ko’rsatkichlarini smartfonga yuborish va unga ulangan svetodiodni universal mobil ilova yordamida boshqarish, shuningdek, ESP32 modulidan “mayoq” sifatida foydalanish, maxsus mobil ilova yordamida esa, BLE rejimida ishlaydigan shu va boshqa “mayoq”larni izlash, ularning signali quvvatini aniqlash, ulargacha bo’lgan taxminiy masofani aniqlash jarayonlarini ko’rib chiqamiz.
Svetodiodni yoqish uchun mobil ilovadan “1” yoki “on” yozuvini, o’chirish uchun esa, “0” yoki “off” yozuvini yuboriladi. Termistor ko’rsatkichlari mobil ilovada har 2 sekundda avtomatik ravishda yangilanib turiladi. Kelgusida sketchga o’zgartirish kiritib, termistor ko’rsatkichlari o’rniga haroratni yuborishga moslashtirish mumkin bo’ladi.
Datchik ko’rsatkichlarini kuzatish yoki svetodioni boshqarish uchun “Serial Bluetooth Terminal” universal mobil ilovasidan foydalanish mumkin, lekin unda “mayoq”ni izlash imkoniyati yo’q. Shuning uchun “mayoq”ni izllash uchun “BLE scanner” (muallif: bluepixel technologies) ilovasidan foydalanamiz.
Kerakli materiallar:
1) ESP32 platasi (“server” rolida), USB-kabel, o’tkazgichlar;
2) svetodiod;
3) termistor (R2);
4) rezistorlar 10 kOm (R1), 220 Om (R3).
Sxema:

Sketch (iBeacon), o’zgartirilgan va takomillashtirilgan holda:
1-video. “Serial Bluetooth Terminal” universal mobil ilovasi orqali kuzatish va boshqarish:
(Materialning ushbu qismi to’ldirish jarayonida)
8-misol. Ushbu variantda 2 ta Wemos D1 mini platalari o’rtasida ularning tashqi Bluetooth modullari orqali o’zaro bog’lanish o’rnatamiz hamda ularning biridan yuborilgan ma’lumotni ikkinchisi yordamida qabul qilish va biridagi ichki svetodiodni ikkinchisidan boshqarish jarayonini ko’rib chiqamiz. Demak, ushbu misolda 1-modul uzatkich, 2-modul qabul qilgich vazifasini bajaradi. Qulaylik uchun, bog’lanish natijalarini port monitori orqali kuzatamiz (smartfondan foydalanmaymiz).
Boshqaruvchi (“Master”, boshqaruv pulti) va Ijrochi (“Slave”, boshqarish obyekti) vazifasini Wemos D1 mini platalari bajaradi. Ma’lumki, Bluetooth orqali bog’lanish uchun modullardan biri mijoz, ikkinchisi server vazifasini bajarishi kerak (mijoz rolidagi modul server rolidagi modulga bog’lanadi, aksincha tartibda bog’lanib bo’lmaydi). Lekin, bog’lanish amalga oshirilganidan keyin, platalarning har ikkisi ham ma’lumot yuborishi yoki qabul qilishi mumkin bo’ladi.
Ijrochi plataning “A0” piniga ulangan analog datchik (termistor) ko’rsatkichlarini ma’lum davriylikda Boshqaruvchiga yuboramiz, Boshqaruvchiga ulangan tugma yordamida esa, Ijrochidagi ichki svetodiodni boshqaramiz.
Kerakli materiallar:
1) 2 ta Wemos D1 mini platasi (“Master” va “Slave” rollarida), USB-kabel;
2) HC-05 Bluetooth moduli (yoki uning kloni) – 2 ta;
3) tugma;
4) termistor;
5) rezistor 10 kOm.
Bog’lanish sxemasi:

Sketch: