3D Printing Tool Chain

Step 1: Create or download model

Create Model

Use software such as Fusion 360 or TinkerCAD to create your 3D model. The software will usually save the model in its own format. When you’re ready to print you’ll need to export it as .STL so your model can be sliced into layers to be printed.

Download Model

Models can be downloaded from Thingyverse and many other online respositories. Other file formats can be used but the standard is .STL

Step 2: Slice model

Again, lots of software out there… I recommend Cura but also found Slic3r very capable.

The slicer software has settings to allow you to specify nozzle size, temperature, bed temperature layer height, brim, wall thicknesses……… and a few hundred other settings.

Cura has default settings for lots of printer models. You will need to tweak the settings though based upon what you’re printing, in what material, in what quality.

So the slicer takes the input file (.STL) and processes it based on a few hundred setting to the output file (.GCODE). The GCODE file contains instructions that your printer should follow, it is this file that you send to the printer

Step 3: Print Model

Print from SD/TF card

Simplest way to print on the Ender 3 V2 is by writing the GCODE file to a TF card, insert card, select print, find the GCODE file and wait…..

Print over USB

It is also possible to print directly from your computer over USB, for this I use Pronterface. If you choose to do this remember to turn off power saving on the PC (sleep mode, screen savers etc) and preferably windows update.

With this method the GCODE is buffered & streamed live to the printer. If the PC stops or stutters your print will be affected. This will often cause the printer to pause / stutter usually resulting in a blob of filament just where you don’t want it.

Also recommended not to use the PC while printing as some processes take enough time to interrupt the transfer of GCODE.

Update Ender 3 V2 Firmware

See tail end of Compiling Marlin for Ender 3 V2 and copy the Firmware_########.bin created after compiling Marlin to your TF card. But first reformat the card (not always necessary, but if the update fails, reformat for sure then try another TF card if it fails again. Update can be finicky). If you choose not to reformat be sure to remove any old firmware .bin files.

‘Safely’ remove your TF card (don’t just take it out, files get corrupted that way).

With your printer turned OFF insert the TF card.

Switch printer ON, it’ll take a little longer to boot up as it will be updating your firmware. If all goes well you have updated your firmware – Congratulations.

NOTE: If you rename the firmware before putting on your flash card be sure to name it something different each time else the printer will ignore it.

Configuring Marlin for Ender 3 V2

BL Touch Configuration

If you haven’t already set up Visual Studio Code or something to compile the Marlin firmware see these instruction Compiling Marlin for Ender 3 V2

Configuration.h

NOTE: The original Creality firmware allowed the z-offset adjustment to move the Z axis while the printer was idle. These settings don’t allow this – not sure why yet.

// BL Touch with 5 pin header

//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

#define USE_PROBE_FOR_Z_HOMING

#define BLTOUCH

// you probably want to pick your own values (X, Y, Z)
// if you know your z offset you can enter it into Z, otherwise set once the firmware is installed
#define NOZZLE_TO_PROBE_OFFSET { -44, -6, 0 }

// Changing printer movement speeds
// Slower takes long but is ultimately more accurate
#define XY_PROBE_SPEED (100*60)
// Homing speeds (mm/min)
#define HOMING_FEEDRATE_XY (50*60)
#define HOMING_FEEDRATE_Z (8*60)

// set method used to evaluate Z axis height
#define AUTO_BED_LEVELING_BILINEAR

#define Z_SAFE_HOMING
#if ENABLED(Z_SAFE_HOMING)
// sets homing XY position to near the middle of the bed
#define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE - 10) / 2) // X point for Z homing
#define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE - 10) / 2) // Y point for Z homing
#endif

#define NOZZLE_PARK_FEATURE

Configuration_adv.h

#define BABYSTEPPING

// The BL Touch 3.1 may or may not be 5V compatible.  My printer suppliers suggested using this setting instead of BLTOUCH_SET_5V_MODE
#define BLTOUCH_FORCE_SW_MODE

Z Axis Quick Stop Button

I mounted the original Z Axis switch on the base facing forward. This config change results in the switch activating the KILL mode.

After pressing the switch the printer stops (seems to leave fans running which is good). The stepper motors, nozzle heating and bed all switch off. Turn off the printer to reset back to normal – but leave it a while first to allow the nozzle to cool else you’ll find the heat travel up into the purposely cooled filament guide and this could cause a problem.

This saves me scrabbling to get to the power switch at the back which would stop the fans (not ideal) or frantically navigating menus to stop a rogue print.

Configuration.h

//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

// add these lines under the commented line above
// Use original Z input as a KILL switch
// The actual pin needed will vary between controller boards.  
// Find the pin currently assigned to Z_STOP_PIN in the config that relates to your printer look in Marlin\src\pins\.......
#define KILL_PIN PA7
#define KILL_PIN_STATE HIGH

Configuration_adv.h

No change

Compiling Marlin for Ender 3 V2

Why?

Presently Creality release only a few pre-compiled firmware versions. If your Ender 3 V2 upgrade is supported by firmware provided by Creality then use theirs – it is easier.

If you update your printer to something not supported you will need to compile your own firmware or find one somebody has already done.

I wanted to install a BL Touch. This replaces the z-axis switch so I decided to re-purpose this switch as a quick stop button.

If you have already set up Visual Studio Code & Marlin and successfully compiled see Configuring Marlin for Ender 3 V2

How to compile

You’ll need software to compile the source code. For this use Visual Studio Code from Microsoft.

I found Visual Studio Code very difficult to use. It is not intuitive as it is crammed full of features and options. Luckily after the initial set up it is mostly just used as a text editor.

Downloading Marlin

Current version is 2.0.7.2 and available from GitHub

Marlin comes in two parts: The Marlin source code itself and another set of Config files.

The Marlin zip contains source code with tons of features to drive pretty much any printer

The Config zip contains specific configuration files for loads of different printers. These config files map processor pins to functions and enable/disable appropriate features that the printers controller board support. The default config for any given printer should enable support for a vanilla printer (one not modified yet).

Setting up Visual Studio Code for Marlin

Install Visual Studio Code (VSC). Simply download from Microsoft and accept all the default installation options.

Install PlatformIO Extension

PlatformIO is an extension inside VSC. Go to VIEW => EXTENSIONS in VSC

Prepare Marlin

Create a folder in a location of your choice named something like Marlin 2.0.7.2

Unzip the content of the Marlin source code to the above folder

Should look something like this:-

I dropped the two Marlin files in here to keep them all together

Add printer configuration

Now locate the base configuration for your printer. In the example above these are in the Configurations-release-2.0.7.2.zip (the second file you downloaded earlier)

Navigate into this zip, all the printer configs can be found in here. Follow the path config -> examples

Printers are ordered by Manufacturer/Type then Model

When your printer folder is located copy all the files in the folder and paste them into the Marlin folder found in your working folder (NOTE: This is the folder called Marlin inside your working folder – not the working folder itself). The paste operation should replace the default Configuration.h and Configuration_adv.h files among others.

Adding Marlin to CSV

With PlatformIO and your Marlin folder prepared you’re ready to create a workspace in VSC – Fancy talk for pointing VSC to the Marlin working files.

In VSC select FILE => OPEN FOLDER

Open the Marlin 2.0.7.2 folder you created earlier. Should see something like this:-

I occasionally lost this view of the file system. Go to VIEW => EXPLORER to get it back.

Edit platformio.ini

Shown highlighted above, this file needs to be edited so that PlatformIO knows what kind of processor your printer uses.

Settings shown are for the Ender 3 V2 with the 4.2.2 Controller Board

Ender 3 V2 Settings highlighted

Compiling Marlin

VSC should be ready to compile. Give it a go by clicking the tiny tick at the bottom of the screen.

Tiny tick highlighted starts the compiling process

With luck the firmware will compile. If not check the errors and google a solution.

Where is the firmware?

VSC writes the firmware file to .pio / build / yourprocessortype /

Each time you compile another firmware.bin is created

That’s the default firmware compiled for your printer. Editing the Configuration.h and Configuration_adv.h files custom firmware can be created.

Google MyMaps

Want to create a MyMap like this?

Logging the GPS Route

I use an old phone to log my route running GPS Logger by BasicAirData available on the android app store for free.

https://play.google.com/store/apps/details?id=eu.basicairdata.graziano.gpslogger&hl=en

App settings:

Keep Screen On = Disabled
Collecting Density = 2m
GPS Update Interval = 1secomd

Upload (Share) the logged files to Google Drive

From MyMaps import the log files to an empty layer

Click Import, select Google Drive and locate the log file

GPS Logger names the logs by date and time

Geo-located Photos : GPS enabled camera

Using a camera with built in GPS (such as a phone) is the simplest way to go. Take the photos as usual then use Google Photos.

Easiest way to get the photos into your MyMap is to use the Google Photo app. Add the photos you want to overlay onto the route to an album.

Then create a new layer in your MyMap and click import.

The Import function has the option to import from ‘Photo Albums’. Select the album you just created. The photos are imported and automatically placed over the route based on GPS location.

Geo-located Photos : *Any* camera

BEFORE starting your adventure set the camera time to closely match the phone you are using for logging the route.

Using GPicSync software found here https://sourceforge.net/projects/gpicsync/

GPicSync uses the timestamp in each photo and the time & GPS location stored in the GPS log. It then writes the GPS location into the EXIF data in each of the photos. Once this is done add the photos to a Google Photos album and import as before.