Introduction: FotoFish

FotoFish is a polaroid camera project, which uses a repurposed thermal printer to print the taken photograph instantly. It is created by the team at the OPENFAB, a Open Fabrication Lab at Özyeğin University in Istanbul, Turkey. The purpose of this project was to create a fun way for people to record their visits to OPENFAB.


  • Raspberry Pi

  • Raspberry Pi Camera

  • 12V Lithium Ion Battery with BMS (Battery Management System)

  • LM2596 Voltage Regulator Board

  • Thermal Receipt Printer and its Paper

  • Short M10 Rod

  • 12 Led Neopixel Ring

  • Shutter Button

  • Power Switch

  • Power Supply Jack

  • 12V Adapter

Step 1: 3D Print the Necessary Parts

Before starting doing anything you need to print the body parts we designed. Most of these parts are big and can take multiple hours to print, therefore we recommend you to print them beforehand.

Step 2: Disassembling and Mounting the Thermal Printer

Every thermal printer is somewhat different, therefore in this part you need to improvise and find a solution to get your thermal printer ready to be glued inside the front body part. We started by disassembling our printer and inspecting it. Our printer had three main parts; a mechanical printer, a circuit board and a power supply. In this project we will use a battery to power our printer therefore we were left with two essential parts. We designed a 3D printed part that holds our mechanical printer and the circuit board together. Then we used Pattex to glue the 3D printed part to the front body. Later we had to cut a small hole two make room for the usb cable, but after that our printer was ready and working.

Step 3: Mounting the Spool Holder and Paper Cutter

We designed two parts to hold the paper spool on the top of the thermal printer, inside the front body part. Glue these parts to both sides inside the front body at a height in which paper spool will not interfere with the printer. Then cut an M10 rod inappropriate length to hold the spool and place on these spool holders as shown in the picture. Some paper spools with greater diameter might touch the circuit board of the printer. In such a case insert some leftover pieces inside the spool holder to raise the spool as we did.

We made a cutter piece from acetate paper to be able to cut the paper after the print is finished. You can also make such a piece by cutting the acetate paper using scissors. You need to glue this cutter piece in front of the hole from which printed paper comes out. Gluing this piece inside the body would result in a consistent paper jam.

Step 4: Mounting Camera and NeoPixel

Before mounting the camera and the NeoPixel, we need to solder some female jumper cables to the NeoPixel. Solder three jumper wires to the DI (Digital Input), GND (Ground) and 5V pins. Route the cables through the hole under the place where the NeoPixel is intended to sit. After that use hot-glue to firmly mount the NeoPixel ring. We will also use hot-glue to mount the Raspberry Pi camera, but be sure to apply the hot-glue only to the backside of the camera as shown in the picture, since applying it to the components on the front might cause damage.

Step 5: Mounting the Raspberry Pi and the Battery

Mount the Raspberry Pi and the lithium-ion battery pack including the battery management system in the main cover using some hot-glue. If you are planning to use the Raspberry Pi for future projects we recommend printing a bottom cover for raspberry pi and hot-gluing it to the case, since removing a hot-glued Raspberry Pi might result with damage.

Step 6: Wiring

We will start by soldering the power cables. First solder two cables to the charging port, the cable from the positive pin of the port will go to the pin on top of the power switch, the other cable will go to the ground pin of the voltage regulator. Then solder the positive end of the battery to the middle pin of the power switch and solder the ground cable also to the ground pin of the regulator. At least we will connect the remaining pin of the power switch to the positive pin of the regulator. In this setup when the power switch is in "on" position, the electricity will flow from the battery to our electronics and when the switch is in "off" position the battery will be connected to the charging port waiting to be charged.

After wiring the 12 volt power we need to connect the output pins of the voltage regulator to the input pins of the Raspberry Pi and adjust the output voltage to a suitable level. For this solder two female jumper cables to the output and adjust the voltage using a multimeter or voltmeter to 5 volts. Also, connect two female jumpers to the shutter button and insert it in place. Finally, we need to connect everything to the Raspberry Pi. Start by connecting the thermal printer to Raspberry Pi with a USB cable. Then connect the NeoPixel ring cables to the correct pins of the Raspberry Pi by following the colors of the cables we soldered two steps back. Connect the cables of the shutter pin as shown in the picture and connect the power cables coming from the output of the regulator. Don't forget to connect the camera cable of the Raspberry Pi before closing the back cover of the body.

Step 7: Code

First you need to setup a freshly installed Raspberry Pi and activate the Camera, GPIO access from the settings. I will not go in detail about this part, you can find many sources on the internet about how to setup the Raspberry Pi. You can find the Python code for this project in the attachment. You need to copy this code and save it inside a folder named "photoprinter" on your desktop, as shown as in the first picture. When the code is first run it will create another folder named photos inside the main folder and save every photo there. After copying the code you need to install necessary libraries to the Raspberry Pi, to do this follow second and third pictures, which shows what you need to enter to the terminal. After installing these libraries you can test your code by entering the line in the fourth picture to the terminal. If your camera works thats great, now we will add some code to the Raspbian operating system so that your program will start to run each time Raspberry Pi boots. You need to run the terminal app and enter the command in the fifth picture and hit enter. A file will open, you need to enter the lines shown in the sixth picture at the end of the file before the "exit 0" line and hit ctrl + x to save the file.


Step 8: Test Print

Raspberry Pi Contest 2020

Runner Up in the
Raspberry Pi Contest 2020