How to make a digital Polaroid camera for cheap thermal instant photos

In this article, I will tell you the story of my latest camera: a digital Polaroid camera, which combines a receipt printer with a Raspberry Pi. To build it, I took an old Polaroid Minute Maker camera, got rid of the guts, and used a digital camera, E-ink display, receipt printer and SNES controller to operate the camera instead of internal organs. Don’t forget to follow me on Instagram (@ade3).
A piece of paper from a camera with a photo is a bit magical. It produces an exciting effect, and the video on the screen of a modern digital camera feeds you that excitement. Old Polaroid cameras always make me a little sad because they are such excellently designed machines, but when the film is discontinued, they become nostalgic works of art, collecting dust on our bookshelves. What if you could use a receipt printer instead of instant film to bring a new life to these old cameras?
When it’s easy for me to make it, this article will delve into the technical details of how I made the camera. I do this because I hope my experiment will inspire some people to try the project on their own. This is not a simple modification. In fact, this may be the most difficult camera cracking I have ever tried, but if you decide to solve this project, I will try to provide enough details from my experience to prevent you from getting stuck.
Why should I do this? After taking the shot with my coffee blender camera, I want to try a few different methods. Looking at my camera series, the Polaroid Minute Maker camera suddenly jumped out of me and became the ideal choice for digital conversion. This is a perfect project for me because it combines some of the things I’m already playing with: Raspberry Pi, E Ink display and receipt printer. Put them together, what will you get? This is the story of how my digital Polaroid camera was made…
I have seen people try similar projects, but no one has done a good job explaining how they do it. I hope to avoid this error. The challenge of this project is to make all the various parts work together. Before you start pushing all the parts into the Polaroid case, I recommend that you spread everything out while testing and setting up all the various components. This prevents you from reassembling and disassembling the camera every time you hit an obstacle. Below, you can see all the connected and working parts before everything is stuffed into the Polaroid case.
I made some videos to record my progress. If you plan to solve this project, then you should start with this 32-minute video because you can see how everything fits together and understand the challenges that may be encountered.
Here are the parts and tools I used. When everything is said, the cost may exceed $200. The big expenses will be Raspberry Pi (35 to 75 US dollars), printers (50 to 62 US dollars), monitors (37 US dollars) and cameras (25 US dollars). The interesting part is to make the project your own, so your costs will be different depending on the project you want to include or exclude, upgrade or downgrade. This is the part I use:
The camera I use is a Polaroid minute camera. If I were to do it again, I would use a Polaroid swing machine because it is basically the same design, but the front panel is more beautiful. Unlike the new Polaroid cameras, these models have more space inside, and they have a door on the back that allows you to open and close the camera, which is very convenient for our needs. Do some hunting and you should be able to find one of these Polaroid cameras in antique stores or on eBay. You may be able to buy one for less than $20. Below, you can see a Swinger (left) and Minute Maker (right).
In theory, you can use any Polaroid camera for this type of project. I also have some land cameras with bellows and folded up, but the advantage of Swinger or Minute Maker is that they are made of hard plastic and do not have many moving parts except the back door. The first step is to strip all the guts from the camera to make room for all our electronic products. Everything must be done. At the end, you will see a pile of garbage, as shown below:
Most parts of the camera can be removed with pliers and brute force. These things have not been taken apart, so you will struggle with glue in some places. Removing the front of Polaroid is more difficult than it looks. There are screws inside and some tools are needed. Obviously only Polaroid has them. You may be able to unscrew them with pliers, but I gave up and forced them to close. In hindsight, I need to pay more attention here, but the damage I caused can be repaired with super glue.
Once you are successful, you will once again fight the parts that should not be taken apart. Likewise, pliers and brute force are required. Be careful not to damage anything visible from the outside.
The lens is one of the tricky elements to remove. Apart from drilling a hole in the glass/plastic and prying it out, I didn’t think of other simple solutions. I want to preserve the appearance of the lens as much as possible so that people can’t even see the miniature Raspberry Pi camera in the center of the black ring where the lens was fixed before.
In my video, I showed the before and after comparison of Polaroid photos, so you can see exactly what you want to delete from the camera. Take care to ensure that the front panel can be opened and closed easily. Think of the panel as a decoration. In most cases, it will be fixed in place, but if you want to connect the Raspberry Pi to the monitor and keyboard, you can remove the front panel and plug in the power source. You can propose your own solution here, but I decided to use magnets as a mechanism to hold the panel in place. The Velcro seems too fragile. The screws are too much. This is an animated photo showing the camera opening and closing the panel:
I chose the complete Raspberry Pi 4 Model B instead of the smaller Pi Zero. This is partly to increase speed and partly because I am relatively new to the Raspberry Pi field, so I feel more comfortable using it. Obviously, the smaller Pi Zero will play some advantages in the narrow space of Polaroid. An introduction to Raspberry Pi is beyond the scope of this tutorial, but if you are new to Raspberry Pi, there are many resources available here.
The general recommendation is to take some time and be patient. If you come from a Mac or PC background, then you will need some time to familiarize yourself with the nuances of the Pi. You need to get used to the command line and master some Python coding skills. If this makes you feel scared (I was scared at first!), please don’t be angry. As long as you accept it with persistence and patience, you will get it. Internet search and perseverance can overcome almost all obstacles you encounter.
The photo above shows where the Raspberry Pi is placed in the Polaroid camera. You can see the connection location of the power supply on the left. Also note that the gray dividing line extends along the width of the opening. Basically, this is to make the printer lean on it and separate the Pi from the printer. When plugging in the printer, you need to be careful not to break the pin pointed by the pencil in the photo. The display cable connects to the pins here, and the end of the wire that comes with the display is about a quarter of an inch in length. I had to extend the ends of the cables a bit so that the printer would not press on them.
The Raspberry Pi should be positioned so that the side with the USB port points to the front. This allows the USB controller to be connected from the front using an L-shaped adapter. Although this was not part of my original plan, I still used a small HDMI cable on the front. This allows me to easily pop out the panel and then plug the monitor and keyboard into the Pi.
The camera is a Raspberry Pi V2 module. The quality is not as good as the new HQ camera, but we don’t have enough space. The camera is connected to the Raspberry Pi via a ribbon. Cut a thin hole under the lens through which the ribbon can pass. The ribbon needs to be twisted internally before connecting to the Raspberry Pi.
The front panel of Polaroid has a flat surface, which is suitable for mounting the camera. To install it, I used double-sided tape. You must be careful on the back because there are some electronic parts on the camera board that you don’t want to damage. I used some pieces of tape as spacers to prevent these parts from being smashed.
There are two more points to note in the photo above, you can see how to access the USB and HDMI ports. I used an L-shaped USB adapter to point the connection to the right. For the HDMI cable in the upper left corner, I used a 6-inch extension cable with an L-shaped connector on the other end. You can see this better in my video.
E Ink seems to be a good choice for the monitor because the image is very similar to the image printed on the receipt paper. I used a Waveshare 4.2-inch electronic ink display module with 400×300 pixels.
Electronic ink has the analog quality I just liked. It does look like paper. It is really satisfying to display images on the screen without power. Because there is no light to power the pixels, once the image is created, it stays on the screen. This means that even if there is no power, the photo remains on the back of the Polaroid, which reminds me of what the last photo I took was. To be honest, the time for the camera to be placed on my bookshelf is much longer than when it is used, so as long as the camera is not used, the camera will almost become a photo frame, which is a good choice. Energy saving is not unimportant. In contrast to light-based displays that constantly consume power, E Ink only consumes energy when it needs to be redrawn.
Electronic ink displays also have disadvantages. The biggest thing is speed. Compared with light-based displays, it only takes longer to turn on or off each pixel. Another disadvantage is to refresh the screen. The more expensive E Ink monitor can be partially refreshed, but the cheaper model will redraw the entire screen every time any changes occur. The effect is that the screen becomes black and white, and then the image appears upside down before the new image appears. It only takes one second to blink, but add up. All in all, it takes about 3 seconds for this particular screen to update from the time the button is pressed to when the photo appears on the screen.
Another thing to keep in mind is that, unlike computer displays that display desktops and mice, you need to be different with e-ink displays. Basically, you are telling the monitor to display content one pixel at a time. In other words, this is not plug and play, you need some code to achieve this. Every time a picture is taken, the function of drawing the image on the monitor is executed.
Waveshare provides drivers for its displays, but its documentation is terrible. Plan to spend some time fighting with the monitor before it is working properly. This is the documentation of the screen I use.
The display has 8 wires, and you will connect these wires to the pins of the Raspberry Pi. Normally, you can only use the cord that comes with the monitor, but since we are working in a narrow space, I have to extend the end of the cord not too high. This saves about a quarter of an inch of space. I think another solution is to cut more plastic from the receipt printer.
To connect the display to the back of the Polaroid, you will drill four holes. The monitor has holes for mounting in the corners. Place the display in the desired location, make sure to leave a space below to expose the receipt paper, then mark and drill four holes. Then tighten the screen from the back. There will be a 1/4 inch gap between the back of the Polaroid and the back of the monitor.
You might think that the electronic ink display is more troublesome than it is worth. You may be right. If you are looking for a simpler option, you may need to look for a small color monitor that can be connected via the HDMI port. The disadvantage is that you will always be looking at the desktop of the Raspberry Pi operating system, but the advantage is that you can plug it in and use it.
You may need to review how the receipt printer works. They do not use ink. Instead, these printers use thermal paper. I’m not entirely sure how the paper was created, but you can think of it as a drawing with heat. When the heat reaches 270 degrees Fahrenheit, black areas are generated. If the paper roll is to be hot enough, it will turn black completely. The biggest advantage here is that there is no need to use ink, and compared with real Polaroid film, no complicated chemical reactions are required.
There are also disadvantages of using thermal paper. Obviously, you can only work in black and white, without color. Even in the black and white range, there are no shades of gray. You must draw the image completely with black dots. When you try to get as much quality as possible from these points, you will inevitably fall into the dilemma of understanding jitter. Special attention should be paid to the Floyd-Steinberg algorithm. I will let you walk off that rabbit by yourself.
When you try to use different contrast settings and dithering techniques, you will inevitably encounter long strips of photos. This is part of many selfies that I have honed in the ideal image output.
Personally, I like the appearance of dithered images. When they taught us how to paint through stippling, it reminded me of my first art class. It’s a unique look, but it’s different from the smooth gradation of black and white photography that we have been trained to appreciate. I say this because this camera deviates from tradition and the unique images it produces should be regarded as the “function” of the camera, not the “bug”. If we want the original picture, we can use any other consumer camera on the market and save some money at the same time. The point here is to do something unique.
Now that you understand thermal printing, let’s talk about printers. The receipt printer I used was purchased from Adafruit. I bought their “Mini Thermal Receipt Printer Starter Pack”, but you can buy it separately if needed. In theory, you don’t need to buy a battery, but you may need a power adapter so that you can plug it into the wall during testing. Another good thing is that Adafruit has good tutorials that will give you confidence that everything will go on normally. Start from this.
I hope the printer can fit Polaroid without any changes. But it is too big, so you will have to crop the camera or trim the printer. I chose to refinish the printer because part of the appeal of the project was to keep the Polaroid’s appearance as much as possible. Adafruit also sells receipt printers without a casing. This saves some space and a few dollars, and now that I know how everything works, I might use that next time I build something like this. However, this will bring a new challenge, namely how to determine how to hold the paper roll. Projects like this are all about compromises and the challenges of choosing to solve. You can see below the photo the angle that needs to be cut to make the printer fit. This cut will also need to occur on the right side. When cutting, please be careful to avoid the printer’s wires and internal electronic equipment.
One problem with Adafruit printers is that the quality varies depending on the power source. They recommend using a 5v power supply. It is effective, especially for text-based printing. The problem is that when you print an image, the black areas tend to become brighter. The power required to heat the entire width of the paper is much greater than when printing text, so black areas may become gray. It’s hard to complain, these printers are not designed to print photos after all. The printer cannot generate enough heat across the width of the paper at a time. I tried some other power cords with different outputs, but did not have much success. Finally, in any case, I need to use batteries to power it, so I gave up the power cord experiment. Unexpectedly, the 7.4V 850mAh Li-PO rechargeable battery I chose made the printing effect of all the power sources I tested the darkest.
After installing the printer into the camera, cut a hole under the monitor to align with the paper coming out of the printer. To cut the receipt paper, I used the blade of the old packaging tape cutter.
In addition to the black output of the spots, another disadvantage is banding. Whenever the printer pauses to catch up with the data being fed, it will leave a small gap when it starts printing again. In theory, if you can eliminate the buffer and let the data stream continuously feed into the printer, you can avoid this gap. Indeed, this seems to be an option. The Adafruit website mentions undocumented pushpins on the printer, which can be used to keep things in sync. I haven’t tested this because I don’t know how it works. If you solve this problem, please share your success with me. This is another batch of selfies where you can clearly see the bands.
It takes 30 seconds to print the photo. This is a video of the printer running, so you can feel how long it takes to print the image. I believe that this situation may increase if Adafruit hacks are used. I suspect that the time interval between printing is artificially delayed, which prevents the printer from exceeding the speed of the data buffer. I say this because I read that the paper advance must be synchronized with the printer head. I may be wrong.
Just like the E-ink display, it takes some patience to make the printer work. Without a print driver, you are actually using code to send data directly to the printer. Similarly, the best resource may be Adafruit’s website. The code in my GitHub repository is adapted from their examples, so if you encounter difficulties, Adafruit’s documentation will be your best choice.
In addition to the nostalgic and retro advantages, the advantage of the SNES controller is that it provides me with some controls that I don’t have to think too much about. I need to concentrate on getting the camera, printer, and monitor to work together, and have a pre-existing controller that can quickly map my functions to make things easier. In addition, I already have experience using my Coffee Stirrer Camera controller, so I can easily get started.
The reverse controller is connected via a USB cable. To take a photo, press the A button. To print the picture, press the B button. To delete the picture, press the X button. To clear the display, I can press the Y button. I did not use the start/select buttons or left/right buttons at the top, so if I have new ideas in the future, they can still be used for new features.
As for the arrow buttons, the left and right buttons of the keypad will cycle through all the images I have taken. Pressing up does not currently perform any operation. Pressing will advance the paper of the receipt printer. This is very convenient after printing the picture, I want to spit out more paper before tearing it off. Knowing that the printer and Raspberry Pi are communicating, this is also a quick test. I pressed, and when I heard the paper feed, I knew that the printer’s battery was still charging and ready to use.
I used two batteries in the camera. One powers the Raspberry Pi and the other powers the printer. In theory, you can all run with the same power supply, but I don’t think you have enough power to run the printer fully.
For the Raspberry Pi, I bought the smallest battery I could find. Sitting under Polaroid, most of them are hidden. I don’t like the fact that the power cord must extend from the front to the hole before connecting to the Raspberry Pi. Maybe you can find a way to squeeze another battery in Polaroid, but there is not much space. The disadvantage of putting the battery inside is that you have to open the back cover to open and close the device. Simply unplug the battery to turn off the camera, which is a good choice.
I used a USB cable with an on/off switch from CanaKit. I might be a little too cute for this idea. I think the Raspberry Pi can be turned on and off with just this button. In fact, disconnecting the USB from the battery is just as easy.
For the printer, I used an 850mAh Li-PO rechargeable battery. A battery like this has two wires coming out of it. One is the output and the other is the charger. In order to achieve a “quick connection” at the output, I had to replace the connector with a general-purpose 3-wire connector. This is necessary because I don’t want to have to remove the entire printer every time I need to disconnect the power. It would be better to switch here, and I may improve it in the future. Even better, if the switch is on the outside of the camera, then I can unplug the printer without opening the back door.
The battery is located behind the printer, and I pulled the cord out so that I can connect and disconnect the power as needed. In order to charge the battery, a USB connection is also provided through the battery. I also explained this in the video, so if you want to understand how it works, please check it out. Like I said, the surprising benefit is that this setting produces better print results compared to directly connecting to the wall.
This is where I need to provide a disclaimer. I can write effective Python, but I can’t say it’s beautiful. Of course, there are better ways to do this, and better programmers can greatly improve my code. But as I said, it works. Therefore, I will share my GitHub repository with you, but I really can’t provide support. Hope this is enough to show you what I am doing and you can improve it. Share your improvements with me, I will be happy to update my code and give you credit.
Therefore, it is assumed that you have set up the camera, monitor and printer, and can work normally. Now you can run my Python script called “digital-polaroid-camera.py”. Ultimately, you need to set the Raspberry Pi to automatically run this script at startup, but for now, you can run it from a Python editor or terminal. The following will happen:
I tried to add comments to the code to explain what happened, but something happened while taking the photo and I need to explain further. When the photo is taken, it is a full-color, full-size image. The image is saved in a folder. This is convenient because if you need to use it later, you will have a normal high-resolution photo. In other words, the camera is still creating normal JPG like other digital cameras.
When the photo is taken, a second image will be created, which is optimized for display and printing. Using ImageMagick, you can resize the original photo and convert it to black and white, and then apply Floyd Steinberg dithering. I can also increase the contrast in this step, although this feature is turned off by default.
The new image was actually saved twice. First, save it as a black and white jpg so that it can be viewed and used again later. The second save will create a file with a .py extension. This is not an ordinary image file, but a code that takes all the pixel information from the image and converts it into data that can be sent to the printer. As I mentioned in the printer section, this step is necessary because there is no print driver, so you can’t just send normal images to the printer.
When the button is pressed and the image is printed, there are also some beep codes. This is optional, but it’s nice to get some audible feedback to let you know that something is going on.
Last time, I could not support this code, it is to point you in the right direction. Please use it, modify it, improve it and make it yourself.
This is an interesting project. In hindsight, I will do something different or maybe update it in the future. The first is the controller. Although the SNES controller can do exactly what I want to do, it is a clumsy solution. The wire is blocked. It forces you to hold the camera in one hand and the controller in the other. So embarrassing. One solution might be to peel the buttons from the controller and connect them directly to the camera. However, if I want to solve this problem, I might as well abandon SNES completely and use more traditional buttons.
Another inconvenience of the camera is that every time the camera is turned on or off, the back cover needs to be opened to disconnect the printer from the battery. It seems that this is a trivial matter, but every time the back side is opened and closed, the paper must be re-passed through the opening. This wastes some paper and takes time. I can move the wires and connecting wires to the outside, but I don’t want these things to be exposed. The ideal solution is to use an on/off switch that can control the printer and Pi, which can be accessed from the outside. It may also be possible to access the printer charger port from the front of the camera. If you are dealing with this project, please consider solving this problem and share your thoughts with me.
The last mature thing to upgrade is the receipt printer. The printer I use is great for text printing, but not for photos. I have been looking for the best option to upgrade my thermal receipt printer, and I think I have found it. My preliminary tests have shown that a receipt printer compatible with 80mm ESC/POS may produce the best results. The challenge is to find a battery that is small and battery-powered. This will be a key part of my next camera project, please continue to pay attention to my suggestions for thermal printer cameras.
PS: This is a very long article, I’m sure I missed some important details. As the camera will inevitably be improved, I will update it again. I really hope you like this story. Don’t forget to follow me (@ade3) on Instagram so you can follow this photo and my other photography adventures. Be creative.
About the author: Adrian Hanft is a photography and camera enthusiast, designer, and author of “User Zero: Inside the Tool” (User Zero: Inside the Tool). The views expressed in this article are only those of the author. You can find more works and works of Hanft on his website, blog and Instagram. This article is also published here.


Post time: May-04-2021