• Nenhum resultado encontrado

Atelier: printer host para impressão 3D embarcado

N/A
N/A
Protected

Academic year: 2021

Share "Atelier: printer host para impressão 3D embarcado"

Copied!
63
0
0

Texto

(1)

Lays Rodrigues Silva

Atelier: Printer Host para Impressão 3D

Embarcado

Niterói

2019

(2)
(3)

Lays Rodrigues Silva

Atelier: Printer Host para Impressão 3D Embarcado

Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Sistemas de Infor-mação da Universidade Federal Fluminense, como requisito parcial para obtenção do Grau de Bacharel em Sistemas de Informação.

Universidade Federal Fluminense – UFF Instituto de Computação

Programa de Graduação em Sistemas de Informação

Orientador: Prof. Dr. Helena Cristina da Gama Leitão

Niterói

2019

(4)

Ficha catalográfica automática - SDC/BEE Gerada com informações fornecidas pelo autor

Bibliotecária responsável: Fabiana Menezes Santos da Silva - CRB7/5274

S586a Silva, Lays Rodrigues

Atelier : Printer Host para Impressão 3D Embarcado / Lays Rodrigues Silva ; Helena Cristina Da Gama Leitão,

orientadora. Niterói, 2019. 45 f. : il.

Trabalho de Conclusão de Curso (Graduação em Sistemas de Informação)-Universidade Federal Fluminense, Instituto de Computação, Niterói, 2019.

1. Software livre. 2. Impressão - Máquina - Acessório. 3. Eletrônica Embarcada. 4. Produção intelectual. I. Da Gama Leitão, Helena Cristina, orientadora. II. Universidade Federal Fluminense. Instituto de Computação. III. Título. CDD

(5)

-Lays Rodrigues Silva

Atelier: Printer Host para Impressão 3D Embarcado

Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Sistemas de Infor-mação da Universidade Federal Fluminense, como requisito parcial para obtenção do Grau de Bacharel em Sistemas de Informação.

Trabalho aprovado. Niterói, 15 de Julho de 2017:

Prof. Dr. Helena Cristina da Gama Leitão

Orientador

Prof. Dr. Carlos Bazílio Martins Convidado 1

Prof. Dr. Leandro Augusto Frata Fernandes

Convidado 2

Niterói

2019

(6)
(7)
(8)
(9)

Agradecimentos

Agradeço ao meu Tio Paulo e Tio Antônio, que se não fosse por eles eu nem teria começado a cursar o ensino superior.

Agradeço à minha mãe pela coragem de me deixar ir para longe para perseguir um sonho que eu nem sabia que tinha.

Agradeço ao meu namorado, Daniel, por estar ao meu lado nessa jornada, por me apoiar e acreditar em mim quando eu nem mesmo acreditava.

Agradeço à minha orientadora Helena, por embarcar nesse desafio comigo.

Agradeço à minha colega de quarto, Thalita, por se tornar parte da minha vida e pelo apoio mútuo no tão sonhado diploma acadêmico.

Agradeço ao Tomaz, um amigo que entrou de uma forma tão aleatória em minha vida, e que sem ele não sei o que seria da minha carreira.

Por fim, agradeço a todos que fizeram parte dessa jornada, que está longe do seu fim.

(10)
(11)

Resumo

A impressão 3D nos proporciona excelentes oportunidades de prototipagem, porém na questão de softwares aplicáveis a área tem-se falhas que podem ser melhoradas. Neste trabalho exploraremos a questão dos softwares que são servidores de impressão, conhecê-los e explorar algumas de suas falhas, corrigindo-as no desenvolvimento de uma nova aplicação, chamada Atelier, que tem como objetivo resolver algumas dessas falhas. Ao fim desta leitura o leitor deve compreender conceitos básicos de impressão 3D, conhecer alguns dos softwares que são usados na área, e compreender como o Atelier foi estruturado e desenvolvido.

(12)
(13)

Abstract

3D printing gives us excellent prototyping opportunities, but in the field of available softwares the area has flaws that can be improved. In this work, we will explore the issue of software that is into printers servers, get to know them and explore some of their flaws, correcting them in the development of a new application, called Atelier, that aims to solve some of these flaws. At the end of this reading, the reader should understand basic concepts of 3D printing, know some of the softwares that is used in the area, and understand how the Atelier was structured and developed.

(14)
(15)

Lista de ilustrações

Figura 1 – Hierarquia da impressão 3D . . . 19

Figura 2 – Retrovisor de Moto Impresso em 3D . . . 22

Figura 3 – Prótese Impressa em 3D a base de Titânio . . . 22

Figura 4 – Hierarquia da impressão 3D . . . 27

Figura 5 – Arduino Mega . . . 28

Figura 6 – Máquina Fresadora . . . 28

Figura 7 – Impressora 3D Cartesiana . . . 29

Figura 8 – Blender . . . 30

Figura 9 – OpenSCAD . . . 30

Figura 10 – Cura . . . 31

Figura 11 – Simplify3D c . . . 31

Figura 12 – Filamentos para impressão FDM . . . 31

Figura 13 – Impressora FDM 3DCreality CR-10 . . . 32

Figura 14 – Imagem aproximada do processo de impressão FDM . . . 33

Figura 15 – Fluxo da Impressão 3D . . . 35

Figura 16 – Repetier Host . . . 36

Figura 17 – Octoprint . . . 37

Figura 18 – Matter Control . . . 37

Figura 19 – Diagrama de Classe do AtCore Simplificado (Omitindo Métodos) . . . 40

Figura 20 – Atelier Mockup . . . 46

Figura 21 – Conexão . . . 48

Figura 22 – Tela de Conexão vazia . . . 49

Figura 23 – Tela de Conexão com valores . . . 49

Figura 24 – Perfil salvo com sucesso . . . 49

Figura 25 – Perfil não pode ser salvo . . . 49

Figura 26 – Tela de Gerenciamento . . . 50

Figura 27 – Janela de Selecionar Arquivo . . . 50

Figura 28 – Gerenciamento de Temperaturas . . . 51

Figura 29 – Gerenciamento dos Eixos . . . 52

Figura 30 – Monitoração por Câmera . . . 52

Figura 31 – Página de Log . . . 53

Figura 32 – Arduino conectado ao dispositivo Raspberry . . . 54

Figura 33 – Página de Perfil preenchida . . . 54

Figura 34 – Página de conexão preenchida com perfil . . . 54

Figura 35 – Página de gerenciamento da impressora. . . 54

(16)

Figura 37 – Página de Log. . . 54

Figura 38 – Página de gerenciamento dos eixos . . . 55

(17)

Listings

5.1 Exemplo de um connect . . . 42

5.2 Exemplo de um disconnect . . . 42

5.3 Exemplo simplificado do processo de impressão . . . 43

(18)
(19)

Sumário

1 INTRODUÇÃO . . . 19

1.1 Objetivo . . . 20

1.2 Histórico . . . 20

1.3 A Prototipagem Rápida e a Impressão 3D . . . 21

2 CÓDIGO LIVRE X CÓDIGO PROPRIETÁRIO . . . 23

2.1 O que é Software Livre? . . . 23

2.2 O que é Código Aberto ou Open Source? . . . 24

2.3 O que é Código Proprietário?. . . 25

3 HIERARQUIA DA IMPRESSÃO 3D . . . 27 3.1 Hardware . . . 27 3.2 Software . . . 29 3.2.1 Printer Host. . . 29 3.2.2 Modelos 3D . . . 30 3.2.3 Fatiadores . . . 30

3.3 Impressoras 3D tipo FDM - Fused Deposition Modeling . . . 31

3.4 Como Funciona a Tecnologia FDM? . . . 32

4 PROGRAMAS PARA CONTROLAR UMA IMPRESSORA 3D . . . 35

4.1 Soluções Existentes . . . 35

4.1.1 Repetier Host . . . 35

4.1.2 OctoPrint . . . 36

4.1.3 MatterControl . . . 37

4.2 Discussão . . . 37

5 ATELIER PRINTER HOST . . . 39

5.1 Motivação . . . 39

5.2 Tecnologias Utilizadas no Atelier . . . 39

5.3 AtCore . . . 40 5.4 Classe SerialLayer . . . 40 5.5 Classe Temperature . . . 41 5.6 IFirmware e Plugins . . . 41 5.7 PrintThread . . . 43 5.7.1 Injeção de Comando . . . 43 5.8 Atelier . . . 45

(20)

5.9 Tecnologias Utilizadas . . . 47

5.9.1 QML - Qt Modeling Language . . . 47

5.9.1.1 Kirigami . . . 47

5.10 Telas Desenvolvidas . . . 48

5.10.1 Conexão com a Impressora . . . 48

5.10.2 Gerenciamento de Perfis . . . 48

5.10.3 Gerenciamento da Impressora. . . 49

5.10.4 Dashboard . . . 50

5.10.4.1 Temperaturas . . . 51

5.10.4.2 Controle dos Eixos . . . 51

5.10.4.3 Monitoração Remota . . . 52

5.10.4.4 Sistema de Log . . . 52

5.10.5 Compatibilidade entre Plataformas . . . 53

5.10.6 Linux . . . 53

5.10.7 Embarcado - Raspberry Pi 3 . . . 54

5.10.8 Internacionalização . . . 55

6 CONCLUSÃO E TRABALHOS FUTUROS . . . 57

6.1 Trabalhos Futuros . . . 57

6.2 Desafios Técnicos. . . 58

6.3 Como contribuir . . . 59

(21)

19

1 Introdução

Este trabalho tem como tema principal a área de impressão 3D, que nos últimos anos tem evoluído muito, e hoje está revolucionando a forma de projetar, construir, e testar ideias de produtos. Entretanto, embora bastante disseminada, a impressão 3D ainda tem vários desafios associados a própria tecnologia e as ferramentas para seu uso. Um dos desafios é a tecnologia para construção das impressoras. Discutiremos as tecnologias existentes, e com um pouco mais de detalhes a tecnologia que utiliza FDM (Fused Deposition Modeling), sendo a tecnologia mais popular.

Uma hierarquia simples de como a impressão 3D é estruturada segue na figura1

abaixo. Cada nível representa uma parte de todo o processo de impressão 3D. Descreveremos cada elemento deste gráfico na seção 3.

Impressão 3D Hardware Firmware Software Printer Host Software Mediador Controlador Fatiadores

Software que converte modelos em 3d para arquivos GCode

Modelagem 3D

Softwares de Apoio a modelagem 3D

Figura 1 – Hierarquia da impressão 3D

É um desafio a iteração com a impressora de modo que o resultado seja o “melhor” possível. A definição de “melhor” dependerá do que o usuário precisa e dos recursos dispo-níveis para isso. Uma forma de otimizar os resultados é permitir ao usuário acompanhar o processo de impressão e talvez alterar parâmetros da impressora, se necessário.

Além da tecnologia, outros fatores devem ser utilizados para classificar uma impres-sora 3D, por exemplo se ela usa software (código) aberto, ou seja, os programas fonte e as instruções do firmwares da impressora estão disponíveis, ou se utiliza software proprietário, onde, o usuário só usa a impressora, mas não tem acesso as fontes dos programas e as instruções do firmware. Neste trabalho, estamos considerando impressoras 3D de código

(22)

20 Capítulo 1. Introdução

aberto.

Nas seções a seguir aprenderemos sobre a história da impressão 3D, veremos detalhadamente detalhadamente sobre o licenciamento de software, como que a impressão 3D é estruturada com a descrição de cada parte, softwares já existentes e em como o Atelier surge com o objetivo de trazer mais autonomia e liberdade aos usuários de impressoras 3D FDM.

1.1

Objetivo

Nos próximos capítulos, apresentaremos conceitos básicos importantes neste tra-balho: a história da impressão 3D (seção 1.2), o que é software livre e proprietário(seção

2), impressoras 3D (Projeto RepRap, e tecnologias de hardware e software associadas) na seção3, e programas para controle da impressão 3D(seção 4). Em seguida, apresentare-mos o Atelier Printer Host, suas funcionalidades e suas principais contribuições para a prototipagem rápida e para a comunidade de software livre(seção 5).

O objetivo deste trabalho é apresentar uma ferramenta alternativa para permitir ao usuário interagir com a impressora de modo efetivo e inovador: “o Atelier Host” (Atelier). O Atelier está sendo desenvolvido ao longo dos 3 últimos anos. E será apresentado com suas funcionalidades. Descreveremos em detalhes o programa de interface do usuário desenvolvido durante o Projeto Final, e que é inovador em vários aspectos, em especial, destacamos a “homogeneidade” do software, no seu uso em diferentes plataformas, e as tecnologias que foram usadas que facilitam o desenvolvimento e evolução do Atelier.

1.2

Histórico

A impressão 3D não é uma área de tecnologia recente. As primeiras tentativas de criar objetos sólidos com manufatura aditiva datam dos anos 1960.

Uma das primeiras tentativas de criar objetos sólidos usando fotopolímeros e a tecnologia a laser aconteceu, segundo Wohlers (2016), no Battelle Memorial Institute em Ohio, nos Estados Unidos. Entretanto, somente em Maio de 1980 que tivemos o primeiro protótipo de estereolitografia desenvolvido por Hideo Kodama que fazia parte do Nagoya

Municipal Industrial Research Institute.

Em 1987 a 3DSystems foi fundada e entrou no comércio de manufatura aditiva com o sistema de Stereolithography, ou seja, Estereolitografia, método que tem atribuído a sigla SLA. Até a chegada de 1990, o mercado de impressão 3D só possuía impressoras baseadas na tecnologias SLA. Em 1991, a companhia Stratasys comercializou o primeiro modelo de impressora com a tecnologia de Fused Deposition Modeling - FDM.

(23)

1.3. A Prototipagem Rápida e a Impressão 3D 21

Outra tecnologia que teve seu lançamento em 1992 foi a Selective Laser Sintering

- SLS, que foi lançada pela DTM, que havia sido adquirida pela 3DSystems. Os anos

posteriores a 1992 foram dominados por lançamentos e variações das tecnologias citadas anteriormente pelas empresas Stratasys e 3DSystems entre outras indústrias (Wohlers

(2016)).

Em 2005 na Bath University of England, o Dr Adrian Bowyer fundou o projeto

RepRap, com o objetivo de criar impressoras 3D de baixo custo, pois até então o custo de

uma impressora pessoal desenvolvida pela Stratasys, do modelo uPrint Personal Printer era em torno de 14.900 Dólares (Wohlers (2016)). O modelo desenvolvido no grupo Bits

from Bytes of England, direcionado por Bowyer, teve por objetivo um modelo de baixo

custo auto replicante, ou seja, a impressora poderia imprimir outras partes dela mesma para construir outras impressoras. RepRap é o acrônimo para replicating rapid prototyper. Em 2009, o primeiro modelo desenvolvido pela equipe de Bowyer é lançado e batizado de

RapMan com o custo de 750 Euros.

Segundo Wohlers (2016), com a expiração de patentes chaves a partir de 2010, e a introdução de equipamentos em formas de kits baseadas no projeto RepRap, os chamados low-cost personal systems, ou seja, sistemas de baixo custo pessoal, sofreram um forte crescimento. É esperado que quando as patentes dos sistemas SLA e SLS expirem, organizações e indivíduos possam usufruir de vantagens parecidas.

1.3

A Prototipagem Rápida e a Impressão 3D

Chua Kah Fai Leong (2010) afirma que um protótipo é Uma aproximação de

um produto(ou sistema) ou de seus componentes em alguma forma para um propósito definido em sua implementação.. Ou seja, podemos usar um protótipo para avaliar provas

de conceitos, melhorar produtos já existentes ou experimentar novas ideias relativas ao desenvolvimento de um produto. Chua Kah Fai Leong (2010) também acrescenta que

Nada é mais claro para a explicação ou comunicação de uma ideia do que um protótipo físico onde o público-alvo pode ter uma experiência visual e táctil de um produto.

A Prototipagem Rápida permite que o desenvolvimento de um produto, de seu rascunho a um produto final seja agilizada usando tecnologias baseados em CAD(Computer Aided Design). O uso de tecnologias CAD permitem que os protótipos virtuais de um produto sejam estressados, testados e analisados como se eles fossem protótipos físicosChua Kah Fai Leong (2010).

As aplicações da Prototipagem Rápida se encontram em diversos mercados. Alguns exemplos são o mercado automotivo, onde empresas usam desta tecnologia para otimizar partes de um carro, veja Figura 2 de Artley (2017), ou na medicina, onde já é possível produzir próteses de titânio que se encaixam perfeitamente ao membro de um paciente,

(24)

22 Capítulo 1. Introdução

veja Figura 3 deMa Ye Zhou (2017).

Figura 2 – Retrovisor de Moto Impresso em 3D

Figura 3 – Prótese Impressa em 3D a base de Titânio

O uso de Prototipagem Rápida possui várias vantagens para o usuário, como redução do desperdício de material e de mão de obra. Além de agilizar o processo de validação do conceito proposto.

(25)

23

2 Código Livre x Código Proprietário

Tanto na impressão 3D quanto em outros projetos, nos vemos pesquisando sobre como proteger os mesmos, e algumas tecnologias da impressão 3D são o que são hoje graças as licenças Open Source.

Como muitos dos projetos de software que envolvem impressão 3D estão sobre licenças livres ou proprietárias, gostaríamos de esclarecer as diferenças entre elas a seguir. Por isso, abordaremos neste capítulo os conceitos de Software Livre, Open Source e Código Proprietário.

2.1

O que é Software Livre?

A definição de Software Livre segundo a Free Software Foundation - FSF1:

“Por “software livre” devemos entender aquele software que respeita a liberdade e senso de comunidade dos usuários. Grosso modo, isso significa que os usuários possuem a liberdade de executar, copiar, distribuir, estudar, mudar e melhorar o software. Assim sendo, “software livre” é uma questão de liberdade, não de preço. Para entender o conceito, pense em “liberdade de expressão”, não em “cerveja grátis”. Por vezes chamamos de “libre software” para mostrar que livre não significa grátis, pegando emprestado a palavra em francês ou espanhol para “livre”, para reforçar o entendimento de que não nos referimos a software como grátis.”

Esta definição é suportada pelas quatro liberdades do Software Livre, ou seja, um programa pode ser considerado Software Livre se ele segue as liberdades definidas a seguir:

0. A liberdade de executar o programa como você desejar, para qualquer propósito;

1. A liberdade de estudar como o programa funciona, e adaptá-lo às suas necessidades. Para tanto, acesso ao código-fonte é um pré-requisito;

2. A liberdade de redistribuir cópias de modo que você possa ajudar outros;

3. A liberdade de distribuir cópias de suas versões modificadas a outros. Desta forma, você pode dar a toda comunidade a chance de beneficiar de suas mudanças. Para tanto, acesso ao código-fonte é um pré-requisito.

(26)

24 Capítulo 2. Código Livre x Código Proprietário

2.2

O que é Código Aberto ou Open Source?

Segundo a Open Source Initiative - OSI2, uma instituição dedicada a promover o código aberto e o software livre, define: “Geralmente, o software Open Source é um software que pode ser acessado, usado, alterado e compartilhado livremente (de forma modificada ou não modificada) por qualquer pessoa. O software de código aberto é feito por muitas pessoas e distribuído sob licenças que cumprem com a definição de código aberto. A definição de código aberto reconhecida internacionalmente fornece dez critérios que devem ser atendidos para que qualquer licença de software e o software distribuído sob essa licença sejam rotulados como software de código aberto. Somente o software licenciado sob uma licença Open Source aprovada pelo OSI deve ser rotulado como software "Open Source".”

As dez regras mencionadas acima são:

1. Distribuição livre: A licença do programa não deve de nenhuma forma restringir o acesso gratuito por meio de venda ou mesmo de permutas.

2. Código fonte: De fundamental importância, o software deve conter um código fonte que deve permitir a distribuição também na forma compilada. Caso o programa não seja distribuído com seu código fonte, o desenvolvedor deve fornecer um meio para se obter o mesmo. O código fonte deve ser legível e inteligível para qualquer programador.

3. Trabalhos derivados: A licença do software deve fornecer permissão para que mo-dificações sejam realizadas, bem como trabalhos derivados. Também deve permitir que sejam distribuídos, mesmo após modificação, sobre os mesmos termos da licença original.

4. Integridade do autor do código fonte: A licença deve, de maneira clara e explícita, permitir a distribuição do programa construído por meio do código fonte modificado. No entanto, a licença pode requerer que programas derivados tenham um nome ou número de versão distintos do programa original. Isso dependerá da preferência do desenvolvedor do código.

5. Não discriminação contra pessoas ou grupos: A licença deve estar disponível para qualquer grupo de pessoas e qualquer indivíduo.

6. Não discriminação contra áreas de atuação: A licença deve permitir que qualquer pessoa de qualquer ramo específico possa fazer a utilização do programa. Ela não deve impedir, por exemplo, que uma empresa faça uso de seu código.

(27)

2.3. O que é Código Proprietário? 25

7. Distribuição da Licença: Os direitos associados ao software devem ser aplicáveis para todos aqueles cujo programa é redistribuído, sem que exista a necessidade da execução de uma nova licença, ou licença adicional para estas partes.

8. Licença não específica a um produto: O programa não fazer parte de um outro software, sendo que para utilizá-lo é obrigatório que seja distribuído todo o programa. Se o programa é extraído dessa distribuição, é necessário assegurar que todas as partes sejam disponibilizadas e redistribuídas para todos, visto que todos possuem os mesmos direitos que aqueles que são garantidos em conjunção com a distribuição de programas original.

9. Licença não restrinja outros programas: A licença não pode ser considerada open source se colocar restrições em outros programas que são distribuídos juntos com o programa licenciado.

10. Licença neutra em relação à tecnologia: A licença deve permitir que sejam adotadas interfaces, estilos e tecnologias sem restrições. Isso quer dizer que nenhuma cláusula da licença pode estabelecer regras para que estes quesitos mencionados sejam aplicados ao programa.

2.3

O que é Código Proprietário?

Segundo a The Linux Information Project3, o código proprietário é definido como:

“Software proprietário é um software que pertence a um indivíduo ou a uma empresa (geralmente aquele que o desenvolveu). Quase sempre há grandes restrições ao seu uso, e seu código-fonte é quase sempre mantido em segredo. As restrições sobre o uso de software proprietário geralmente são enumeradas nos contratos de licença de usuário final (EULAs) aos quais os usuários devem concordar. Para softwares fornecidos por grandes empresas, os EULAs geralmente são contratos longos e complexos. Entre as mais comuns das proibições para esses programas estão a realização de cópias não autorizadas, a utilização em mais de um determinado número de computadores e a engenharia reversa.”

(28)
(29)

27

3 Hierarquia da Impressão 3D

A tecnologia de impressão 3D e sua estrutura base consistem de hardware e software, como todo sistema eletrônico. Definimos na introdução o que seria o organograma da impressão 3D, e nesta seção iremos explorar cada componente desta árvore, explicando o que consiste de cada um e mostrando exemplos que compõem todo o processo. Relembrando o diagrama 4: Impressão 3D Hardware Firmware Software Printer Host Software Mediador Controlador Fatiadores

Software que converte modelos em 3d para arquivos GCode

Modelagem 3D

Softwares de Apoio a modelagem 3D

Figura 4 – Hierarquia da impressão 3D

3.1

Hardware

Segundo o dicionário da universidade de Cambridge1, firmware tem o seguinte significado: “A set of instructions that form part of an electronic device and allow it to communicate with a computer or with other electronic devices.” Jones(2018) menciona em seu artigo que firmware é a ponte entre o hardware e o software de um sistema computacional. Quando o software envia comandos ao hardware do sistema computacional, o firmware interpreta e transforma os comandos para comandos de máquina. Essas instruções normalmente são carregadas em placas eletrônicas como um Arduino, porém não sendo limitado a esta placa, veja Figura 5, que é composto por um controlador e dispositivos de entrada e saída digitais e analógicos. No caso da impressão 3D, existem diversas variações de firmwares e placas que os comportam.

(30)

28 Capítulo 3. Hierarquia da Impressão 3D

Figura 5 – Arduino Mega

Algumas das soluções que são open-source fornecidas pelo site da RepRap2 são: APrinter, Grbl, Klipper, Marlin, Repetier-Firmware, RepRapFirmware, Sailfish, Smoothie, Sprinter, Teacup. Em especial, destacaremos a seguir o firmware Grbl.

O firmware Grbl é um caso a parte. Foi a partir dele que os outros firmwares se desenvolveram. Grbl tem sua origem no Massachusetts Institute of Technology quando a tecnologia de Comando Numérico Computadorizado, ou, CNC, foi desenvolvida. A princípio, o Grbl foi desenvolvido para máquinas fresadoras(veja Figura 6) e máquinas de corte. Porém sua tecnologia foi estendida para atender as demandas da impressão 3D.

Figura 6 – Máquina Fresadora

Todos os outros firmwares descritos anteriormente são baseados no Grbl e interpre-tam comandos G-Code, todos herdados da base da tecnologia CNC. Também destacamos os firmwares Marlin3, e Repetier-Firmware4, que são licenciados como softwares livres e

estão a disposição da comunidade, além de serem os mais populares.

2 https://reprap.org/wiki/List_of_Firmware 3 http://marlinfw.org/

(31)

3.2. Software 29

Uma impressora 3D é formada por uma cama, que pode ser aquecida ou não, e um cabeçote que se move nos eixos X, Y e Z. Na imagem 7abaixo, temos um exemplo de impressora 3D cartesiana, com cama fixa, onde o cabeçote sobe no eixo Z, depositando as camadas de material. Existem outros tipos de impressoras, onde a mesa se move para baixo no eixo Z e o cabeçote é fixo no mesmo.

Figura 7 – Impressora 3D Cartesiana

3.2

Software

Na questão de softwares para impressão 3D, existem soluções para cada parte do processo, como servidores de impressão e softwares para modelagem, nesta seção abordaremos cada um e mostraremos exemplos de soluções existentes.

3.2.1

Printer Host

Segundo o dicionário da PC Magazine5, o host-based printing é definido por: “Um sistema de impressão que depende inteiramente do computador host para executar todo o processamento da impressora. A CPU do computador rasteriza os dados, o que cria os bitmaps das páginas impressas. Também envia comandos diretamente para os cabeçotes de impressão.”, Este conceito pode e é estendido para a impressão 3D. No Capitúlo 4

comentaremos sobre algumas das soluções existentes nesse campo.

Evans (2012) menciona em seu livro que uma aplicação de Printer Control, ou controle de impressora, é um aplicativo host que controla adequadamente nossa impressora e geralmente é um hub de onde tudo é operado. A partir desta aplicação, podemos controlar os movimentos da impressora, definir e monitorar a temperatura da cama e da extrusora de

(32)

30 Capítulo 3. Hierarquia da Impressão 3D

impressão, iniciar, pausar e cancelar trabalhos de impressão, e o trabalho mais importante que é o processamento do arquivo G-Code, onde o controlador enviará os comandos para a impressora 3D.

3.2.2

Modelos 3D

SegundoEvans(2012) o processo da impressão 3D começa com um bom modelo em 3D. Normalmente o modelo que a gente procura é o STL, como mencionado no Capítulo 1. Atualmente existem dezenas de sites que fornecem modelos em 3D gratuitamente ou pagos, para citar alguns temos o Thingiverse6 e o MyMiniFactory7. Também é possível modelar o

objeto a ser impresso em softwares como o Blender8(Figura8), OpenSCAD9(Figura9), entre

outros. Esses modelos ao serem importados aos sistemas Fatiadores, que discutiremos com mais detalhes na seção a seguir, podem ser redimensionados, ou seja, escalados, mudados de posição e multiplicados. Ainda é um problema não resolvido de forma satisfatória o uso de programas modeladores para a criação de projetos de usuários que não são designers 3D.

Figura 8 – Blender Figura 9 – OpenSCAD

3.2.3

Fatiadores

Uma aplicação fatiadora, segundoEvans (2012), cria os comandos necessários para a impressora 3D a partir do modelo em 3D(STL), que resulta em um arquivo G-Code. O

G-Code é uma linguagem que foi criada juntamente com a tecnologia CNC mencionada

anteriormente, e é composta por uma série de comandos que executam atividades diferentes na impressão 3D. Também existem alguns formatos de G-Code que são proprietários, ou seja, somente alguns fatiadores e impressoras 3D conseguem gerar e interpretar esse tipo de arquivo. Existem diversos programas fatiadores, os principais são o Simplify3D c 10(Figura

11) que é, um fatiador proprietário, e o Cura11(Figura10), desenvolvido pela Ultimaker

que é distribuído como open-source.

6 http://thingiverse.com/ 7 http://myminifactory.com/ 8 http://www.blender.org/ 9 http://www.openscad.org/ 10 https://www.simplify3d.com/ 11 https://ultimaker.com/en/products/ultimaker-cura-software

(33)

3.3. Impressoras 3D tipo FDM - Fused Deposition Modeling 31

Figura 10 – Cura

Figura 11 – Simplify3D c

3.3

Impressoras 3D tipo FDM - Fused Deposition Modeling

Varotsis (2017) define que Fused Deposition Modeling(FDM) ou Fused Filament

Fabrication(FFF), é um processo de manufatura aditiva que pertence aos materiais que são

da família de extrusão(materiais derretidos). Na tecnologia FDM, um objeto é construído depositando material por extrusão em um caminho pré-definido camada por camada. Os materiais usados são polímeros termoplásticos que vem em forma de filamentos(veja imagem 12).

Figura 12 – Filamentos para impressão FDM

FDM é a tecnologia de impressão 3D mais utilizada. Segundo Varotsis (2017), representa a maior base instalada de impressoras 3D em todo o mundo e é frequentemente a primeira tecnologia a que as pessoas são expostas. Veja um exemplo de impressora 3D FDM na imagem 13.

(34)

32 Capítulo 3. Hierarquia da Impressão 3D

Figura 13 – Impressora FDM 3DCreality CR-10

3.4

Como Funciona a Tecnologia FDM?

Varotsis (2017) define que o processo de impressão com tecnologia FDM é feito em três partes:

1. Uma bobina de filamento termoplástico é carregada primeiro na impressora. Uma vez que o bico tenha atingido a temperatura desejada, o filamento é alimentado para a cabeça de extrusão e no bocal onde se funde.

2. A cabeça de extrusão é conectada a um sistema de três eixos que permite que ela se mova nas direções X, Y e Z. O material fundido é extrudado em filamentos finos e é depositado camada por camada em locais predeterminados, onde resfria e solidifica. Às vezes, o resfriamento do material é acelerado através do uso de ventiladores de refrigeração conectados à cabeça de extrusão.

3. Para preencher uma área, várias passagens são necessárias (semelhante a colorir um retângulo com um marcador). Quando uma camada é concluída, a plataforma de construção se move para baixo, ou em outras conFigurações da máquina, a cabeça de extrusão se move para cima, e uma nova camada é depositada. Este processo é repetido até que a peça esteja completa.

(35)

3.4. Como Funciona a Tecnologia FDM? 33

(36)
(37)

35

4 Programas para Controlar uma Impressora

3D

O mundo da impressão 3D possui um fluxo bem definido:

Mode-lagem

Fatia-mento

Impres-são

Acaba-mento

Figura 15 – Fluxo da Impressão 3D

Dado a sua natureza Open Source, que se iniciou nos anos 2000, quando as primeiras patentes relacionadas a essa tecnologia tiveram seu vencimento, é natural que os softwares envolvidos neste mundo também tenham seu surgimento ligado a iniciativa Open Source. Entretanto, os softwares existentes não atendem à todas as necessidades que um usuário tem no uso de uma impressora 3D, principalmente a respeito dos servidores de impressão. Como definido, Printer Host (Capítulo 3) é um software controlador, onde via uma conexão serial, é possível enviar e receber comandos de uma impressora 3D. Porém, esta não é sua principal utilidade, e encontramos servidores de impressão com algumas características que tem por objetivo dar mais do que o controle da impressora 3D, como veremos a seguir.

4.1

Soluções Existentes

A seguir conheceremos algumas das soluções existentes no contexto de servidores de impressão.

4.1.1

Repetier Host

O Repetier Host1 é um printer host para uso no desktop. Além das ferramentas

de controle e gerenciamento da impressora 3D, ele possui um ambiente de renderização de objetos 3D, sejam eles os objetos CAD ou o arquivo G-Code, possui monitoração de temperaturas, e o fatiamento de arquivos CAD para G-Code usando fatiadores externos. Para estender o seu uso, também existe o Repetier-Server, que permite o controle remoto da impressora, e o Repetier-Firmware, que mencionamos na Seção 3.1. O Repetier Host possuía seu código aberto até a versão 0.90 lançada em 23 de Junho de 2013 sob uma

(38)

36 Capítulo 4. Programas para Controlar uma Impressora 3D

licença open source. Após isso os criadores Marcus Littwin e Roland Littwin realizaram um fork2 e tornaram o código das versões posteriores proprietário. O projeto Repetier

Host foi desenvolvido usando a tecnologia .Net para Linux e Windows, e em Objective-C para Mac. O projeto pertence a Hot-World GmbH & Co. KG, uma empresa dos irmãos Littwin. A última versão do Repetier Host é a 2.0.5 para Linux e Windows, e 1.0.2 para Mac.

Figura 16 – Visão Geral do Repetier Host

4.1.2

OctoPrint

O OctoPrint3 é um printer host criado para ser um host remoto, ou seja, ele possibilita o gerenciamento remoto da impressora 3D. Ele foi desenvolvido para ser um servidor remoto, onde o usuário acessa um dispositivo com o OctoPrint instalado, normalmente um RaspberryPi, e realiza o controle da impressora. Ao conectar a impressora 3D ao RaspberryPi ou qualquer que seja o dispositivo que esteja servindo o OctoPrint, o usuário tem acesso a ferramentas como o controle geral da impressora, monitorações de temperaturas, ser informado através de Push Notifications do status da impressora, além de possuir plugins que estendem suas funcionalidades. O OctoPrint possui seu código aberto, e foi criado pela desenvolvedora alemã Gina Häußge. A versão 1.0.0 do OctoPrint foi lançada em 28 de Outubro de 2013 e no momento da escrita deste trabalho se encontra na versão 1.3.6. Häußge escreveu o código do OctoPrint usando Python-Flask para a parte servidor, e HTML/JavaScript para o cliente.

2 fork significa realizar uma cópia de um repositório de um projeto. 3 https://octoprint.org

(39)

4.2. Discussão 37

Figura 17 – Visão Geral do OctoPrint

4.1.3

MatterControl

O Matter Control4 é um printer host desenvolvido desde 2014 pela empresa

Mat-terHackers, sediada na Califórnia, Estados Unidos. Em suas ferramentas se encontram a renderização do modelo em 3D, gerenciamento geral da impressora e envios de SMS quando a impressão se conclui. Possui seu código fonte aberto sobre uma licença open source e é 100% escrito com a linguagem de programação C#. É uma aplicação multiplataforma, porém no ambiente Linux é limitado as plataformas baseadas em distribuições Ubuntu ou Linux Mint, de acordo com os binários disponibilizados em seu web site. No momento da escrita deste trabalho, o Matter Control se encontra na versão 1.7.5.

Figura 18 – Visão Geral do Matter Control

4.2

Discussão

Conforme apresentado nas seções anteriores, muitos usuários esperam controle e flexibilidade não só antes de imprimir seu modelo, mas também durante e após o processo de impressão. Na questão de flexibilidade antes de imprimir um modelo, notamos que os

(40)

38 Capítulo 4. Programas para Controlar uma Impressora 3D

usuários apreciam muito que os servidores de impressão possuam um fatiador embutido, e que forneçam possibilidades de se escolher qual software fatiador escolher dentro das possibilidades existentes, normalmente as soluções de servidores de impressão existentes limitam o usuário nessa escolha. Vemos nas seções anteriores, que algumas soluções ainda possuem interfaces totalmente opostas a ideia moderna de criações de interfaces para os usuários, que também fornecem facilidade no uso para leigos, que são a grande parte dos usuários, e usuários avançados. Também não existe uma solução totalmente satisfatória em aplicações multiplataformas, que atendam aos sistemas operacionais que os usuários possuem, logo há espaço para desenvolvimento de novas ferramentas e produtos. No próximo capítulo apresentaremos o software desenvolvido neste projeto e que busca melhor atender ao usuário, proporcionando a oportunidade de trazer de volta sua liberdade, fazendo o uso das novas tecnologias disponíveis.

(41)

39

5 Atelier Printer Host

5.1

Motivação

Desenvolver o Atelier veio da análise dos softwares existentes e o quão atrasados eles se comparam com a visão moderna de desenvolvimento de interfaces e experiência do usuário. Além de não serem portáveis para muitas plataformas, os softwares apresentam ferramentas até poderosas, porém com pouca usabilidade e experiência de usuário. Outra motivação é que as tecnologias que são de fato Open Source podem ser limitadas ou majoritariamente usadas em uma única plataforma, como o OctoPrint que discutimos anteriormente. Com isso em mente, o Atelier nasceu para ser uma alternativa moderna, multiplataforma e com a melhor experiência de usuário que as tecnologias que usamos podem proporcionar.

5.2

Tecnologias Utilizadas no Atelier

No desenvolvimento do Atelier escolhemos a linguagem de programação C++, que nos proporciona robustez, performance além de outras características inerentes a linguagem. Com o uso de C++ garantimos a integridade dos tipos das variáveis usadas além de ser uma linguagem mais próxima a máquina. Para auxiliar no desenvolvimento multiplataforma usamos o framework Qt, desenvolvido e mantido pela The Qt Company c , e que possui a maioria de suas bibliotecas com licenças Open Source. O Qt proporciona abstrações de sistema que são importantes quando trabalhamos no desenvolvimento de software para plataformas totalmente opostas como Linux e Windows. No uso do Qt como framework de desenvolvimento ganhamos velocidade e qualidade no processo de desenvolvimento do Atelier, proporcionando aos desenvolvedores a segurança necessária quando estamos lidando com impressoras 3D como nossos dispositivos finais.

(42)

40 Capítulo 5. Atelier Printer Host

5.3

AtCore

AtCore é um acrônimo para Atelier Core. O AtCore é uma biblioteca de comunicação

entre o computador e a impressora 3D que está licenciado sob uma licença Open Source. A partir desta biblioteca é possível conectar qualquer tipo de interface que seja compatível ao AtCore para o controle e gerenciamento de uma impressora 3D. Definimos a estrutura simplificada do AtCore na figura19 a seguir:

Figura 19 – Diagrama de Classe do AtCore Simplificado (Omitindo Métodos)

Nas próximas seções descreveremos as classes do AtCore.

5.4

Classe SerialLayer

A classe SerialLayer é responsável por toda a comunicação serial entre a impressora e o host. Por si só é uma classe bem simples, onde baseada na biblioteca QSerialPort1

do Qt, toda a questão de diferença de sistemas e portas que são usadas na conexão, principalmente nos sistemas Unix e Windows, são abstraídas por essa biblioteca, fazendo com que nossa única preocupação seja enviar, receber comandos e tratar eventuais erros que possam acontecer.

Para compatibilidade binária, que é a portabilidade de programas executáveis de uma plataforma ou versão para outra,usamos uma estrutura chamada d-pointer, que

(43)

5.5. Classe Temperature 41

segundo a definição encontrada na Wiki do Qt informa que a implementação e os detalhes

da biblioteca podem ser escondidos dos usuários e as mudanças na implementação podem ser feitas sem quebrar a compatibilidade binária2, ou seja, encapsulamos a biblioteca, fazendo

com que com a evolução do AtCore e suas versões, as versões futuras não quebrem as anteriores, evitando assim uma recompilação da aplicação. A compatibilidade binária pode ser quebrada quando alguma mudança na biblioteca força a recompilação da aplicação. Por isso todas as classes possuem uma estrutura privada que somente através desse ponteiro que os atributos e métodos serão acessados, evitando que novas versões do AtCore quebrem as anteriores. Nesta classe que somente o AtCore pode acessar, definimos variáveis que lidam com o que é enviado e retornado pela impressora através da porta serial, e que posteriormente podem ser transferida para camadas de interface ou não.

5.5

Classe Temperature

A classe Temperature foi criada para lidar com a aferição de temperaturas da cama e extrusores da impressora 3D. A classe analisa os retornos das strings de temperatura através de expressões regulares, e então armazena esses valores em variáveis que são posteriormente acessadas pela interface gráfica.

A seguir mostramos exemplos de tipos de strings retornadas pela impressora:

ok T:46.2 /215.0 B:34.1 /215.0 T0:46.2 /215.0 @:127 B@:127 P:31.7 A:32.1 ok T:135.7 /160.0 B:57.9 /160.0 T0:135.7 /160.0 @:127 B@:127

ok B:49.06 /55 T:64.78 /215

Por isso tratar cada temperatura, foi necessário, já que pelo menos os formatos B: para cama e T: para extrusores são padrões, mas a sua ordem e formatos de string não são. Neste momento o código se encontra limitado ao tratamento de somente uma temperatura de origem do extrusor, já que não possuímos acesso a impressoras 3D que possuem mais de um extrusor para efetuar testes e adaptações apropriados.

5.6

IFirmware e Plugins

A classe IFirmware é abtrata e deriva de uma interface, onde a partir dela esten-demos as outras classes que são os plugins do AtCore. Para criar plugins seguimos as definições da documentação do Qt para a criação dos mesmos. Isso implicou na criação da classe IFirmware, e nos plugins que herdam da mesma, além de usar o QPluginLoader para fazer o carregamento destes plugins na aplicação principal3. Como dizemos na Seção

3.1, são vários os firmwares para impressoras 3D e pelas variações que eles possuem

2 https://wiki.qt.io/D-Pointer

(44)

42 Capítulo 5. Atelier Printer Host

criamos uma estrutura de plugins baseadas nesta classe que trata as especificidades de cada firmware. Por ser uma interface, a maioria de seus métodos são métodos virtuais que são implementados nas respectivas classes de plugin. Cada classe possui uma macro, ’Q_DECLARE_INTERFACE’, que a define como interface para o Qt meta-object system,

que reconhece a mesma.

A partir disso criamos os plugins. Até o momento da escrita desse trabilho são sete plugins criados a partir dos firmwares que são open-source, incluindo o firmware GRBL, que é a base de onde a Impressão 3D foi construída.

Para que estes plugins sejam carregados, temos um método que realiza uma análise para descobrir o caminho onde os plugins foram instalados. A partir do início da conexão, temos um segundo método que analisa automaticamente qual o plugin instalado na impressora 3D e a partir dessa análise realizar o carregamento do plugin definido. O usuário também possui a escolha de pré-configurar qual o firmware que sua impressora possui, e no caso da conexão o sistema pula a parte de detecção automática.

Como mencionado, para fazer o carregamento do plugin é necessário usar a classe

QPluginLoader4. A partir do sucesso dessa operação, a impressora estará devidamente

conectada e podemos usá-la normalmente.

Uma das vantagens de usarmos o Qt é o uso de signals e slots. Esta ferramenta é possível graças ao Qt meta-object system, que já mencionamos anteriormente. Um sinal é disparado quando um evento particular ocorre, e a este sinal temos conectado uma função, que ao receber o sinal executa os procedimentos. Segundo a documentação do Qt, todas as classes que herdam de QObject podem conter sinais e slots5. Segue a definição oficial:

“Todas as classes que herdam o QObject ou uma de suas subclasses (por exemplo, QWidget) podem conter sinais e slots. Sinais são emitidos por objetos quando eles mudam seu estado de uma maneira que pode ser interessante para outros objetos. Isso é tudo que o objeto faz para se comunicar. Não sabe nem se importa se alguma coisa está recebendo os sinais que emite. Esse é um verdadeiro encapsulamento de informações e garante que o objeto possa ser usado como um componente de software.”

Um sinal é emitido a partir da palavra chave emit. Para conectar e desconectar uma função a um signal usamos as palavras chaves connect e disconnect.

Listing 5.1 – Exemplo de um connect

c o n n e c t(d- >serial, &S e r i a l L a y e r::r e c e i v e d C o m m a n d, this, &A t C o r e:: f i n d F i r m w a r e) ;

4 http://doc.qt.io/qt-5/qpluginloader.html 5 http://doc.qt.io/qt-5/signalsandslots.html

(45)

5.7. PrintThread 43

Listing 5.2 – Exemplo de um disconnect

d i s c o n n e c t(f i r m w a r e P l u g i n() , \&I F i r m w a r e::r e a d y F o r C o m m a n d, this, \&A t C o r e::p r o c e s s Q u e u e) ;

5.7

PrintThread

A classe PrintThread como o próprio nome traz é uma thread para realizar a impressão de um arquivo G-Code. Isso torna o processo de impressão um processo a parte da aplicação principal do sistema evitando que o mesmo fique congelado e sem controle da impressora 3D.

No exemplo de código5.3, vemos de forma simplificada como o processo de impressão ocorre. Temos uma estrutura de repetição, onde enquanto o arquivo não terminar de ser lido, processamos cada linha, até o fim do arquivo ser atingido.

Listing 5.3 – Exemplo simplificado do processo de impressão

v o i d P r i n t T h r e a d::p r o c e s s J o b() { if (d- >g c o d e s t r e a m- >a t E n d() ) { e n d P r i n t() ; } n e x t L i n e() ; w h i l e (d- >c l i n e.i s E m p t y() && !d- >g c o d e s t r e a m- >a t E n d() ) { n e x t L i n e() ; } if (!d- >c l i n e.i s E m p t y() && d- >core- >s t a t e() != A t C o r e::P A U S E) { e m i t n e x t C o m m a n d(d- >c l i n e) ; } }

5.7.1

Injeção de Comando

Dentro da classe PrintThread possuímos uma ferramenta que realiza uma injeção de comando. A ideia desta função é que o usuário em vez de ter um retrabalho de fatiar um modelo em 3D para fazer uma pequena alteração, como adicionar uma pausa ou inserir alguma mensagem, pode usar dos métodos de injeção de comando e as definições contidas no AtCore e adicionar esses comandos no arquivo, onde ao realizar a análise da linha lida no arquivo, se a linha começar com um gatilho que definimos como ";-", o processo de realizar a injeção de comando é iniciado e o comando injetado na lista de comandos enviados a impressora.

(46)

44 Capítulo 5. Atelier Printer Host

Gatilhos de injeção de comandos suportados até o momento:

;- Pause: G91, G0 Z1, G90, G1 X0 Y195

;- Message: Show this message (limited chars depends on machine maybe) ;- Pause: G91, G0 Z1, G90, G1 X0 Y195

;- Extruder Temperature:160,0,true (set temp of extruder 0 to 160 and wait) ;- Bed Temperature: 80,true (set bed temp to 80 and wait.)

;- Fan Speed: 100, 0 (set fan 0 to 100 ) ;- Print Speed: 50 (set print speed to 50) ;- Flow Rate: 50 (set flow rate to 50)

;- Message: Show this message (limited chars depends on machine maybe) ;- Command: G28

(47)

5.8. Atelier 45

5.8

Atelier

Atelier é a interface de usuário que foi construída e que usa o AtCore para gerenciar as impressoras 3D. Através de pesquisas e recomendações de usuários, percebemos que era necessário o desenvolvimento de uma interface simples e prática que atendesse as seguintes demandas:

1. Atenda aos usuários desktop; 2. Atenda aos usuários mobile;

3. Atenda aos usuários de embarcados.

Note que são experiências diferentes e ambientes dependendo do público-alvo. Neste traba-lho elaboramos uma interface que atende aos usuários de embarcados, e também funciona no desktop. Graças ao uso do Qt, não temos uma preocupação de compatibilidade multi-plataforma, já que qualquer aplicação Qt é compatível com todas as plataformas6. Nosso verdadeiro desafio é elaborar uma interface que seja adaptável a todos esses ambientes.

A princípio desenvolvemos um MVP - Minimum Viable Product com as ferramentas básicas para controle de uma impressora 3D, que neste caso são ferramentas da qual o

AtCore já possui o suporte. Com a ajuda do KDE Visual Design Group, que é um grupo

de trabalho dentro da comunidade do KDE, voltado ao design de aplicações, elaboramos uma primeira versão do que poderia vir a ser a nova interface, que é possível conferir na figura 20 a seguir.

(48)

46 Capítulo 5. Atelier Printer Host Figura 20 – A telier Mo ckup

(49)

5.9. Tecnologias Utilizadas 47

5.9

Tecnologias Utilizadas

Para desenvolver essa nova interface, e que ela seja compatível com dispositivos de telas pequenas e diversas plataformas, utilizou-se novamente o Qt com outras de suas bibliotecas. Todo o desenvolvimento de telas mostrados a seguir foram feitos manualmente sem o auxílio de qualquer aplicação que forneça ferramentas de criação de interfaces no tradicional arrasta caixa.

5.9.1

QML - Qt Modeling Language

Uma das principais bibliotecas que o framework do Qt possui é o QML. A partir desta linguagem que parece json-like, é possível desenvolver aplicações que já são

mobile-friendly e touch-mobile-friendly. Além de otimizar o processo de desenvolvimento de interfaces

justamente por sua linguagem simples e direta.

Listing 5.4 – Exemplo de código de um botão em QML Q Q C 2.B u t t o n{ t e x t: i 1 8 n(" A x i s and F i l a m e n t ") ; L a y o u t.f i l l W i d t h: t r u e L a y o u t.f i l l H e i g h t: t r u e f l a t: t r u e i c o n.w i d t h: 48 i c o n.h e i g h t: 48 i c o n.n a m e: " a p p l i c a t i o n s - e n g i n e e r i n g " o n C l i c k e d: p a g e S t a c k.l a y e r s.p u s h(Qt.r e s o l v e d U r l(" A x i s P a g e . qml ") , {c o r e: c o r e}) }

O QML suporta lógicas em JavaScript ou C++, e a necessidade de um ou outro depende do objetivo do seu projeto.

5.9.1.1 Kirigami

O Kirigami7 é um framework desenvolvido em cima do QML para desenvolvimento de interfaces já relacionado ao Human Interface Guidelines (H.I.G)8 do KDE. Foi de-senvolvido para criação de aplicações mobile e aplicações convergentes. A partir de um

Kirigami.Page criamos páginas, onde cada página contém componentes, e organizamos

essas páginas em pilhas ou camadas. Com isso o gerenciamento de troca de telas fica por conta do Kirigami, bastando ao desenvolvedor simplesmente registrar as páginas de acordo com o fluxo esperado de troca de telas.

7 Acessado em: 07/07/2019 - https://techbase.kde.org/Kirigami 8 https://hig.kde.org/

(50)

48 Capítulo 5. Atelier Printer Host

5.10

Telas Desenvolvidas

A partir do design apresentado na seção anterior, foram desenvolvidas telas para as atividades principais de gerenciamento da impressora 3D. Nas subseções a seguir descreveremos cada uma delas.

5.10.1

Conexão com a Impressora

A tela de conexão a impressora 3D é a primeira tela que o usuário verá ao iniciar a aplicação. A mesma permite uma rápida conexão sem que um perfil de impressora esteja definido, ou criar e editar perfis já existentes. Como mostrado na figura21a seguir:

Figura 21 – Tela de Conexão

Note que nesta primeira tela já estamos adotando um padrão mínimo de tamanho de tela de 480 x 700 pixels. Que consideramos como o tamanho de uma tela de 5 polegadas para dispositivos embarcados.

5.10.2

Gerenciamento de Perfis

Cada impressora 3D possui uma configuração diferente, podendo variar se ela é uma impressora cartesiana, ou delta, impressora com mesa redonda, firmware, tamanho dos eixos X, Y e Z, e de temperaturas da mesa e extrusor. Para garantirmos que o usuário não tenha ruídos ao conectar uma mesma impressora diversas vezes, temos uma página de gerenciamento de perfis, como mostrado na figura22. Neste caso o usuário pode entrar com o nome do perfil, os valores padrões que a impressora dele é compatível, e posteriormente conectar direto sem precisar de mais informações além da porta serial que a impressora está conectada. Com as informações de temperaturas máximas que a mesa ou o extrusor

(51)

5.10. Telas Desenvolvidas 49

podem atingir, caso a impressora possua algum mal funcionamento, podemos avisar ao usuário ou desligar a mesma, como prevenção de segurança, veja figura 23.

Figura 22 – Tela de Conexão vazia Figura 23 – Tela de Conexão com valores

Ao confirmar os dados o usuário recebe uma notificação passiva(figura24), con-firmando de que o perfil foi salvo com sucesso. Caso o usuário coloque um nome de um perfil que já existe, outra notificação passiva vai aparecer alertando-o para trocar o nome (figura 25).

Figura 24 – Perfil salvo com sucesso Figura 25 – Perfil não pode ser salvo

5.10.3

Gerenciamento da Impressora

Ao conectar a uma impressora, o usuário irá ver a tela na figura26, de gerenciamento. Nela é possível imprimir um arquivo que já esteja em formato G-Code, desconectar da impressora, conectar outras impressoras e gerenciá-las e por último ir ao dashboard que contém outras ferramentas para uso da impressora.

(52)

50 Capítulo 5. Atelier Printer Host

Figura 26 – Tela de Gerenciamento

Note que no título da página temos o perfil de impressora e qual porta estamos conectados para que o usuário possua clareza em qual impressora ele está trabalhando no momento.

Para imprimir um arquivo, é aberta uma janela, como na figura 27, que aceita somente arquivos com extensão G-Code para que não haja erros na seleção de arquivo. No momento que o usuário seleciona o arquivo, o processo de impressão começa, e ele é encaminhado para a página de temperaturas para monitorar o aquecimento da impressora.

Figura 27 – Janela de Selecionar Arquivo

5.10.4

Dashboard

No Dashboard o usuário poderá acessar várias ferramentas para controle e monito-ração da impressora. Até o momento da escrita deste trabalho temos quatro componentes

(53)

5.10. Telas Desenvolvidas 51

definidos: temperaturas, controle dos eixos, monitoração por vídeo e log.

5.10.4.1 Temperaturas

Na página mostrada na figura28, o usuário será capaz de gerenciar as temperaturas da cama e do extrusor. Os dois componentes de seleção de temperatura no componente mudam de cores de acordo com a seleção de temperaturas pelo usuário. Também é mostrado qual a temperatura selecionada e qual o valor atual de temperatura do objeto.

Figura 28 – Gerenciamento de Temperaturas

Essa também é a primeira janela que o usuário vai ver após selecionar um arquivo para imprimir, onde ele será informado do quanto falta em % para a temperatura alvo ser alcançada.

Nesta tela também vemos os primeiros botões chaves que nos auxiliam no processo de impressão. Temos o botão de parada de emergência que faz com que a impressora interrompa todos os processos e só volte a funcionar após ser desligada e ligada novamente. O botão de pausa, recomeçar e cancelar realizam o que o próprio nome já diz.

5.10.4.2 Controle dos Eixos

Uma impressora 3D possui três eixos, X, Y e Z, como mencionados anteriormente. Além disso possuímos mais um componente, que é definido no G-Code como um eixo, o eixo E, que gerencia o quanto de material, neste caso o filamento, é empurrado ou puxado no extrusor. Nesta página mostrada na figura 29, o usuário também consegue orientar os eixos para os pontos 0 de cada eixo ou dois 3 eixos principais.

(54)

52 Capítulo 5. Atelier Printer Host

Figura 29 – Gerenciamento dos Eixos

5.10.4.3 Monitoração Remota

Normalmente os usuários de uma impressora 3D gostam de monitorar o processo de impressão remotamente através de câmeras que já vem pré-instaladas na impressora ou que ele mesmo configure. Nesta janela(figura30), descobrimos todos os dispositivos de vídeo conectados ao computador e nos conectamos a eles. Cada aba mostra tais dispositivos. Com isso, o usuário pode acessar as imagens para garantir que nada esteja errado no processo de impressão.

Figura 30 – Monitoração por Câmera

5.10.4.4 Sistema de Log

Um sistema de log é importante em qualquer sistema, principalmente nos que lidam com máquinas. Durante todo o processo em que a impressora está conectada a

(55)

5.10. Telas Desenvolvidas 53

um computador, ela gera dados, e para garantir que a mesma esteja funcionamento corretamente, às vezes precisamos conferir o log que contém essas informações. No log é registrado cada nova mensagem que o AtCore recebe ou envia, como mostrado na figura

31.

Figura 31 – Página de Log

Neste componente tivemos um desafio que resolvemos de uma forma simples. A cada segundo é gerado de 2 a 3 novos dados, para gerenciar todos, criamos um modelo a partir da classe QAbstractListModel9, que é uma das várias classes de modelos que o

Qt possui. Com isso podemos criar uma lista de uma dimensão de strings, onde cada

elemento dessa lista é um novo dado registrado no modelo, que fica acessível a partir deste componente.

5.10.5

Compatibilidade entre Plataformas

Como dito anteriormente, por usarmos o Qt, temos a possibilidade de ter um código fonte, executado em múltiplas plataformas sem ser necessário múltiplas adaptações no código fonte. Nesta subseção mostraremos imagens do Atelier nas plataformas Linux, e na plataforma Linux Embarcada em um Raspberry Pi.

5.10.6

Linux

Desde o início do Atelier todos os desenvolvedores usam plataforma Linux para desenvolvimento, por isso a compilação e deploy da aplicação é feita de forma automática pela linha de comando do Linux. A aplicação se adapta aos diferentes temas que os ambientes gráficos do Linux proporcionam. As imagens relacionadas ao Linux foram as usadas na seção 5.10.

(56)

54 Capítulo 5. Atelier Printer Host

5.10.7

Embarcado - Raspberry Pi 3

Para o teste no dispositivo embarcado do Raspberry Pi 3, que possui uma tela de 5 polegadas, foi usado um Arduino Mega que contém o firmware Marlin para realizar um mock, onde o mesmo simula o comportamento de um objeto real, como o de uma impressora 3D.

Figura 32 – Arduino conectado ao dispositivo

Raspberry Figura 33 – Página de Perfil preenchida

Figura 34 – Página de conexão preenchida com perfil

Figura 35 – Página de gerenciamento da im-pressora

(57)

5.10. Telas Desenvolvidas 55

Figura 38 – Página de gerenciamento dos eixos

Figura 39 – Gerenciamento de Temperaturas

5.10.8

Internacionalização

Foi possível observar que todas as imagens do Atelier estão com seu idioma em Inglês. Através de ferramentas de internacionalização é possível que a aplicação possua diferentes idiomas de acordo com que os arquivos de tradução sejam atualizados com as novas informações. Neste projeto usamos uma biblioteca do KDE chamado KI18n, que nos disponibiliza várias ferramentas para tradução e carregamento das mesmas de acordo com o idioma definido no sistema. A internacionalização é uma ferramenta indispensável para que o Atelier seja acessível em qualquer idioma, e em qualquer lugar.

(58)
(59)

57

6 Conclusão e Trabalhos Futuros

Neste trabalho podemos observar que a área de impressão 3D tem dezenas de possibilidades e formas de ser melhorada e renovada. Com o Atelier esperamos melhorar a forma que o usuário interage com a impressora, tornando ela mais acessível, sempre procurando descobrir o que o usuário deseja e entregando valor através do Atelier.

O processo de desenvolver e evoluir um software não tem seu fim, principalmente quando o software está inserido no universo de software livre. E por isso, o Atelier continuará a ter seu desenvolvimento ativo, com novas ferramentas e funcionalidades.

Vemos aqui como uma tecnologia que surgiu nos anos de 1960 cresceu e evoluiu, e se tornou uma tecnologia fundamental para a medicina, indústria da beleza, entre outros, e ainda proporciona espaço para inovar no dia a dia de uma pessoa que tem a impressão 3D como hobbie.

Um software deve ter a possibilidade de crescer e escalar sem limitações, por isso temos a separação de camadas entre o AtCore e o Atelier, o que nos dá a possibilidade de crescer as duas vertentes sem trazer um impacto grande a cada uma. Essa separação também nos proporciona a capacidade de gerenciar mais de uma impressora 3D em uma mesma instancia do Atelier, que é uma das funcionalidades chave deste software caso nos tornemos um produto no futuro.

O Atelier é um projeto que está debaixo do guarda-chuva de aplicações de uma das maiores comunidades de Software Livre do mundo, o KDE, nos proporcionando alcance mundial através de uma linha de comando em sistemas Linux.

6.1

Trabalhos Futuros

Neste projeto temos mapeados diversas funcionalidades para desenvolvimento futuro onde se destacam:

1. Implementação de visualização do arquivo G-Code em 3D; 2. Implementação de visualização de temperaturas em um gráfico; 3. Implementar o gerenciamento de n impressoras;

4. Implementar uma camada web para acesso remoto;

5. Implementar uma camada de plugins para o Atelier, para que a comunidade possa criar seus plugins e usá-los à vontade no software;

(60)

58 Capítulo 6. Conclusão e Trabalhos Futuros

6. Implementação de um sistema de fatiamento embutido.

Como dito, um software sempre necessitará ser evoluído. Assim como a cultura que o envolve. Vimos neste trabalho o quão importante é a cultura Open Source, para que a tecnologia FDM continue a evoluir. E o Atelier veio com esse propósito, de trazer a cultura que fez com que essa tecnologia se tornasse tão popular, de volta aos softwares usados na área. Proporcionando assim, a volta da liberdade que todos os usuários merecem no uso de alguma tecnologia.

6.2

Desafios Técnicos

Em todo ciclo de desenvolvimento de um software encontramos desafios. Neste não foi diferente. O principal desafio que tive e ainda vou ter por mais algum tempo é a falta de uma impressora 3D. Desde que o Atelier começou, há três anos atrás, os únicos testes que foram possíveis foram com impressoras 3D de colegas e amigos nas minhas viagens pelo país.

Pelo AtCore já ser uma biblioteca estável e testada, as alterações que tive que realizar foram mínimas, somente alguns ajustes e manipulações de ponteiros para que o Atelier funcionasse corretamente. Por exemplo, a classe Temperature é declarada como um

shared_ptr, e o QML não é compatível com esse tipo de ponteiro, então tive que criar um

método que me retornasse o ponteiro para que eu pudesse acessar os valores corretamente. Também houve o desafio de aprender o próprio QML. Acredito que o tempo de desenvolver todas as telas não deve ter passado de 10 dias. O maior tempo investido foi nas integrações entre o AtCore e o QML.

Incluem-se também como desafios técnicos para o futuro do projeto a criação do ambiente de visualização de arquivos STL em 3D. O Qt possui uma biblioteca para mani-pulação de ambientes tri-dimensionais1, porém é necessário conhecimento de Computação

Gráfica e da biblioteca Assimp2 para o desenvolvimento do mesmo, sendo um desafio

técnico para nosso time, já que não temos experiência com essa área da computação. Também notou-se que o desempenho do Atelier no Raspberry Pi, foi menor do que o esperado. O QML é otimizado para ser processado no hardware e não no software, então é necessário um estudo sobre essa questão para que seja otimizado o processo de renderização do QML que é feito com OpenGL.

1 https://doc.qt.io/qt-5/qt3d-index.html 2 http://www.assimp.org/

(61)

6.3. Como contribuir 59

6.3

Como contribuir

Como visto na seção6.1, temos muito trabalho pela frente, e como um projeto que necessita evoluir, precisamos de toda ajuda possível. Abaixo listamos nossos grupos de comunicação e onde é possível encontrar os códigos-fonte do AtCore e do Atelier. A forma mais fácil de encontrar os desenvolvedores do Atelier são nos grupos do Telegram. Nos ajude a continuar construindo esse futuro, um futuro mais livre e com mais liberdade, com tecnologia.

1. Website: https://www.atelier.kde.org 2. Grupo no Telegram [EN-Us]: @KDEAtelier 3. Grupo no Telegram [PT-Br]: @KDEAtelierBr

4. Código fonte do AtCore: https://www.github.com/KDE/atcore

(62)
(63)

61

Referências

ARTLEY, B. Automotive 3dprinting applications. 2017. Citado na página 21.

CHUA KAH FAI LEONG, C. S. L. C. K. Rapid Prototyping: Principles and Applications

- 3o Edition. [S.l.]: World Scientific Publishing Co. Pte. Ltd., 2010. Citado na página 21.

EVANS, B. 3D Printers The Science and Art of 3D Printing. [S.l.: s.n.], 2012. Citado 2 vezes nas páginas 29e 30.

JONES, M. 3dprinter firmware - which to choose and how to change it? 2018. Citado na página 27.

MA YE ZHOU, Y. Z. Z. L. L. C. Y. Z. H. X. C. M. L. 3dprinter personalized titanium plates improve clinical outcome in microwave ablation of bone tumors around the knee. 2017. Citado na página 22.

VAROTSIS, A. B. Introdution to fdm 3dprinting. 2017. Citado 2 vezes nas páginas 31

e 32.

WOHLERS, T. G. T. History of additive manufacturing. [S.l.: s.n.], 2016. Citado 2 vezes nas páginas 20 e21.

Referências

Outline

Documentos relacionados

Escoteiro: (granada) biotita muscovita granito leucocrático homogêneo, localmente foliado e com cristais centimétricos de feldspato; b) Anfibolito mesocrático a melanocrático;

As palavras pronunciadas são também considera- das no candomblé fonte de axé, importante para o mecanismo de movimentação das forças sa- gradas e sinônimo de conhecimento,

O valor médio do coeficiente de digestibilidade da MS encontrado neste experimento, para a silagem do capim- elefante com aditivo de bagaço de mandioca (56,77%) está próximo

• A taxa de precipitação por sua vez pode ser descrita em função da DSD que expressa a distribuição do número de gotas por volume por intervalo de classe de diâmetro –

Ao longo do processo evolutivo, o ser vivencia as mais diversas personalidades, nos mais diversos momentos e nas mais diversas situações, e quase sempre, tendo

Sintomas/lesões em caso de inalação : Em condições normais de utilização, não se prevê um perigo significativo de inalação.. Sintomas/lesões em caso de contacto

por tal parâmetro de legitimação e diante do quadro apresentado na tese, a conclusão aponta congruen- temente para a incapacidade de autolegitimação do direito e da Constituição

Nesta perspectiva, as linhas de pesquisa do LPG enfocam: a neuroeducação; as representações do mundo social; a psicologia econômica; a psicologia da moralidade, as