Michael G
Published © GPL3+

Concealed Book Box Storage System

A box that independently slides out, rises up, descends, and back under your bed, driven by pinion gears on drawer slides made from scratch.

AdvancedShowcase (no instructions)Over 2 days94
Concealed Book Box Storage System

Things used in this project

Hardware components

Limit Switch, 5 A
Limit Switch, 5 A
These are not the exact limit switches I used but the two are similar.
×4
Stepper motor driver board A4988
SparkFun Stepper motor driver board A4988
×2
Nema 17 Stepper Motor
×1
Arduino Mega 2560
Arduino Mega 2560
×1
Jumper wires (generic)
Jumper wires (generic)
×1
12V 2A DC Power Supply
×1
Resistor 1k ohm
Resistor 1k ohm
×4
Lots of Wood
×1
Ball Bearings
×6

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Solder Flux, Soldering
Solder Flux, Soldering
Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free
Plier, Long Nose
Plier, Long Nose
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Caliper
Mastech MS8217 Autorange Digital Multimeter
Digilent Mastech MS8217 Autorange Digital Multimeter
Multitool, Screwdriver
Multitool, Screwdriver
For one for regular screws and one for little screws.
Breadboard, 830 Tie Points
Breadboard, 830 Tie Points
Breadboard, 170 Pin
Breadboard, 170 Pin
Drill / Driver, Cordless
Drill / Driver, Cordless
Hand Saw
Pittsburgh Brand
Electric Saw
Scissor Lift

Story

Read more

Code

Code V1

Arduino
Code for the first iteration of the book box.
const int stepPin = 50;
const int dirPin = 52;
const int stepPin2 = 40;
const int dirPin2 = 38;
const int limitSwitch = A1;
const int limitSwitch2 = A2;
const int limitSwitch3 = A3;
const int limitSwitch4 = A4;
//int numSteps = 0;


void setup() {
  // put your setup code here, to run once:
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(stepPin2, OUTPUT);
  pinMode(dirPin2, OUTPUT);
  pinMode(limitSwitch, INPUT);
  pinMode(limitSwitch2, INPUT);
  pinMode(limitSwitch3, INPUT);
  pinMode(limitSwitch4, INPUT);
  Serial.begin(9060);
}

void loop() {
  //numSteps = 0;
  // out
  bool check1 = analogRead(limitSwitch)<=100;
  while(!check1){
    digitalWrite(dirPin, HIGH);
    //digitalWrite(dirPin2, HIGH);
    digitalWrite(stepPin, HIGH);
    digitalWrite(stepPin, LOW);
    //digitalWrite(stepPin2, HIGH);
    //digitalWrite(stepPin2, LOW);
    delay(10);
    check1 = analogRead(limitSwitch)<=100;
    if(check1){
      digitalWrite(stepPin, LOW);
      delay(1000);
      Serial.print("checked1");
      break;
    }
  }
  Serial.println("broken");
  // up
  bool check2 = analogRead(limitSwitch2)<=100;
  while(!check2){
    //if(check2){
      //digitalWrite(stepPin2,LOW);
      //delay(1000);
      //break;
    //}
    digitalWrite(dirPin2, HIGH);
    digitalWrite(stepPin2, LOW);
    digitalWrite(stepPin2, HIGH);
    delay(40);
    //numSteps++;
    //serial.println(numSteps);
    check2 = analogRead(limitSwitch2)<=100;
    if(check2){
      digitalWrite(stepPin2,LOW);
      delay(1000);
      break;
    }
  }
  Serial.println("broken2");
  //delay(20000);
  //down
  bool check3 = analogRead(limitSwitch3)<=100;
  while(!check3){
    digitalWrite(dirPin2, LOW);
    //digitalWrite(dirPin2, HIGH);
    digitalWrite(stepPin2, HIGH);
    digitalWrite(stepPin2, LOW);
    //digitalWrite(stepPin2, HIGH);
    //digitalWrite(stepPin2, LOW);
    delay(40);
    check3 = analogRead(limitSwitch3)<=100;
    if(check3){
      digitalWrite(stepPin2, LOW);
      delay(1000);
      Serial.print("checked3");
      break;
    }
  }
  //in
  bool check4 = analogRead(limitSwitch4)<=100;
  while(!check4){
    //if(check2){
      //digitalWrite(stepPin2,LOW);
      //delay(1000);
      //break;
    //}
    digitalWrite(dirPin, LOW);
    digitalWrite(stepPin, LOW);
    digitalWrite(stepPin, HIGH);
    delay(10);
    check4 = analogRead(limitSwitch4)<=100;
    if(check4){
      digitalWrite(stepPin,LOW);
      delay(1000);
      break;
    }

  }
  delay(10000);
 

}

Credits

Michael G
1 project • 0 followers

Comments