Introduction: BookPusher
This work is one of the Hacking Project for your Book Self.
This arms will help you pick books up.
Step 1: Preparation
1.Mesure the size of your book self (For example: our book self size)
2.Deside the setting (In our case, we use three cut corner file cases and two books)
3.Prepare All Materials following the list
Material List:
- Arduino UNO ×1
- Servo Motor (Tower Pro SG 5010) ×5
- DC 5V 2.0A Converter Power Supply Adapter (External power supply for Servo Motors) ×1
- Battery Holder (for 4 AAA batteries) (External power supply for Arduino UNO) ×1
- Medium Breadboard ×1
- 10KΩ resistors ×5
- Push Button Switch ×5
- Jumpwires (multiple)
- Tape and super glue
Step 2: Soldering the Switches
Watch the reference video for details
Step 3: Make Arms and Container With Laser Cutter
- Measure the size of the connector to the motor and the size of the push button
- Draw on Adobe Illustrator : Arm1,Arm2 (In our case, we combined 3 layers of 4mm MDF, having the first layer cut with shape of the connector to the motor), and Box (make sure there's enough space to place on the shelf and space for breadboard, Arduino and batteries, and we used 4mm MDF)
- Cut with laser cutter and resemble
- Make sure the arm won't hit the shelf like back board when moving after setting in the book self, if so, remake it!
Step 4: Coding and Upload to Arduino
//Write the code and set the angle of the arm movement. //This is a code for controling 5 servo motors #include <servo.h>; //Read Arduino library for controling Servo Motor Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5;
const int buttonPin1 = 8; // pushbutton pin const int servoPin1 = 2; // servo pin const int buttonPin2 = 9; const int servoPin2 = 3; const int buttonPin3 = 10; const int servoPin3 = 4; const int buttonPin4 = 11; const int servoPin4 = 5; const int buttonPin5 = 12; const int servoPin5 = 6;
int buttonState1 = 0; //local variable to hold the pushbutton states int buttonState2 = 0; int buttonState3 = 0; int buttonState4 = 0; int buttonState5 = 0;
void setup() { Serial.begin(9600); //Set up the serial data myservo1.attach (servoPin1); pinMode (buttonPin1, INPUT); //Set up the pushbutton pins to be an input myservo2.attach (servoPin2); pinMode (buttonPin2, INPUT); myservo3.attach (servoPin3); pinMode (buttonPin3, INPUT); myservo4.attach (servoPin4); pinMode (buttonPin4, INPUT); myservo5.attach (servoPin5); pinMode (buttonPin5, INPUT); myservo1.write(90); // Set up the first angle of servo motor myservo2.write(90); myservo3.write(0); myservo4.write(0); myservo5.write(0); }
void loop() { buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); buttonState3 = digitalRead (buttonPin3); buttonState4 = digitalRead (buttonPin4); buttonState5 = digitalRead (buttonPin5); Serial.println(buttonState1); // indicate teh buttonState1 data on Serial monitor if (buttonState1 == HIGH){ myservo1.write (90); //decide the angle of motor }else{ myservo1.write (0); delay (1500); } if (buttonState2 == HIGH){ myservo2.write(90); }else{ myservo2.write (0); delay (1500); }
if (buttonState3 == HIGH){ myservo3.write(90); }else{ myservo3.write (0); delay (1500); }
if (buttonState4 == HIGH){ myservo4.write(90); }else{ myservo4.write (0); delay (1500); }
if (buttonState5 == HIGH){<br> myservo5.write(90); }else{ myservo5.write (0); delay (1500); } }
Step 5: Build Up
Build up according to the set-up graph, and watch the video for more details
Step 6: Checking Up
Make sure that
- all buttons work,
- everything fits in the box,
- wires are long enough, and
- cable can reach the plug.
Step 7: Setting Up
- Set up the motors according to your bookshelf's setting
- Use tape to set to the position first
- Make sure each arm and motor work
- Use super glue to stable the motors!
Step 8: Enjoy It in Your Life
OK! The work is totally completed !!
Let's enjoy using this product and device following things for your own work !
- size of your bookshelf
- cut corner file cases
- shape of arms
- shape of container box
- codes
- set-up graph