In our previous article, we’ve shown you how to make a special remote trigger cable for a digital camera. It’s a solution we’re using to record our time lapses and it worked pretty well for us. However, if you are not into tinkering and soldering, we’re presenting something much simpler: a Bluetooth remote trigger for your smartphone, which is controlled through G-Code commands. You can use any modern smartphone with Bluetooth LE functionality to record time-lapse videos of your prints.

How does it work?

The main part of our solution is a small development board called Adafruit Feather 32u4 BlueFruit LE. Essentially, it’s an Arduino-compatible board with Bluetooth LE module, and we’ll use it to read input on one of the pins. The input will be created by activating a pin on the Einsy RAMBo / Mini RAMBo motherboard – we can do that by including a short piece of custom G-Code. The Adafruit board will emulate a Bluetooth keyboard and a keyboard button press, which is recognized as a remote trigger signal by your smartphone. Selfie sticks work the same way. The advantage of this solution is the simplicity and price. There’s nothing to solder, no resistors required… it’s almost plug-and-play. And even though you need to upload the code into the board, you don’t need to know anything about programming. The usual price for the Adafruit board is around 24 USD, but keep your eye out for various sales, you can often save a few dollars.

Pros of this solution:

  • + Wireless
  • + No soldering needed
  • + Doesn’t need an external power supply
  • + Compatible with all modern smartphones (with Bluetooth LE)
  • + Easy to configure, no programming skills needed
  • + Bluetooth remote trigger, does not need Wi-fi
  • + The board can be used for tons of other projects when you’re not printing anything

Here’s what you need for MK3/S:

Here’s what you need for MK2S/2.5/2.5S:

 

…and of course a smartphone with Bluetooth LE support.

Preparing the board

  1. First of all, start by downloading and installing the latest version of Arduino IDE – we need it to upload our ready-made code to the board.
  2. Next, start Arduino IDE and add support for Adafruit boards. Open the Preferences menu (File->Preferences on Windows, Arduino -> Preferences on OS X).
  3. Look for an input field labeled “Additional Boards Manager URLs” and paste the following URL in it: https://adafruit.github.io/arduino-board-index/package_adafruit_index.json – if there are already URLs in this field, just add a comma behind the last one and paste the new one. Click OK
  4. Go to Tools -> Board menu, click Boards Manager and in the Type drop-down menu select “Contributed”. Select Adafruit AVR boards and click Install. Once it’s done, restart Arduino IDE.
  5. Go to Tools -> Library -> Library manager and find “Adafruit BLEFirmata” and install it
  6. Go to Tools -> Board again and find Adafruit Feather 32u4. That’s all regarding the configuration.

Just in case the board is not correctly recognized by Windows, you might need to download the drivers. Now, the only remaining things to do is to connect the board to your PC with a microUSB cable and upload the files.

  1. Download PrusaCamConfig.h and PrusaCamFeatherBT.ino from Github.
  2. Open the .ino file in Arduino IDE, select Adafruit Feather 32u4 in Tools -> Board menu and select the correct COM port in Tools -> Port. Press the Upload button to upload your project to the board. Programming is done!

Optional case

If you would like to go for a slightly tidier solution, you can print a little case for the board, which can be attached to the side of the printer. You can grab the .STL files on GitHub. The board doesn’t produce any heat, so you can safely use PLA to print it. Use two M2.5×12 screws and M2.5 bolts to attach the case to the frame.

Connecting the board and smartphone

The easiest way how to connect the board to the Original Prusa i3 MK3/S is to use the J19 socket on the Einsy RAMBo motherboard – that’s the socket used to connect Raspberry Pi Zero W. In case you already have a RasPi there, it’s expected you will use OctoLapse to record your time-lapses.

There are two ways how to connect Adafruit board to the Einsy RAMBo – either from the backside, where new printers have a small door or from inside of the electronics case. Connecting it from inside is a bit more complicated due to the number of cables already there, but you can actually manage it easily with a bit of patience.

The Original Prusa i3 MK2S / 2.5 / 2.5S doesn’t have this socket, which means that you need to disconnect the filament sensor and connect the remote trigger instead of it.

Refer to the illustration below to learn how to connect the board correctly. The Back side of the Einsy RAMBo can be accessed through the back door, the Front side is accessed by opening the main front door on the electronics case (secured by a screw).

WARNING: YOU ARE ABOUT TO CONNECT AN ELECTRONIC DEVICE TO YOUR 3D PRINTER. WRONG WIRING CAN LEAD TO POTENTIAL DAMAGE – ALWAYS DO THIS WITH THE PRINTER TURNED OFF! DOUBLE-CHECK YOUR CONNECTIONS BEFORE STARTING THE PRINTER!

 

Start the printer and wait for a few seconds until the Adafruit board fully boots up. Then, on your smartphone, open the Bluetooth menu and look for new devices. You should see Altairis PrusaCam Feather BT, which is identified as a keyboard – connect to it.

Preparing the G-code

The best way how to create fluid timelapse is to take a picture after each layer. This is done by adding a piece of custom code to every layer change. Slic3r PE can do this for you.

The code we’re talking about is this (for MK3/S):

;AFTER_LAYER_CHANGE
G1 X5 Y205 F{travel_speed*60} ;Move away from the print
G4 S0 ;Wait for move to finish
G4 P500 ;Wait for 500ms
M42 S255 P73 ;Trigger
G4 P200 ;Wait for 200ms
M42 S0 P73 ;Untrigger
G4 P500 ;Wait for 500ms
;[layer_z]

In case you have an MK2.5/S, you need to change the pin number to P20:

;AFTER_LAYER_CHANGE
G1 X5 Y205 F{travel_speed*60} ;Move away from the print
G4 S0 ;Wait for move to finish
G4 P500 ;Wait for 500ms
M42 S255 P20 ;Trigger
G4 P200 ;Wait for 200ms
M42 S0 P20 ;Untrigger
G4 P500 ;Wait for 500ms
;[layer_z]

 

Let’s take a look at each step:

G1 X5 Y205 F{travel_speed*60} – this code tells the extruder to move all the way to the side and the print bed to move all the way forward

G4 S0 – waits until these moves are finished

G4 P500 – wait 500 milliseconds

M42 S255 P73 – M42 G-code activates pin 73 (P73) with 5V. S0 = 0V, S255 = 5V. Since we’re using fixed (manual) focus, we don’t need to worry about focusing the camera first

G4 P200 – wait 200 milliseconds

M42 S0 P73 – disabling (S0) pin 73, aka “untrigger”

G4 P500 – wait 500 milliseconds

After these actions are performed, the printer returns the extruder and print bed back to the original position and continues the print. This procedure won’t affect the look of the model in any way.

Adding custom G-code is easy. Open Slic3r PE, go to the “Printer Settings” tab and look for “Custom G-Code” section. Add the code above into the “After layer change G-code” textbox and save the profile as something easy to remember – e.g. Original Prusa i3 MK3S Timelapse. It’s advised to save this as a new printer profile, because when you slice an object with these settings, it will always perform the “move to the side” action after each layer, no matter whether a camera is connected or not. This, of course, makes the printing times noticeably longer.

Once you have the custom G-code implemented, you can slice the object as usual – you can choose any layer height or material.

Keep in mind that printing objects with the timelapse mode on will extend the print time noticeably.

Recording time lapses

Everything is ready to go. Find a good place for your phone near the printer and don’t forget to plug in a charger in case you’re going for a longer printer. Disable screensavers, sleep modes or other features that would turn the screen off after a certain amount of time. Open the camera app and start the print job, the rest is automated. At the end of each layer, the extruder will move to the side and the Adafruit board will send a remote trigger event to your smartphone, which will take a photo.

Several things to keep in mind:

  • You will get better results if your smartphone supports “Pro” mode – it can have different names, but it basically gives you greater control over the phone’s camera: set the focus to manual override and also consider setting the exposure to a fixed number. Smartphone camera apps are often trying to over-analyze the scene, so you might end up with a bunch of photos that have different colors and exposure, just because your phone thought that the scene is suddenly too dark.
  • Use a phone charger to keep your phone running during long prints. It’s recommended not to keep your phone on a charger for days or weeks – see your phone’s manual for more info regarding your phone model
  • Consider changing the photo size in the camera app’s settings – usually, you don’t need a 24MPix photos when you want to publish the timelapse as a regular FullHD video. Changing the size of photos also helps to conserve space in your phone’s memory, because there can be hundreds of photos captured during one print.
  • If you have an automatic upload to cloud set up, consider turning it off for the print job in case you have limited space and/or data plan

There’s a number of ways how to create a time-lapse video. Both iOS and Android devices have various apps available in their respective app stores, or you can download the photos to your PC and use the guide we published at the end of our previous article.