Telefon i druk 3d

Lasek
Posty: 7
Rejestracja: 11 gru 2016, 16:21
Kontaktowanie:

Telefon i druk 3d

Postautor: Lasek » 25 sty 2017, 23:32

Witam wszystkich!

Szukałem ostatnio jakiegoś programu/rozwiązania imitującego/kopiującego rozwiązania zaprezentowanego w drukarce olo3d/ono3d. Nie wiem czy z braku umiejętności internetowego szukacza czy z braku takich rozwiązań nic nie znalazłem. W związku z powyższym stwierdziłem że napisze coś takiego samemu :)

Poniżej link do filmiku z działania oprogramowania. Tutaj chciałbym zaznaczyć, że oprogramowanie nie jest doskonałe i doskonale zdaje sobie z tego sprawę :) Film jest długi - do +/- 5 minuty pokazane są użyteczności programu. Potem już tylko sekundowe wyświetlanie kolejnych warstw wieży Eifla.

https://www.youtube.com/watch?v=Py6-OpMvx64

Jak to działa?
Model tniemy z wykorzystaniem slicera:
http://lautr3k.github.io/SLAcer.js/
Zapisujemy pocięty model w spakowanym pliku, rozpakowujemy i wrzucamy na telefon w konkretny folder (nazwa nie istotna). Istotne jest żeby zapisać to jako pliki png. Slicer ten zapisuje pliki numerycznie (od 1 do ile tam mu warstw wyjdzie) - jest to bardzo istotne, program wykorzystuje numeracje plików od 1 do zadeklarowanej ilości warstw.

W menadżerze plików na telefonie odkopujemy ścieżkę folderu z pociętym modelem. Niestety na razie nie znalazłem prostszej metody. Znalezioną ścieżkę należy wprowadzić w File Directory w sposób następujący:
- należy rozpocząć od file:///
- potem cała reszta :)
- kończymy /

Program dalej sobie poradzi - dorzuci cyferkę i format :)

Przechodząc do druku należy bezwzględnie połączyć się z wyimaginowaną lub rzeczywistą drukarką poprzez BT. Bez tego dalej nie ruszy. Nie sprawdzałem ale powinno również działać połączenie z komputerem i odpalonym serial monitorem - to też jest istotne, ale zaraz o tym.

I teraz magia przycisków nie jednoznacznych (pomijam set conection oraz orientation):
Home - wysyła po BT:
liczbę 2 - docelowo jako informacja dla sterownika, żeby ruszył się w dół do momentu napotkania endstopu
deklarowaną grubość warstwy
Move UP - wysyła po BT:
liczbę 1 - docelowo jako komendę PODNIEŚ GO GÓRY - WRÓĆ DO WYSOKOŚCI WARSTWY
Print - przechodzi do drukowania - oczekuje na liczbę 3 wysłaną przez BT z kontrolera - jako komendę start druku

Potem dzieje się magia :)
Zaczyna się od czarnego ekranu i odliczania czasu między warstwami(TIME BETWEN LAYER). Potem odpala obrazek, po czasie wyświetlania obrazu (TIME) następuje wyłącznie obrazka, zmiana ścieżki na kolejny plik, wysłanie po BT liczby 1 - tak samo jak w Move UP. I od nowa - czeka, wyświetla, wyłącza... Tak to się kręci do momentu w którym numer odczytanego pliku zrówna się z ilością zadeklarowanych warstw.

Co zostało do zrobienia?
- całą mechanikę (fizyczną drukarkę) odsuwam daleko w przyszłość z powodów zdrowotnych,
- mózg mechanik czyli oprogramowanie arduino/próba wykorzystania istniejącego już rozwiązania
- dopracowanie przedstawionego programu

Jeżeli ktoś jest zainteresowany - mogę wrzucić pliki na forum zarówno apk jak i bardzo prosty i bardzo prymitywny kod dla arduino wykorzystujący moduł BT (HC-05/06). Jedyne co to bym potrzebował instrukcji jak to zrobić :)

Jeżeli ktoś znalazł taki programik to bym był zobowiązany jak by się pochwalił :)

Jeżeli ktoś po obejrzeniu ma jakieś sugestie to niech się śmiało nimi dzieli :)

Pozdrawiam,
Lasek

Awatar użytkownika
Krzysztof
Administrator
Posty: 2790
Rejestracja: 19 kwie 2016, 14:03
Lokalizacja: Darłowo
Kontaktowanie:

Re: Telefon i druk 3d

Postautor: Krzysztof » 26 sty 2017, 6:48

Brawo :OK: :OK: :OK: :OK:
Czyli na chwilę obecną apka wysyła po BT tylko informację o warstwie? Należy zmotać firmware po stronie drukarki, który by ową wartość warstwy zmieniał na ruch silnika? Dobrze zrozumiałem?

Lasek
Posty: 7
Rejestracja: 11 gru 2016, 16:21
Kontaktowanie:

Re: Telefon i druk 3d

Postautor: Lasek » 26 sty 2017, 9:39

Dokładnie tak :) plus jeszcze info kiedy ma się podnosić.

Docelowo fajnie by było wyeliminować składową Time Between Layer - tj wysyłam info do kontrolera żeby podnieść warstwę wyżej po czym jak kontroler zrobi swoje (ustawi się na wyższej warstwie) wysyła info do programu że można wyświetlać kolejną warstwę.

To są szczegóły :) na razie i tak jestem,może nie w pełni ale jednak, zadowolony z efektu który osiągnąłem - większość użyteczności drukarki :)

Lasek
Posty: 7
Rejestracja: 11 gru 2016, 16:21
Kontaktowanie:

Re: Telefon i druk 3d

Postautor: Lasek » 26 sty 2017, 13:54

Tak się zacząłem zastanawiać nad możliwością wykorzystania RAMPSA jako sterownika.

Z tego co wyczytałem istnieje możliwość podłączenia modułu bt. Problemem jest jednak obsługa komend gcodu. Gdy łącze się przez arduino ide i w tamtejszym serial monitorze wklepuje komendy (proste przesunięcie G1 Z10) nic się nie dzieje. Dodanie na start komendy M80 (power on) też nic nie zmienia. Tak samo komenda na włączenie krokowców.

Komendy nie dają efektu zarówno w serial monitorze arduino IDE jak i Advanced Serial Port Terminal, za to z ponterface działają aż miło :)

Czy ktoś się może bawił w uruchamianie i poruszanie drukarką z wykorzystaniem komend gc poprzez serail monitor? Jeśli tak to czy jest jakaś sekwencja komend na "uruchomienie" i dopiero potem ślemy szlaczki żeby wprawić to w ruch? Czy kwestią może być kodowanie? Tj komendy wysyłam jako zwykły text, może trzeba to posłać w Hex? Z tego co czytałem podobno obsługuje zwykłe komendy tekstowe (G0 Z10) jednak pewnym nie jest.

Garreth
Posty: 974
Rejestracja: 20 kwie 2016, 6:59
Lokalizacja: Katowice
Kontaktowanie:

Re: Telefon i druk 3d

Postautor: Garreth » 26 sty 2017, 16:10

Co do wysyłania komend przez serial to nie powinno być żadnego problemu. M80 nie musisz wysyłać bo to jest power on ale dla zasilacza (jak masz zasilacz typu ATX na przykład, który chcesz włączać z poziomu płytki, to wtedy tego używasz).

G1 Z10 może nie działać jak nie masz osi udomowionej, zależy od ustawień firmware. Ale generalnie ruchy powinny działać. Istotne jest abyś wybrał w serial monitorze dobrą prędkość transmisji, bo inaczej nic nie wyślesz ani nie odbierzesz (albo odbierzesz krzaki).

Co do wykorzystania RAMPS to pamiętaj, że jest to tylko nakładka na arduino, nie musisz używać repetiera/marlina na niej, tylko można napisać dowolny program, który będzie robić to samo. Wiadomo, że użycie odpowiednio spreparowanej wersji repetiera byłoby całkiem wygodne, ale niestety modyfikowanie go pod własne funkcje już może się okazać trudniejsze.

Lasek
Posty: 7
Rejestracja: 11 gru 2016, 16:21
Kontaktowanie:

Re: Telefon i druk 3d

Postautor: Lasek » 27 sty 2017, 2:22

Garreth,
dzięki za informacje. Szybkość transmisji na pewno była jakimś problemem :) W serial monitorze arduino IDE nadal mam krzaczki (pewnie można gdzieś tam zmienić prędkość) natomiast w zewnętrznym terminalu wyrzuciło mi piękne info o drukarce :) nie zmienia to jednak faktu, że Marlin był głuchy na me kody :) poprzez udomowienie miałeś namyśli z homowanie osi? Jeśli tak, to ta komenda też nie burzy. Z ponterem nic się nie zmieniło nadal śmiga jak złoto.

Myślałęm o wykorzystaniu rampsa + marlina z tego względu że:
- obsługuje g-code
- ma wszytkie potrzebne użyteczność, tj homowanie osi, ładnie zrobioną ilość kroków na mm, ruch osi w odpowiednim kierunku. endstopy,
- ale przede wszystkim ze względu na to że przerażała mnie opcja obsługi krokowca :D
Serio, z początku myślałem o wykorzystaniu 28BYJ-48 z dedykowanym sterownikiem. Jednak znalezione (mimo wszystko bardzo dobre) źródło utwierdziło mnie w tym że sterowanie korkowcem to jakaś maszkara jest i tyle :)

W każdym razie porzuciłem te myśli w sytuacji gdy straciłem w cholerę czasu a RAMPS nadal mnie nie słuchał :) Napisałem coś swojego, poniżej link z działania, o wiele krótszy niż wczorajszy :)
https://www.youtube.com/watch?v=qCe2RYPE5Hs

Jeśli chodzi o diodki - sterowanie silnikiem za pomocą A4988 (to jest magia - mam nadzieję że obsługa tego jest tak prosta jak mi się wydaje :))- zielona wejście step oraz czerwona wejście dir - z tego co zrozumiałem z informacji znalezionych w internetach - czerwona świeci/nie świeci daje różne kierunki kręcenia :) do tego dorzuciłem zmienną pozwalającą z poziomu softa deklarować w którą stronę jak się rusza, dość prymitywne ustawienia kroków na mm (mam nadzieję że to zadziała) oraz obsługę endstopa. Nie mam niestety na razie odpowiedniego zasilacza + kondensatora, a większość znalezionych materiałów mówi żeby bez tego drugiego nie podłączać bo sie może coś spalić. Co prawda, tak samo mówili o module BT a ten nadal działa :). Tak więc w poniedziałek mam nadzieje zrobić próby z silnikiem.

Dodatkowo przemodelowałem trochę program. Teraz wprowadzamy wartości: czasu naświetlania, grubości warstwy, dystansu na jaki ma się podnieść po wyłączeniu wyświetlania, oraz ilości warstw.

W obsłudze druku komenda home wyrzuca ruch do momentu napotkania endstopa, Send data wysyła niezbędne info do sterownika (h warstwy, h podniesienia) a print odpala stoper nie czekając na info z kontrolera - powód tej zmiany jest bardzo prozaiczny - tack switch mnie pokonał mimo szeroko udokumentowanych źródeł w internecie :<. Po tym czarny ekran, komenda na podniesienie i opuszczenie do pierwszej warstwy i zaczyna świecić :)

Co zostało do zrobienia?
To co mi się nie podoba to komendy i ich odczyt. Niestety z komunikacją BT między urządzeniami bawię się od kilku dni z powodu tego programu i po prostu nie wiem/nie potrafię sobie wyobrazić :D jak wysyłac pełne komendy tekstowe a'la gcode. O odbieraniu takowych nawet nie wspominając :) Wyrzuca to też pewne kwiatki. Przy opcji Send data czasami zapisują się wartości -1 co ogólnie nie najlepiej wpływa na poprawną pracę kontrolera. Do dopracowania.

Garreth
Posty: 974
Rejestracja: 20 kwie 2016, 6:59
Lokalizacja: Katowice
Kontaktowanie:

Re: Telefon i druk 3d

Postautor: Garreth » 27 sty 2017, 4:29

Jeszcze problemem mogą być znaki zakonczenia linii. Postaram sie w weekend to sprawdzic:)

Awatar użytkownika
Veeteck
Posty: 4
Rejestracja: 04 maja 2016, 12:56
Lokalizacja: W-wa
Kontaktowanie:

Re: Telefon i druk 3d

Postautor: Veeteck » 27 sty 2017, 10:02

Do takiego projektu pewnie wygodniej byłoby użyć np. ioio. Używałem tego i ma tą zaletę, że masz tylko jeden kod java w aplikacji na Androidzie, który bezpośrednio steruje hardwarem podłączonym do ioio. Do ioio są biblioteki do serw, silników krokowych itd. To znacząco upraszcza programowanie.

Lasek
Posty: 7
Rejestracja: 11 gru 2016, 16:21
Kontaktowanie:

Re: Telefon i druk 3d

Postautor: Lasek » 27 sty 2017, 21:56

Veeteck, pewnie tak, tylko wymagało by to kolejnego research'u co jak gdzie itp. Padło na arduino i BT :)

Wszystko co do tej pory powstało:

https://github.com/LesnyDziadu/Phone_3d_Printer

Czyli:
- apka na androida,
- kod do sterowania krokowcem (do sprawdzenia czy rzeczywiscie nim steruje :))
- kod źródłowy apki, żeby go otworzyć trzeba udać się na stronę MIT App Inventor 2.0 : http://appinventor.mit.edu/explore/

Awatar użytkownika
g4ever
Posty: 428
Rejestracja: 19 kwie 2016, 21:47
Kontaktowanie:

Re: Telefon i druk 3d

Postautor: g4ever » 27 sty 2017, 22:23

A czy uwzględniłeś czas między startem druku a pierwszą warstwą by użytkownik miał czas ustawić telefon pod pojemnikiem z żywicą?


Wróć do „Elektronika”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości