Need help with RoboScan?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

190 Stars 13 Forks GNU General Public License v3.0 16 Commits 0 Opened issues


Raspberry Pi-powered analog film automatic scanner

Services available


Need anything else?

Contributors list

# 132,242
React N...
1 commit
# 71,456
1 commit
# 53,153
1 commit


This is the source code for a Lego+Raspberry Pi-powered analog film roll scanner. Watch it in action: RoboScan


You'll need these items to build RoboScan: * A digital camera with a macro lens: must be compatible with libgphoto2 with image capture and preview support. * A Raspberry Pi: you may choose a Pi 4 if your camera supports USB 3, otherwise a Pi 2 or 3 is fine. * A 28BYJ-48 Stepper Motor with ULN2003A driver: easy to find and cheap (about $6) * 3D-print an adapter to integrate the stepper motor in the legos: use the stepper mount and axis adapter provided by this project (you'll need some bolts to attach the motor to the adapter): * Adafruit White LED Backlight Module. * A LED driver such as Recom Power RCD-24-0.70/PL/B or Sparkfun FemtoBuck LED Driver. * A 50V, 47 μF capacitor * A high-power LED, such as New Energy LST1-01G03-4095-01: a 4000K white LED, with a CRI (Color Rendering Index) of 95. * Build the lego part:



Roboscan wiring diagram

(made using Fritzing with the help of parts from and Blomquist)

ULN2003A wiring

Put a 50V, 47 μF capacitor between the LED+ and LED - pins of the driver.

| ULN2003A Stepper Motor driver | Raspberry Pi | | ----------- | ----------- | | IN1 | GPIO 5 | | IN2 | GPIO 6 | | IN3 | GPIO 13 | | IN4 | GPIO 19 | | POWER+ | 5V power (such as the one next to the Ground) | | POWER - | Ground (such as the one next to the 5V power) |

Recom Power RCD-24-0.70/PL/B Backlight LED driver wiring

| Recom Power RCD-24-0.70/PL/B | Raspberry Pi | | ----------- | ----------- | | 1 - +Vin | 5V power (the one not already used by the stepper motor) | | 3 - PWM/ON/OFF | GPIO 18 | | 4 - GND | Ground (such as the one next to the GPIO 18) |

Alternative: Sparkfun FemtoBuck Backlight LED driver wiring

Untested - make sure to solder the jumper that can be closed with a glob of solder to double the output current from 330mA to 660mA. | Sparkfun FemtoBuck LED Driver | Raspberry Pi | | ----------- | ----------- | | V-/PGND | Ground (any remaining) | | V+/VIN | 5V power (the one not already used by the stepper motor) | | D-/DGND | Ground (such as the one next to the GPIO 18) | | D+/CTRL | GPIO 18 |

Software installation

First build the Angular frontend:

cd scanner-frontend
npm install
ng build --prod
cd ..

Then deploy the docker-compose: ```bash cd docker

Adjust the hostname to your Raspberry Pi

export DOCKERHOST=tcp://piscanner:2376 DOCKERTLS_VERIFY= docker-compose up -d --build cd .. ```

Starting it

The camera must be connected to the Raspberry Pi via USB. It must be compatible with libgphoto2.

Connect to the web interface

Simply navigate to http://piscanner/ (adjust the hostname to your Raspberry Pi)

Optional: Google Coral TPU

You can improve the machine learning inference performance by using a Google Coral Edge TPU USB Accelerator plugged on a USB port of the Raspberry Pi. To do so, you have to change the file src/Dockerfile. Replace:

CMD ["python", "", "--destination", "/storage/share", "--archive", "/storage/archive", "--temp", "/storage/tmp"]
CMD ["python", "", "-tpu", "--destination", "/storage/share", "--archive", "/storage/archive", "--temp", "/storage/tmp"]

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.