Mundarija:

EV3: 6 bosqichli avtomatik ko'r ochuvchi
EV3: 6 bosqichli avtomatik ko'r ochuvchi

Video: EV3: 6 bosqichli avtomatik ko'r ochuvchi

Video: EV3: 6 bosqichli avtomatik ko'r ochuvchi
Video: LEGO Mindstorms EV3 | Урок №6 2024, Iyul
Anonim
EV3 yordamida avtomatik ko'r ochuvchi
EV3 yordamida avtomatik ko'r ochuvchi
EV3 yordamida avtomatik ko'r ochuvchi
EV3 yordamida avtomatik ko'r ochuvchi

Mening yotoqxonamda rolikli qorong'i pardalar to'plami bor, men ularni ko'pincha ertalab yoki kechqurun ochishni yoki yopishni unutaman. Men ochilish va yopilishni avtomatlashtirishni xohlayman, lekin qachon o'zgarganda.

1 -qadam: Potentsial g'oyalar yoki echimlar

YouTube, Instructables va Thingiverse kabi turli saytlarni ko'rib chiqib, men ko'rdimki, eng keng tarqalgan echim - bu plyonkali pog'onali dvigatel yoki servo yordamida yaralarni ochish. Men har xil afzalliklari va kamchiliklari bo'lgan ikkita asosiy variantni topdim.

1 -fikr: g'altak usuli, bu erda vosita va tishli g'altakning ichida joylashgan. Bu usulning afzalliklari borki, u toza va oqlangan usuldir, lekin kamchiliklari borki, u ko'r -ko'rona katta o'zgarishlarni talab qiladi, shnur endi ishlatilmaydi va montaj qilinganida uni parvarish qilish juda qiyin bo'ladi.

2 -fikr: shnur usuli, bu erda dvigatel va vites shnurga joylashtirilgan. Buning afzalligi shundaki, u osonroq va montajga osonlikcha kirish mumkin. Ammo uning kamchiliklari borki, u chirkin va katta hajmli bo'lishi mumkin, shuningdek, uni sillga mahkamlash kerak.

Men shnur usulini afzal ko'raman, chunki bu simni qo'lda ishlatishga xalaqit bermaydi va ko'rlar katta modifikatsiyani talab qilmaydi. Men ESP8266 bilan yakuniy versiyani yaratganimda, uni iloji boricha yashirin va ixcham qilishni rejalashtiryapman.

2 -qadam: yig'ilish

Assambleyani tuzish
Assambleyani tuzish
Assambleyani tuzish
Assambleyani tuzish

Men bu loyihani Lego mindstorms EV3 yordamida qildim, uning funktsional imkoniyatlari bor, men loyihaning ishlashi mumkinligini ko'rsatishim kerak va men aniq yordam bergan dasturiy ta'minot bilan tanishman. Ko'zi ojizlar g'altakni haydash uchun to'p zanjiridan foydalanganligi sababli, Lego tishli moslamalari mos kelmaydi, men qaror qildimki, tashqi tomondan to'g'ri to'p oralig'i bo'lgan tishli qutini- "xoch shaklidagi" standart teshik bilan jihozlash. markaz, men dizaynni 3D bosib chiqaraman. Shu nuqtada men ham kalibrlash tugmachasini yasadim va derazaga yorug'lik sensori va uning o'rnini bosuvchi tugma biriktirdim.

3 -qadam: ko'r -ko'rona mexanizmni loyihalash

Ko'zi ojiz vitesni loyihalash
Ko'zi ojiz vitesni loyihalash
Ko'zi ojiz vitesni loyihalash
Ko'zi ojiz vitesni loyihalash
Ko'zi ojiz vitesni loyihalash
Ko'zi ojiz vitesni loyihalash
Ko'zi ojiz vitesni loyihalash
Ko'zi ojiz vitesni loyihalash

Krank qanday batafsilroq ko'rinishini ko'rish uchun ko'rlarni qismlarga ajratdim. Sökme paytida men 16 tishli kichkina tishli qutichani topdim, bu men izlagan qism edi. Vitesning nusxasini yaratgandan so'ng, men Lego-ga mos keladigan teshiklarni qo'shdim, 3 ta alohida qismni chop etdim va nihoyat ularni super yopishtiruvchi bilan yopishtirdim. Dastlab men Lego qismini moslashtirishda muammolarga duch keldim, chunki 3D printerimda "x" teshigiga etarlicha ruxsat yo'q edi, lekin uning ikkala tomonidagi dumaloq teshiklar bilan hech qanday muammo yo'q edi. Shunday qilib, men "x" ni dumaloq teshikka almashtirdim va u yaxshi chop etildi. Keyin, oz miqdordagi sinovdan so'ng, men ko'r -ko'rona tortish momentini va og'irligini boshqarishi mumkinligini ko'rdim. Men o'z dizaynlarimni quyidagi viteslar bilan bog'layman yoki uni Thingiverse -da topishingiz mumkin:

4 -qadam: ko'rlarni kodlash

Ko'zi ojizlarni kodlash
Ko'zi ojizlarni kodlash

Men ma'lum bir yorug'lik darajasiga kelganda ko'rlarni avtomatik ravishda ochadigan va yopadigan kodni xohlardim, lekin u ham xohlagan vaqtda ko'rni ochishi yoki yopishi uchun bekor qilish tugmasiga ega edi. Men o'z GitHub -ni kodning oxirgi versiyasi bilan bog'ladim:

Loyihaning kodini bajarish uchun bir necha kun kerak bo'ldi, men dasturning asosiy mantig'ini yorug'lik sensori bilan to'g'ri ishladim, lekin bir zumda bekor qilish tugmasi to'g'ri ishlamadi. U bosilganda ko'rlarning holatini o'zgartirib yubordi, lekin "qulflash" funktsiyasi yo'q edi, bu esa ko'rning o'z o'rnida qolishini anglatardi, ya'ni ko'r uni darhol avvalgi holatiga qaytaradi. Men buni yorug'lik sensori va sensor sensori qiymatlarini o'qiy oladigan mantiqiy YoK eshik bilan bog'langan "kutguncha" bloki yordamida tuzatdim.

Kod dvigatellar va ko'rlarni kalibrlashdan boshlanadi, ko'r -ko'rona to'liq ochilib, pastdagi sensorli sensorga tegmaguncha pastga tushadi, pastki qismga qancha chorak burilish kerakligini hisoblab, "RotationsNeeded" sifatida saqlanadi. o'zgaruvchan Keyin u ko'rlarning holatini kuzatish uchun ishlatiladigan "BlindOpen" o'zgaruvchisiga "noto'g'ri" deb yozadi. Bu vaqtda kod 4 ta halqaga bo'linadi.

Bu looplardan biri tugma holatini "ButtonPressed" deb nomlangan o'zgaruvchiga doimiy ravishda e'lon qilib turadigan "Buttonstate" pastadir. Bu skriptga bir nechta tugma bloklarini joylashtirish zaruratini yo'q qiladi.

Ikkinchi tsikl - bu "yorug'lik yoki qorong'i", bu mening derazam tashqarisidagi yorug'lik darajasini doimiy ravishda kodda belgilangan sobit bilan taqqoslaydi. Agar natija doimiydan past bo'lsa, pastadir "ItIsLight" o'zgaruvchisiga "noto'g'ri" yozadi, agar u qiymatdan yuqori bo'lsa "haqiqiy" deb yozadi.

Uchinchi tsiklda 3 variantdan iborat raqamli ro'yxat mavjud bo'lib, ular asosan ko'rlarga nima qilish kerakligini aytadi, 0 = ko'r, 1 = ko'r, 2 = hech narsa qilma, chunki ko'r to'g'ri joyda. Loop "BlindShould" o'zgaruvchisini o'qishdan boshlanadi, unda ko'rlar bajarishi kerak bo'lgan to'g'ri vazifa ko'rsatilgan, so'ngra bu vazifani bajaradi, "BlindOpen" o'zgaruvchisini to'g'ri variantga o'zgartiradi va keyin "BlindShould" o'zgaruvchisi o'zgartirilguncha bo'sh qoladi. takrorlaydi. Ko'zi ojizlarni to'liq ochish yoki yopish uchun "RotationsNeeded" qiymatini, shuningdek +/- 100% quvvatini ishlatadi.

To'rtinchi va oxirgi tsikl eng murakkab, bu "Decider" tsikli bo'lib, u barcha ma'lumotlarni qayta ishlaydi va har bir almashtirish bilan nima qilishni hal qiladi. Bu mantiqqa asoslangan "yo'ldagi vilkalar" yordamida amalga oshiriladi, bu erda "tugma bosiladi", "yorug'lik darajasi", "ko'r -ko'rona ochish" to'g'ri yoki noto'g'ri savollar. Hamma almashtirishlar qattiq kodlangan javobga ega, bu 0 = ko'r -ko'rona, 1 = ko'r -ko'rona yuqoriga yoki 2 = hech narsa qilmang - bu qiymat "BlindShould" o'zgaruvchisiga yoziladi, u avvalgi pastadir bilan ishlanadi. Ba'zi javoblar "ItIsLight" va/yoki "ButtonPressed" o'zgaruvchilarining skriptni tugatguncha o'zgarishini kutadi, bu faqat tugma faollashtirilgan almashtirishlar uchun, aks holda u o'z o'rnini to'g'rilashga harakat qiladi, demak ko'rlar qaytadi. asl holatiga. Bu jarayon keyinchalik osonlikcha qo'shilishi va tuzatilishi mumkin bo'lgan mustahkam va nisbatan oddiy avtomatik tizimni yaratish uchun halqa qilinadi. Puf.

5 -qadam: teginishni tugatish

Tugatish tegishi
Tugatish tegishi

Keyin men "EV3" ga 9V quvvat manbaini bir nechta yog'och dublonlar va vintlardek "batareya" sifatida ulashga qaror qildim, bu mahsulotni batareyalarga ishonchsiz qildi va batareyani har ikki kunda almashtirishimga to'sqinlik qildi.

6 -qadam: Loyihani baholash

O'ylaymanki, loyiha umuman yaxshi o'tdi, men avtomat pardalarni yig'ish uchun ishlaydigan prototipga ega bo'ldim, uni loyiha davomida topilgan barcha kerakli ma'lumotlarni olib, yakuniy versiyaga o'tkaza olaman. Men qurilmani muvaffaqiyatli kodladim va keyinchalik kod bilan hech qanday katta muammo topmadim. Men qurilmani yanada jozibali qilishni xohlardim, lekin bu yana bir bor kontseptsiyaning isboti va men ESP8266 bilan yakuniy versiyani yaratganimda uni yaxshi ko'rinishga keltirishga harakat qilaman. Men yana loyihani amalga oshirganimda, men motorni ko'rning ichida o'tiradigan qilib yarataman, chunki buni yashirish osonroq bo'ladi. Men o'rgangan eng katta saboq - bu kodni amalga oshirishdan oldin mantiqiy disk raskadrovka qilish va o'ylash, hujjatlashtirish va sinab ko'rish.

Tavsiya: