Breloczek dla psychofana

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.

starwarsscreencaps.com. (c) LucasFilm / Disney

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ąż nie będąc zdecydowanym co do wymiarów – zacząłem pisać kod z założeniem, że kluczowe właściwości breloka (jak grubość czy promień) będę pewnie chciał zmieniać w trakcie „zabawy”. Zacząłem 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 wklęsłości/wypukłości 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 1/2 ś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 😀 (chociaż to zadanie na poziomie 7-8 klasy podstawówki przed reformą edukacji – tej poprzedniej).

//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órzy 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 (tak tak, kliknij tutaj!!!!). W sklepie tym umieszczam modele, które wydrukowane z plastiku trącają tandetą, ale już wydrukowane z metalu dają radę. W tym momencie (sierpień/wrzesień 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!

PS – 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.

PPS – 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.

PPPS – gdy już się raz coś zaprojektuje w 3D, można ten sam model wykorzytać na wiele sposobów – co powiecie na takie gniazdo elektryczne? Lub z czerwonym podświetleniem dla fanów Ciemnej Strony Mocy. Teraz już definitywnie koniec. Cześć!

Nowy sezon

Nowy sezon

Do drzwi zapukał nowy sezon. Nowy sezon drukowania 3D oczywiście, ale przede wszystkim nowa seria prób wyhodowania jadalnych roślin metodą bez użycia gleby. Kontynuuję przygodę, którą rozpocząłem w okolicach kwietnia zeszłego roku. Wydrukowałem sobie wtedy kilka sztuk koszyczków od 3Dponics (pisałem o nich w Działkowcu 3D) i rozpocząłem uprawę rukoli na balkonie. I naprawdę się udało! Tym razem czas na coś większego…

Rośliny osadzone w twardym podłożu korzystają z korzeni jako narzędzia do pobierania wody i soli mineralnych. Składniki potrzebne roślinie do życia i rozrostu pobierane są wraz z wodą, a nie oddzielnie. I na tym właśnie bazuje hydroponika. Stwarza się roślinie możliwość pobierania wody z rozpuszczonymi w niej solami, eliminując funkcję umocowywania rośliny w podłożu. Moja zeszłoroczna rukola mogła więc skupić się na wypuszczaniu bujnych liści zamiast walczyć z glebą w poszukiwaniu życiodajnej wody.

Sukces, jaki odniosłem pozwolił mi na spożywanie własnej rukoli raz w tygodniu od mniej więcej maja do upałów sierpniowych, które niestety „spaliły” moje rośliny doszczętnie. A zaczynałem od nasionek wsadzonych w kostki z wełny mineralnej. Kostki namoczone w wodzie o neutralnym PH „nadziewam” jednym nasieniem i stawiam pod przezroczystym przykryciem. Po kilku dniach oko cieszyła mała roślinka.

hydro_box_openscad

Aby wszystko „trzymało się kupy” zaprojektowałem małe rusztowanie na kostki z wełny mineralnej. Od pewnego czasu staram się wdrażać podejście, zgodnie z którym, gdy robię coś raz, przygotowuję się do ewentualnej powtórki w przyszłości. Dlatego „rusztowanie” zakodowałem w OpenScad (więcej na ten temat w poście o 3D tuningu). Następnym razem wykorzystam ten sam kod zmieniając wartość kilku parametrów i otrzymam model rusztowania na więcej kostek lub z grubszymi ściankami.

Gdy sadzonki osiągnęły odpowiednią wysokość, przeniosłem je do koszyczków od 3Dponics wypełnionych keramzytem (to takie lekkie kruszywo budowlane, doskonale zatrzymujące wilgoć). Te z kolei osadziłem w pudełkach po lodach z jednego z dyskontów (po wcześniejszym wywierceniu dziur w pokrywkach). Na pierwszy raz całkiem spoko, ale jeżeli mam się tym zajmować na serio, to przydałoby się coś wydrukować w 3D, nie? A więc zaprojektowałem i wydrukowałem pojemnik z „dziurawą” przykrywką. Otwór pasuje do wspomnianych już wcześniej koszyczków, a dodatkowo w pojemniku zawarłem miejsce na etykietę. Zainteresowani mogą ściągnąć oba modele (kubek i rusztowanie) z mojego profilu na portalu Thingiverse (odpowiednio tu i tu).

korzenie_hydro

Co więc hodujemy w tym sezonie? Otóż mam dwa mikro drzewka cytryn (bliźniaczki „jednopestkowe”), których uprawę zacząłem jeszcze w październiku zeszłego roku. Trzy sadzonki czerwonej papryki – trzymajcie za nie kciuki, bo wyrosły z pestek papryki kupionej w sklepie osiedlowym w momencie, gdy trzeba było oddać worek pieniędzy za kilo tego warzywa. Nad tymi pracuję od lutego. Jest jeszcze mój najnowszy wynalazek – Pan Brokuł. Jeżeli ten zawodnik przeżyje eksperyment, to po pierwsze udowodnię (w pierwszej kolejności mojej Żonie), że można wyhodować go w warunkach domowych, a dodatkowo okaże się, co warte są kiełki z supermarketu – bo od jednego z nich zacząłem. Poczekamy, zobaczymy…

A dla Was na deser: film z drukowania koszyczków 3Dponics (spoiler: kto wytrwa do końca zobaczy papryki i cytrynę). Czołem!

Zakodowany 3D tuning

Zakodowany 3D tuning

Rozpoczęły się wakacje! Ci z nas, których dzieciństwo przypadało na lata 80 – 90 poprzedniego stulecia pamiętają zapewne zabiegi i gadżety, bez których żaden „poważny” rower nie mógł się obyć. Bardziej sentymentalnym zakręci się łezka w oku, gdy powspominają Wigry 3 i pierwszy tuning, polegający na zdjęciu z niego wszystkiego, co zbędne. I tak poczciwy składak, już bez bagażnika i błotników, nabierał crossowego charakteru – chociaż wtedy takich określeń mało kto używał. Rower miał być fajny, rozpoznawalny i inny niż u kolegi (chociaż jazda bez opon jak u cwaniaka na zdjęciu poniżej to może już lekkie przegięcie…).

chlopaki_na_rowerach
Źródło: images.photo.bikestats.eu

Innym, za to być może bardziej popularnym sposobem na „tuning” roweru były koraliki na szprychy. Ten turkot plastiku, gdy zwalniając podjeżdżałeś do kumpli na osiedlu… Z kumplami, swoją drogą, trwał zażarty handel wymienny. Nie tylko koralik za koralik, ale też koralik za gumę Turbo(!). Mój składak był zielony, więc kolekcjonowałem kulki zielone i czarne, żeby uzyskać coś a’la efekt wojskowego kamuflażu.

Myślicie pewnie, że trochę odjechałem z tymi wspomnieniami. Być może, ale najważniejsze w tym jest to, że od wspomnień, do druku 3D droga okazała się bardzo krótka. Kiedy kilka dni temu przypomniały mi się koraliki, postanowiłem wykorzystać drukarkę 3D i wydrukować sobie kilka sztuk. Zamiast jednak rysować bryłę koralika, zdecydowałem się ją „napisać”. Dokładnie tak: napisać kod, na podstawie którego oprogramowanie komputerowe wygeneruje model 3D koralika, który następnie będę mógł wysłać do drukarki i czekać na efekt.

koralik_openscad

Bardzo przyjemnym i intuicyjnym programem do kodowania modeli 3D jest OpenSCAD. Używanie go, polega na pisaniu skryptu, który następnie zinterpretowany przez komputer, zwraca model 3D. Mój koralik, to w istocie dwadzieścia dwie linijki kodu (nie licząc deklaracji zmiennych), w którym dodawane i odejmowane są od siebie ostrosłupy i walce. Lekcje stereometrii na matematyce w ostatniej klasie 8-letniej podstawówki miały jednak sens!

Druk_3D_koraliki_x4

Drukarka 3D długo jeszcze nie wejdzie do zestawu podstawowych sprzętów domowych. Poza dostępnością maszyn dla przeciętnego gospodarstwa domowego ograniczeniem jest umiejętność modelowania 3D. Lecz jak pokazuje przykład mojego koralika – wystarczy podstawowa znajomość matematyki na poziomie szkolnym i mały opensource’owy program, aby osiągnąć coś naprawdę fajnego!