Introduction: DIY Scrolling Light Box A4 Size

About: MILL - Makers In Little Lisbon is a collaborative project in Lisbon dedicated to the maker community. We are interested in the areas of the visual arts, digital manufacturing, 3D printing, educational robotics…

In this instructable it will be demonstrated how to build an advertising Scrolling Light Box for A4 sized sheets, using an Arduino controlled motor, 3D printed pieces and a laser cut frame.

We're 3 portuguese engineering students from Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa majoring in Microelectronics and Nanotechnology. This project is the one of the objectives of our internship at MILL - Makers In Little Lisbon.

We hope you enjoy this instructable!

Step 1: Designing the Components

All the components will be designed using Autodesk Fusion 360, therefore it's important that you're comfortable with this software. If you're not, be sure to check Autodesk's channel on Youtube:


Let's begin by designing the main frame, the structure which will serve as base of this build.

Our first step was to design the tubes. For this project we designed two identical tubes, each of them with a diameter of 25 mm, 220 mm in length and a 5,40 mm diameter centered bore which is gonna fit a 5mm diameter threaded metal shaft . They aren't completely cylindrical, for the faces are sliced with a 74º segment, or in other words , a 15 mm segment cut 2,5 mm from the border . We did this in order to make it easier to attach the paper, which is gonna curl around both tubes while the MUPI is operating, but it should be just as functional with fully cylindrical tubes.

Our next step was to model the supports for the tubes, the stepper motor, the LED lighting system and the optical sensor.
Let’s start by explaining how we modeled the supports for the tubes. These are simple “L” shaped pieces. We made them 38 mm high, the whole piece is 8mm thick and has 28 mm in width. The base, which will attach to the frame, is a 28x23mm rectangle and possesses 4 circular holes all 4,2mm in diameter for M4 screws. The hole placement is not that important, as long as they're within the 20x23mm area of the base which is not covered by the part that holds the roller. We also added ribs to increase the stability of the piece, these are the parts that connect the base to the part that holds the roller. We made them 3mm thick and using the Fusion 360 rib tool we made 2 on each edge of the base both 8mm long.

The part that holds the tube has a 16.2mm diameter hole, whose center is 18.5mm away from the base, which is made to fit a bearing. The hole has a backstop at the side opposite of the base to keep the bearing from getting out of place, we made it 3mm thick and with 13,8mm in diameter.

Now let´s move on to the support of the Stepper motor. The motor we used was a NEMA 14 so either get the same model or you will have to adjust this piece. It's a 3-face piece, similar to the supports for the rollers except bigger and instead of attaching the base to the frame we will be attaching it to the frame on a lateral vertical face. The base is 36x48mm, 2mm thick. The face on which the motor shaft is supposed to be turned to is a 39x35mm rectangle, 5mm thick, with a centered circular hole measuring 25mm in diameter. This face also has four 3,40mm diameter holes made so we can fit four M3 screws to attach the support to the Nema 14. The second vertical face is perpendicular to the previous one and with it that we shall assemble the support to the frame. Its dimensions are 31x35mm, 9mm in thickness, with four equidistant 4.20mm diameter holes made for M4 screws.

For the supports for the LED lighting system we decided to go for a hook like approach. There will be four of these, two on each side of the frame, each pair will hold a LED bar. The base is 35x10mm, with two 4,20mm diameter holes on each end for the M4 screws, and it’s 10mm high. Centered on the base, a column goes vertically 18,6mm high with the same thickness as the base it then extends but with an inclination of 45º for 27mm. The hole for the hook is a 11x8mm rectangular hole. We the removed about 8.5mm from the thinnest wall of the hole to form the hook like structure.

The final support is the optical sensor support.It has a 15x45mm base, 10mm high and with two 4,20mm holes on each end. There´s a 19x27mm section centered on the base that´s 14mm high, which extends into an horizontal platform on which we will place the IV sensor, it sizes 24,5 mm in length, 27 mm in width and is 5mm thick. On the top it has a 16,55x18,30mm rectangular depression,2mm deep, due to the relief of the sensor. There´s a 3,20mm hole made to fit a M3 screw in order to attach the screw to the support.This hole was placed in accordance to the shape of the sensor and where the whole is place on the sensor, since yours may be different we´ll leave it to you where to place it.We will show you pictures of our sensor and our model for the support so you can compare. To complete this piece we added an arch structure to the top, in order to strongly hold the sensor , this arch is 12mm high, 27 mm wide,7.5 mm long and 1,5 mm thick.

The last piece we designed was the frame where we will assemble the components. It's meant for a 500x300x5mm MDF board, so we designed a 290x490mm rectangle to have a small margin of error for the laser cutter. Next we created the display opening for the advertisement, it is a 200x270mm rectangle.The next step is to draw and create the holes to attach the pieces we previously designed by screwing the M4 screws, with designated positions so the MUPI can work accordingly.

Final Step of modeling this project is to attach everything within Fusion 360. The rest of the components (the stepper motor, the nuts, bearings and pulleys) were not designed by us, but exported from :


Step 2: 3D Printing

After designing all the components, we went into the actual making process. For the small components, which are part of this design, we choose 3D printing as our fabrication method. 3D printing has its pros, like low cost and it's easy to do but it also has some cons like the printing time. In our project, our biggest component (which are the rollers) took a little over 5 hours to print. Of course you can always do other stuff while the printer is working.
So first things first, in order to 3D print you'll need a slicing software. Thos software will "translate" your Fusion360 designs to the "language" of 3D printers. In our project we used Cura Slicing software. Once again, if you're not familiar with this software you should watch some tutorials and practice. We recommend this one:

The first step is to export the components you designed into ".stl " file format, here’s how:

After that, you can open Cura. In this software, before anything else, you will need to get the profile of your 3D printer. This is very important because this will tell Cura which printer you are using and ajust the printing parameteres accordingly. Finding the profile of your printer is really easier, just go to the website of your printer’s brand and surely you'll find it there, just download it and import it to Cura. After doing that, you'll notice that the displayed printing area will match the real printing area of your printer, and you can adjust all the printing parameters in Cura (which is very helpful).

Here’s how to import a profile:

In our project we used two different printers, a BQ Prusa i3 Hephestos and a BQ Witbox

BQ Prusa i3 Hephestos:

BQ Witbox:

We imported the profiles into Cura, here’s how they look:

You might have noticed the parameters on the right side of the screen, these are the print parameters. There are some which are very important like the filament thickness. In our case we use a 1.75mm thick PLA filament. You can use another, but don’t forget to adjust the parameters.

Useful tip: If you don’t know what a parameter does in Cura, just put your cursor over it and a brief explanation of the parameter will appear!

Cura will also give you some very important information about the printing process for the piece you want to print, like the estimate printing time, weight of printed piece (important for checking if you have enough filament left) and also how the layers will be printed.

Here's how to see the layers:

One more advice, we do recommend to use brim. Brim is a support layer that your printer does before starting to actually print the piece, this helps the layers that make up your piece to be more firmly glued to the printer's plate therefore helping you achieve better results.

After you've got all done, you just need to export the gcode from Cura to a SD card, here's how:

One last advice:

Before you start to print anything it is really important to always set up your printer correctly, this will vary from printer to printer but surely you will find that information on your printer's user manual or on the internet.

So here's our final printer pieces:

Step 3: LASER Cutting

The main frame of the Light Box was made by laser cutting. As said before we used a 500x300x5mm board of MDF as our base for cutting.

In our case we designed the frame in Fusion 360, so the first step is to export it into a file format that the laser cutting software will understand. So if you are following our tutorial step by step and using the same software, all you need to do is to export the frame into ".dxf" and here’s how:


Next you will need the laser cutting software. We used LaserWorks which is a very simple software, still here’s a tutorial to make it easier to work with:

So the first step is to import your drawing into Laserworks software.

Make sure everything fits inside your cutting plate which is shown by the software. Also you should ask your LASER Cutting machine to track frame (because it will asure you that the laser is always inside the limits of the board) and last but not least don't forget to focus the LASER.

One good practice on LASER Cutting is to create layers of cutting, for instance, in our frame we made two layers of cutting. Layers determine the order that the machine will follow on cutting, in our case, we decide that in the first layer should be the inner hole of the frame and also the screw holes for the supports we would attached later on the assembly. The second layer is the outter limit of the frame. What this means is that in our case the machine will cut from the inside out.

After doing all this, you all done and set to cut.

Useful Tip: We recommed you to test your drawing on cardboard first! This will avoid errors on cutting MDF, so you don't waste any resources!

Step 4: Programming Your Light Box's Motor

In this part we're going to show you how to motorize your Light Box, using a NEMA 14 motor, an Arduino UNO, a shield, an A4988 driver and a TCRT IR proximity sensor. We reused a Shield from a BQ Ciclop 3D Scanner project, as you can see in this instructable:

If you've never worked with Arduino before, we recommend you watching Jeremy Blum's Youtube channel, which has some easy to learn tutorials:

First of all we'll have to wire all the components. We recommend you take a look at paulhurleyuk's instructable "DRIVE A STEPPER MOTOR WITH AN ARDUINO AND A A4988 STEPSTICK/POLOLU DRIVER", which we read and based our circuit on:

Next, we'll take a look into the Arduino programming itself. You'll need to download the Accelstepper.h library for Arduino IDE. We're going to use some functions in this library to accelerate/deccelerate our motor to give it a smooth movement.

// AccelStepper Setup
AccelStepper stepper(AccelStepper::DRIVER, 12, 13);   // 1 = Easy Driver interface
                                  // NANO Pin 12 connected to STEP pin of Easy Driver
                                 // NANO Pin 13 connected to DIR pin of Easy Driver 

const int buttonPin = 10;     // the number of the sensor pin, behaving like a button 

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status
int count = 1;
int dir = true;              // will determine the direction in which the motor is running
void setup() {
  // initialize the LED pin as an output:
   pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
   pinMode(buttonPin, INPUT);
   pinMode(9,OUTPUT); // Enable
   digitalWrite(9,LOW); // Set Enable low 
     stepper.setMaxSpeed(2500);        // Max speed
   stepper.setAcceleration(1500);      // Acceleration speed
}                                      // if you change anyone of these, you may need to set the black strips at a difference
                                       // as well as change some of the code below
void loop() {
    buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH){            // detecting "white"
        digitalWrite(ledPin, LOW);
  else if (buttonState == LOW){        // detecting "black"
       digitalWrite(ledPin, HIGH);

// Meant to keep the stepper motor running
void speed_stepper(){
  stepper.move(200000);  //move from current position a number large enough so the code doesn't stop;       //execute the code

//as soon as the sensor detects a black strip
//the motor deccelerates untill it stops and then it
//waits for a while before accelerating back to full speed
  void unspeed_stepper(){
 // Stop as fast as possible: sets new target
 if (count<3){     //number of commercials
  stepper.setPinsInverted (dir,false,false);  //inverts the direction pin according to the count
  dir = !dir;
  while (stepper.currentPosition () != 3500){    // number large enough to not record a near black strip

Initially our code was programmed to stop exactly at the center of each sheet, without the need of a sensor, however, as the paper is not completely stretched, the motor would sometimes skip steps, so we needed to change something

This code uses an optical sensor as a switch. When assembling everything we put black tape strips distanced equally from the center of each sheet, so that the motor deccelerates and stops upon encountering the black strip, centering the sheet. The code is also programmed to start after a while, in case the sensor got stuck on a black strip and it is also programmed to ignore nearby black strips, so that it doesn't stop upon encountering the next black strip, meant for the reverse direction.

Step 5: Assembling

After everything else is done, the only step left to do is to assemble the light box.

Now it's just a matter of using the right screws (M4 in our case) and screw every support to the frame. We do recommend to insert the bearings before screwing the tube's supports to the frame.

We also made some changes regarding rollers. With the help of a heat blower we heated some nuts and we embedded them on both sides of the rollers.

To make the assembly way easier, we recommend you first attach the supports of one the sides, insert the tubes, and only after it the supports of the other side.

In order to keep the tubes in place, you need to fit in the inner side one spacer, one washer and one nut. In the outer side attach the pulley/nut and some washers, in our case we used three.

Make sure to firmly tight screws with a manual screw driver.

We did one final change on our assembly, we added two backstops, one after each roller to maintain the tension on the paper sheets. So this is why you should always test everything with some paper sheets before using the actual documents you will display.