Breloczek dla psychofana

Kto lubi Gwiezdne Wojny ręka do góry! Pozostałych również zachęcam do lektury. Będzie o breloczkach, kodowaniu geometrii, druku z metalu i nikomu niepotrzebnej wiedzy, z której korzystanie daje satysfakcję i trochę frajdy. Ach i o Gwiezdnych Wojnach oczywiście też.

Nawet Ci, którzy z Gwiezdnymi Wojnami są na bakier, kojarzą R2-D2. Taki mały, srebrno biało niebieski robocik, a dokładniej droid naprawczy. Dla nieobeznanych – wymawia się to artu-ditu, aczkolwiek mam w domu książkowe wydanie „Gwiezdnych Wojen” z 1990 roku (a dokładnie przekładu tej książki), gdzie tłumacz wymyślił sobie Erdwa Dedwa, a także Ce Trzypeo. Zakończę ten akapit milczeniem.

Wracając do meritum – R2-D2 ma niezwykłą umiejętność podłączania się do systemów komputerowych na statkach i stacjach kosmicznych, a w konsekwencji ratowania pozostałych bohaterów z opresji. Odbywa się to poprzez obchodzenie zabezpieczeń, otwieranie lub zamykanie grodzi, a nawet wyłączanie systemu utylizacji odpadów. Do podłączania się do systemu, droid wykorzystuje jedno ze swoich ramion, które wkłada do interfejsu, a następnie kręci nim w lewo i prawo, do uzyskania co tam akurat potrzeba. Ramię to wygląda trochę jak przerośnięta wtyczka typu jack.

Inspiracją dla breloka, o którym jest ten wpis, nie jest ramię R2-D2, lecz właśnie wygląd interfejsu, do którego droid się podłącza. Ten swoisty port USB wygląda jak kilka koncentrycznych pierścieni o nierównej powierzchni, które przekręcają się niezależnie od siebie w momencie, gdy port jest w użyciu. Jedna z mobilnych gier ze świata Gwiezdnych Wojen wykorzystuje ten pomysł na ekranach ładowania. A ja postanowiłem zrobić z tego breloczek.

Uwaga: teraz będzie nuda na temat tego w jakiś sposób breloczek został zaprojektowany. Jeżeli Cię to nie interesuje, możesz przeskoczyć do ostatniego akapitu.

Gdy postanowiłem przygotować model, wizja w głowie była prawie w całości wyklarowana. Nie wiedziałem jednak jakiej wielkości ma on być. Aby zapewnić sobie elastyczność – postanowiłem użyć programu OpenScad i napisać kod, który wygeneruje dla mnie model.

Wciąż jednak nie będąc zdecydowanym co do wymiarów – zacząłem pisać kod z założeniem, że kluczowe właściwości breloka (grubość, promień) będę pewnie chciał zmieniać w trakcie. Zacząłem więc od definicji zmiennych odpowiedzialnych za wspomniane wymiary. Decyzje o tym czy przez środek ma być otwór czy też nie, również postanowiłem zostawić na później. Podobnie kwestie wystawania pierścieni budujących brelok.

Początkowa lista zmiennych

h = 2.5; //wysokość bazy breloka
dpod = 30; //średnica bazy
otw = 1; //1 – otwór w środku, 0 – brak otworu
ip_wew = 1; //1 – pierścień wystający, 0 – pierścień wklęsły
ip_sro = 1; //1 – pierścień wystający, 0 – pierścień wklęsły
ip_zew = 1; //1 – pierścień wystający, 0 – pierścień wklęsły

Konstrukcję modelu wymyśliłem tak, żeby najpierw napisać kody tworzące jego elementy, a następnie brelok z nich poskładać. Zaczynając od bazy, która jest różnicą między cylindrem o wysokości h i średnicy dpod, a cylindrem o średnicy równym 3/14 średnicy breloka. Jak widzicie poniżej, dzięki zastosowaniu wyrażenia if, kwestia czy brelok posiada otwór w środku, czy też go nie ma, zależy od zmiennej otw zdefiniowanej na początku.

//baza breloka
module
baza(otw) {
    difference () {
        cylinder(h, d=dpod, center=true);
        if (otw==1) cylinder(h, d=dpod*1.5/7, center=true);
    };
};

W następnej kolejności przygotowałem kod definiujący pierścienie. Każdy z nich to różnica cylindra o średnicy równej finalnemu pierścieniowi oraz wycinków nadających mu finalny kształt. Na przykładzie pierścienia wewnętrznego: zaczynam od cylindra o średnicy równiej ½ średnicy bazy, odejmuję cylinder o średnicy 3/14 średnicy bazy, tworząc w ten sposób pierścień. Ponieważ każdy z elementów, który koduję, zawsze ustawiony jest centralnie, odejmuję dodatkowy pierścień o grubości równej ułamkowi bazy – to taki techniczny element, nie wnoszący nic do ostatecznego wyglądu. Pierścień ma mieć wycinki, które spowodują, że na całym obwodzie postaną wyrwy (schody). W tym celu w kodzie znajdują się funkcje wycinek, o których za chwilę.

//pierścień wewnętrzny
module p_wew() {
    difference () {
        cylinder(h*1.7, d=dpod*3.5/7, center=true);
      cylinder(h*1.7, d=dpod*1.5/7, center=true);
      cylinder(h*1/1.7, d=dpod, center=true);
      wycinek(25, 1, 15);
      wycinek(65, 1, 15);
      wycinek(115, 3, 15);
      wycinek(185, 5, 15);
    };
};

Aby uzyskać wycinek koła w OpenScad, należy znaleźć część wspólną koła i trójkąta, w którym jeden z wierzchołków leży dokładnie na środku koła, a dwa pozostałe znajdują się poza jego obwodem. Łatwiej napisać niż uzyskać…w szczególności trójkąt. Ja wykombinowałem to tak: biorę kwadrat o boku x, ustawiony jednym wierzchołkiem na przecięciu osi układu współrzędnych. Następnie biorę drugi kwadrat, tym razem o boku 2x, ustawiony podobnie jak poprzedni, i przekręcam go o y stopni w prawo względem wspólnego wierzchołka obu figur. Odjęcie drugiego kwadratu od pierwszego pozostawia trójkąt prostokątny z jedną z przyprostokątnych o długości boku pierwszego kwadratu, czyli x, oraz kątach y, 90-y oraz 90 stopni. Jeżeli udało Ci się przebrnąć przez ten akapit, to zgodzisz się, że brzmi niezwykle beznadziejnie. Wybacz, ale musiałem go zostawić, bo z tej części kodu jestem wyjątkowo dumny 😀

//wycinek
module
wycinek (rot, wyc, wrot) {
    rotate(-rot) {
        linear_extrude(h*3, center=true) {
            difference () {
                square([dpod, dpod]);
                rotate(-wrot*wyc) {
                    square([dpod*2, dpod*2]);
                };
            };
        };
    };
};

Pierścienie są więc ostatecznie budowane poprzez odejmowanie od siebie cylindrów i wycinków.

To już prawie koniec! Zostaje złożenie całości i dorobienie oczka (bo każdy breloczek musi mieć oczko). Lecz…nie byłbym sobą, gdybym to tak zostawił. Przecież w tym momencie awers i rewers breloka są identyczne. Musiałem więc przekręcić jedną ze stron względem osi przebiegającej prostopadle przez środek breloka. Odbyło się to przy użyciu dwóch sześcianów, ustawionych symetrycznie względem płaszczyzny xy. Ostatecznie brelok jest złożony z dwóch części wspólnych konstrukcji i wspomnianych sześcianów.

//brelok finalny
module brelok() {
    union () {
        //górna część
        intersection () {
            brelok_start();
            translate([0, 0, dpod*1.5/2]) cube(dpod*1.5, center=true);
        };
        //dolna część przekręcona o 65 stopni
        rotate([0,0,65]) intersection () {
            brelok_start();
            translate([0, 0, dpod*1.5/2]) cube(dpod*1.5, center=true);
        };
    };
};

Całość kodu wygląda tak:

Uffff. Ciekawe jaka jest szansa, że ktokolwiek dotrze do tego miejsca (poza tymi, co przeskoczyli większość treści zgodnie z sugestią). Nieszczęśnicy który dotrą tu, dowiedzą się, że zaprojektowany przez autora brelok można mieć! Prawdziwy, niepowtarzalny i do tego metalowy! Ponieważ autor, znaczy się ja, otworzyłem kiedyś sklep (za duże słowo) na portalu Shapeways.com. W sklepie tym umieszczam modele, które wydrukowane z plastiku trącają tandetą, ale już wydrukowane z metalu dają radę. W tym momencie (lipiec/sierpień 2018) umieszczone są tam wisiorki inspirowane wiedźmińskimi znakami. Przy każdym zamówieniu, z kwot które tam widzicie tylko kilka $ trafia do mnie. O dziwo parę osób je już sobie zamówiło i chyba nawet noszą. Ja noszę swój Quen od czasu do czasu, jak nie zapomnę założyć. Albo, gdy potrzebuję dodatkowej ochrony przed złem tego świata – znaczy mam w pracy spotkania z ludźmi z innej planety. Natomiast breloczek będę nosił ZAWSZE! (jak już go zamówię i przyjdzie). To tyle na dziś. Dziękuję za wspólnie zmarnowany czas. Paaa!

PS1 – Słowem wyjaśnienia tytułu posta:

Słyszałem kiedyś, że każdy ma ulubionego Beatlesa. Prawda to czy nie – nie ma to większego znaczenia, aczkolwiek z tym zespołem właśnie związane jest określenie „psychofan”, którego użyłem w tytule tego posta. Chciałem bowiem pewnego razu sprezentować małżonce jakiś „the best of” Beatlesów. Poszedłem w tym celu do jednego z „dobrych sklepów muzycznych”, gdzie udało mi się zlokalizować coś na oko odpowiedniego. Zadowolony idę do kasy, a tu uśmiechnięty, długowłosy pan, patrząc na to, co chcę kupić, wita mnie słowami: „O! Coś dla psychofanów!”. Nie bardzo wiedziałem, o co mu chodzi. Może to nie było do mnie? Nie przejmując się zbytnio, poszedłem zadowolony do domu. Misja wykonana! Niestety pan kasjer miał rację. Okazało się, że mój „best of” był w istocie zbiorem niepublikowanych wcześniej, krótkich, nie dłuższych niż 2-3 minuty, nagrań zarejestrowanych podczas wizyt zespołu w studiu BBC. Warto czytać spis utworów.

PS2 – zacząłem pisać ten post o godzinie 3:18 z poniedziałku na wtorek. Starsza (chociaż niespełna 2 lata) córka nie śpi od godziny 2. Obudził ją deszcz. Młodszą Żona nakarmiła i obie śpią. A ja czuwam. Rodzina Mocą silna.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *