Mundarija:
- 1 -qadam: Uskuna kerak
- 2 -qadam: shassini yig'ish
- 3 -qadam: elektronikani o'rnatish
- 4 -qadam: veb -kamerani qo'shish
- 5 -qadam: Hammasini uzatish
- 6 -qadam: RPIni sozlash
- 7 -qadam: RPI ketma -ket portini sozlash
- 8 -qadam: Python modullarini o'rnatish
- 9 -qadam: RoboClaw -ni sozlash
- 10 -qadam: Rover dasturini/fayllarini o'rnatish
- 11 -qadam: Botni yuqoriga ko'tarish
- 12 -qadam: Botni boshqarish sahifasiga kirish
- 13 -qadam: Python/Flask kodi
- 14 -qadam: Boshqa uskunalardan foydalanish
Video: Veb boshqariladigan Rover: 14 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Robotlar qurish va ular bilan o'ynash - mening hayotimdagi asosiy aybdor zavq. Boshqalar golf yoki chang'i o'ynaydi, lekin men robotlar quraman (chunki men golf yoki chang'i o'ynay olmayman:-). Menga tasalli va kulgili tuyuladi! Botlarni ko'p qilish uchun men shassi to'plamlaridan foydalanaman. To'plamlardan foydalanish menga o'zim yoqtirgan narsani, dasturiy ta'minot va elektronikani bajarishga yordam beradi, shuningdek, o'zimning bosh barmog'im uchun yaxshiroq shassi yaratadi.
Ushbu yo'riqnomada biz oddiy, ammo mustahkam Wi -Fi/veb -boshqariladigan roverni yaratish uchun nima kerakligini ko'rib chiqamiz. Amaldagi shassis - Actobotics Gooseneck. Men uni o'lchamlari, kengayish qobiliyati va narxiga qarab tanladim, lekin siz o'zingiz xohlagan boshqa shassisdan foydalanishingiz mumkin.
Bunday loyiha uchun bizga bitta qattiq taxtali kompyuter kerak bo'ladi va men bu bot uchun Raspberry Pi (RPI) Linux asosidagi kompyuterdan foydalanishni tanladim. RPI (va Linux) bizga juda ko'p kodlash variantlarini beradi va Python kodlash tomoni uchun ishlatiladi. Veb -interfeys uchun men Flask -dan foydalanaman, Python uchun engil veb -ramka.
Dvigatellarni haydash uchun men RoboClaw 2x5a ni tanladim. Bu uni boshqarish uchun oddiy ketma -ket aloqa o'rnatishga imkon beradi va RPI va Bog'dagi motorlar bilan yaxshi ishlaydi.
Nihoyat, u masofadan haydash uchun POV tipidagi video -mulohazalar uchun veb -kameraga ega. Har bir mavzuni keyinroq batafsilroq yoritaman.
1 -qadam: Uskuna kerak
- Actobotics Gooesneck shassisi yoki sizning xohishingizga mos keladigan almashtirish
- Siz tanlagan Raspberry Pi (yoki klon) - bu botda RPI modeli B ishlatiladi, lekin kamida ikkita USB portga ega bo'lgan har bir kishi ishlaydi.
- Standart Servo plastinka B x1
- 90 ° bitta burchakli kanal qavs x1
- RoboClaw 2x5a uchun haydovchi
- S3003 yoki shunga o'xshash standart o'lchamli servo
- Kichik non paneli yoki mini non paneli
- Ayol - Ayol jumper simlari
- Erkak -Ayol jumper simlari
- Veb -kamera (ixtiyoriy) - Men Logitech C110 dan foydalanaman va bu erda RPI uchun qo'llab -quvvatlanadigan kameralar ro'yxati.
- Servo quvvat uchun 5v-6v quvvat manbai
- Dvigatel motorini quvvatlantirish uchun 7.2v-11.1v batareya
- RPI uchun 5v 2600mah (yoki undan yuqori) USB quvvat banki
- USB Wi -Fi adapteri
Botda men 4 dyuymli g'ildiraklardan foydalanaman, bu esa butun maydonni yopiq qiladi. Bu variant uchun sizga kerak bo'ladi:
- 4 "og'ir yuk g'ildiragi x2
- 4 mm teshikli vintli uyasi (0,770 dyuym) x2
2 -qadam: shassini yig'ish
Avval shassi yoki videoda ko'rsatilgan ko'rsatmalarga muvofiq shassisni yig'ing. Tugatgandan so'ng siz rasmga o'xshash narsaga ega bo'lishingiz kerak. ESLATMA: Bo'yin qismini o'rnatayotganda, faqat o'rnatish burchagini o'chirib qo'ying.
Mening botimda, men 4 dyuymli og'ir yuk g'ildiraklari uchun shassi bilan birga kelgan g'ildiraklarni almashtirishni tanladim. Agar xohlamasangiz, bu ixtiyoriy va kerak emas.
3 -qadam: elektronikani o'rnatish
Gooseneck -da elektronikani o'rnatish uchun juda ko'p joy va imkoniyatlar mavjud. Men sizga bu rasmlarni ko'rsatma sifatida beraman, lekin siz bularning barchasini qanday joylashtirishni tanlashingiz mumkin. Kengash va batareyalarni o'rnatish uchun tayanchlar, ikki tomonlama lenta, Velcro yoki servo-lentadan foydalanishingiz mumkin.
4 -qadam: veb -kamerani qo'shish
Ushbu qadam uchun 90 graduslik burchak, engil servo uyasi va.3125 dyuymli to'rtta (4) vintni oling:
- Servo uyasini oling va uni burchakning bir tomoniga qo'ying va ularni rasmdagi kabi.1212 dyuymli vintlar bilan mahkamlang.
- Keyin servo ushlagichga servo o'rnatiladi
- Servo shoxi bilan 90 graduslik qavsni servo o'murtqa mahkamlang va ularni ulash uchun servo bilan birga kelgan shox vintini ishlating.
- Qolgan vintlardek Servo-ni g'oz bo'ynining yuqori qismiga mahkamlang
- Kamerani fermuar yoki ikki tomonlama lenta bilan 90 graduslik qavsga mahkamlang
Agar kerak bo'lsa, qo'llanmalar uchun rasmlardan foydalaning.
5 -qadam: Hammasini uzatish
Ushbu robot uchun simlar juda qiyin.
Motorlar:
Lehim ikkala dvigatelda ham mavjud, agar siz buni hali qilmagan bo'lsangiz
Robotlar old tomonida (oxiri g'oz bo'ynida) sizga qaragan holda:
- Chap dvigateldagi motor simlarini M1A va M1B kanaliga ulang
- O'ng dvigateldagi motor simlarini M2A va M2B kanaliga ulang
Er (GND) ulanishlari:
- RoboClaw -dagi bitta topraklama pinini erga o'tish platasiga ulang. RoboClaw -dagi yer chizig'i markazga eng yaqin (rasmga qarang)
- RPI -dagi PIN 6 -ni o'tish paneliga ulang. Pin tayinlash uchun RPI sarlavhasi rasmiga qarang.
- GND ni servo batareya to'plamidan o'tish platasidagi pinlardan biriga ulang.
- Jumper taxtasidan GND simlariga o'tish simini o'tkazing.
RoboClaw -ga RPI:
RPI GPIO14 TXD pinini RoboClaw S1 piniga ulang
Quvvat:
- Servo batareyadan POS simini servo POS simiga ulang
- Dvigatel batareyasidan POS simini RoboClaw dvigatel quvvat kiritish terminalining POS (+) ga ulang. Biz GND terminalini hozircha uzilgan holda qoldiramiz.
6 -qadam: RPIni sozlash
Menimcha, bu erda foydalanuvchi Linux va RPI haqida biladi. Men qanday sozlash yoki unga ulanish haqida gaplashmayman. Agar sizga yordam kerak bo'lsa, quyidagi sahifalardan foydalaning.
RPI sozlamalarini olish uchun quyidagi sahifalarga qarang:
- Asosiy RPI sozlamalari
- RPI tez ishga tushirish bo'yicha qo'llanma
- NOOBS o'rnatish guildasi
Umumiy o'tish sahifalari uchun RPI asosiy sahifasi va eLinux sahifalari boshlash uchun ajoyib joy.
Umumiy Wi -Fi -ni sozlash uchun ushbu havolani ko'ring.
Agar siz botda qandaydir kamera yoki veb -kameradan foydalanishni rejalashtirmoqchi bo'lsangiz, asosiy kerakli fayllarni olish uchun ushbu sahifalarni ko'rib chiqing.
- RPI kamerasini sozlash
- eLinix RPI kamerasini sozlash
Video oqimi:
RPIda video oqimini olishning bir necha yo'li bor, lekin men yoqtirgan usul - Motion.
Uni RPI-ga o'rnatish uchun quyidagini bajaring: sudo apt-get install motion
Bu ko'rsatma uni oqim uchun sozlashni ham o'z ichiga oladi.
7 -qadam: RPI ketma -ket portini sozlash
Biz RX va TX -dan foydalanish uchun Linux konsoli rejimini o'chirib qo'yishimiz kerak, chunki biz ushbu portdan RoboClaw motor boshqaruvchisi bilan gaplashmoqchimiz. Buning uchun siz ushbu usuldan yoki bu vositadan foydalanishingiz mumkin. Tanlash usuli sizniki, chunki ikkalasi ham oxir -oqibat xuddi shunday qilishadi.
8 -qadam: Python modullarini o'rnatish
Sizga RPI -da python o'rnatilgan bo'lishi kerak, shuningdek, python paketini o'rnatish pip.
Pipni o'rnatish uchun quyidagilarni bajaring:
- sudo apt-get python-setuptools-ni o'rnating
- sudo easy_install pip
Keyin:
- sudo pip o'rnatish idishi
- sudo pip o'rnatish pyserial
- sudo pip o'rnatish RPIO
Bu kodni ishga tushirish uchun zarur bo'lgan barcha modullar bo'ladi.
9 -qadam: RoboClaw -ni sozlash
Menda robot kodi bor, RoboClaw bilan 19200 bod standart standart rejimda.
Buning uchun RoboClaw -ni sozlash uchun quyidagilarni bajaring:
- RoboClaw -dagi "MODE" tugmasini bosing
- LED kechikishlar orasida 5 (besh) marta yonib -o'chib turmaguncha, sozlash tugmasini bosing
- Saqlash uchun "LIPO" tugmasini bosing
- Keyin "SET" tugmasini bosing, LED kechikishlar orasida 3 (uch) marta yonib -o'chib turguncha
- Saqlash uchun LIPO tugmasini bosing
Bu dvigatelni boshqarish moslamasini sozlash uchun. Agar kerak bo'lsa, qo'shimcha ma'lumot olish uchun yuqoridagi pdf -ga qarang.
10 -qadam: Rover dasturini/fayllarini o'rnatish
Rover.zip faylini Pi foydalanuvchi katalogidagi RPI -ga yuklab oling va nusxalash.
Agar siz Linux yoki Mac bilan ishlayotgan bo'lsangiz, buni amalga oshirish uchun 'scp' dan foydalanishingiz mumkin:
scp ~/location/of/the/file/rover.zip pi@your_rpi_ip:/~
Windows uchun siz pscp -ni yuklab olishingiz va ishlatishingiz va keyin qilishingiz mumkin:
pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/~
Zip fayl RPIga ko'chirilgandan so'ng, unga pi foydalanuvchisi sifatida kiring.
Endi ishga tushiring:
roverni oching. zip
Bu fayllarni "rover" nomli papkaga ochadi va bu papkada quyidagilar bo'ladi:
- restrover.py (robot uchun python kodi)
- statik (boshqaruv sahifasidagi tugmalar uchun rasm fayllarini saqlaydi)
- andozalar (index.htlm faylini, nazorat veb -sahifasini saqlaydi)
Agar siz veb -kameradan foydalanayotgan bo'lsangiz, shablon papkasida index.html faylining pastki qismidagi satrni o'zgartiring. IFRAME satridagi URL manzilini video oqimingizning src URL manziliga mos keladigan qilib o'zgartiring.
11 -qadam: Botni yuqoriga ko'tarish
USB quvvatini RPI -ga ulang.
Bot kodini ishga tushirish uchun pi foydalanuvchisi sifatida kiring va ishga tushiring:
- CD -rover
- sudo python restrover.py
Agar hamma narsa yaxshi bo'lsa, siz bu bosqichda tasvirga o'xshash ekranni ko'rishingiz kerak
Agar biron bir xato yoki kamchilikni ko'rsangiz, oldinga siljishdan oldin ularni tuzatishingiz kerak bo'ladi.
Endi, GND (-) simini RoboClaw dvigatel quvvat kirishidagi NEG (-) terminaliga ulang.
12 -qadam: Botni boshqarish sahifasiga kirish
Robotning python skriptini ishga tushirgandan so'ng, RoboClaw -ni yoqing va keyin IP -ga IP -ga o'ting:
sizning_rpi_ip
Veb -boshqaruv sahifasi rasmlardagi kabi ochilishini ko'rishingiz kerak. Aks holda, RPI chiqish terminalini tekshiring va xatolarni qidiring va ularni to'g'rilang.
Sahifaga kirgandan so'ng, siz botni boshqarishga tayyormiz.
Robot "Med run" sozlamasida va O'rta tezlikda boshlanadi.
Botni sahifadagi tugmalar yoki klaviaturadagi tugmalar yordamida boshqarish mumkin.
Kalitlar:
- w - oldinga
- z - teskari/orqaga
- a - chapga uzoq burilish
- s - uzoq o'ng burilish
- q - chapga qisqa burilish
- e - qisqa o'ng burilish
- 1 - chap kamera
- 2 - kamera o'ngga
- 3 - panani to'liq chapga
- 4 - to'liq o'ngga pan
- / - uy/ markaziy kamera
- h - to'xtatish/to'xtatish roboti
Yuborilgan buyruqlar o'rtasida yarim soniya kechikish buferi mavjud. Men buni keraksiz buyruqlarni yo'q qilish uchun qildim. Agar xohlasangiz, albatta buni koddan olib tashlashingiz mumkin (index.html da)
Qolgan nazoratlar va uni boshqarish o'z -o'zidan tushunarli bo'lishi kerak.
13 -qadam: Python/Flask kodi
Bu bot Python va Flask veb -ramkasidan foydalanadi. Agar siz qiziqsangiz, Flask haqida ko'proq bilib olishingiz mumkin.
Flask ilovasi va oddiy Python skriptidan katta farq - URI bilan ishlashda ishlatiladigan @app.route klassi/usuli. Bundan tashqari, ko'pincha bu oddiy Python.
#!/usr/bin/env python
# # Wifi/Internetga asoslangan Rover # # Skott Beasli tomonidan yozilgan - # # # # RPIO, pyserial va Flaskdan foydalanadi) # Roboclaw dvigatelini boshqarish moslamasi bilan gaplashish uchun aloqa portiga ulaning: # 19200 roboclaw = serialdan farqli bo'lsa, bu erda uzatish tezligini o'zgartiring. Serial ('/dev/ttyAMA0', 19200), IOError tashqari: print ("Comm port topildi ") sys.exit (0) # Tezlik va haydovchining boshqaruv o'zgaruvchilari last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Servo neytral pozitsiya (uy) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18), servo_pos) # Vaqtni belgilash uchun ozgina to'xtab qoling. uxlash (3) # # URI ishlovchilari - bot sahifasidagi barcha harakatlar shu erda amalga oshiriladi # # Botlarni boshqarish sahifasini yuboring (bosh sahifa) @app.route ("/") def index (): return render_template ('index.html', name = None) @app.route ("/forward") def forward (): global last_direction, run_ti meni chop eting "Forward" go_forward () last_direction = 0 # uxlash 100ms + ishlash vaqti app.route ("/backward") def backward (): global last_direction, run_time print "Orqaga" go_backward () last_direction = 1 # uxlash 100ms + run_time time.sleep (0.100 + run_time) # Agar uzluksiz bo'lmasa, keyin kechiktirilgandan keyin to'xtating. agar run_time> 0: last_direction = -1 stop () qaytish "ok" @app.route ("/left") def left (): global last_direction, turn_tm_offset print "Chap" go_left () last_direction = -1 # uxlash @1 /2 soniya uyqu (0.500 - navbat_tm_offset) # to'xtatish () vaqt () # 1/2 soniyada @uyqu.sleep (0.500 - turn_tm_offset) last_direction = -1 # stop stop () time.sleep (0.100) return "ok" @app.route ("/ltforward") def ltforward (): global oxirgi_yo'nalish, burilish_t m_offset chop etish "Chapga oldinga burilish" go_left () # 1/8 soniyada # uyqu.route ("/rtforward") def rtforward (): global oxirgi_yo'nalish, turn_tm_offset bosib chiqarish "O'ngga burilish" go_right () # 1/8 sekundda # uyqu. stop stop () time.sleep (0.100) "ok" ga qaytish @app.route ("/stop") def stop (): global last_direction print "Stop" to'xtatish () last_direction = -1 # 100ms time.sleep (0.100)) qaytar "ok" @app.route ("/panlt") def panlf (): global servo_pos print "Panlt" servo_pos -= 100 agar servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # 150ms vaqt. uyqu (0.150) qaytish "ok" @app.route ("/home") def home (): global servo_pos print "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # 150ms time.sleep (0.150) return "ok" @app.route ("/panfull_lt") def panfull_lt (): global servo_pos chop etish "Pan to'liq l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # uxlash 150ms time.sleep (0.150)" ok "ga qaytish @app.route ("/panfull_rt ") def panfull_rt (): global servo_pos chop etish" To'liq o'ngda "servo_pos = 2500 servo.set_servo (18, servo_pos) # uxlash 150ms time.sleep (0.150) "ok" ga qaytish @app.route ("/speed_low") def speed_low (): global tezlik almashinuvi, oxirgi_yo'nalish, turn_tm_offset speed_offset = 42 burilish_tm_offset = 0.001 # Oxirgi yo'nalish == 0 bo'lsa, go_forward () agar oxirgi_yo'nalish == 1 bo'lsa: go_forward () # uyqu 150ms vaqt. Uyqu (0.150) "ok" ga qaytish @app.route ("/speed_mid") def speed_mid (): global speed_offset, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # Last_direction == 0: go_forward () if last_direction == 1: go_backward () # 150ms time uxlash (0.150)) qaytar "ok" @app.route ("/speed_hi") def speed_hi (): global speed_offset, last_direction, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0.332 # Oxirgi yo'nalish == 0 bo'lsa go_forward () oxirgi_yo'nalish == 1 bo'lsa: go_forward () # uyqu 150ms time.sleep (0.150) "ok" @app.route ("/sürekli ") def sürekli (): global ish vaqti chop etish" Uzluksiz ishlash "ish vaqti_0 = 0 # uyqu 100ms vaqt. uxlash (0.100)" ok "ga qaytish @app.route ("/mid_run ") def mid_run (): global run_time print" Mid run "run_time = 0.750 halt () # 100ms time.sleep (0.100) return" ok " @app.route ("/short_time ") def short_time (): global run_time print" Qisqa muddat "ish vaqti = 0.300 halt () # uxlash 100ms vaqt.sleep (0.100) qaytish "ok" # # Dvigatel haydovchi funktsiyalari # def go_forward (): global tezlik ofset, agar tezlik_offset bo'lsa! = 42: roboclaw.write (chr (1 + tezlik_afaz)) roboclaw.write (chr (128 +) speed_offset)) boshqa: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.wri te (chr (255 - speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) other: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right (): global speed_offset agar speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) boshqa: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) def halt (): roboclaw.write (chr (0)) agar _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = True)
Agar siz Flask -dan disk raskadrovka ma'lumotlarini xohlamasangiz yoki kerak bo'lmasa, app.run satrida disk raskadrovka 'false' ga sozlang.
agar _ ism_ == "_main_" bo'lsa:
app.run (host = '0.0.0.0', port = 80, debug = False)
Bu erda Flask http serveri tinglaydigan portni ham o'zgartirishingiz mumkin.
14 -qadam: Boshqa uskunalardan foydalanish
Agar siz boshqa uskuna ishlatmoqchi bo'lsangiz, masalan, boshqa turdagi SBC (bitta taxtali kompyuter), sizda Python va Flaskni Beagle Bone, PCDuino va boshqalar kabi boshqa platalarda ishlashda muammolarga duch kelishingiz kerak … Siz kodni GPIOga mos keladigan tarzda o'zgartirishingiz kerak bo'ladi. yangi taxtaning servo haydash imkoniyatlarini joylashtirish va ishlatish.
Boshqa turdagi dvigatel haydovchisidan foydalanish uchun faqat dvigatel haydovchisiga kerakli funktsiyani bajarish uchun go_forward, go_backward, go_left, go_right va stop funktsiyalarini o'zgartirish kerak.
Tavsiya:
Raspberry Pi bilan veb -sayt/WiFi boshqariladigan LED tasmasi: 9 qadam (rasmlar bilan)
Raspberry Pi bilan ishlaydigan veb -sayt/WiFi boshqariladigan LED tasmasi: Ma'lumot: Men o'spirinman va so'nggi bir necha yil mobaynida robototexnika musobaqalarida ishtirok etish bilan birga kichik elektronika loyihalarini loyihalashtirgan va dasturlaganman. Yaqinda men ish stoli sozlamalarini yangilash ustida ishladim va men yaxshi qo'shimchani tanlashga qaror qildim
It bot: Veb -kamerali Lego Robot Rover: 17 qadam (rasmlar bilan)
It bot: Veb -kamerali Lego Robot Rover: Wi -Fi orqali istalgan ekrandan boshqariladigan Lego robotini yasash. Shuningdek, u veb -kameraga ega, shuning uchun siz qaerga ketayotganingizni va ko'zlar uchun LED chiroqlarini ko'rishingiz mumkin! Bu sizning bolalaringiz bilan amalga oshiriladigan ajoyib loyihadir, chunki ular logotipni yaratishga qodir va siz bunga qo'shilishingiz mumkin
Wi-Fi boshqariladigan FPV Rover roboti (Arduino, ESP8266 va Stepper motorlari bilan): 11 qadam (rasmlar bilan)
Wi-Fi orqali boshqariladigan FPV Rover roboti (Arduino, ESP8266 va Stepper motorlari bilan): Bu ko'rsatma, ESP8266 Wi-Fi moduliga ulangan Arduino Uno yordamida, Wi-Fi tarmog'i orqali masofadan boshqariladigan, ikki g'ildirakli robot-roverni qanday loyihalashtirishni ko'rsatib beradi. va ikkita qadamli motor. Robotni oddiy Internet -brauzer orqali boshqarish mumkin
USB quvvat bilan boshqariladigan ulagich. Izolyatsiya bilan: 4 qadam (rasmlar bilan)
USB quvvat bilan boshqariladigan ulagich. Izolyatsiya bilan: Bu yo'riqnomaning asosiy maqsadi - bu menga o'ylamasdan, kompyuterim uchun barcha aksessuarlarni yoqish edi. Va keyin, men kompyuterdan foydalanmayotganimda, vampir devori siğillarining hammasiga kuch bermayman. Fikr oddiy, siz
Veb boshqariladigan Arduino LED: 5 qadam (rasmlar bilan)
Veb-boshqariladigan Arduino LED: Bu ko'rsatma sizga Arduino va WIZnet Ethernet qalqoni asosida har qanday veb-brauzer orqali boshqariladigan veb-yoqilgan uch rangli LEDni qanday yaratishni ko'rsatadi. Chunki LED Arduino rangida ishlaydigan oddiy RESTful veb -xizmati orqali chiqariladi