I Turned PET Bottles Into A 3D Printed Pi Case – PET Bottle Recycler Part 2

A few weeks ago I published a project on the controller that I designed for a PET bottle recycler that I’ve been working on. I’ve now completed the rest of the design and at the end of the project, I’m going to use it to turn a few old PET bottles into a new case for my Raspberry Pi.

PET2Print Fusion360 Design

Let me start by saying that the concept for a PET bottle recycler is not something that I came up with, there are a number of other designs (like the ReCreator 3D) for these recyclers available online already. I liked the concept but couldn’t really find one that suited my needs, so I decided to make my own.

Here’s my video of the build, read on for the written guide;

What You Need To Make Your Own PET Bottle Recycler

Tools & Equipment Used

Some of the above parts are affiliate links. By purchasing products through the above links, you’ll be supporting my blog, at no additional cost to you.

Designing The PET Bottle Recycler

There are four main elements to the PET bottle recycler, which I’ve named PET2Print.

PET2Print Completed

Starting from the bottle side, we’ve got a cutter that cuts the bottle into an even-width continuous strip.

Bottle Cutter Mechanism

Then we’ve got the hot-end which the strip is pulled through to partially melt and convert it into the size and shape for filament.

Hotender Pulltrusion Mechanism

Then there is the reel which pulls the filament through the system and stores it for printing.

Hotender Pulltrusion Mechanism

Lastly, we’ve got the controller on the front which controls the hot end temperature and the reeler motor.

PET2Print Controller

The device doesn’t fully melt the PET strip, it just softens it enough to be folded over into a cylindrical shape that is the same 1.75mm diameter as common 3D printer filament.

PET Filament Being Rolled To Filament Diameter

I started out by 3D modelling the design in Fusion360. I designed all of the 3D printable components and modelled some of the main bought-out elements to get the general shape and design right.

PET2Print Fusion360 Design 2

Then came a lot of 3D printing. I printed the parts out in PETG for added strength and I had to make adjustments and redesign some of the parts until I was happy with them.

3D Printed Parts For PET2Print

Assembling The PET2Print

With all of the parts printed, we can start assembling the PET bottle recycler. We’ll again start on the bottle side with the cutter.

Assembling The Bottle Cutter

There are two main 3D printed parts for the bottle cutter, the base which holds the cutting mechanism and bottle support, and then the guide which just keeps the strip in the same orientation through the cutting bearings and when it feeds into the hot end.

Bottle Cutter 3D Printed Parts

To join the two pieces, we need to add some M3 threaded brass inserts to the side of the base, which we’ll melt into place using a soldering iron.

Melting Brass Inserts Into 3D Printed Parts

Before we screw the guide into place, we need to add the cutting mechanism. This uses two 608 ball bearings to cut the filament. These are really cheap and easy to get as they’re the same size bearings that are used for skateboard wheels and fidget spinners.

To turn them into a cutter, we need to sharpen one face of each bearing by grinding it flat. I did this on a bench grinder to make sure they’re kept square. You can also use a sanding disc or grinding disc on a grinder.

608 Bearing One Face Ground Flat

We then need to epoxy two M8 studs that are approximately 60mm long into the base to mount the bearings on. You can cut the M8 threaded rod using a cutting disc on a grinder, a Dremel or a hacksaw.

M8 Studs Epoxied Into Place

While we’ve got some epoxy mixed up, I’m also going to epoxy the 8mm shaft into the reel holder to use later.

8mm Shaft Epoxied Into Place

Once the epoxy has cured, we can mount the bearings onto the studs.

We also need to add a metal strip underneath the bearings, this stops the bottle from quickly wearing out the printed base. The strip will need to be trimmed from a piece of aluminium flat bar so that it fits into the cavity in the holder.

Aluminium Strip To Protect Printed Part

A small washer is used under the first bearing. The bearing then goes onto it with its flattened or ground face up, so that it doesn’t rub on the base. A nut holds it in place. We then add a nut to the second stud, then the bearing with the ground face down, just at the right height to contact the face of the first. A second nut holds the second bearing firm against the first bearing and the nut below it.

We can then screw the guide onto the front of the base with some M3 x 8mm button head screws.

Filament Guide Installed On Cutter

To finish it off, let’s also add a M8 rod for the PET bottle stand. You can make this from the leftover length of M8 threaded rod, it needs to be long enough to hold the tallest bottle that you’ll use on the PET 2 Print (around 300-400mm). This will hold the bottle upright to feed the end into the cutter and it is held in place with a nut and washer on each side of the base.

Bottle Holder Installed On Cutter

And that’s the cutter complete and ready to be mounted onto the stand.

Assembling One Side Of The Stand

The stand consists of two 500mm lengths of 2020 aluminium v-slot extrusion and two sets of legs, one on each end. These are mounted with some M5 v-slot nuts and M5 x 10mm button head screws.

We can add one set of legs onto one end and then slide the cutter into position.

First Attempt At The Hot End

The hot end is a really simple part of the recycler, but it actually turned out to be one of the more tricky parts to get right. I’m going to skip through this initial design because there were a couple of things I didn’t think through when I designed it and it didn’t work.

First Attempt At Hotend

Because the nozzle is going to be over 200 degrees celsius, we need a way to stop the heat from reaching the 3D-printed plastic holder. I thought I could use the heat break on the current hot end assembly, but I overlooked the fact that this meant that the strip wouldn’t fit into it. So I was back to the drawing board shortly after finishing it.

Assembling The Reeler

Next let’s move on to the most complicated part of the recycler, the reeler. This is the part that is driven by a stepper motor to pull the filament through the cutter and hot end.

We’ll start by making up the reel.

The reel is something that I’ve changed quite a lot from the others I’ve seen online. On most other machines, the reel is fixed on both sides and you need to unwind the filament from the reel once it’s done. I wanted to avoid this, so I made the reel removable which makes it much easier to get the completed filament off of afterwards.

Reeler Components To Be Assembled

To finish the reel off, we need to melt some M2.5 threaded brass inserts into one half of the reel for the opposite end to screw onto. This is split to make it easier to 3D print without requiring supports.

We also need to add some inserts to the other end of the reel holder for the small catches that hold the reel in place while it is running.

Brass Inserts Melted Into Reel Holder

Then we can screw the reel parts together with some M2.5 x 6mm screws and the catches with some M2.5 x 12mm screws to finish them off.

Next let’s press another two 608 size bearings into the reel stand, one on each side. We’ll use an 8mm shaft as a guide to keep them aligned while pressing them into place.

Next, let’s mount the motor onto its holder using four M3 x 8mm button head screws.

Stepper Motor Installed On Holder

Then we can mount the base onto the top of the v-slot extrusion.

Reeler Base Installed On Extrusion

And the motor holder onto the underside.

Motor and Reeler Base Installed On Extrusion

The reel is driven by the motor through a GT2 belt and pulley system on the back.

Timing Belt Pulley System For Motor

So we can push the reel’s shaft through its base with a spacer between it and the bearing, then another spacer on the opposite side. We then add the 60-tooth pulley to finish it off and the grub screw holds it in place. A 30-tooth pulley is pushed onto the motor shaft, with a belt connecting the two. Once complete, the shaft on the reeler can be trimmed to be flush with the face of the 60-tooth pulley.

The belt is tensioned using the relative movement between the reel base and the motor holder, pulling them further apart puts more tension on the belt. This needs to be fairly well-tensioned but shouldn’t put enough stress on the components to bend or distort any of the 3D printed parts.

Completed Pulley Drive System

Assembling & Programming The Controller

Now that we’ve got the mechanical parts in place, we need to add the controller.

If you read my previous design and build of the controller, I ended that off by saying that I wanted to make it a bit more compact. It was designed as a shield for an Arduino UNO, but by using an Arduino Pro Mini, we can make it much smaller.

So I designed a new PCB that swapped the UNO out for a pro mini and brought the components a little closer together.

Schematic_Filament Recycler_2023-10-12
Arduino Pro Mini Controller PCB Design

PCBWay then made them up for me in the same colour scheme as my previous shield.

I soldered the components onto the PCB, starting with the smallest and working to the largest, with the Arduino going on last.

Soldering Components Into Place On PCB

I also 3D printed a housing for the controller, but before we put it into the housing we need to program it and set up the stepper motor driver’s current limit.

Installing PCB In Controller Housing

Programming The Arduino

To upload the code to the Pro Mini, we’ll need to use a USB programmer. We just plug this into the Pro Mini and then into the computer to upload the code to it.

Arduino Pro Mini USB Programmer

Make sure that you select the “Arduino Pro or Pro Mini” board type. Also check that you have the “Atmega328P (5V, 16MHz)” processor selected and that your programmer type is set to “USBasp”.

Arduino IDE Controller Code

The sketch is available from my GitHub repository so that people can make changes and improvements to it.

Setting The Stepper Motor Driver Current Limit

To set the current limit, we need to measure the driver’s reference voltage using a multimeter. I’m using my Pokit Pro multimeter with clamp leads.

Pokit Pro To Set Stepper Motor Driver Current Limit

We then adjust the limit using a screwdriver to turn the onboard potentiometer to suit the rated current of the motor, which in my case is the same as the maximum current limit for the driver. So I’m aiming for a reference voltage of exactly 1V.

Display Update Issue

After setting the driver’s current limit and attempting to run the motor, I found another issue. When running the stepper motor, it sounded like it was intermittently skipping steps or stopping and this seemed to get worse if I sped the motor up.

I put the Pokit Pro’s oscilloscope onto the output and found that the Arduino stopped pulsing the stepper motor driver for brief periods of time, which was causing the driver to stop turning the motor.

Arduino Stops Pulsing Driver For Brief Periods

In working through the code, it seems like this happened each time the display was being updated. It looks like the Arduino takes longer to update the display than the period of time between pulses. So it just stops pulsing the driver while it finishes updating the display, which is obviously not going to work when we need a consistent pulling force. I tried making the display loop faster but didn’t have any luck with this. In the end, I had to modify the code so that it no longer updates the display when the motor is running.

This does limit the feedback on the display during operation, but won’t affect the overall design or functionality. I’ll have to investigate whether I can make the display or portions of the display update more quickly in the future.

Stops Pulsing During Display Updates

In any case, we now get smooth pulses from the Arduino and a consistent motor speed.

Arduino Now Pulsing Driver Smoothly

Mounting The Controller

To finish off the enclosure, we first need to add some M3 threaded brass inserts into the bottom to screw the PCB to.

Melting Brass Inserts Into Case Housing

The PCB is then held in place with some M3 nylon standoffs which double up as a means to hold the top cover in place.

Nylon Standoffs To Hold PCB In Place

I’m glued the OLED display to the inside of the top cover with some hot glue and I’ll connect it to the PCB with a short ribbon cable.

OLED Display and Ribbon Cable

We can then screw our element and thermistor into the terminals, plug in the stepper motor and then close it up with some M3 x 8mm button head screws.

M3 Button Head Screws To Hold Cover In Place

A 3D-printed knob gets pushed onto the rotary push button and we can mount it onto the base.

With all the components in place, we can install the second set of legs to close off the ends of the extrusions.

Mounting Second Set Of Legs In Place

Second Attempt At The Hot End

Now that we’ve got the other parts working, let’s go back to the hot end. As mentioned earlier, the device makes filament by softening the strip and rolling it over in the hot end to form a cylinder. This means that the strip needs to start being heated right from the time it enters the hot end or it’ll be very difficult to pull through. So, I redesigned the hot end holder so that the strip passes through the holder and directly into the heat block without any restrictions from the heat break.

PET2Print Partially Completed

The nozzle is a standard 0.4mm nozzle, so we need to first drill that out to the filament diameter. We’re aiming for 1.75mm but the filament expands a little after it leaves the hot end, so we’ll drill it out using a 1/16″ drill bit, which is just under 1.6mm.

The back of the heat block has a small tapped hole for the heat break. We’re going to open this up with a tapered drill bit so that it is slightly larger than the strip width. The taper will then help to gently fold the edges over until we reach the nozzle diameter.

Tapered Drill Bit To Modify The Back Of The Hotend

We can then mount the heat block onto the holder. I’ve used some M3 x 40mm button head screws through the heat block and then nuts to hold it onto the plywood plates on each side of the 3D-printed holder. The plywood plates act as the heat break in this design and stop the screws from melting the plastic holder.

We can then re-attach the terminals and we’re ready to try it out.

Second Version Of Hotend Holder

Turning A PET Bottle Into Filament

To run the PET bottle recycler, we first select the target hot end temperature. I’ve found that 215°C to 220°C work well with my bottles. We can then select the motor speed, for which I use 22 to 25. These are just arbitrary units, they don’t relate to rpm or rotational speed. We can then turn the motor on or off, forward or in reverse, with the last menu item.

PET2Print Controller Running

Now we just need a PET bottle to turn into filament. To prepare a bottle, we first need to wash it out and then remove the label and residue as well as any date markings. I found that acetone works well for this. If you don’t remove the label residue, it’ll clog up the hot end and/or cause your printed layers to delaminate.

Cleaning Sticker Residue From Bottle

The bottle cutter works best with a smooth surface and most bottles are rippled in some way. You can smooth them out over some heat, like a stovetop, with a drop or two of water inside the bottle to pressurise it slightly. Be very careful when working with and opening the bottle as the hot air or steam can cause burns – it is best to use gloves.

We can then cut off the end of the bottle, cut a starter strip and feed it into the cutter.

We’ll need some needle nose pliers to pull the end of the strip through the hot end, which has now preheated to 220°C, and then onto the reel.

Using Needle Nose Pliers To Pull PET Strip Through

The reel has a small hole on one spoke which we can feed the end through to tie it off. You might need to keep a finger on the knot until there is tension on the filament to lock it into place.

Tie Off PET Strip On Reel

Finally, we can turn on the reeler motor to continue pulling the filament through the hot end and onto the reel.

PET2Print Running To Convert Bottle To Filament

Now we just wait for it to turn the PET bottle into filament. You can also cut the bottle beforehand to reduce the load on the motor, you’ll then just feed the strip directly through to the hot end without the bearing cutter in place.

Test Prints With PET Bottle Filament

Once the bottle has been converted into filament, we can transfer it from the reel over to the 3D printer to try a print.

I started out by printing a benchy and calibration cube to see how they turn out. There is a bit of adjusting to do on the first few prints as the PET filament is not quite a solid 1.75mm section, it is hollow in the middle. I found that increasing the flow rate to about 135% gets good results. I printed with a bed temperature of 70°C and a hot end temperature of 260°C.

Once I had the settings right, I was actually pleasantly surprised by how well this filament prints. The calibration cube came out looking really good.

Calibration Cube Close Up

The benchy showed a few signs of stringing and a little under-extrusion in places but is also really good for homemade filament. It’s obviously not as consistent as factory-produced filament but it’s usable for home projects.

Benchy Close Up

3D Printing A PET Case For My Raspberry Pi

Once I was getting consistent printing results, I converted a few more bottles so that I could print a case for my Raspberry Pi.

3D Printer Filament Made On The PET2Print

This highlights one of the drawbacks of this process. You get about 6-7m of filament from a 1-litre bottle, but with the hollow centre and having to increase the flow rate to compensate for this, it gets used up quite a lot faster than the standard solid 1.75mm filament. It’s also messy to store on the filament holder as it doesn’t like being coiled up.

Filament Doesn't Stay On Holder Correctly

To print my standard Pi case with no supports, I need 25m of PET filament and this is with a really low infill density and only 2 walls. So I need to swap a new roll of filament onto the printer 5 times for a relatively small print. This is manageable if your printer has a filament runout sensor but it’s still a bit of a nuisance.

3D Print Settings Cura

The case body also came out surprisingly well with just a little stringing and again some under-extruded areas. With the partially transparent walls and infill visible, it’s not obvious.

3D Printed Pi Desktop Case Housing

I even used the coloured Mountain Dew bottle for the printed side panels as well.

Completed 3D Printed Pi Desktop Case

What do you think of the completed case? It’s really cool to think that this was once 5 Coke bottles and 2 Mountain Dew bottles. It also looks great in the dark as the RGB fan illuminates the body of the case.

Final Thoughts On The PET2Print

Overall I’m really happy with how my PET2Print recycler has come out. There are a couple of improvements I’d like to make to it, like getting the displayed temperature to be able to be updated while the motor is running, and perhaps designing a spool mount for precut bottle strips instead of the bottle cutter. It would also be helpful to be able to splice two lengths of PET filament together to avoid having to change the filament during a print but to date, it doesn’t look like anyone has found a reliable process for this.

Let me know what other suggestions you have to improve upon it in the comments section below. As mentioned earlier, I’ve put the code up on GitHub if you’d like to have a go at improving it – I’m sure there is a lot of room for improvement.

Michael Klements
Michael Klements
Hi, my name is Michael and I started this blog in 2016 to share my DIY journey with you. I love tinkering with electronics, making, fixing, and building - I'm always looking for new projects and exciting DIY ideas. If you do too, grab a cup of coffee and settle in, I'm happy to have you here.


  1. good afternoon. why did they give a link to the ssd1306 screen module in the list of components, although its pin arrangement does not match the scheme. in the diagram, your contacts go in this order (vcc-gnd-scl-sda) and on the module, the contacts go in this order (gnd-vcc-scl-sda). The ssd1315 module fits your scheme.


Please enter your comment!
Please enter your name here

Latest posts

Which NVMe Hat Is The Best For A Raspberry Pi 5

If you don’t know already, I’ve been selling these 3D printed cases for Raspberry Pi’s online for a few years now. With the launch...

Track Aircraft In Real-time With Your Raspberry Pi Using The FlightAware Pro

Have you ever seen a flight overhead and wondered where it is going? Or seen a unique-looking aircraft and wondered what type or model...

Pi 5 Desktop Case For NVMe Base or HatDrive! Bottom

Today we're going to be assembling a 3D-printed case for the Raspberry Pi 5 and Pimoroni's NVMe Base or Pineberry's HatDrive! This is an...

Related posts