Mündəricat:

EV3: 6 Addımdan istifadə edərək avtomatik kor açıcı
EV3: 6 Addımdan istifadə edərək avtomatik kor açıcı

Video: EV3: 6 Addımdan istifadə edərək avtomatik kor açıcı

Video: EV3: 6 Addımdan istifadə edərək avtomatik kor açıcı
Video: Kim nə başa düşdü ❓ 2024, Iyul
Anonim
EV3 istifadə edərək avtomatik kor açıcı
EV3 istifadə edərək avtomatik kor açıcı
EV3 istifadə edərək avtomatik kor açıcı
EV3 istifadə edərək avtomatik kor açıcı

Yataq otağımda tez -tez səhər və ya axşam açmağı və ya bağlamağı unutduğum silindrli qaranlıq pərdələrim var. Açılışı və bağlanmasını avtomatlaşdırmaq istəyirəm, amma nə vaxt dəyişəcəyimi əvəz etməklə.

Addım 1: Potensial fikirlər və ya həllər

YouTube, Instructables və Thingiverse kimi müxtəlif saytlara baxdıqdan sonra gördüm ki, ən çox yayılmış həlli bir pilləli motor və ya servo istifadə edərək pərdələri yaralayan və açan makaranı işə salmaqdır. Müxtəlif üstünlükləri və mənfi cəhətləri olan 2 əsas variant tapdım.

Fikir 1: Mühərrikin və dişli çarxın içərisində yerləşdiyi makara üsulu. Bunun səliqəli və zərif bir üsul olması üstünlüyünə malikdir, lakin korlar üçün böyük bir dəyişiklik tələb edən dezavantajlara malikdir, şnur artıq istifadə edilə bilməz və montaj edildikdə təmir üçün əldə etmək çox çətin olacaq.

Fikir 2: motorun və dişlinin şnurun üzərində yerləşdiyi şnur metodu. Bunun üstünlüyü daha sadədir və montajı asanlıqla əldə etmək mümkündür. Bununla birlikdə, çirkin və həcmli ola biləcəyi bir dezavantaja malikdir və tətbiq edildikdə eşikə yapışdırılmalıdır.

Şnurun əllə istifadəsini maneə törətməyən daha sadə bir həll olduğu üçün kord metoduna üstünlük verirəm və korlar heç bir böyük dəyişiklik tələb etməyəcək. ESP8266 ilə son versiyanı hazırladığım zaman mümkün qədər gizli və yığcam hala gətirməyi planlaşdırıram.

Addım 2: Məclisin hazırlanması

Məclisin hazırlanması
Məclisin hazırlanması
Məclisin hazırlanması
Məclisin hazırlanması

Layihənin işləyə biləcəyini göstərmək üçün ehtiyac duyduğum funksiyaya malik olan Lego mindstorms EV3 -dən istifadə edərək bu layihəni etdim və mütləq çox kömək edən proqramla tanışam. Kör, Lego dişlilərinin uyğun gəlmədiyi makaranı idarə etmək üçün bir top zənciri istifadə etdiyindən, qərara gəldim ki, ən yaxşı həll, kənarında düzgün top aralığına malik olan dişli dizayn etməkdir. mərkəzi, daha sonra dizaynı 3D olaraq yazdıracağam. Bu nöqtədə bir kalibrləmə düyməsini də düzəltdim və pəncərəmə işıq sensoru əlavə etdim və ləğv etmə düyməsini bağladım.

Addım 3: Kor Ötürücülərin Dizaynı

Kor Ötürücü Dizaynı
Kor Ötürücü Dizaynı
Kor Ötürücü Dizaynı
Kor Ötürücü Dizaynı
Kor Ötürücü Dizaynı
Kor Ötürücü Dizaynı
Kor Ötürücü Dizaynı
Kor Ötürücü Dizaynı

Krankın daha ətraflı şəkildə necə göründüyünü görmək üçün korları sökdüm. Sökülmə zamanı aradığım hissə, gerilmiş bir rulonla tutulan kiçik 16 dişli dişli tapdım. Ötürücünün bir nüsxəsini hazırladıqdan sonra lazım olan Lego uyğun delikləri əlavə etdim, 3 ayrı hissəni çap etdim və nəhayət super yapışqan ilə bağladım. Əvvəlcə Lego hissəsini uyğunlaşdırmaqla bağlı problemlər yaşadım, çünki 3D printerimin "x" çuxurunu kifayət qədər düzəltmək üçün qətnaməsi yox idi, lakin hər iki tərəfindəki dairəvi deliklər ilə heç bir problemi yox idi. Beləliklə, "x" işarəsini dairəvi bir çuxurla əvəz etdim və gözəl çap olundu. Sonra, az miqdarda testdən sonra, torkun və korların çəkisini idarə edə biləcəyini gördüm. Ötürücü dizaynlarımı aşağıda bağlayacağam və ya Thingiverse -də tapa bilərsiniz:

Addım 4: Korların Kodlaşdırılması

Korları Kodlaşdırmaq
Korları Kodlaşdırmaq

Xüsusi bir işıq səviyyəsinə çatdıqda pərdələri avtomatik olaraq açacaq və bağlayacaq bir kod istədim, amma eyni zamanda istədiyi vaxt koru aça və ya bağlaya biləcək bir ləğv düyməsinə sahib idim. GitHub -ı kodun son versiyası ilə əlaqələndirdim:

Layihənin kodunu tamamlamaq bir neçə gün çəkdi, işığın sensoru ilə düzgün işləyən proqramın əsas məntiqinə sahib idim, lakin ani ləğv düyməsi düzgün işləmirdi. Basıldıqda korların vəziyyətini dəyişdirdi, ancaq korların mövqeyində qalacaqlarını ifadə edən "tutma" funksiyası yox idi, yəni korlar dərhal əvvəlki vəziyyətinə qaytaracaqlar. Bunu aşağıda izah edəcəyim işıq sensoru və toxunma sensorunun dəyərlərini oxuyan bir məntiq və ya qapıya bağlı bir "gözləyin" blokundan istifadə edərək düzəltdim.

Kod, mühərrikləri və korları kalibr etməklə başlayır, pərdənin tam açılmasından başlayaraq, altdakı toxunma sensoruna çırpılana qədər endirərək, "RotationsNeeded" olaraq qeyd olunan dibə çatmaq üçün neçə rüb döndüyünü hesablayır. dəyişən Sonra korların vəziyyətini izləmək üçün istifadə olunan "BlindOpen" dəyişəninə "yalan" yazır. Bu nöqtədə kod 4 döngəyə bölünür.

Bu döngələrdən biri, düymənin vəziyyətini davamlı olaraq "ButtonPressed" adlı bir dəyişənə yayımlayan "Buttonstate" döngəsidir. Bu, skriptdə birdən çox düymə blokunun yerləşdirilməsini aradan qaldırır.

İkinci döngə, pəncərəmin xaricindəki işıq səviyyəsini kodun əvvəlində müəyyən edilmiş sabitlə müqayisə edən "İşıq və ya qaranlıq" dır. Nəticə bu sabitdən aşağıdırsa, döngə "ItIsLight" dəyişəninə "yalan" yazacaq, dəyərdən yuxarı olarsa "doğru" yazacaq.

Üçüncü döngədə, korlara nə etməli olduqlarını izah edən 3 variantdan ibarət rəqəmsal bir siyahı var, 0 = kor, 1 = kor, 2 = heç bir şey etmə, çünki kor yerindədir. Döngü, korların etməli olduğu düzgün vəzifəni təyin edən "BlindShould" dəyişənini oxumaqla başlayır, sonra bu vəzifəni yerinə yetirir, "BlindOpen" dəyişənini doğru seçimə dəyişir və sonra "BlindShould" dəyişəninin dəyişdirildiyi yerə boş qalır. təkrar edir. Korları tamamilə açmaq və ya bağlamaq üçün "RotationsNeeded" dəyərindən və +/- 100% gücündən istifadə edir.

Dördüncü və son döngə ən mürəkkəbdir, bütün məlumatları idarə edən və hər bir permütasiya ilə nə edəcəyinə qərar verən "Decider" döngəsidir. Bunu məntiqə əsaslanan "yolda çəngəllər" istifadə edərək edir, burada "düyməyə basıldı", "İşıq səviyyəsi", "Korlar açıqdır" doğru və ya yanlış suallardır. Bütün permütasiyaların 0 = kor aşağı, 1 = kor və ya 2 = heç bir şey etməyən sərt kodlu bir cavabı var - bu dəyər daha sonra əvvəlki bir döngə tərəfindən idarə olunan "BlindShould" dəyişəninə yazılır. Bəzi cavablar daha sonra "ItIsLight" və/və ya "ButtonPressed" dəyişənlərinin ssenarini bitirməzdən əvvəl dəyişməsini gözləyəcək, bu yalnız düymənin aktivləşdirilmiş permütasiyaları üçün keçərlidir, əks halda dərhal mövqeyini düzəltməyə çalışacaq ki, korlar qayıdacaq. orijinal vəziyyətinə. Bu proses daha sonra asanlıqla əlavə edilə bilən və düzəldilə bilən sağlam və nisbətən sadə bir avtomatik sistem etmək üçün döngələnir. Puf.

Addım 5: Toxunuşları bitirmək

Toxunuşları bitirmək
Toxunuşları bitirmək

Daha sonra taxta dübeller və vintlər istifadə edərək "batareyalar" olaraq EV3 -ə 9V enerji təchizatı bağlamağa qərar verdim, bu da məhsulu batareyalarda etibarsız etdi və batareyaları hər iki gündə bir dəyişdirməyimə mane oldu.

Addım 6: Layihənin qiymətləndirilməsi

Düşünürəm ki, layihə ümumilikdə yaxşı keçdi, avtomatik pərdələrin montajı üçün işləyən bir prototiplə başa çatdım, layihə zamanı tapdığım bütün müvafiq məlumatları götürüb son versiyaya tətbiq edə bilərəm. Cihazı uğurla kodladım və sonradan bu günə qədər kodla bağlı böyük bir problem tapmadım. Cihazı vizual olaraq daha cəlbedici etmək istərdim, amma bir daha konsepsiyanın sübutudur və ESP8266 ilə son versiyanı hazırladığım zaman yaxşı görünməsi üçün bir az səy göstərəcəyəm. Layihəni yenidən həyata keçirəndə mühərriki korların içərisində oturacaq şəkildə dizayn edəcəyəm ki, bunu gizlətmək daha asan olar. Öyrəndiyim ən böyük dərs, kodumu tətbiq etməzdən əvvəl məntiqi olaraq düzəltmək və düşünmək, sənədləşdirmək və sınamaqdır.

Tövsiyə: