• Nie Znaleziono Wyników

Przystosowanie drukarki 3D do pracy w „Internecie Rzeczy”

Bartosz Poskart1, Grzegorz Iskierka1, Maciej Habiniak1, Paweł Krowicki1

Streszczenie: W artykule przedstawiono przystosowanie drukarki 3D do pracy w Internecie Rzeczy (IoT – Internet of Things). Zastosowane algorytmy i modernizacje zwiększają zakres i efektywność pracy urządzenia. W kolejnych rozdziałach wskazano również potencjalne przykłady zastosowania i korzyści płynące z wdrożenia opracowanej modernizacji.

W dalszej części przedstawiono dostosowanie drukarki TEVO TARANTULA do pracy w Internecie Rzeczy poprzez integrację z mikrokomputerem Raspberry Pi 3 model B. Dla wspomnianego mikrokomputera opracowano i zaimplementowano algorytmy komunikacyjne służące do wymiany informacji Raspberry Pi - chmura - użytkownik.

Następnie zaprezentowano wykonane modyfikacje oraz przeprowadzone testy urządzenia działającego w IoT.

Słowa kluczowe: Druk 3D, Internet Rzeczy, Technologie przyrostowe.

Wprowadzenie

Obecny trend Internetu Rzeczy (IoT - Internet of Things), wdrażany jest w coraz to nowsze zastosowania. Idea łączenia urządzeń i przesyłania pomiędzy nimi danych tworzy możliwość rozbudowy i modyfikacji systemów, w efekcie czego uzyskuje się wymierne korzyści. Zebrane dane eksploatacyjne mogą służyć do wyznaczania modeli matematycznych zużycia, prognozując czas wystąpienia awarii na podstawie danych statystycznych całej populacji. Istnieje również możliwość zewnętrznego przechowywania danych (modele, parametry pracy, konfiguracje), a nawet udostępnianie ich innym użytkownikom. Kierunki rozbudowy urządzeń poprzez implementacje IoT są ogromne przyspieszając rozwój funkcjonalny urządzenia, generuje duże przychody często wymagając małych nakładów pracy (np. nowa wersja programu).

Inną szybko rozwijającą się technologią jest druk 3D. Głównie za sprawą projektu RepRap, a więc chęci stworzenia maszyny samoreplikującej się, technologie addytywne (najczęściej Fused filament fabrication FFF) są osiągalne cenowo i coraz częściej wykorzystywane przez hobbystów i studentów w projektach prototypowych. Zaletą wykorzystywania technologii druku 3D jest stosunkowo krótki czas od momentu powstania pomysłu do wykonania pierwszego prototypu.

Istnieje możliwość wielokrotnego modyfikowania i testowania danego elementu dzięki stosunkowo niskiej cenie materiału, z którego wytwarzane są części. Najtańszą pod względem eksploatacyjnym jednocześnie najłatwiejszą do opanowania metodą jest druk z tworzyw termoplastycznych – FFF.

Tylko niewielka część komercyjnie sprzedawanych drukarek 3D przeznaczonych do zastosowań hobbystycznych przystosowana jest do pracy w Internecie Rzeczy. Funkcjonalność IoT w komercyjnie dostępnych rozwiązaniach sprowadza się głównie do przesyłania pliku w formacie .stl lub .GCODE pomiędzy komputerem a drukarką w celu rozpoczęcia druku bez potrzeby komunikacji za pomocą złącza USB lub przekazywania obiektu na karcie pamięci. Implementacja IoT daje dużo szersze możliwości takie jak: przechowywanie modeli i informacji o nich na serwerze, przetrzymywanie i udostępnianie plików konfiguracyjnych drukarek lub filamentów różnych producentów, prognozowanie zużycia dostępnego materiału lub konieczności wymiany elementów na podstawie zbieranych danych eksploatacyjnych z innych urządzeń.

1

Przystosowanie drukarki 3D do pracy w chmurze

Przystosowanie drukarki TEVO TARANTULA do pracy w Internecie rzeczy wymagało integracji sterownika drukarki z jednostką sterującą (komputerem) pozwalającą na połączenie z Internetem.

Z uwagi na małą ilość skomplikowanych działań, projekt nie wymagał zastosowania jednostki głównej o dużej mocy obliczeniowej. Wymagane jednak były porty USB (umożliwiające połączenie drukarka – komputer) oraz interfejs multimedialny (służący do sterowania urządzeniem poprzez ekran dotykowy). Ze względu na spełnienie powyższych wymagań, wsparcie techniczne, niski koszt urządzenia, a także możliwość oprogramowania za pomocą jednego z współczesnych języków programowania, w projekcie zastosowano platformę Raspberry Pi 3 Model B z systemem operacyjnym Raspbian. Jednym z najważniejszych kryteriów podczas dobierania drukarki 3D ze sterownikiem była możliwość drukowania za pośrednictwem uniwersalnej magistrali szeregowej (USB). Taki sterownik pozwalał na bezpośrednie połączenie drukarki z platformą Raspberry Pi i zarządzanie drukowaniem z jej poziomu. Poniższy, uproszczony schemat (rys. 1) przedstawia połączenie komponentów elektronicznych zapewniających poprawną integrację drukarki 3D do pracy w chmurze.

Rysunek 1 Uproszczony schemat integracji drukarki 3D do pracy w chmurze.

Sterowanie drukarką bazuje również na znajomości komend dostępnych w danym oprogramowaniu drukarki. Producenci drukarek 3D wgrywają i wykorzystują gotowe, najczęściej darmowe również dla zastosowań komercyjnych, programy. Istnieje 12 najczęściej używanych systemów sterujących drukarkami 3D, przy czym sterownik TEVO TARANTULA wykorzystuje oprogramowanie MARLIN [1]. Na podstawie dobranych komponentów w pełni samodzielnie pracujące urządzenie z przejrzystym i intuicyjnym interfejsem graficznym (Raspberry Pi - Chmura – Użytkownik) [2].

Komunikacja i Raspberry Pi - Chmura – Użytkownik

Założeniem projektu było przechowywanie danych oraz plików na dysku sieciowym. W tym celu wykorzystano darmowy serwer zintegrowany z środowiskiem programistycznym PythonAnywhere oferującym usługi hostingowe bazujące na języku Python. Środowisko to pozwala na realizowanie zadań programu na serwerze oraz edycję skryptów z poziomu przeglądarki. Aplikacje internetowe pracujące w PythonAnywhere można tworzyć przy użyciu środowisk opartych na WSGI (ang. Web Server Gateway Interface) – proste wywołania pośredniczące pomiędzy serwerami WWW a programami napisanymi w języku Python. Projekt nie wymagał rozbudowanego środowiska WSGI dlatego zastosowano aplikację Flask, o bardzo prostej i przejrzystej strukturze. Flask bazuje na pobieraniu danych z adresów url, metodach GET, PUT, POST lub innych działających w standardzie http, pośrednicząc w komunikacji miedzy użytkownikiem a serwerem (rys. 2). Wszystkie możliwości ukryte są w bibliotece requests.

Wszelka funkcjonalność pobierania i wysyłania danych z serwera została przygotowana w zintegrowanym środowisku PythonAnywhere [3,4].

Rysunek 2 Ideowy schemat komunikacji użytkownik – usługi sieciowe PythonAnywhere za pośrednictwem środowiska Flask.

Aplikacja sieciowa została przystosowana w taki sposób, aby przechowywać na dysku informacje o:

 Numerze referencyjnym pliku,

 Oryginalnej nazwie pliku,

 informacji o dacie ostatniej modyfikacji piku na dysku sieciowym,

 adresie url zapisu obiektu przestrzennego w formacie STL,

 dostępności podglądu obiektu,

 adresie url zapisu wygenerowanego podglądu obiektu w formacie PNG.

"1": {

"date": "06-03-2018 17:31", "image": "yes",

"link_PNG": "http://postek.pythonanywhere.com/file/NESSIE.png", "link_STL": "http:// postek.pythonanywhere.com/file/NESSIE.stl", "name": "NESSIE.stl"

Serwer przechowuje również dane procesowe drukarki informujące o aktualnym statusie połączenia urządzenia z siecią, statusie pracy i ilości zajętego miejsca na dysku sieciowym [4].

"status": {

"printer": "printing", "total_size": "33 MB"

"connected": "yes"

}

Interfejs graficzny użytkownika wykorzystywany do obsługi drukarki 3D został stworzony wykorzystując bibliotekę PyGame. Integracja urzadzenia do pracy w chmurze nie może oznaczać wykluczenia natywnych funkcji. Dlatego sterowanie urzadzeniem z poziomu ekranu dotykowego pozwala na wybór źródła wydruku pomiędzy chmurą a 7 dyskami (pamięć Flash) podłaczanymi do Raspberry Pi za posrednistwem USB HUB. Podczas tworzenia interfejsu graficznego (GUI) zwracano uwagę na intuicyjność, dlatego też po podłączeniu dysku sprawdzana jest ilość używanej przestrzeni dysku (wykorzystywane podczas kopiowania pliku z pamięci Flash na dysk sieciowy).

Scena wyboru źródła pliku STL przedstawiona jest na rysunku 3.

Rysunek 3 Wybór źródła wydruku.

Po wybraniu źródła wydruku tworzona jest lista wszystkich plików STL znajdujących się na dysku sieciowym lub w pamięci Flash. Dla ułatwienia wyboru pliku wyświetlany jest podgląd obiektu.

W przypadku wczytywania plików z chmury podgląd jest pobierany, w przypadku wyboru pliku

zapisanego w pamięci Flash oraz eksportowania pliku z dysku przenośnego na dysk sieciowy, widok izometryczny modelu generowany jest automatycznie przez autorski skrypt wykorzystujący bibliotekę matplotlib. Kolejność operacji stworzenia widoku izometrycznego na podstawie pliku STL przedstawiona jest na rysunku 4. Orientacja widoku zależy od orientacji modelu w przestrzeni [5].

Rysunek 4 Kolejność operacji stworzenia widoku izometrycznego na podstawie pliku STL: a) Model pliku STL wyświetlony w programie 3D Builder, b) Model wczytany do autorskiego programu, c) Widok modelu zapisany przez autorski program w formacie

PNG.

Opracowano możliwość wysłania pliku z pamięci przenośnej do dysku sieciowego przez wywołanie przycisku „SAVE ON CLOUD”.

file_to_send = {'file': open('/home/pi/Desktop/' + file_name + '.stl', 'rb')}

requests.post('http://postek.pythonanywhere.com/file', files=file_to_send)

Wywołanie przycisku „DELETE STL” wysyła polecenie do serwera o usunięciu danego pliku i zmienia numerację wyświetlanych nazw pobranych skanów.

def REST_DELETE_file(name):

requests.delete('http://postek.pythonanywhere.com/file/' + str(name[:-4]) + ".stl")

Po wybraniu przycisku „PLAY” pobierany z chmury do pamięci urządzenia jest plik, a następnie uruchamiana funkcja drukująca w osobnym wątku programu [4].

def REST_get_STL_file(link):

file = requests.get(link, stream=True)

Powyżej opisane funkcje (dla zadań związanych z dyskiem sieciowym i Flash) przedstawione są na rysunku poniżej.

Rysunek 5 Wybór pliku STL: a) z pamięci Flash, b) z dysku sieciowego.

Drukarka 3D jak większość maszyn sterowanych numerycznie (CNC – ang. Computerized Numerical Control) wykorzystuje znormalizowany język zapisu poleceń – GCODE. Język ten definiuje wszystkie możliwe do wykonania przez urządzenia operacje za pomocą krótkich literowo, cyfrowych komend. Do wykonania wydruku, sterownik drukarki potrzebuje komend zapisanych w języku GCODE, dlatego należy wygenerować taki plik na podstawie modelu zapisanego w formacie STL. Wykorzystano do tego otwarty i darmowy slicer - program CuraEngine

możliwy do uruchomienia z poziomu konsoli. Poniższy diagram przedstawia konwersję danych i wykorzystane narzędzia od modelu 3D, przez stworzenie pliku GCODE, do finalnego wydruku [6,7].

Rysunek 6 Schemat konwersji danych od modelu(STL) do wydruku 3D.

Program Cura pozwala na wczytanie pliku konfiguracyjnego zawierającego wszystkie parametry wydruku 3D wraz z przystosowanym programem startu i końca wydruku. Następnie wykorzystując bibliotekę serial nawiązywane jest połączenie szeregowe z drukarką i obustronne przesyłanie danych. Jednostka główna Raspberry Pi wysyła do drukarki kolejne linijki komend GCODE, jedocześnie wysyłając zapytania o aktualną temperaturę dyszy i stolika roboczego. Aktualizowane są zmienne globalne informujące o obecnie wykonywanych zadaniach i postępie drukowania.

Wszystkie informacje wyświetlane są przez interfejs graficzny urządzenia przedstawiony na rysunku 7.

Rysunek 7 Panel nadzorujący postęp i parametry drukowania.

Test urządzenia

Przeprowadzone badania urządzenia wykazały poprawność implementacji drukarki 3D do pracy w „Internecie Rzeczy”. Wszelkie testy związane z połączeniem internetowym przeprowadzone zostały na platformie Raspberry Pi 3 Model B z wbudowaną bezprzewodową kartą sieciową (pobieranie do 5 MB/s) oraz przewodową kartą sieciową (kontroler Ethernetu 100 Mb/s zintegrowany z kontrolerem USB 2.0). Na podstawie serwisu http://www.speedtest.net określono połączenie z wybranym serwerem (czas odpowiedzi 17ms, pobieranie do 190Mb/s, wysyłanie do 19Mb/s). Aktualizowane w czasie rzeczywistym statusy urządzenia pozwoliły na monitorowanie stanu pracy oraz połączenia drukarki z siecią z dowolnego miejsca na Ziemi. Średni czas odpowiedzi serwera PythonAnywhere na zapytanie o ilość wykorzystywanej przestrzeni dysku sieciowego (status "total_size") badany w 20 próbach wynosi 311ms dla połączenia bezprzewodowego Wi-Fi i 305ms przy połączeniu przewodowym (Ethernet). Zmierzono również średni czas pobrania i wysłania pliku na darmowy serwer. Zmierzony czas pobrania pliku NESSIE.stl (458KB) wynosił 1263ms (Wi-Fi) i 1280ms (Ethernet), w przypadku wysyłania pliku na serwer czas ten wynosił 1271ms (Wi-Fi) 1242ms (Ethernet).

Podsumowanie i wnioski

Zastosowana platforma Raspberry Pi 3 Model B jako jednostka główna spełnia swoje zadanie (komunikacja z serwerem, zarzadzanie danymi, połączenie z drukarką, komunikacja Raspberry Pi – Chmura – Użytkownik). Stworzone urządzenie poprzez zastosowanie języka Python przy wykorzystaniu darmowych i otwartych (również komercyjnie) bibliotek posiada wielki potencjał do rozbudowy przez tworzenie kolejnych ułatwiających pracę funkcji. Możliwość zapisu pliku na dysku sieciowym pozwala na współdzielenie plików w obrębie jednego przedsiębiorstwa (kilka urządzeń, jedna baza danych). Dalszy rozwój projektu może obejmować stworzenie profilu użytkownika z unikatową zamknięta bazę danych i udostępnianie plików innym użytkownikom.

Poniżej przedstawiono model 3D „NESSIE.stl” zapisany na dysku sieciowym (po lewej) oraz wykonany na jego podstawie wydruk 3D.

Rysunek 8 Test integracji urządzenia "od modelu do wydruku".

Bibliografia:

[1] Dokumentacja techniczna systemy MARLIN - http://marlinfw.org/ (dostęp: 07.05.2015r.) [2] HyonYoung Han, “Intelligent Operation Monitoring IoT Tag for Factory Legacy Device”, 2017 14th IEEE Annual Consumer Communications & Networking Conference (CCNC), 2017

[3] Dylan Kauling and Qusay H. Mahmoud, “Sensorian Hub: An IFTTT-based Platform for Collecting and Processing Sensor Data”, 2017 14th IEEE Annual Consumer Communications &

Networking Conference (CCNC), 2017

[4] Shalabh Aggarwal, “Flask Framework Cookbook”, PACKT, 2014

[5] Niyazi ARI Prof Dr. sch. techno ETH, “Matplotlib In Python” 2017 14th IEEE Annual Consumer Communications & Networking Conference (CCNC), 2017

[6] Xipeng Zhang, “A GPU-based Parallel Slicer for 3D Printing”,2017 13th IEEE Conference on Automation Science and Engineering (CASE), 2017

[7]Hwa Seon Shin,An Effective Data Structure for a 3D Printing Slicer API”,2016 IEEE International Conference on Consumer Electronics-Asia (ICCE-Asia), 2016

Adaptation of a 3D printer to work in the "Internet of Things"

The article presents the adaptation of a 3D printer to work in IoT (Internet of Things). The applied algorithms and modernizations increase the scope and efficiency of the device's operation. The algorithms and upgrades used in the project increase the scope and efficiency of the device's operation. The following chapters also indicate potential application examples and benefits of the implementation of the modernization being developed. The TEVO TARANTULA printer has been adapted to work in the IoT through integration with the Raspberry Pi 3 micro-computer. In the article, communication algorithms for the exchange between the Raspberry Pi, the cloud and the user were developed and implemented. Then, the modifications and tests of the device operating in IoT were presented.

Wyznaczanie parametrów