ARDUINO O’ZI NIMA?
Ilgari ta’riflanganidek, Arduino – mustaqil ravishda elektron qurilmalarni yoki ularning prototip va maketlarini yaratishga mo’ljallangan platforma. U o’z ichiga plata (jismoniy vosita, hardware – Atmega mikrokontrolleri asosidagi modul-konstruktor, tajriba olib borish platasi, “плата отладки”) va dasturiy (software) vositalar majmuasini oladi. Mikrokontrollerlarni dasturlashga mo’ljallangan vositalar ko’p uchraydi, biroq Arduino hozirga qadar ularning ichida eng osoni va qulayi hisoblanadi (Arduino tarixi haqida).
Arduino – rasman mikrosxemalar va dasturlar ishlab chiqaruvchi savdo belgisi hisoblanadi. U Italiyaning shu nomli ovqatlanish maskani nomidan olingan.

Arduino platalari oilasi – yagona dasturiy muhit yordamida dasturlshga mo’ljallangan, AVR hamda ARM Cortex mikrokontrollerlari asosida ishlab chiqarilgan platalar guruhi. AVR mikrokontrollerlari quyi darajadagi Arduino (UNO, Nano, Mega, Leonardo) platalarida ishlatiladi. Yuqori darajadagi Arduino platalarida esa, zamonaviy ARM Cortex mikrokontrollerlari qo’llaniladi. Arduinoni qo’llab-quvvatlovchi boshqa platalardan, yagona Arduino IDE dasturlash platformasida dasturlashga moslashtirilgan AVR mikrokontrollerlarining dastlabki vakillari hisoblanadi. Arduinoni qo’llab-quvvatlovchi platalar oilalari deganda, AVR dan boshqa ishlab chiqaruvchilar tomonidan yaratilgan, lekin Arduino IDE platformasida dasturlanishi mumkin bo’lgan boshqa platalar oilalari tushuniladi (masalan, ESP, STM, Raspberry platalari).
Arduino IDE – “C++” va uning soddalashtirilgan ko’rinishi – “Wiring” dasturlash tillari asosida ishlab chiqilgan, AVR mikrokontrollerlarini qulay boshqarish (dasturlash, kompilyatsiya qilish, proshivka qilish) maqsadida yaratilgan dasturiy platforma hisoblanadi. Odatda mikrokontrollerlar ayrim jihatlari bilan bir-biridan farq qilsa-da, ushbu platformada ularning biri uchun yaratilgan dasturlar (skechlar) deyarli o’zgarishlarsiz qolganlarida ham ishlatilishi mumkin (AVR dan boshqa mikrokontrollerni boshqarish uchun qo’shimcha dasturiy ta’minot talab etilishi mumkin, shuningdek AVR mikrokontrollerlari uchun yaratilgan ayrim loyihalarni boshqa mikrokontrollerlarda, yoki aksincha tartibda qo’llash uchun tegishli bibliotekalar talab etilishi mumkin).
Arduino bibliotekalari – bevosita Arduino IDE platformasi tarkibiga kiruvchi yoki foydalanuvchilar tomonidan alohida fayllar to’plami ko’rinishida yaratilgan, kelgusida barcha dasturchilar erkin foydalanishi mumkin bo’lgan dasturiy yechimlar hisoblanadi. Ularda odatda, ko’pchilik takrorlaydigan dasturiy bloklar yoki har bir ishlab chiqarilgan sinov-dasturlash platasi yoki mmoduli, sensor (datchik) yoki tayyor modullar uchun ularning drayveri vazifasini bajarib beruvchi tashqi dasturlar ko’rinishida yaratiladi. Natijada, boshqa foydalanuvchilar ulardan o’z loyihalarida xuddi alohida funksiyadek, oson foydalanishlari mumkin.
Arduino bibliotekalarning soni mingtadan oshib ketgan va ularning yangilarini yaratish uzluksiz davom etmoqda. Bir xil modulni boshqarishga yo’naltirilgan yoki deyarli bir xil vazifani bajaradigan o’xshash bibliotekalar ham ko’p uchraydi, biroq ular albatta qaysidir xususiyati yoki afzalligi bilan bir-biridan farq qilb turadi. Turli sensor, modul va boshqa raqamli qurilma uchun unga tegishli bibliotekani odatda (uning nomlanishi bo’yicha) Internet tarmog’idan izlab topish mumkin.
ARDUINO JISMONIY (HARDWARE) VOSILATALARI
Arduino ochiq platforma bo’lganligi sababli, turli ishlab chiqaruvchilar tomonidan uni qo’llab-quvvatlovchi (Arduino IDE ga moslashtirilgan) mikrokontroller modellarining soni ham ortishda davom etmoqda. Masalan, ESP8266, ESP32, Raspberry PI va STM32 platalar oilalari shular jumlasidan. Ular bir-biridan tashqi hajmi, flesh xotirasi hajmi, tezligi, analog va raqamli pinlar soni va boshqa xususiyatlariga ko’ra farq qiladi. Bu platalar alohida dasturlash vositalariga ega, lekin Arduino IDE da dasturlash ular bilan ishlashni yanada osonlashtiradi.

Arduinoni qo’llab-quvvatlovchi platalar
Har qanday Arduino platasi o’z ichiga quyidagilarni oladi: mikrokontroller (UNO, Nano, Mega, Leonardo va hokazo), uning stabil ishlashini ta’minlashga mo’ljallangan funksional bloklar (ichki ta’minot bloki, stabilizator, tashqi ta’minot bloki portlari), mikrokontroller kiritish-chiqarish portlari (kontaktlari), faollik indikatorlari. Shuningdek, ko’pgina platalar o’z ichiga USB-UART porti hamda programmatorlarni ham oladi (hamma platalar emas). Bunday qo’shimcha imkoniyatlar mikrokontrollerlarni dasturlash jarayonini osonlashtirish va tezlashtirish imkonini beradi. Asosan, o’quv va o’rganish maqsadlarida qo’llaniladigan bunday platalarda lehimlash (payka qilish) talab etilmaydi. Buning o’rniga, ularga barcha tashqi elektron komponentlar maxsus maket platalari, o’tkazgichlar yordamida bog’lanadi. Maket platalari o’z navbatida bo’lajak loyiha platasining dastlabki nusxasi (prototipini) yaratish va sinovdan o’tkazish imkonini beradi. Sinovlar muvaffaqiyatli o’tkazilgandan keyingina, elektron komponentlar bosma platalarga lehimlanishi va kerakli nushada ko’paytirilishi mumkin.
Arduinoni qo’llab-quvvatlovchi mikrokontrollerlar
Mikrokontroller integral mikrosxemalarning bir turi sifatida qurilmadagi kiritish/chiqarish jarayonlarini umumiy nazorat qiluvchi va uni boshqaruvchi eng muhim element ekanligini tushunish mumkin (Bu jihatdan mikrokontroller kompyuterning tizimli bloki yoki ona platasiga – “материнская плата”ga qiyoslash mumkin). Demak, Arduino platasi asosidagi biron qurilmani yaratish uchun, undagi mikrokontrollerning har bir funksional qismlari, uning kiritish-chiqarish portlari (PIN lari) haqida ma’lumotga ega bo’lish muhim hisoblanadi.

Mikrokontrollerning asosiy funksional qismlari (bloklari):
- yadro (protsessor) – mikrokontrollerdagi barcha funksional bloklarni o’zaro bog’lash va boshqarish vazifasini bajaradi. Uni kompyuter tizimli blokidagi protsessorga qiyoslash mumkin.
- flesh xotira (proshivkani saqlovchi xotira) – ma’lumotlar maxsus programmatorlar yordamida yuklanadigan va elektr ta’minoti uzilganda ham saqlanib qoladigan xotira turi. Uni kompyuterning qattiq diskiga (HDD, SSD larga) qiyoslash mumkin.
- SRAM (tezkor xotira) – ma’lumotlarni o’zida vaqtincha saqlab, elektr ta’minoti uzilishi bilan tozalanadigan xotira. Kompyuterning tezkor xotirasi (RAM)ga qiyoslash mumkin.
- EEPROM (Electrically Erasable Programmable Read-Only Memory) – dastur sozlamalarini saqlash mumkin bo’lgan va foydalanuvchi tomonidan boshqariladigan xotira turi. Ushbu xotira turi ham flesh-xotiraga o’xshab ketadi, chunki unga saqlangan yozuvlar ham mikrokontroller qayta yuklanganda o’chib ketmaydi. Biroq, EEPROM ning flesh-xotiradan farqli jihati shuki, flesh-xotirada odatda faqat proshivka saqlansa, EEPROM da foydalanuvchi o’zining Arduino qurilmasiga tegishli turli sozlamalarni skecth yordamida saqlashi mumkin. EEPROM xotira bilan ishlash uchun Arduinoda maxsus EEPROM.h ichki bibliotekasidan foydalaniladi. ESP mikrokontrollerlarida EEPROM-xotira uchun ham flesh-xotiraning bir qismi ajratiladi (emulyatsiya qilinadi). EEPROM-xotira hajmi taniqli mikrokontrollerlarda odatda 0,5-4 kBayt oralig’ida bo’ladi. Ayrim mayda mikrokontrollerlar umuman ichki EEPROM-xotiraga ega bo’lmaydi (masalan, ESP01 modulidagi mikrokontroller), lekin bunday vazifani platadagi alohida xotira mikrosxemasi bajaradi. EEPROM-xotira kataklari aniq manzillarga ega, shuning uchun yozuvlarni saqlashda ularni aniq ko’rsatish kerak bo’ladi.
- Taymer – mikrokontroller ichki generatoridan yoki tashqi interfeysdan yuborilayotgan impulslarning sonini hisoblovchi blok. Vaqtni nanosekundlar aniqligida o’lchash, PWM signallarini generatsiyalash vazifalarini ham bajaradi.
- Watchdog – mikrokontrollerni uyqu holatidan chiqarish yoki osilib (qotib) qolganda qayta yuklash vazifasini bajaruvchi blok.
- GPIO (General Purpose Input-Output) – umumiy maqsadlar uchun mo’ljallangan kirish/chiqish portlari (pinlari). Protsessor ushbu portlarga kiruvchi signal qiymatini o’lchash yoki signalni tashqi interfeysga chiqarish vazifasini bajaradi. Bunday portlar kontaktlarini raqamli pinlar deb ataladi. Raqamli pinlar bir vaqtning o’zida kirish (INPUT, INPUT_PULLUP) yoki chiqish (OUTPUT) ishchi rejimlaridan birida bo’la oladi (sukunat bo’yicha, dastlab hamma raqamli pinlar kirish rejimida bo’ladi). Qoida bo’yicha raqamli pinlarda bir vaqtning o’zida faqat yuqori (HIGH) yoki quyi (LOW) signal holatlaridan birida bo’lishi kerak. Chiqish rejimidagi pinlarda ko’p holatlarda shunday bo’ladi ham. Biroq raqamli pin kirish rejimida bo’lganda, uning aniq qiymati kiruvchi signalning qiymatiga bog’liq bo’ladi. Gap shundaki, kirish rejimida raqamli pin faqat kiruvchi raqamli signalning qiymatini o’lchash uchun qo’llaniladi: agar raqamli pindagi kiruvchi kuchlanish darajasi mikrokontroller ishchi kuchlanishining yarmidan ortib ketsa (taxminan +2.6…+5V) – pindagi signalning qiymati HIGH ga, aksincha (0…+2.5V) bo’lsa – signalning qiymati LOW ga teng, deb qabul qilinadi. Masalan, raqamli pinga bironta raqamli datchik ulangan bo’lsa, pindagi signalning kuchlanishi ulangan datchikning chiqish signali darajasi bilan belgilanadi va odatda yuqoridagi HIGH yoki LOW qiymatlardan birini qabul qiladi. Lekin, agar raqamli pinga hech qanday datchik ulanmagan bo’lsa, undagi kuchlanish darajasi mavhum (o’zgaruvchan) holda bo’lishi mumkin va uning qiymatiga har qanday elektromagnit maydon ham ta’sir o’tkazishi mumkin. Shuning uchun, ba’zida raqamli pinga dastur yordamida kirish rejimining yana bir maxsus turi – INPUT_PULLUP (musbat qutbga tortilgan “kirish”) rejimi o’rnatilishi mumkin (ushbu rejim haqida boshqa darsda batafsil ma’lumot berilgan).
- ADC (Analog-Digital Converter, Analog-raqamli Konverteri, “Аналого-Цифровой Преобразователь”, “АЦП”) – yuborilgan signal kuchlanishini, analog signal darajasini o’lchash va uni raqamlashtirish bloki. Bunday imkoniyatga ega bo’lgan pinlar analog pinlar deb ataladi.
- DAC (Digital-Analog Converter, Raqamli-Analog Konverteri, “Цифро-Аналоговый Преобразователь”, “ЦАП”) – raqamli signalni dasturiy “analoglash” (ma’lum darajadagi elektr kuchlanishiga aylantirish) vazifasini bajaradi. Aslida raqamli signalni hech qachon to’g’ridan-tog’ri haqiqiy analog signalga aylantirib bo’lmaydi, lekin mikrokontroller yordamida raqamli signalning kuchlanishini imkon darajasida silliq ravishda o’zgartirish orqali, uning shaklini analog signalga o’xshash holga keltirish mumkin.
Mikrokontrollerdan bog’lanish interfeyslari.
Bog’lanish interfeyslari tashqi qurilmalar bilan bog’lanish uchun ishlatiladi (datchik signali qiymatini qabul qilish, ma’lumotlarni aloqa kanallari orqali uzatish). Shunday vazifalarni GPIO bloki yordamida ham bajarish mumkin, biroq bunda protsessorga ortiqcha yuklama tushadi. Lekin ayrim bog’lanish interfeyslari alohida realizatsiya qilingan va ushbu jarayonlarni mustaqil amalga oshirishi va tayyor natijalarni mikrokontroller yadrosi bilan almashinishi mumkin. Eng ko’p qo’llaniladigan bog’lanish interfeyslari:
- UART (Univsersal Asynchronos Reciever-Transmitter – Universal Asinxron Qabul Qilgich-Uzatgich) – boshqa qurilmalar bilan 2 ta o’tkazgich orqali ma’lum bir tezlikda bog’lanish vositasi (Arduinoda Serial obyekti), bitta o’tkazgich (port) orqali ma’lumot uzatadi, ikkinchisi orqali qabul qiladi. Pin nomlari: RX (receive) – qabul qiluvchi, TX (transmit) – yuboruvchi. USB porti, WiFi, Bluetooth, GSM va boshqa bog’lanish kanallari yordamida ma’lumot ayirboshlashda ma’lumotlar mikrokontrollerdan aynan TX va RX pinlari orqali yuboriladi va qabul qilinadi. Mikrokontrollerga tayyor sketchni yuklashda aynan shu interfeysdan foydalanilgani uchun, ko’pincha ushbu pinlardan dastur kodida boshqa maqsadlarda foydalanmaslikka harakat qilish kerak;
- I2C – manzilli shina, atigi ikkita o’tkazgich orqali 128 tagacha qurilmalarni mikrokontrollerga bir vaqtda bog’lash imkoniyatiga ega. Bunda har bir qurilma o’zining mustaqil adresiga ega bo’ladi. Pin nomlari: SDA (Serial DAta) – ma’lumotlar liniyasi; SCL (Serial CLock) – sinxronlash liniyasi. Ayrim datchiklar, displey modullari shu shina orqali ishlashga mo’ljallangan;
- SPI (Serial Peripheral Interface) – ma’lumotlarni ketma-ket uzatishning sinxron protokoli. Bir vaqtda bir yoki bir necha tashqi qurilmalar bilan ishlash uchun mo’ljallangan, eng tezkor interfeys (lekin faqat yaqin masofada yuborish/qabul qilish imkoniyatiga ega). Pin nomlari: MOSI (Master Output Slave Input) – ma’lumotlarni mikrokontrollerdan tashqi mikrosxemaga uzatish pini, MISO (Master Input Slave Output) – ma’lumotlarni tashqi mikrosxemadan mikrokontrollerga qabul qilish pini, SCLK (Serial CLocK) – sinxronlash pini;
- I2S (Inter-IC Sound) – raqamli audio signal almashinuvi maxsus interfeysi.
- IRDA (IR_RX, IR_TX) – infraqizil nur kodli signallarini kiritish/chiqarish pinlari (ESP platalarida uchraydi).
ARDUINO (AVR) OILASI PLATALARI
Ma’lumki mikrokontroller – bu mikrosxemaning bir turi xolos. Shuning uchun uni ishga tushirish, stabillashtirilgan elektr toki bilan ta’minlash, tashqi qurilmalar bilan ishlashini osonlashtirish, ishini nazorat qilish, unga dasturni yuklash va boshqa vazifalarni qisman yoki to’liq bajaruvchi maxsus platalar yaratilgan bo’lib, ularda har bir foydalanuvchi uchun kerak bo’ladigan elektron komponentlar oldindan o’rnatilgan. Arduino platalari aynan shunday platalar hisoblanadi.
Bundan tashqari, Arduino platalaridagi mikrokontroller uchun dasturlar yaratish va yuklash uchun qulay, integrallashgan universal dasturiy ta’minot (Arduino IDE) ham ishlab chiqilganligi ularga bo’lgan qiziqishni keskin oshiradi. Natijada ortiqcha vaqt yoki dasturlash bo’yicha yuqori malakaga ega bo’lmasdan turib ham turli xil qurilmalarni yaratish imkoniyati yaratiladi.
Yuqorida mikrokontroller interfeyslari va pinlari uchun keltirilgan ma’lumotlar bir vaqtning o’zida u o’rnatilgan plataga ham tegishli, chunki barcha interfeys va pinlar o’tkazgichlar orqali Arduino platalarining chetki qismlaridagi kiritish/chiqarish portlariga bog’langan. Bundan tashqari, Arduino platalarida qayta yuklash (reset) tugmasi, USB port, svetodiodlar, ichki ta’minot bloki chiqish kontaktlari, tashqi ta’minot blokiga zarurat tug’ilganda uni ulash uchun mo’ljallangan kontaktlar va umumfoydalanish uchun bo’lgan analog yoki raqamli kiritish/chiqarish kontaktlari ham oldindan mavjud.
Quyida amaliyotda eng ko’p qo’llanilayotgan Arduinoni qo’llab-quvvatlovchi platalari oilalalari va ulardan ayrimlarining tashqi ko’rinishi bilan tanishasiz (Bunda Internet tarmog’idagi rus yoki ingliz tilidagi ochiq ma’lumotlardan ham foydalanilgan). Quyida darslar jarayonlarida tez-tez qo’llaniladigan platalarga ko’proq to’xtalamiz.
Arduino (AVR) oilasi platalari xarakteristikalari:

Arduino UNO
UNO – ATmega328 mikrokontrolleri asosidagi, universal vazifalarni bajarishga mo’ljallangan, havaskorlar o’rtasida eng ko’p foydalaniladigan tajriba o’tkazish platasi (“Отладочная плата”). Asosiy mikrokontrollerning SMD va DIP korpuslaridan kelib chiqib, bir-biridan asosan narxi bilan farq qiladi. DIP korpusli plataning afzalligi shundaki, undagi mikrokontrollerni dasturlab bo’lgach, uni maxsus uyasidan sug’urib olib, bosma plataga o’rnatib foydalanish, plataga esa yana yangisini o’rnatish imkoniyati mavjud.
Yuqoridagi jadvaldan ko’rish mumkinki, UNO platasida jami 14 ta (0 … 13) raqamli kirish/chiqish va 6 ta analog kirish (A0 … A5) pinlari mavjud. Shulardan ayrim raqamli pinlar alohida xususiyatlarga ham ega: 0 va 1-pinlar – RX va TX pinlari, 3, 5, 6, 9, 10, 11 – PWM pinlari (ushbu tushunchalar yuqorida izohlangan).
Bundan tashqari unda 3 ta GND (0V), 2 ta +5V (stabilizator 1-chiqishi), 1 ta +3,3V (stabilizator 2-chiqishi), 1 ta Vin (+5-12V stabilizator kirishi), RES (qayta yuklash), AREF (Analog Reference – tashqi stabillashgan etalon kuchlanish uchun kirish pini), SDA, SCL (SDA, SCL pinlari xususiyatlari yuqorida izohlangan) pinlari, 1 ta USB mini porti, DC in (o’zgarmas kuchlanishli ta’minot bloki), Reset knopkasi, TX va RX ichki indikator-svetodiodlari, 1 ta ichki dasturiy svetodiod (foydalanuvchi boshqarishi mumkin, raqamli 13-pinga parallel ulangan), +5V va +3,3V ichki stabilizatorlari, UART (yuqorida izohlangan), ichki programmator ham mavjud. UNO boshqa platalardan pinlar soni va boshqa xususiyatlari bilan farq qiladi.

Havola: Qo’shimcha ma’lumotlar.
Arduino Mega

Mega – Arduino platalarining eng ko’p pinlar soniga va yuqori quvvatga hamda imkoniyatlarga ega bo’lgan turi hisoblanadi. Unda ATmega2560 mikrokontrolleri o’rnatilgan bo’lib, 54 ta raqamli va 16 ta analog pinlardan iborat.
Arduino Due
Due – ko’rinishi va xarakteristikalari bo’yicha Mega bilan o’xshash, ba’zi jihatlari bo’yicha esa, undan ham kuchliroq bo’lgan (yuqoridagi jadvalga qarang), Cortex-M3 mikrokontrolleri asosidagi plata.
Arduino Leonardo
Leonardo – Arduino UNOning boshqa mikrokontroller asosidagi, nisbatan yuqori xarakteristikalarga ega bo’lgan yana bir ko’rinishi. Qiziqarli xususiyati – kompyuterga ulanganda klaviatura yoki sichqoncha qurilmasi (HID-qurilma) sifatida qabul qilinishi mumkin.
Arduino Nano

Nano – kamroq quvvat sarf qilishga yo’naltirilgan, Arduino UNOning ixchamlashtirilgan ko’rinishi hisoblanadi. Shuning uchun aksariyat xususiyatlari UNO bilan bir xil. Pinlar soni, ichki programmatori mavjudligi bo’yicha ushbu platalar oilasining optimal vakili deb hisoblash mumkin.



Arduino Mini
Mini – UNO ning yana bir ixchamlashtirilgan ko’rinishi, biroq yuqoridagi Nano, Mega, UNO platalaridan ichki programmatorga ega emasligi bilan farq qiladi. Ya’ni, tayyor dastur (sketch)ni ushbu plataga yuklash uchun maxsus programmator (yoki ichki programmatori mavjud bo’lgan boshqa plata, masalan, yuqoridagi platalardan biri programmator rolida) talab etiladi.
Arduino Pro Mini
Pro Mini – Nanoning yana bir ko’rinishi, biroq u ham yuqoridagi Mini platasi kabi ichki programmatorga ega emas.
Arduino Micro
Micro – Arduino Leonardoning ixcham ko’rinishi hisoblanadi. Farqli jihati – kichik hajmi tufayli, tashqi ta’minot bloki uchun alohida uyaga ega emasligi (ya’ni, elektr ta’minoti faqat USB porti orqali). Biroq Leonardoning boshqa muhim xususiyatlari, jumladan HID-qurilma sifatidagi xususiyati saqlab qolingan.
Arduino LilyPad

LilyPad – Arduino platalari ichida qiziqarli tashqi ko’rinishi bilan ajralib turadigan, doira shakliga ega bo’lgan plata. Hajmi juda kichikligi uni maxsus mikrohajmli qurilmalarni yaratishda qo’llash imkonini beradi, biroq aynan hajmi tufayli uning ko’plab imkoniyatlari ham cheklangan.
ARDUINONI QO’LLAB-QUVVATLOVCHI PLATA VA MODULLAR
ESP (ESP8266, ESP32) oilasi platalari
Ilgari ma’lum qilinganidek, asosan AVR mikrokontrollerlari asosidagi platalarini dasturlash uchun mo’ljallangan Arduino IDE dasturidan, boshqa bir qator ishlab chiqaruvchilarning ayrim platalarini dasturlash uchun ham foydalanish mumkin. Chunki ushbu ishlab chiqaruvchilar o’z platalarini Arduinoga moslashuvchan holda ishlab chiqarishadi. Shunday platalar oilasidan biri – Expressif Systems kompaniyasining ESP8266 va uning zamonaviy analogi ESP32 oilasi platalari hisoblanadi.
ESP8266 platalari o’z tarkibida ichki WiFi modullari mavjudligi bilan, ESP32 platalari esa, bir vaqtning o’zida ichki WiFi va Bluetooth modullari (Classic yoki BLE rejimlarida ishlay oladi) mavjudligi bilan Arduino platalaridan ajralib turadi. ESP8266 platalarining muhim kamchiligi esa, umumiy maqsadlarda qo’llaniladigan (raqamli va analog) pinlar soni kamligi hisoblanadi. Bu kamchiliklar ESP32 platalarida bartaraf etilgan.
ESP oilasi platalari bilan Arduino IDE da ishlash uchun, dastlab uning sozlamalari (“Файл/Настройки” menyusi “Настройки” bo’limi) asosiy (“Настройки”) oynasida “Дополнительные ссылки для Менеджера плат” matn maydonidagi ro’yxatga tegishli havolani kiritib qo’yish zarur. Ro’yxatga yangi platalar oilasini qo’shish uchun, ushbu matn maydoni ro’parasidagi tugmani bosib, yangi qatorga yangi platalar oilasi (ESP8266, ESP32) rasmiy havolasini qo’shib qo’yish zarur.
Keyingi bosqichda, platalar oilasiga tegishli drayverlar va asosiy bibliotekalarni yuklab olish hamda o’rnatish uchun “Инструменты\Плата” menyusidagi “Менеджер плат…” bo’limiga o’tib, tegishli dialog oynasida kerakli platalar olilasini (“ESP8266”, “ESP32”) tanlash va dasturiy ta’minotning kerakli versiyasini o’rnatish zarur bo’ladi.
Odatda, yangi platalar oilasi yuqoridagi ro’yxatga qo’shilganidan so’ng, “Инструменты\Плата” menyusida tegishli platalar nomlarini o’z ichiga olgan yangi ichki menyular (“ESP8266 boards…”, “ESP32 Arduino”) paydo bo’ladi. Bundan tashqari, “Инструменты” menyusidagi “Менеджер библиотек” ro’yxatida yangi qo’shilgan platalarga tegishli qo’shimcha bibliotekalar nomlari ham paydo bo’ladi. Zaruratga qarab, ular alohida o’rnatiladi (asosiy bibliotekalar platani o’rnatish paytida o’rnatiladi). Shuningdek, tegishli plata tanlanganidan so’ng, “Файл\Примеры” menyusida yangi plata bilan ishlashga doir yangi namunaviy sketchlarni o’z ichiga oluvchi bo’limlar ham paydo bo’ladi.

ESP8266 platalar oilasi tashqi hajmi va imkoniyatlariga ko’ra, 10 tadan ortiq variantda ishlab chiqariladigan platalardan tashkil topgan. U 1 ta analog kirish (A0), 9 ta (D0…D8) raqamli pinlardan va yana bir nechta xizmatchi pinlardan iborat.
Ulardan faqat bir nechtasi sotuvda kichik modullar sifatida ko’p tarqalgan: ESP-01, ESP-01S, ESP-07, ESP-12E, ESP-12F. Ushbu modullarni dasturlash uchun alohida programmator talab etiladi.
ESP-01 (va ESP-01S) modullari uchun maxsus rele moduli ham ishlab chiqarilgan bo’lib, ularni birgalikda qo’llash rele orqali yuqori 220V o’zgaruvchan kuchlanishga mo’ljallangan va tok kuchi 10A gacha bo’lgan yuklamalarni to’g’ridan to’g’ri boshqarish imkonini beradi. Chunki rele modulida ESP-01 ni o’rnatish uchun mo’ljallangan port (uya, “razyom”) va +3,3V kuchlanishli ichki stabilizator oldindan mavjud. ESP-01 moduli rele moduli portiga joylashtirilganda, elektromagnit relening signal kirish kontaktlari uya orqali ESP-01 ning GPIO0 kontaktiga bog’lanadi.

ESP-01 moduliga sketchni ko’chirish (proshivka qilish uchun) maxsus programmatordan foydalanish mumkin. Bunda, modulga sketchni yuklash (boot) rejimini faollashtirish uchun programmator chiqish portidagi “IO0” (0, GPIO0) va “GND” yozuvli kontaktlarini qisqa muddatga tutashtirish kerak bo’ladi. Sketch yuklab bo’linganidan keyin, dasturni ishga tushirish uchun esa, “RST” va “GND” yozuvli kontaktlar qisqa muddatga tutashtiriladi.

Tarkibida ichki programmator mavjud bo’lgan platalardan – Wemos D1 Mini, Node MCU v2 (ESP-12E va ESP-12F modullari asosida) platalari eng ko’p tarqalgan. Biz darslar davomida qulaylik uchun asosan Wemos D1 mini platasidan foydalanamiz.

Bundan tashqari, ESP-12F moduli uchun ham bir yoki bir necha kanalli maxsus rele modullari uchraydi. Ularda ESP-12F moduli oldindan o’rnatib qo’yilgan. Bunda esp-12f modulini dasturlash uchun yana yuqoridagi kabi tahqi programmatorlar, platadagi jamperlar hamda maxsus port kontaktlaridan foydalaniladi.


ESP32 mikrokontrollerleri (chipdagi kontaktlar soni 48 ta) o’z navbatida ESP32 (dastlabki varianti), ESP32-C, ESP32-S (eng zamonaviy platalar) va ayrim boshqa seriyalarga bo’linadi (har bir seriya asosida ham o’z navbatida bir nechta platalardan ishlab chiqarilgan).

ESP32 platasi uchun dasturlashni boshlashdan oldin, avvalo ko’plab variantlar ichidan mos keladigan platani ko’rsatish yoki ajratib olish ortiqcha vaqt talab etishi mumkin. Chunki Arduino IDE da ko’rsatilgan plata nomlari ularning o’zida ko’rsatilgan yozuvdagi nomlanishiga mos kelmasligi ham mumkin. Shuning uchun, dasturlashni boshlashdan oldin tegishli plataning rasmiy datashiti (asosiy xususiyatlari, tashqi ko’rinishi, prinsipial sxemasi, qo’shimcha imkoniyatlari, cheklovlar va boshqa ma’lumotlar ) bilan yaqindan tanishib olish ham muhim hisoblanadi.
Bundan tashqari, foydalanishga ruxsat etilgan chetki pinlar soni bo’yicha ham ESP32 asosidagi platalarning 38 ta, 30 ta pinli va 16 pinli variantlari ham ko’p tarqalgan.


ESP32C3 Super Mini moduli.
ESP32C asosidagi ESP32C3 Super Mini energiyatejamkor moduli ushbu oilaning eng kichik o’lchamli vakillaridan biri hisoblanadi. Shuning uchun uning GPIO pinlari soni ham atigi 13 tani (0-10, 20 – RxD, 21 – TxD) tashkil etadi. Shundan 6 tasi (0-5) analog kirish rejimida ham ishlatilishi mumkin. Qolgan 3 ta kontaktlar esa elektr iste’moli (GND, +3,3V, +5V) uchun ajratilgan. Ichki svetodiod 8-pinga ulangan.

Internet do’konlarida ushbu modulning 2 tavarianti uchraydi.
Modulni dasturlash uchun Arduino IDE dasturida uning paramaterlari quyidagicha tanlanishi tavsiya etiladi:

Modulning texnik xarakteristikalari:
Chip: Espressif ESP32-C3
Protsessor (CPU) turi: 32-bitli RISC-V
CPU takt chastotasi: 160 MHz
CPU yadrolari soni: 1
SRAM (OZU): 400 Kb
RTC SRAM: 8 Kb
Ichki doimiy xotira (PZU): 384 Kb
Flesh-xotira: 4 Mb
WiFi: 2,4 GHz, 802.11b/g/n, 802.11mc (150 Mbit)
Bluetooth: Bluetooth 5 (BLE)
Ichki LED pini: GPIO8
Kichik o’lchamiga va ayrim “injiqliklariga” qaramay, ushbu modul ichki programmatoriga ham ega. Undan ixcham IoT loyihalarini yaratishda keng foydalanilishi mumkin – ichki WiFi va Bluetooth modullari turli vaziyatlarda bir-birini to’ldirishi mumkin.
ESP32-CAM moduli.
ESP32S asosidagi ESP32-CAM modulining o’ziga xos tomoni – u asosan kamera va microSD-karta sloti bilan ishlashga mo’ljallangan, ixcham holda ishlab chiqarilgan. U yordamida kamera orqali video translyatsiyani amalga oshirish, insonni yuzidan tanib olish kabi vazifani bajaruvchi dasturlarni yaratish mumkin. Shu bilan birga, modulda dasturlash jarayonida qo’llash mumkin bo’lgan pinlar soni qistartirilgan (qaolgani kamerani boshqarishga yo’naltirilgan) va u ichki programmatorga ham ega emas (proshivka uchun FTDI tashqi programmatoridan foydalanish mumkin).


ESP8266 va ESP32 oilalarining shu va boshqa platalari haqida qo’shimcha ma’lumotlarni ushbu havola orqali olish tavsiya etiladi.
Raspberry Pi platalari oilasi

Raspberry Pi Foundation kompaniyasining Raspberry Pi ayrim platalari (ularni Arduinoni qo’llab-quvvatlovchi bir platali mikrokompyuter deb ham yuritiladi) yuqori xarakteristikalari, o’z tarkibida WiFi, Bluetooth, Ethernet, micro-SD karta adapteri, bir nechta USB hamda HDMI portlari va bir qator boshqa ichki modullarga egaligi bilan yuqoridagi platalar oilalaridan ajralib turadi. O’z navbatida ularning narxi ham Arduino platalariga nisbatan bir necha o’nlab baravargacha qimmatroq hisoblanadi. Raspberry Pi platalari ham bir necha takomillashtirish bosqichlaridan o’tgan bo’lib, hozirda uning bir nechta turlari bor.
Yuqoridagilardan tashqari, hozirda STMicroelectronics kompaniyasining STM32 oilasi mikrokontrollerlari ham ko’p tarqalgan, biroq ular Arduino IDE dasturiy platformasi orqali dasturlashga mo’ljallanmagan (o’zining STM32CubeIDE dasturiy platformasiga ega). Shuning uchun, biz Arduinoni qo’llab-quvvatlovchi platalarni o’rganish bilan cheklanamiz.
Arduinoni qo’llab-quvvatlovchi mikrokontrollerlar muntazam ravishda takomillashtirilib, ularning yangi zamonaviy turlari ham yaratilmoqda. Biroq biz qulaylik uchun yuqoridagi mikrokontrollerlarning ayrimlari asosidagi qurilmalar loyihalarini yaratish bilan cheklanamiz.
Asosiysi, dastlabki bilimlarga ega bo’lgan havaskor arduinochi uchun asta-sekin zamonaviy va murakkabroq bo’lgan, shu bilan birga yuqori imkoniyatlarga ega bo’lgan boshqa mikrokontrollerlarni dasturlashga o’tish unchalik qiyin kechmaydi.
MIKROKONTROLLERNI PROSHIVKALASH
Yuqorida keltirilganidek, ko’pgina mikrokontroller modul va platalari ichki programmatorlarga ega, ayrimlari esa ega emas. Ichki mikrokontrollerga ega bo’lgan plataga tayyor dastur proshivkasini yuklash qiyinchilik tug’dirmaydi. Bevosita proshivkalash jarayonlarini Arduino IDE platformasini o’rganish jarayonida ko’rib chiqamiz.
Lekin, ichki programmatorga ega bo’lmagan plata va modullarga dasturni yuklashda tashqi programmatorlar – USB-TTL konverterlardandan foydalanishga to’g’ri keladi. Bunda konverterning TX (“transmit”, “uzatish”) va RX (“receive”, “qabul qilish”) pinlari mos ravishda mikrokontrollerning RX va TX pinlariga, ya’ni konverterning uzatish pini mikrokontrollerning qabul qiluvchi piniga va aksincha, konverterning qabul qilish pini mikrokontrollerning uzatish piniga bog’lanishi kerak bo’ladi.



USB-TTL konverter bo’lmagan vaziyatlarda esa, proshivkani mikrokontrollerga yozish uchun, ichki programmatorga ega bo’lgan boshqa platadan ham foydalanish mumkin. Lekin bunda mikrokontrollerlarning TX va RX pinlari aynan bir xil, ya’ni TX dan TX ga va RX dan RX ga bog’lanishi kerak! Chunki, bu yerda faqat proshivkalovchi plataning ichki programmatoridan foydalaniladi, mikrokontroller esa, hech qanday rol o’ynamaydi.


Platani programmator rejimiga o’tkazish uchun odatda uning RST (reset) pini GND piniga qisqa tutashtiriladi. Natijada mikrokontroller o’chiq holatga o’tadi. Platadagi programmator bloki esa, proshvka yozilishi kerak bo’lgan boshqa plata boshqaruviga o’tadi.
Proshivkalash uchun boshqa platadan foydalanilgan taqdirda, har ikki platalarning ishchi kuchlanishiga e’tibor qaratish zarur. Chunki, ishchi kuchlanishi yuqori (masalan, 5V) bo’lgan plataning TX pinidan kiruvchi kuchlanish ischi kuchlanishi past (masalan, 3,3V) bo’lgan boshqa plataning RX pinini, yoki hatto platani butunlay ishdan chiqishiga olib kelishi mumkin. Bunday vaziyatlarda, platalar kuchlanishini moslashtirish, aniqrog’i, yuqori kuchlanishni kerakli darajagacha pasaytirish mumkin.