Początki tego projektu sięgają kilku lat wstecz – autor konstrukcji zbudował już w 2020 roku podobne urządzenie, jednak było ono bardzo proste i pozbawione wielu możliwości, jakie ma najnowsze opracowanie. Obecna konstrukcja jest kompaktową i unowocześnioną wersją urządzenia skonstruowanego w 2020 roku, które samo było zainspirowane reklamowanym w 2019 r. urządzeniem SANDSARA sfinansowanym w ramach kampanii crowdfundingowej w 2019 roku.
Przeprojektowanie trzyletniej konstrukcji zajęło autorowi sześć miesięcy. Po zakończeniu konstrukcji, którą dokumentował na swoim blogu, przygotował kompletny opis konstrukcji, który zawiera zestaw informacji dotyczących budowy tego układu.
Potrzebne elementy
Do zbudowania urządzenia potrzebna będzie drukarka 3D do wydrukowania szeregu elementów mechanicznych oraz narzędzia do lutowania, aby zmontować elektronikę do kontroli silników. Ponadto, potrzebne będą:
- moduł ESP32 DevKit V1,
- dwa moduły TMC2208 lub TMC2209 – sterowniki silników krokowych,
- dwa silniki krokowe w rozmiarze NEMA 17,
- dwie krańcówki z magnesami (sensory Halla),
- sensor światła TSL2561,
- panelowe złącza USB-C oraz zasilania DC,
- płytka drukowana dla układu (autor udostępnia projekt odpowiedniej płytki PCB),
- około 1 metra paska LED RGBW SK6812 – autor zastosował wersję z 144 diodami na metr,
- złącza JST z dwoma, trzema, czterema i pięcioma pinami oraz pasujące do nich gniazda SMD,
- 4-calowe (100 mm) łożysko z podstawki obrotowej,
- śruby M3 i inserty M3 do osadzania na ciepło,
- pasek GT2 o długości 400 mm oraz pasujące do niego koła zębate.
Projekt elementów mechanicznych
Zaprezentowany robot do kinetycznej rzeźby zaprojektowany został tak, aby był wyjątkowo smukły. Po złożeniu cały układ ma mieć nie więcej niż 75 mm wysokości. Z uwagi na to w systemie jest wiele nakładających się na siebie części, głównie w miejscach, w których duża przekładnia theta mocuje się do płyty podstawy. Cały robot został zaprojektowany od podstaw w Fusion 360, a jego projekt jest udostępniony za darmo za pośrednictwem Fusion Team (link znaleźć można na stronie z projektem).
Po ściągnięciu projektu łatwo zauważyć, że jest to… 55 wersja tego projektu. Jak sam autor przyznaje: „Spędziłem w fazie projektowania więcej, niż chciałbym przyznać”. Projekt rozpoczął się od zgrubnego szkicu kształtu obudowy, a następnie została ona podzielona wzdłużnie, aby zapewnić możliwość łatwego drukowania. Następnie zaprojektowana została podstawa robota, wymodelowane zostało miejsce na duże łożysko do obrotu całości wokół własnej osi i dodany został centralny zestaw kół zębatych.
Projekt całego układu pokazano na rysunku 1a. Dodatkowo na rysunku 1b oraz 1c widać, odpowiednio, przekrój przez kluczowe elementy oraz widok rozstrzelony układu.
Wydruk w 3D
Całość została wydrukowana z użyciem czarnego tworzywa ABS firmy Polymaker z wypełnieniem typu gyroid w wysokości od 30% do 50%, w zależności od części. Na ogół wyższe wypełnienie dotyczyło elementów wewnętrznych, przenoszących naprężenia i siły w układzie, a sama zewnętrzna obudowa wydrukowana została z najmniejszym wypełnieniem, jakie pozwalało zachować jej sztywność.
Do wydrukowania elementów autor zużył niemalże 3 kg filamentu, który zakupił specjalnie do tego projektu. Dobrze jest zaopatrzyć się w odpowiednią ilość filamentu do druku, aby mieć zapas na wypadek jakichś awarii podczas drukowania itp. Autor wskazuje, że jeśli chodzi o druk, to PLA radziłby sobie lepiej jako materiał, szczególnie pod względem wypaczania się wydruku na skutek stygnięcia, jednak w tym projekcie zależało mu na właściwościach strukturalnych tworzywa ABS, stąd taka decyzja dotycząca materiału.
Montaż urządzenia
Podczas montażu należy zamontować 4-pinowe złącza JST do silników krokowych, 5-pinowe złącze do czujnika światła TSL2561 oraz 3-pinowe do obu krańcówek magnetycznych i paska LED. Następnie można zainstalować silnik krokowy theta za pomocą śrub z łbem stożkowym M3 do podstawy robota.
Następnie na oś silnika zakładane jest koło pasowe GT2 i mocowane obrotowe łożysko zarówno do dużego centralnego koła zębatego osi theta, jak i do dolnej płyty podstawy. Wszystko montowane jest za pomocą śrub M3. Łożysko wskoczy na swoje miejsce i nie powinno się chybotać. W dokumentacji w Fusion dostępna jest opcjonalna przekładka, której można użyć, jeśli tak nie jest. Oś liniowa i szyny prowadzące wkręcają się bezpośrednio w górną część przekładni theta za pomocą śrub M3 i insertów osadzanych termicznie w wydruku 3D. Po złożeniu ten zespół powinien wyglądać, jak pokazano na fotografii 1. Widoczny jest zamocowany na końcu jednego z ramion magnes, który odpowiada za ruch kulki w piasku.
Po zamontowaniu elementów mechanicznych można obsadzić w podstawie krańcówki. Zawierają one czujniki Halla, które aktywują się w pobliżu pola magnetycznego magnesu. Jeden czujnik zainstalowany jest bezpośrednio w maleńkim otworze przy środku, aby wyczuć, kiedy przekładnia theta dotarła do znanej pozycji.
W pełni zmontowana płyta podstawy robota po prostu wsuwa się w środek dolnej połowy obudowy. Wystarczy umieścić górną połowę obudowy na dolnej połowie i można przykręcić ją za pomocą insertów osadzanych na ciepło w wydruku i 12 śrub M3 o długości 10 mm. Zmontowany moduł pokazano na fotografii 2. Na pokazany element zakładany jest jeszcze pojemnik na piasek. Aby kulka rzeźbiąca w piasku poruszała się bez oporów i hałasów, na dnie pojemnika autor wkleił cienki filc, który przykrył piaskiem. Aby konstrukcja wyglądała jeszcze ciekawiej, piasek został podświetlony łańcuchem LED, umieszczonym w pojemniku. Jego wklejenie powinno być ostatnim krokiem montażu części mechanicznej.
Ostatnim etapem jest nasypanie drobnego piasku do przygotowanego pojemnika – autor zastosował zwykły piasek ogrodowy ze sklepu budowlanego, ale nic nie stoi na przeszkodzie, aby zastąpić go np. kolorowym piaskiem akwarystycznym, jasnym i bardzo drobnym piaskiem kwarcowym itp. Ostatecznie na piasku umieszczana jest stalowa kulka (koniecznie z normalnej stali, która jest ferromagnetyczna, a nie np. stali nierdzewnej). Poruszający się pod spodem magnes będzie wodził kulką po piasku, która będzie żłobiła w nim ślady. Finalny system pokazano na fotografii 3 oraz 4.
Sterowanie elektroniczne
Kinetyczna rzeźba jest sterowana prostym układem, który zawiera zaledwie kilka modułów. Centralnym elementem jest moduł ESP32DevKit V1, do którego podłączone są pozostałe elementy – dwa sterowniki silników krokowych (TMC2208), gniazda karty SD, krańcówek i diod LED ES2812. Schemat układu pokazany jest na rysunku 2.
System zasilany jest z zewnątrz, z zasilacza DC, dołączonego poprzez gniazdo H1. W układzie znajduje się przetwornica step-down typu Buck, która stabilizuje napięcie zasilania 5 V dla całego systemu.
Płytka drukowana
Dla uproszczenia konstrukcji autor umieścił wszystkie moduły na jednej wspólnej płytce. Na płytce znajdują się też gniazdka, przeznaczone do podłączenia elementów zewnętrznych, takich jak dwa silniki krokowe, krańcówki, czujnik natężenia oświetlenia otoczenia (do dostosowywania natężenia światła z LED-ów) i diody LED. Projekt płytki pokazano na rysunku 3.
Płytka została zamówiona w profesjonalnej fabryce i wykonana z czarną, matową soldermaską, dzięki czemu lepiej pasuje wizualnie do reszty elementów. Gotową płytkę drukowaną pokazano na fotografii 5.
Przy projektowaniu płytki do modułu ESP32 istotne jest, aby sekcja tego modułu z anteną wystawała poza obrys laminatu (najlepiej) lub przynajmniej część w otoczeniu anteny Wi-Fi była pozbawiona ścieżek, wylewki masy itd. Ma to zagwarantować poprawne działanie sekcji radiowej modułu. Podobnie jest z montażem gniazda karty SD – musi ono umożliwiać dostęp do karty SD, szczególnie, że taki sam dostęp zapewniać musi obudowa. Nazwa znajdująca się na PCB – „oasis”, to pierwotna nazwa projektu. Autor zmienił nazwę na „Tranquil”, ale jest ona obecna jedynie w oprogramowaniu.
Montaż PCB był bardzo prosty. Na płytce obsadzono drivery silników, moduł ESP32 i złącza JST. Dodano opcjonalne gniazdo kart SD. Złącze przylutowane zostało ręcznie za pomocą cienkiej końcówki lutownicy i topnika no-clean. Jest to dosyć delikatny element do montażu powierzchniowego, więc jego zalutowanie, jako jedynego elementu, może być pewnym wyzwaniem.
Interfejs webowy
Interfejs sieciowy do kontroli aplikacji został napisany przez autora od podstaw przy użyciu TypeScript i Vue 3. Zarządzanie stanem odbywa się za pomocą Pinia, a pobieranie danych realizowane jest za pomocą zestawu przechwytywaczy zapytań (request interceptor) Axios.
Kod interfejsu webowego znajduje się w repozytorium tranquilvue autora (link do repozytorium znajduje się na końcu artykułu). Wystarczy sklonować repozytorium z GitHuba i zbudować ten projekt, aby kontynuować prace nad przygotowaniem oprogramowania dla układu dalej. Jeśli pracujemy pod Linuxem, aby zbudować ten pakiet, wystarczy w linii komend, znajdując się w folderze sklonowanym z repozytorium, wpisać następujące polecenie: yarn && yarn build.
Wygenerowane pliki kompilacji zapisywane są w katalogu ./dist. Jeśli chcielibyśmy to samo zrobić na komputerze z Windowsem, musimy najpierw zainstalować menedżer pakietów Yarn, a następnie możemy przeprowadzić analogiczną operację.
Interfejs webowy pokazany jest na rysunku 4. Widoczne tam wzory nie są zawarte domyślnie w oprogramowaniu – trzeba je pobrać z Internetu. Interfejs tylko wyświetla wzory, które zainstalowane są na urządzeniu.
Oprogramowanie
Oprogramowanie modułu zawiera standardową instalację PlatformIO. Samo oprogramowanie zostało napisane od nowa, prawie od podstaw. Autor pracuje nad nim już od co najmniej roku. Jest to normalny projekt dla PlatformIO i można go pobrać ze strony z projektem, z repozytorium TranquilFirmware autora na GitHubie.
Wystarczy teraz przeciągnąć zbudowane wcześniej zasoby interfejsu webowego do katalogu z projektem PlatformIO, a PlatformIO automatycznie przeniesie je na partycję SPIFFS w module ESP32.
Po zainstalowaniu oprogramowania układowego urządzenie skonfiguruje własny punkt dostępowy o nazwie Tranquil, w którym zostanie wykonana cała początkowa konfiguracja. Możesz następnie podłączyć urządzenie do naszego Wi-Fi, skonfigurować aktualizacje OTA, a nawet skonfigurować układ jako klienta WireGuarda (VPN), co opisano w kolejnym akapicie.
Konfiguracja WireGuard
WireGuard to szybki, prosty i nowoczesny tunel VPN (Virtual Private Network), który umożliwia bezpieczne i prywatne połączenie między różnymi urządzeniami w Internecie. Został stworzony jako alternatywa dla tradycyjnych narzędzi VPN, takich jak OpenVPN czy IPSec, i jest uważany za bardziej wydajny, bezpieczny i łatwiejszy w konfiguracji. Z tego powodu autor powyższej konstrukcji zdecydował się na implementację jego wsparcia w systemie.
Aby skonfigurować VPN w urządzeniu, należy przejść do karty ustawień urządzenia i wprowadzić odpowiednią parę kluczy oraz informacje o punkcie końcowym, aby robot mógł dołączyć do zdalnej podsieci WireGuard. Widok tych ustawień pokazano na rysunku 5. Autor wdrożył to rozwiązanie, ponieważ uczelnia, do której będzie niebawem uczęszczać, wdraża izolację klientów w swojej sieci, a bez tego nie miałby możliwości kontrolowania robota w akademiku. Ma to jednak o wiele więcej zastosowań – pozwala na opracowanie VPN, który umożliwi dostęp do konfiguracji i sterowania naszą kinetyczną rzeźbą z dowolnej sieci na świecie.
Gotowe urządzenie
Po zakończeniu budowy i programowania urządzenia można je skonfigurować do działania. Początkowo urządzenie uruchomi własny punkt dostępu o nazwie Tranquil, w którym zostanie wykonana cała początkowa konfiguracja. Moduł można podłączyć do Wi-Fi, skonfigurować aktualizacje OTA, a nawet skonfigurować opisanego powyżej klienta WireGuard. To wszystko zapewnia bardzo dużą elastyczność układu i łatwe jego sterowanie.
Nikodem Czechowski, EP
Źródła: