Tutorial: Wi-Fi na impressora 3D por R$25 com ESP8266 e ESP3D

6 minuto(s) de leitura

Após um ano da montagem da minha impressora 3D (esta), resolvi fazer alguns upgrades, dentre eles, colocar um módulo de Wi-Fi. Como não encontrei nenhum bom material sobre isso em português, estou escrevendo este tutorial para deixar registrado para quem mais queira fazer.

Este tutorial foi feito tomando como base a minha impressora 3D, que usa o firmware Marlin em um Arduino Mega com shield RAMPS 1.4. Porém, ele poderá ser útil para impressoras que utilizem outro hardware ou firmware, desde que o firmware seja compatível com G-Code e o hardware tenha pinos UART TX e RX que sejam usados como entrada e saída do G-Code para o firmware da impressora.

Não será necessário modificar o firmware da impressora 3D. Desta forma, é possível que este tutorial também seja útil para impressoras 3D com firmware e hardware proprietários.

Materiais

Hardware

A princípio, iremos precisar de um módulo Wi-Fi ESP-01, que contém um microcontrolador ESP8266, e que é facilmente achado por um preço bem barato (aproximadamente 25 reais).

Adiciono à lista dois itens que não são obrigatórios, mas que eu recomendo: um adaptador do módulo ESP-01 para Arduino (+/- 20 reais), e um adaptador do módulo ESP-01 para USB (+/- 15 reais).

ESP-01
Adaptador do ESP-01 para Arduino
Adaptador USB do ESP-01

Software

Iremos instalar no ESP-01 o firmware ESP3D (https://github.com/luc-github/ESP3D). Para isso, precisaremos do Git, Arduino IDE, e algumas bibliotecas que falarei mais pra frente.

Neste tutorial estou usando Manjaro Linux. Acredito que em outros Linux e MacOS não deva ser muito diferente do que mostro aqui, mas é bom ficar atento. No Windows provavelmente os passos serão os mesmos, mas executados de forma diferente. Qualquer coisa, me avise!

O ESP3D é um firmware que permite que a impressora se conecte a um Wi-Fi ou seja um ponto de acesso de alguma rede já existente. Ele abre duas portas: uma porta que recebe comandos G-Code e envia para o Arduino via serial UART, e uma porta web (80) que exibe um site por onde podemos controlar a impressora através do navegador de forma gráfica.

Obtendo o ESP3D

Podemos clonar diretamente do GitHub do ESP3D. Aqui usarei a versão 2.1 do ESP3D, e a versão 2.0 da interface web. Se você quiser trocar de versão, o procedimento é o mesmo, mas usando a branch correspondente a cada versão. Estou usando a 2.0 do ESP3D-WEBUI por ser menor e caber no ESP-01 que usei na minha impressora.

git clone --recursive https://github.com/luc-github/ESP3D.git
cd ESP3D
git checkout 2.1
git submodule update --init
git -C ESP3D-WEBUI checkout 2.0

Configuração do Arduino IDE e instalação de bibliotecas

Vamos abrir o ESP3D na Arduino IDE. Da raiz do diretório ESP3D que clonamos anteriormente, execute:

arduino esp3d

Instalação da placa ESP8266

Caso não tenha instalada, vamos instalar a placa ESP8266 no gerenciador de placas da Arduino IDE. Em Arquivo > Ferramentas, adicione a seguinte URL nas URLs adicionais para gerenciadores de placas: http://arduino.esp8266.com/stable/package_esp8266com_index.json.

Em Ferramentas > Placa > Gerenciador de Placas, instale o esp8266 na versão 2.7.4.

Instalação de bibliotecas

As bibliotecas necessárias já estão no próprio repositório do ESP3D. Vamos copiá-las para o diretório de bibliotecas do Arduino (no caso do Manjaro, ~/Arduino/libraries):

cp -r libraries/* ~/Arduino/libraries/

Gravação do ESP3D no ESP-01

Na Arduino IDE, em Ferramentas > Placas, escolha “Generic ESP8266 Module”. Ainda no menu Ferramentas, configure as opções de acordo com o tamanho da memória flash de seu ESP-01 (consulte esta referência do ESP3D para melhor aproveitamento do espaço).

Para gravar o firmware no ESP-01, você deve conectá-lo ao USB do computador. Você pode fazer isso usando o adaptador USB que eu mencionei anteriormente. Caso você não tenha (ou não queira comprar) um, pode fazer isso usando um Arduino para fazer a conversão USB-UART, como mostrado nesta página do site Embarcados. Iremos seguir usando o adaptador USB.

Para gravar um firmware no ESP-01, devemos ligar o pino GPIO-0 ao GND. Com o módulo USB, você pode fazer com um pequeno fio ligando os dois terminais da foto, e espetando o ESP-01 por cima:

Jumper para modo flash do ESP-01

Feito isto, ligue a um USB do computador, selecione a porta correta na Arduino IDE em Ferramentas > Porta, e clique no botão de upload.

Após o upload, retire o adaptador USB, retire também o fio que colocamos antes, coloque de volta o ESP-01, e ligue em um USB.

Aguarde um pouco, e logo aparecerá na lista de redes Wi-Fi disponíveis o ESP3D. Conecte-se nesta rede (a senha é 12345678).

Podemos testar se a comunicação serial está funcionando: abra o monitor serial na Arduino IDE com baudrate 115200, e no terminal, execute:

telnet 192.168.0.1 8888

Se tudo estiver OK, o que voce escrever em um deverá aparecer no outro, assim:

O que você escrever no monitor serial deverá sair no telnet, e vice-versa

Configuração do ESP-01

Em seu navegador, entre em 192.168.0.1. Nesta tela é possível fazer o upload do arquivo com a interface web do ESP3D. Faça o upload do arquivo ESP3D/ESP3D-WEBUI/index.html.gz.

Clique em “Go to ESP3D Interface”. A partir deste momento, irá aparecer o assistente de configuração do ESP3D. Escolha o idioma, e diga qual o firmware da sua impressora (se não souber, coloque Unknown) e o baudrate do serial da impressora.

Nas configurações de Wi-Fi, é possível usar o modo Station e Access Point. No modo Access Point, o ESP3D cria uma rede Wi-Fi da mesma forma como usamos até agora; no modo Station ele se conecta a um Wi-Fi existente, e caso não consiga se conectar, volta ao modo Station de forma que você consiga se conectar. Configure seu Wi-Fi e avance para o fim. A interface padrão do ESP3D vai aparecer. Na aba ESP3D há mais opções de Wi-Fi, como escolha das portas, IP estático, etc.

Sugestão: use um IP estático: você pode fazer isso usando um IP que esteja dentro da faixa da sua rede, mas fora da faixa do DHCP, ou você pode adicionar ao DHCP do seu roteador Wi-Fi uma regra para que o endereço MAC do seu ESP-01 tenha sempre o mesmo IP! Dessa forma, você não precisará se preocupar sobre qual é o IP da sua impressora!

Após concluído o assistente, desligue e ligue o seu ESP-01. Espere um pouco (1 minuto deve ser suficiente), conecte-se à rede Wi-Fi, e faça o mesmo teste da comunicação serial de antes, só que agora usando o IP do ESP-01.

Instalação do ESP-01 no shield RAMPS

No shield RAMPS, localize o AUX-1, e dentro dele, os pinos D0 (RX), D1 (TX), 5V e GND. Na imagem a seguir temos um diagrama dos pinos do RAMPS 1.4, o AUX-1 fica na parte de baixo:

AUX-1 no RAMPS 1.4. Fonte: wiki do ESP3D (https://github.com/luc-github/ESP3D/wiki/Ramps-1.4-Re-ARM)

Se você estiver usando um adaptador para ESP01, você deve ligar o Vcc e o GND do módulo ao 5V e GND do AUX-1, e os pinos de comunicação RX e TX do ESP-01 ao TX e RX do AUX-1, respectivamente (sim, o TX de um no RX do outro).

Caso você não tenha esse adaptador, você pode ligar diretamente como mostra aquela mesma página do site Embarcados, só que no modo de comunicação. Importante: Note que o ESP-01 opera com 3.3V, então você precisará ligar ao 3.3V ou montar um circuito para abaixar esta tensão!

Apenas isto é necessário. Ao ligar a impressora, o ESP-01 deve se conectar à sua rede, e logo em seguida já é possível usá-lo. Importante: Caso você for usar a impressora por USB, retire o ESP-01 dela!

Atualizado em: