鐘遠(yuǎn)平,胡云峰,陳李勝,何惠龍
(電子科技大學(xué)中山學(xué)院,廣東 中山 528400)
3D 打印技術(shù)是一種快速成型技術(shù),它通過(guò)將材料層進(jìn)行堆疊黏合來(lái)制造產(chǎn)品,屬于增材制造。物聯(lián)網(wǎng)技術(shù)使機(jī)器、控制器、傳感器、人員和物料等通過(guò)新的方式聯(lián)在一起,形成物與物、人與物相連,并且可以實(shí)現(xiàn)遠(yuǎn)程管理控制。隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,物與物間的通信成為了可能,3D 打印機(jī)的遠(yuǎn)程控制和打印成為了該領(lǐng)域可以研究的點(diǎn)。基于物聯(lián)網(wǎng)的3D 打印控制終端把3D 打印機(jī)和物聯(lián)網(wǎng)技術(shù)進(jìn)行結(jié)合,使用戶可以應(yīng)用3D 打印機(jī)的遠(yuǎn)程控制、打印等功能,讓用戶更加高效、便捷地打印3D 模型,對(duì)3D 打印機(jī)的發(fā)展和普及具有較大的意義。
基于物聯(lián)網(wǎng)的3D 打印控制終端工作于云服務(wù)器和3D 打印機(jī)之間。其中,云服務(wù)器與3D 打印控制終端使用TCP/IP 進(jìn)行通信;3D 打印控制終端與3D 打印機(jī)使用串口進(jìn)行通信。系統(tǒng)整體結(jié)構(gòu)如圖1 所示。
圖1 系統(tǒng)整體結(jié)構(gòu)框圖
云服務(wù)器使用TCP/IP 協(xié)議獲取3D 打印機(jī)當(dāng)前工作狀態(tài)與下發(fā)控制命令、G-code 文件到3D 打印控制終端;3D 打印控制終端使用串口獲取3D 打印機(jī)狀態(tài)與下發(fā)G-code 命令控制3D 打印機(jī)工作。
3D 打印機(jī)以開(kāi)源項(xiàng)目RepRap 為藍(lán)本,該3D 打印機(jī)是一部可以生成塑料實(shí)物的免費(fèi)桌面型3D 打印機(jī),由塑料結(jié)構(gòu)件、主控電路板、42 步進(jìn)電機(jī)、打印噴頭、熱床平臺(tái)、絲桿、光桿和軸承等組成。其主控器控制指令遵循“RepRap G-code”標(biāo)準(zhǔn),默認(rèn)的G-code 指令緩存為4,完成1 條G-code 指令后使用“ok”字符串作為返回值。RepRap G-code 是由空格或換行符分隔的字段列表。字段可以解釋為命令、參數(shù)或任何其他特殊用途。它由1 個(gè)字母緊跟1 個(gè)數(shù)字組成,也可以只是1 個(gè)獨(dú)立的字母(標(biāo)志)。該字母提供了有關(guān)字段含義的信息,見(jiàn)表1。
表1 G-code 字段含義信息表
考慮成本以及實(shí)驗(yàn)的便捷,3D 打印控制終端的主控板采用ARM Cortex A7 架構(gòu),主控芯片為Broadcom BCM2836,4 核,主頻為900 MHz,內(nèi)存為1 GB,運(yùn)行Linux 操作系統(tǒng)。BCM2836 有豐富的接口,可增強(qiáng)系統(tǒng)后期的可拓展性??紤]網(wǎng)線的引線不便捷因素,3D 打印控制終端選用USB 無(wú)線網(wǎng)卡(TP-LINK TLWN725N)連接網(wǎng)絡(luò)。如圖2 所示。
圖2 3D 打印控制終端硬件原理圖
3D 打印控制終端主控板使用USB 口與無(wú)線網(wǎng)卡和3D 打印機(jī)相連,并通過(guò)無(wú)線網(wǎng)卡接入Wi-Fi 連接以太網(wǎng)。供電電源使用12 V、3 A 直流電源給3D 打印機(jī)供電,使用5 V、1 A 直流電源給主控板供電。
3D 打印控制終端控制軟件框架圖如圖3 所示。
圖3 3D 打印控制終端軟件框架圖
上位機(jī)控制軟件通過(guò)創(chuàng)建2 個(gè)線程實(shí)現(xiàn)與云服務(wù)器和3D 打印機(jī)交互。
云服務(wù)器交互:為了更簡(jiǎn)單、更可靠地實(shí)現(xiàn)3D 打印控制終端與云服務(wù)器的通信,軟件中使用一個(gè)基于TCP/IP 的套接字實(shí)現(xiàn)3D 打印控制終端與云服務(wù)器的通信,通信命令類型見(jiàn)表2。
3D 打印機(jī)調(diào)試控制命令:上位機(jī)控制軟件在接收到3D 打印機(jī)調(diào)試控制命令后,直接把3D 打印機(jī)調(diào)試控制命令通過(guò)3D 打印機(jī)交互線程發(fā)送到3D 打印機(jī),3D 打印機(jī)完成指令操作。
文件傳輸?shù)拿睿荷衔粰C(jī)控制軟件在接收到文件傳輸?shù)拿詈?,進(jìn)入文件傳輸狀態(tài)。其中,云服務(wù)器發(fā)送的文件傳輸命令中包含文件的文件名和文件大小信息,上位機(jī)控制軟件根據(jù)這些信息在文件系統(tǒng)中創(chuàng)建文件,并開(kāi)始接收與存儲(chǔ)由服務(wù)器發(fā)送過(guò)來(lái)的G-code文件數(shù)據(jù)。
打印三維模型命令:上位機(jī)控制軟件在接收到打印三維模型命令后,進(jìn)入三維模型打印狀態(tài)。上位機(jī)控制軟件根據(jù)三維模型命令中包含的G-code 文件名,使用系統(tǒng)調(diào)用open 函數(shù)打開(kāi)G-code 文件。由于RepRap 3D 打印機(jī)主控器的G-code 緩存默認(rèn)為4,為了方便管理3D 打印機(jī)的緩存資源,上位機(jī)控制軟件創(chuàng)建一個(gè)信號(hào)量初始值為4 的信號(hào)量對(duì)3D 打印機(jī)的G-code 緩存進(jìn)行管理。
3D 打印機(jī)交互:3D 打印機(jī)連接到3D 打印控制終端時(shí),3D 打印機(jī)會(huì)產(chǎn)生復(fù)位操作,使3D 打印機(jī)擠出頭回到打印坐標(biāo)原點(diǎn)準(zhǔn)備打印。3D 打印機(jī)是一個(gè)串口設(shè)備,在3D 打印控制終端的Linux 操作系統(tǒng)中以一個(gè)字符設(shè)備的設(shè)備文件呈現(xiàn)。使用操作系統(tǒng)的系統(tǒng)調(diào)用open 函數(shù)打開(kāi)3D 打印機(jī)對(duì)應(yīng)的串口設(shè)備文件,使用操作系統(tǒng)的系統(tǒng)調(diào)用write 函數(shù)把G-code 命令發(fā)送給3D 打印機(jī),3D 打印機(jī)根據(jù)指令動(dòng)作,操作完成后返回字符串“ok”。
上位機(jī)控制軟件工作流程如圖4 所示。軟件運(yùn)行后嘗試與云服務(wù)器建立連接,與云服務(wù)器連接成功之后嘗試連接3D 打印機(jī),與3D 打印機(jī)連接成功之后開(kāi)始等待云服務(wù)器發(fā)送通信命令,上位機(jī)軟件解析云服務(wù)器發(fā)送過(guò)來(lái)的通信命令,并根據(jù)通信命令控制3D打印機(jī)工作。
圖4 上位機(jī)控制軟件工作流程圖
為了方便調(diào)試,在編寫(xiě)3D 打印控制終端控制軟件過(guò)程中加入相應(yīng)的打印信息。通過(guò)查看程序執(zhí)行時(shí)輸出的打印信息,可知道程序的執(zhí)行過(guò)程。3D 打印控制終端控制軟件測(cè)試的準(zhǔn)備步驟:①開(kāi)啟云服務(wù)器的相應(yīng)服務(wù);②使用Mini USB 數(shù)據(jù)線連接就緒的3D 打印機(jī)和控制終端;③使用SSH 登錄到控制終端中運(yùn)行的Linux 操作系統(tǒng);④運(yùn)行控制終端上位機(jī)控制軟件,查看軟件運(yùn)行過(guò)程中的打印信息。功能測(cè)試結(jié)果見(jiàn)表3,3D 打印機(jī)在接收到云服務(wù)器下發(fā)的“G28”控制命令后,3D 打印機(jī)的打印噴頭回到打印坐標(biāo)原點(diǎn),遠(yuǎn)程控制功能測(cè)試正常,如圖5 所示。
表3 云服務(wù)器與3D 打印控制終端通信命令類型表
圖5 3D 打印控制終端測(cè)試實(shí)物圖
本文提出一種新的3D 打印機(jī)控制方式,通過(guò)3D打印控制終端+云服務(wù)器的方式實(shí)現(xiàn)3D 打印機(jī)的遠(yuǎn)程控制。本設(shè)計(jì)選用價(jià)格較為低廉的嵌入式開(kāi)發(fā)板硬件完成了3D 打印控制終端的制作,使用USB 數(shù)據(jù)線與3D 打印機(jī)進(jìn)行連接、TCP/IP 與云服務(wù)器進(jìn)行通信。經(jīng)實(shí)驗(yàn)驗(yàn)證,3D 打印控制終端可以遠(yuǎn)程控制3D 打印機(jī)動(dòng)作和打印三維模型。3D 打印控制終端使3D 打印機(jī)擺脫需要使用PC 連接并使用PC 上位機(jī)軟件其進(jìn)行控制的束縛,使用戶對(duì)3D 打印機(jī)的控制和操作方式變得便捷,可為后期3D 打印服務(wù)智能化提供基礎(chǔ)。