2020 é o ano da impressora 3D!
foto de capa: "3D Printer" by gonzafoles is licensed under CC BY 2.0
- Volta da "industria nacional"?
- Indústria 4.0?
- Sonho molhado de Issac Asimov?
Só para pontuar alguns motivos para usar uma impressora 3D:
- Fácil, rápida e barata prototipagem -- quando comparada aos métodos de ter que entrar em contato com uma fábrica para fazer um pequeno lote de protótipos para um projeto
- Escalabilidade -- uma vez que subir uma "linha de produção" completa é só adicionar uma impressora a mais
- Matéria prima abundante e de fácil acesso -- diversas origens e tipos de filamentos e resinas
- Peças de reposição facilmente encontradas -- uma vez que são peças comuns para projetos de eletrônica
- Muitas vezes as impressões são feitas com material de origem reciclável e/ou até mesmo a sua natureza permite que as impressões falhas sejam futuramente recicladas
- Mudança da cadeia de produção e distribuição -- reduzindo a malha de distribuição uma vez que todos os processos poderiam ficar em uma "giga-fábrica" que a mesma máquina pode ser responsável pela impressão de diversas peças
- etc
"The Future is Now - part 1" by BenedictaMLee026 is licensed under CC BY-NC-SA 2.0
Com o preço das impressoras 3D cada vez mais e mais caindo -- desde de 95 USD (495 BRL), podendo chegar há 60 USD (315 BRL) em promoções --, o conceito de imprimir em 3D se torna cada vez mais secular se aplicado até mesmo para a construção de casas, sejam elas na Terra ou em Marte. E isso acaba fazendo com que impressão 3D não seja apenas um movimento "maker" mas sim um movimento de evolução do ser humano, uma vez que há projetos de impressão:
- De órgãos
- Comida
- Sistemas orgânicos para testes de vacinas
- Membros para pessoas que tiveram os seus amputados
- Armas
- etc
Com raízes fortes em Open Hardware e Open Source, o acesso ao códigos que tais máquinas rodam e os esquemáticos de suas peças são de fácil acesso; isso significa que modificações e ajustes são possíveis, fazendo com que cada necessidade e cenário possam ser ajustados uma vez que peças do modelo "original" possam ser as vezes caras ou não disponíveis na região.
Essa diversidade de cultura nas pessoas que usam impressão 3D, reflete no que acaba sendo feita com elas; com a política de uso de máscaras e/ou protetores de rosto, um modelo de máscara 3D acabou surgindo por necessidade pois com a pandemia o impacto na cadeia de distribuição deste equipamento foi pesado por restrições de transporte, movimentações em fábricas e distribuição de matéria primas; situação remediada por um rolo de filamento e uma impressora 3D.
"DSC_0231" by Arduino_cc is licensed under CC BY-NC-SA 2.0
Intro
Caso já tenha pesquisado impressora 3D na AliExpress, uma das mais conhecidas é a Ender 3 que em promoções pode girar em torno de 1 000 reais.
"ender-3-6_1_480x480.jpg" do site oficial da Creality
Normalmente várias pessoas utilizam a Raspberry Pi para deixar esta e várias outras impressoras conectadas pela internet como um aparelho quase que Internet Of Things (IoT). Todavia, a Raspberry Pi 4 -- sua versão mais recente --, pode chegar a custar 800 reais caso queira pegar uma nova com case, cartão, carregador e etc.
Neste cenário 40% do valor representa uma peça que em muitos casos é mais do que o necessário para tarefa e, ao mesmo tempo, pode passar boa parte do tempo ociosa perto do potencial dela mesmo com a impressora em funcionamento.
"Pi" by billsdead is licensed under CC BY-NC-SA 2.0
Uma vez que vários tutoriais para realizar tal tarefa com a "Raspi" já existem, a ideia é utilizar uma Nanopi Neo 2 Black para tal uma vez que:
- Custou aproximadamente 1/7 do valor da Raspi citada
- Tem o potencial de rodar uma fazenda de 4 impressoras
- Utilizar ela além da caso da impressora 3D como, por exemplo, um servidor web -- como publicado neste texto
- etc
Rancher
A sequência de textos publicados até agora mostram que a abstração permitida pela combinação Docker + Rancher auxilia quem não tem conhecimento com configurações de sistema e/ou desenvolvimento de código configurar um servidor a rodar as aplicações que precisa com uma tela de configuração no seu navegador, quase como uma uma configuração de modem novo quando precisa digitar um ip no seu navegador e fazer as configurações necessárias.
O Rancher 'smartificou' o servidor, uma vez que você procura as aplicações que precisa com facilidade em uma 'loja' -- o Docker hub -- e clicar para configurar e rodar.
Com o intuito ainda mais de tornar tal abordagem mais e mais acessível, os testes foram realizados em um placa de entrada ao invés de uma mais top de linha como no tutorial escrito aqui -- a diferença é que a Neo 2 Black por 120 reais é quatro vezes mais barata que a M4 .
A imagem a ser utilizada neste caso é a octoprint/octoprint, o Octoprint é um controlador de impressora 3D através de um web browser.
"Printer's Puppeteer" by marius_siuram is licensed under CC BY-NC-SA 2.0
Para adicionar ele com o Rancher rodando conectado a uma placa na sua impressora 3D:
- SSH no seu servidor Rancher
ssh -l seuUsuarioNoServidor ip.do.seu.servidor
- Crie uma pasta para salvar suas configurações:
mkdir ~/octoprint cd ~/octoprint pwd # salve o output deste comando
- Descubra em qual porta o cabo da impressora 3D está conectado:
ls /dev | grep tty
- Abra o painel do Rancher e insira os valores da imagem
octoprint/octoprint
, neste caso será a versão1.4.0-python3
, e a porta5000
-- fora que a porta livre neste caso também foi a5000
, no seu caso pode ser que seja outra: - Linke o caminho criado no passo
2
-- no meu caso foi/home/nanopineo2black/octoprint
: - No canto inferior direito há uma opção de configurações avançadas, clique nela:
- Procure a opções de comandos e coloque o seguinte comando como
entrypoint
: - Procure a opção de segurança, deixe os valores assim:
- Deployie a imagem.
- Uma vez deploiada a imagem, desta vez um passo diferente será necessário. Abra o arquivo YAML de configuração do
octoprint
: - Agora você terá que adicionar tais configurações -- meu meu caso o caminho
/dev/ttyUSB0
veio do passo3
: - Acesso o IP com a porta, faça as configurações iniciais para a sua impressora e pronto:
Agora o processo de configurar a Octoprint por si só vai depender muito da sua impressora em si e o que deseja adicionar nela. Muitas pessoas colocam uma webcam antiga junto para poder fazer um monitoramento remoto das suas impressões.
"IMG_20161204_171921" by DIY Effixe is licensed under CC BY-NC-SA 2.0
Caso de uso
Baseada na Prusa 3D a minha impressora 3D funcionou com tais configurações sem maiores dores de cabeça.
Como possuo, por ora, apenas uma impressora, o limite teórico a ser apresentado não pode ser testado na prática. Todavia:
- Uma vez que a Octoprint consome, em média, 200 de RAM -- no meu caso ela consumia menos mas resolvi colocar tal número como um pior caso
- Uma vez que a Nanopi Neo 2 Black possui 850 MB de RAM livre
- Teoricamente a placa aguentaria 4 impressoras 3D conectadas nela
Fatores que foram deixados de lado nessas considerações são:
- Os números de cores da placa
- O espaço no microSD
- O overhead de rodar o Rancher e o Rancher-agent em um mesmo host -- eles estão rodando separadamente atualmente
Uma vez como não foi testado tais configurações na prática, seria díficil mensurar se o comportamento de escala é linear ou se se comporta como um sigmóide. Uma fórmula para determinar o número de impressoras controladas por uma placa teórica seria:
N = ⌊ ( M - 150 ) / P ⌋
Onde:
- N é o número de impressoras 3D controladas por uma placa
- M é a quantidade de megabytes da memória RAM da placa
- P é a quantidade de RAM em megabytes ocupada pela Octoprint -- uma vez que este valor pode mudar com futuras atualizações, reduzindo ou aumentando
- O
150
na fórmula é o equivalente ao que o Rancher utilizou nesse cenário
No exemplo citado a fórmula seria a seguinte:
N = ⌊ ( 1024 - 150 ) / 200 ⌋
N = ⌊ 4.37 ⌋
N = 4
Lembre-se de arredondar os valores para baixo uma vez que o recurso é limitado. Assim como o outro recurso limitado é o número de portas USB, no caso de exemplo esta placa possuí apenas uma, para conectar mais portas um hub USB seria necessário ou um upgrade para outra placa.
"#3DBenchy 3D-printed at low resolution on a BEETHEFIRST 3D printer" by #3DBenchy is licensed under CC BY 2.0
"Impressões" finais
Por mais que a minha impressora tenha dado o certo e sem maiores dores de cabeça, não recomendaria arriscar chegar no limite teórico com o hardware citado justamente por ser uma placa de entrada e eu não ter tido testes práticos de suas limitações. Dito isso, há outras várias placas que eu gosto e recomendo que provavelmente seriam ótimas para escalar com a tarefa e mais a possibilidade de fazer rodar outros serviços:
Sendo que dessas, já postei texto usando as duas primeiras menos terceira ainda -- pretendo utilizar ela para outras tarefas no futuro, todavia fiz alguns testes com a mesma já e rodou sem maiores dores de cabeça.
"ODROIDC2-MAIN5" by lespounder is licensed under CC BY-SA 2.0
O "26 vezes mais barata" se dá ao fato de se a pessoa fizesse uma abordagem comum de pegar uma Raspberry Pi -- no caso a mais recete -- para cada impressora que uma Neo 2 consegue gerenciar, seriam necessárias quatro placas -- uma para cada impressora --; e como 4 * 800 = 3200
, esse valor que seria gasto dividido pelo o valor da Neo 3200 / 200 = 26.666
. Por isso o título.
Apêndice
- Mesmo o Octoprint possuindo imagens para ARM 32 bits o Rancher ainda não suporta ARM 32 bits, todavia pretendo trabalhar nisso para que no futuro placas com tal arquitetura sejam suportadas nesta abordagem
- Graças à ajuda do Rico nesta resposta aqui, consegui finalizar este post; uma vez que só conseguia rodar a imagem com o famoso
docker run
mas não sabia como fazer um 'bind' de--devices
no Rancher - Durante a escrita deste post, a versão mais recente do Armbian não funcionou, instalei a
5.4.43
disponível aqui - Procurei fazer testes com a Raspberry pi 3b+, todavia eles foram infrutifereos mesmo com quatro sistemas operacionais diferentes:
- Raspbian -- é 32bits
- Raspiberry Pi OS -- problemas de autenticação com as chaves
- Ubuntu Mate -- problemas de kernel
- Ubuntu Server -- problemas de kernel
- Não recomendo utilizar a Nvidia Nano Jetson que venho utilizando nos últimos post mais pelo fato de se não for utilizar a placa para outras coisas além de ser um servidor de Octoprint, seria um "desaproveitamento" grande da placa
- Um pouco mais da história das impressoras 3D pode ser vista nesta pequena entrevista ou neste documentário
- Mais sobre a diferença de impressoras:
- Mais sobre a diferença de materiais impressos: