How to connect to a GTR via an ESP8266 WiFi Adapter

Overview

The GTR is an STM32F407ZGT6 based board.

Downloading the board firmware

Choose the firmware (firmware-stm32f4-wifi.bin) from here. You can choose to download either the latest release (marked latest and classed by us as stable) or the latest pre-release if available (marked pre-release and classed by us as unstable).

Once downloaded, rename it firmware.bin

WiFi firmware preparation

Choose the correct corresponding firmware from here.

  • DuetWiFiServer-esp8266-stm32f4-X.XX-XX.bin

Once downloaded, rename it DuetWifiServer.bin

DWC (DuetWebControl)

The correct version of DWC should be downloaded from here.
The version you download should be of the same version number as the board firmware you downloaded above.
For example, if version 3.4.0 of the board firmware has been downloaded, 3.4.0 of DWC shold be downloaded.

Purchasing the WiFi Adapter

You will need to purchase an adapter that plugs into the EXP1 and EXP2 headers. They can be purchased from a number of suppliers. They are:

  • PCR (part of TeamGloomy) on Tindie
  • Mellow (who works in close collaboration with TeamGloomy) on Aliexpress
  • BTT also make an adapter but TeamGloomy do not recommend it as it does not have a serial connection readily available, removing the ability to update the WiFi firmware from within RRF.

If you are just purchasing an adapter now, TeamGloomy Strongly recommends an ESP32 adapter as the WiFi performance has been greatly increased.

Connecting the WiFi Adapter

Connect EXP1 on the GTR to EXP1 on the WiFi adapter and connect EXP2 on the GTR to EXP2 on the WiFi adapter.
Connect the 4 pin serial header on the WiFi adapter to the WiFi header on the GTR. As power is being taken through EXP2, only the RX and TX lines need to be connected.

Homemade ESP8266 WiFi Adapter

Use a nodemcu ESP8266 with USB programming as it already 5v tolerant and it allows for updating via USB.

BOM

  • 1 x nodemcu ESP8266 or Wemos D1 mini
  • 3 x 47R resistor
  • 1 x 470R resistor
  • 3 x 2200R resistor
  • jumpers or other ways of connecting to the GTR

Preparing the ESP8266

Follow the instructions here.
Alternatively you can connect the RX/TX pins on the ESP8266 to a set of RX/TX pins on the GTR.

Connecting the ESP8266

The pinout for the GTR can be found here and the schematic for the Duet 2 WiFi for reference can be found here.

The table below shows the pins required on the ESP8266 and what they are connected to on the GTR.

ESP8266 Pin GTR Pin Resistor Value
RST B.10 on EXP2 470R
CS/GPIO15 B.12 on EXP2 2200R
MOSI/GPIO13 B.15 on EXP2 47R
MISO/GPIO12 B.14 on EXP2 47R
SCLK/GPIO14 B.13 on EXP2 47R
ESP_DATA_Ready/GPIO0 A.15 on EXP1 2200R
LPC_DATA_Ready/GPIO4 C.11 on EXP1 None
VIN(5v) 5v on EXP1 None
GND GND on EXP1 2200R to RST

Generate a config

We provide a handy online tool to assist you in generating a set of config files for your 3D printer. The configurator doesn’t cover all options that RRF can be used for (such as dual motor axis control, which can be manually added later), however it does give a good start.

We also have a collection of user created configs which can be a useful reference. They can be found here

Manual board.txt Changes

If you are using a set of config files provided by someone else or have no need to use the configurator, you will need to create your board.txt file manually.

Below are the contents that should be used.

//Config for GTR
board = biqugtr_1.0
//WiFi pins
8266wifi.espDataReadyPin = A.15
8266wifi.TfrReadyPin = C.11
8266wifi.espResetPin = B.10

//ESP8266 RX/TX Settings
8266wifi.serialRxTxPins = { C.7, C.6 }
serial.aux.rxTxPins = { D.9, D.8 }
heat.tempSensePins = { C.0, C.1, C.2, C.3, A.3, F.9, F.10, F.7, F.5 }


Smart Drivers

If using TMC5160 or TMC22XX drivers (where 22XX is either the TMC2208, TMC2209, TMC2225 or TMC2226), the following line must also be added to the board.txt file

stepper.numSmartDrivers = X

Where X is the number of drivers fitted in total.

TMC22XX UART Drivers

The drivers must be continuous and start at unit 0 (unless TMC5160 are also used, which case they must be installed after them). So, for the GTR, if you have say 3 TMC2208s and 1 other driver, the 2208s must be in slots 0, 1, 2 and the remaining driver in slot 3 or 4. You can use RRF to assign any of those slots to an axis/extruder.

TMC5160 SPI Drivers

If using TMC5160 drivers, the following lines must also be added to the board.txt file.

stepper.num5160Drivers = X
stepper.spiChannel = 5
SPI5.pins = { B.3, B.6, G.15 }

Where X is the number of TMC5160 drivers fitted. The drivers must be continuous and start at unit 0. So, if you have say 3 TMC5160s and 1 TMC22XX and 1 other driver, the 5160s must be in slots 0, 1, and 2, the TMC22XX in slot 3 and the remaining driver in 4. You can use RRF to assign any of those slots to an axis/extruder.

SD Card preparation

Now all the required files have been gathered, the SD card structure needs to be created.

SD Card Specification

When choosing an SD Card to use with RRF, we recommend one with the following features:

  • a branded card with a speed rating of Class 4 or higher
  • of up to 32GB capacity, formatted as below. RepRapFirmware does not support SD cards formatted in exFAT format.

Formatting

If you can’t use the recommended formatting tool, then the following points should be taken into account:

If you need to reformat the micro SDHC card:

  • If the capacity of the card is 4GB or lower, use FAT16 format
  • If the capacity is more than 4GB (up to 32GB) then you will have to use FAT32 format
  • All cards should be formatted with 512 byte sectors
  • For best upload speed choose the largest cluster size available, which is normally 64kb for FAT16 and 32kb for FAT32

SD Card Structure

The following structure should be replicated on your SD card.

sd card root/
├─ filaments/
├─ firmware/
│  ├─ DuetWifiServer.bin
├─ gcodes/
├─ macros/
├─ sys/
│  ├─ bed.g
│  ├─ board.txt
│  ├─ config.g
│  ├─ homeall.g
│  ├─ homex.g
│  ├─ homey.g
│  ├─ homez.g
│  ├─ pause.g
│  ├─ resume.g
│  ├─ sleep.g
│  ├─ stop.g
│  ├─ tfree0.g
│  ├─ tpost0.g
│  ├─ tpre0.g
├─ www/
│  ├─ contents of DuetWebControl-SD.zip
firmware.bin

In the above example, the contents of the sys folder have come from the online configurator.

The contents of DuetWebControl-SD.zip should be extracted into the www folder.

Final Setup

Once connected, power up the board using 12-24v and connect to the USB port on the board. Connect to the board using a program such as putty. Follow the instructions here to set it up for RRF. Change the Com port to match the GTR and connect. The baudrate doesn’t matter.

Flashing the WiFi Firmware

Type in the following to putty

M552 S0
M997 S1

Wait for the uploading of the WiFi firmware to finish. Then send the following

M552 S0
M587 S"your SSID" P"your password"
M552 S1

The blue light on the WiFi chip shoould then flash blue and will go solid when a connection has been established. The ip address will be shown on the serial connection. It is also possible to type just M552 to get the current ip address reported back.

The final thing to do is add the line “M552 S1” to your config file. This can be done through the web interface. This just ensures that the WiFi connection is started at start up. There is no need to add the M587 command as this is written permanently to the flash of the ESP8266 chip.

Once up and running

You will need to PID tune your tools and your bed. Please be aware that bed tuning may take up to an hour and tool tuning normally takes around 15 minutes. If it takes longer, that is also fine as up to 30 cycles may be ran.

To tune the bed, run the following command, changing the temperature (the S value) if a different tuning temperature is required.

M303 H0 S60

To tune each tool, run the following command, changing the temperature (the S value) if a different tuning temperature is required. This proceedure will activate the part cooling fans during the final phase of the tuning process so their effect is taken into account. If your printer has more than one tool, make sure each one of them is tuned.

M303 T0 S220

Once the tuning is complete, either copy the M307 command into the heater definitions or send M500, ensuring you have M501 at the end of your config.g.
If the tuning fails at the end, carry on saving the values as in most cases the outputted values still work correctly.
If the values still result in a heater fault, please refer to this wiki page for information about how to adjust the values manually.

Tags: