動機與目的

研究動機與目的

在使用3D列印機時,常常會需要長久的等待,例如:製作一個大型的物件,或者有很多複雜的小零件參雜,往往需要大量的時間去製作,途中列印完成的時間點,幾乎都落在凌晨,沒辦法讓機台持續列印下去,因為工件會附著在平台上,並沒有辦法直接操控電腦讓他進行列印動作,目前需仰賴人力,將其剷除,才可繼續進行列印動作。 隨著3D列印機日漸普及,人們開始設計、構思,裝載更多新功能的3D列印機,像是wifi版本、server版本、自動校正、判斷材料種類、自動參數…..等,但是相對於價格上,有越來越貴的趨勢,也沒有版本的觀念,一台機台可以設定的參數,會根據你所使用的切片軟體,有些廠商會開發屬於他們自家的切片軟體,以至於在我們的電腦上可能會有多套的軟體安裝。 近年來,物聯網(IOT)的觀念蓬勃發展,Raspberry pi 以及Arduino的發展漸漸邁向世界主流,人們得以結合平板、手機利用網路串連起這些嵌入式系統,直接在網路端,下達控制指令或者偵測,讓網際世界變得無遠弗屆。
若能在嵌入式系統中開發一套網際平台,讓所有可以連上網際平台的裝置,只需要登入系統,就能夠控制3D列印機,上傳、下載、列印、目前的列印狀態…等,針對目前需要人力在旁監控列印的狀態,利用嵌入式系統達到節省人力的目標,例如說:可以使用手機上傳客戶交代給你列印的檔案,利用網路上傳到嵌入式系統中,可以讓你在任何時間、地點,不受時間、空間的侷限,來控制你的3Dprinter,再配合自動下料系統,可以連續列印,節省人在機器旁邊等待的時刻,再利用自動校正加上下料系統,能夠讓機器24小時運作,並且可以在網頁上看到目前的列印狀態以及縮時攝影。因此本專題使用樹梅派(Raspberry pi)加上python製作一套可針對大部分開源的機台所使用的網際控制介面。

使用語言Python

Python是一種以通用性為目的、物件導向、直譯式的高階程式語言,由Guido van Rossum在1991年發佈,python能夠安裝在許多不同的操作系統上,擁有跨平台的好處,且擁有大量第三方的函式庫(Third-party library),在眾多領域皆有應用(科學與數學運算、大數據、經濟、電腦繪圖、網路開法等)並提供豐富的API和工具,使開發者能夠使用C、C++來擴充模組,python因為擁有許多可被應用在科學開發上的函式庫(如:Numpy、Matplotlib…等),且其快速開發為導向的特性,因此許多領域的開發都選擇Python作為主要開發的語言。

網際網路架構(Nginx)

Nginx,是一個網頁代理伺服器,在2004年發表,但是在當時因為apache server還是屬於強勢期,並沒有被大家重視,但是他的特點在近期被大家重視,主要是在效能設計的HTTP伺服器,相較於其他兩個,佔有記憶體較少,穩定性高等優勢與舊版Apache不同,Nginx不採用每個client端一執行緒的設計模型,而是充分運用異步邏輯,削減上下文排成的開銷,因此再並行服務能力更強。整體採用模組化設計,有豐富的模組庫以及第三方開發的模組,配置非常靈活。在linux系統中,Nginx使用epoll事件模型,得益於此,nginx在linux作業系統(例:ubuntu 14.04 raspbane)下效率相當高,以及可以大量平行運算等特點,在我們的嵌入式系統,採用Nginx當作代理伺服器。

web framework(flask)

Flask為一種微型網際網路架構,和Django不一樣,微型不代表整的web都需要用同一個python文件(當然也是可以使用同一個),也不代表他是缺乏功能,只擁有基本的網路架構,在微型framework指的是核心簡單易於擴充,Flask不會決定你要用什麼樣的database,或者必須安裝怎樣的模組,一切都可以看使用者,需要怎樣的功能,就安裝不一樣的模組,可針對我們需要使用的模組做延伸,因此我們選用Flask當框架使用。

Django能夠用於快速開發複雜的網站且擁有大量的第三方套件可做延伸,並具有相當完善的說明文檔、穩定的發布流程,與其他框架相比較完整,但相對於用在嵌入式電腦中,他所需要的運算量較大及對記憶體的考量,也有可能對Raspberry pi造成當機,或者運算緩慢,因此不考慮使用。

server硬體規格

Raspberry pi 3硬體規格
記憶體 1 GB
CPU 1.2 GHZ
位元數 64位元
記憶卡 32 GB

Comments

comments powered by Disqus