My Octoprint Webcam

Two days ago I deployed an Octoprint system for my Ender 3. Octoprint is the leading application for remote controlling 3D printers. It needs to be deployed on a host connected to the 3D printer and takes control of everything, allowing you to interact with your printer remotely (web or app).

I have in mind a very less ambitious project consisting of an ESP32 combined to a USB host shield that will allow checking the printer status for less than 10€, but I am still waiting for some parts to arrive from China and of course, it has nothing to do with Octoprint.

One of the most attractive features of Octoprint is the possibility to connect a webcam to the system so that you can see what’s really happening to your printed piece.

I had a Logitech C270 forgotten in a drawer, so I decided to use it for my printer. I tried to hang it from the upper crossbar, but the printing vibrations made it quite unstable. I also used a tripod, but it makes no sense to set up a tripod each time you print something.

Logitech C270 Webcam
Logitech C270 Webcam

Transforming a Logitech Webcam into an Ender 3 Webcam

I opened the webcam to measure the internal pieces in order to design a new case for them. The cam consisted only of a tiny board with a focusable camera lens attached to it. This was a good surprise for me because, though the Logitech C270 is a quite good camera, the focus distance is fixed a bit further than the required for the printer and if I can adjust the focus distance it will be much better.

Inside Logitech C270
Inside Logitech C270 (note the adjustable lenses)

To avoid breaking the original case, I had to desolder a wire.

Logitech C270 Wire to be desolded
Logitech C270 Wire to be desoldered

After measuring the board, I designed a box as thin as possible and mounted the board inside it.

Inside Ender 3 Webcam
Inside Ender 3 Webcam

The complete system consists of a box for the cam, a bone, and a base:

Assembling webcam to the bone
Assembling webcam to the bone
Bone
Bone
Ender 3 Webcam base
Ender 3 Webcam base
Ender 3 Webcam
Ender 3 Webcam
Ender 3 Webcam
Ender 3 Webcam

 

Thingiverse page for .stl files.

 

BQ Easy Go & Ender 3

I’m quite happy with BQ Easy Go PLA filament. I have been using it during these last days and had no problem at all, but it is also true that I read some comments in Amazon before using it and there is an issue with this filament and Creality Ender 3 printers:

There is a big logo in one of the sides of the coil. It may occur that this logo gets stuck in the coil guide of the Ender 3.

BQ Logo in coil side
BQ Logo in coil side

The easiest solution I found for this was printing a ring to prevent the coil from getting too close to the printer guide.

Separation ring
Separation ring
Separation ring mounted
Separation ring mounted

You can find the ring files in Security ring for Ender 3 and BQ filament at Thingiverse.

 

Install latest Marlin on Creality Ender 3

If you own a Creality Ender 3 and want to deploy Marlin on it you should first ask yourself why.

Why

When searching Google for that topic, a bunch of results and video tutorials appear in front of you talking about the ‘benefits’ of that ‘improvement’. Well, if you read the details you will find comments like Ender 3 is a great 3D printer but comes with some defects and the new version of Marlin is the solution to that. But seriously, what are those defects?

I bought the printer 3 weeks ago and I have to say that the results are impressive. Ok, it is my first 3D printer, but before acquiring it I was reading a lot about the subject and the most common advice in every web I visited was: don’t get frustrated about the results of 3D printing? You will get a lot of bad results and that’s normal. I’ve got too few bad results with my Ender 3… until yesterday.

Is it worthy?

After reading and watching some tutorials I decided to install a bootloader on my printer to upload the latest Marlin version to it. Why? I still don’t know.

Burning the Bootloader

It wasn’t easy. I look for some old Arduinos I knew I had and found a Duemilanove and a Mega. The board used by Creality in it’s Ender 3 is compatible with ATMega Sanguino boards, so all you have to do is burn the bootloader on the board and then use Arduino IDE to upload the sketch with the latest Marlin version.

Burning the bootloader has to be done with an ISP programmer or using an Arduino as ISP. The procedure is quite simple:

  1. Open the board box of your  Ender 3
  2. Locate the ICSP connector
  3. Use five Dupont Female to Female wires to connect:
    1. GND to GND
    2. 5V (VCC) to 5V(VCC)
    3. SCK to SCK
    4. MOSI to MOSI
    5. MISO to MISO
  4. Use one Dupont Female to Male wire to connect:
    1. RESET to IO10 of your Arduino board
  5. Upload Arduino ISP sketch to your Arduino (in examples)
  6. Change board to Sanguino and Programmer to Arduino as ISP
  7. Burn Bootloader

I can’t remember how many times I tried. Changing port, reviewing wires many times, switching on / off, using Duemilanove and Mega… and nothing worked. I got the same error always and it seemed there was a problem getting synchronism in Avrdude tool.

Arduino’s ISP issue and the capacitor workaround

Then I remembered I had this problem years ago when playing with Arduinos. First Arduino models had problems with reset while negotiating ISP programming and the workaround is using a 10μF electrolytic capacitor between reset and GND pins.

Capacitor between RST and GND
The capacitor between RST and GND

Remember electrolytic capacitors have polarity and you shouldn’t reverse them:

After plugin the capacitor I was able to burn the uploader.

Uploading Marlin latest and ‘improved’ version

As expected, the printer was now reset. No printing program inside it and a blank LCD screen showing nothing.

That is the moment to upload Marlin latest software using Arduino IDE.

My intention is not telling you all the steps to do this, as the Internet is full of videos and tutorials (and remember, I don’t recommend doing it), but telling you what happened to my printer after doing that. 

I uploaded the latest Marlin software with some miracle customizations performed in the parameters code by an expert guy. The result? After leveling the bed I tried with a small box and… 

filament not sticking
Filament not sticking to build plate

That was the first time in three weeks. Before that, the adhesion was very good. I tried some more times, I calibrated and leveled the bed and always the same result. I found that when the nozzle never got enough close to the plate. Maybe the miraculous customizations?.

I decided then to go back to the Creality version, which is a previous Marlin version adapted for Ender 3.

Creality Ender 3: Going back to manufacturer version

The good news is that we can now upload code to our printer because we have deployed a bootloader on it.

All we have to do is to find the manufacturer’s original code.

Go to manufacturer’s download page and find Ender 3 model

ender 3 creality
Ender 3 picture in the download page

Click on Download button and save the .rar file

Extract the .rar file in a folder.

Locate the Marlin folder inside the folders created by the Unrar tool.

Copy the Marlin folder to a better location and edit the Configuration.h file.

Change the language for display. Locate the line (line #1188 in my version)

#define LCD_LANGUAGE cn

and replace cn with your language code (en, de, es, it, fr, …)

Compile and upload to the printer port detected when plugged in. 

Remember you have to set these options in Tools menu:

Board: Sanguino

Processor: ATmega1284 or ATmega1284P (16MHz)

Port: The one detected by your machine.

Programmer: AVRISP mkll

Conclusion

I think it isn’t worthy of it deploying the latest Marlin version on your Ender 3, mainly because you are not going to get a lot of improvements.

In the other hand, it is very interesting having a bootloader installed and the capability of loading the code into the printer, but only if you need to customize the code.