I’m building an Automated Book/Page Turner, and the whole idea came from thinking about how something as simple as turning a page can actually be a big challenge for some people — like the elderly or individuals with physical disabilities. A lot of us take reading for granted, but for someone who has limited hand mobility, it’s not that easy. That’s the problem I’m trying to solve — making reading more accessible and independent.
I just wanted to make a small everyday task easier and more accessible. I was inspired by assistive devices I’ve seen online and wanted to create something meaningful — something that can actually make someone’s life a bit easier.
Software: Fusion360
Software: GrabCad library
Book stand design:
I started to plan how I will make it, and after brainstorming and looking at different inspirations, I decided to make two side panels, back, bottom, small front height, book panel and an extension to it. Also, 4 sided box which will be assembled using x-slot and t-slots for the outer four sides.
I followed the rule number 0 and saved the file, then rule number 1 and made a new component.
I started a sketch and using line tool I drew the sides of the panel.
I drew two rectangles for the t-slot and made 2 tabs with 3-point rectangles with length 30mm.
I then finished the sketch and extruded the panel with 3mm and gave it appearance of wood.
I duplicated this panel using Paste as I want two identical panels.
I drew a rectangle for the front side and made t-slots on one side and mirrored it to the other one.
Then I made a sketch and projected the back on side panels and drew a rectangle for the back, made t-slots and tabs places.
For the bottom panel, I made a sketch and projected it on the sides and back and front from bottom view and drew a rectangle.
I assembled all of that together, then projected the book panel on sides, made a rectangle, circle for the button and extruded tabs.
Then I made an extension for the book panel due to the constrains of the sheets dimensions and book size. I made a place for LED stripe and extruded the tabs places.
I made two mini stands to hold the book in order not to slip, and jointed them with t-slots with book panel. Also, considered the space between them due to the arm that will flip the pages.
After that I started to make the design of the enclsoing box, first, the front panel. With Servo motor dimensions, I drew a rectangle and made a window to mount the motor in it. I made x-slot also on the sides.
I duplicated it using Paste New and remove window to make the back panel.
I redrew another panel for the right side and duplicated it using Paste and made places for top tabs.
I jointed the enclosing box with the book panel extension and projected the tabs and extruded tabs places.
I did the same with servo on book panel at the bottom to be able to mount it.
I drew the servo arm that will flip the pages and will be connected to the motor horn using 2 circles and connected them and applied tangent. After extruding, I made another sketch on the arm and made 2 circles with the size of motor horn and the other circle is little bigger and extrude cut the inner circle.
I did almost the same with the wheel but started with a big circle.
Finally I inserted the arduino board and projected it on the bottom and back to make screw holes, usb and dc power jack.
Side panels
Duplication using Paste
The little front side
Assembly of the three parts
Back panel
Bottom panel
Assembly of parts made
Book panel
Book panel extension
Assembly of parts made
Mini stand to hold book
Front panel of enclosing box for servo
Duplicated using Paste New and remove window to make back
Right panel of enclosing box for servo
Duplicated using Paste to make the left panel
Top panel of the box
Assembly of parts made
Projection of the box on book panel
Servo is inserted and projected on book panel and extrude cut is applied with the dimensions of its base
The arm which will flip pages and connected with Servo
The arWheel which will rise the pages and is connected with Servo
After jointing the wheel with servo and put in enclsoing box
Arduino is inserted and projected on bottom to make screw holes
The Timeline of the design, showing all parts and Final look
For Laser Cut:
Software: RDWorks
Material: 3mm wood sheets
Machine: El Malky ML149 CO2 Laser Cutter
Files preparation:
I imported the DXF files in RDWorks and then nested them because they are big and several sheets will be needed.
I estimated that around four sheets will be used in the process.
As my design only needs cutting, I adjusted the parameters for the speed to be 40mm/s and for the power to be 55%.
Book panel
Back and a side panel and the enclosing box
Bottom panel in one sheet
Book panel extension, fornt height and a the other side panel [removed the place for on/off switch from this side]
Cutting parameters
mini stands are cut with in fourth sheet
Laser Cutting:
I opened my file on the lab PC to check the final dimensions.
I pressed Download to send it to the machine.
Using the machine interface I followed some steps to start cutting:
I pressed Esc button to exist from recent files.
Then I pressed File button to browse files and chose my file using arrows and Enter button.
After that I placed my wooden sheet with clamps and started to move the nozzle to the top-right corner.
I pressed Origin button to mark the position as initial and Frame button to preview my cut and make sure it is within the sheet limit.
Finally closed the machine doors and watched the magic happens!
For 3D Print:
Software: Ultimaker Cura
Material: PLA filament
Machine: Prusa MK3 3D Printer
Wheel and arm preparation:
I imported the STL file in Ultimate Cura .
I choose the face that will touch the bed (which doesn't contain the hole).
I started to adjust the parameters.
with Resolution 0.2mm (layer height) and 10% infill density (inner content), I found that my design meet the constrains and the requirements without support and adhesion .
After slicing, the time turned out to be 3 hour and 13 minutes and 38g for the print.
I exported the design as g-code to with proper naming to be ready to transfer on SD card.
3D Printing:
I started by transferring the g-code to the SD card.
I chose the blue filament and loaded it into the machine.
The printer started to preheat the filament and the bed.
Then I inserted the SD card and chose Print from SD option and chose my file.
The machine started to move around the bed to calibrate dimensions, then it started printing and I watched the first 3-4 layers to detect any errors.
I waited the bed to be heated and chose my file
Tracked the printing process in the first few layers, then it's ready!
Software: Fritzing
Software: Tinkercad
Component: Arduino Uno board
Component: Stepdown converter
Components: Jumper wires
Components: Micro Servo motor
Components: Breadboard
Component: Micro Servo metal gears
Component: Push button
Component: Crocodile wires
Component: Switch
Components: 5V adapter
Circuit design:
Link for circuit: Here
On Tinkercad, I started to put the components I will use in my circuit.
I put the Arduino, breadboard, push button, 2 servos, on/off switch, 9V power source and a step-down converter (on Fritzing).
Mainly, the circuit consists of two action components (OUTPUT) which are the 2 servos.
A push button is also added as an input signal for the circuit to trigger the motors (INPUT).
I used a 9v adaptor to power the whole circuit and used a step-down converter to provide 5V for servos.
I connected VIN and GND in arduino with +ve and -ve of the 9vadaptor.
I connected the Servos on analog pin 5 & 6 for signal and powered it using the converted power from step-down (5v).
The push button is connected on pin 2 to trigger motors' motion and the other terminal to GND.
Finally, I connected the on/off switch with +ve to conrol circuit power.
Circuit simulation on tinkercad to test (without step-down and real power source used)
Real circuit implementation
Since my project will be on desk, I decided to use power adaptor instead of batteries because it is not moving. In the ciruciut, I am using two servo motors, so to avoid putting load on arduino due to the current which the motors will take under load, I seperated the power given to each. To give arduino power it is done through dc jack or the VIN pin and each one takes minimum 7V, for that reason I chose to power the circuit with 9V giving arduino its power thorugh VIN and power servos with 5V using step-down converter.
9V adapter
Stepdown converter
Code & logic:
I started first by dividing the problem and defining the objectives clearly and what I want to achieve.
As I want to make the push button trigger an action every time it is pressed and not only when holded down, I searched how to do so and I found several ways but the state change detection example was the easiest one to edit.
It is simply done by using two variables, current button state and previous button state. The current one stores the readings from the button pin and at the end of the void loop the value is stored in the previous button state variable.
By comparing the values of these variables, I can simply detect the current state of the button if it is pressed or not.
I thought what is the right condition I should write and decided to make it like the following: If (btnState is HIGH and prevBtnState is LOW) => triggers the motors motion.
This means when the button is pressed and before that it wasn't pressed. This technique is used mainly to prevent the repetition of the action while the button is held down.
I declared variable for the button pin and made objectes for the servos.
In setup function, I wrote pinMode for the button as INPUT_PULLUP and attached the servos to pin 5 and 6. Also, set them to angle 0 degree when program starts.
In loop function, when button is pressed the two servo motors move one after the other with specific time to flip pages smoothly.
Using examples as guide to write the button state detection
Code for my circuit
Circuit Implementation and mounting:
I started to connect all the sides with screws and nuts [the body] and connected the mini stand with book panel.
After that, I connected the enclosing box and attached the servo with screws.
As the cirucuit was ready, after I made sure it is working I started to put the components, starting with on/off switch on the side panel and connecting it with corocodiles.
Then, I connected the arduino with screws in its place and putting the breadboard beside it.
Also, I connected the adaptor port with its nut to power the circuit using the 9v adaptor.
I mounted the the servo at the bottom of the book panel and attached it with screws.
I attached the enclosing box with the book panel and its extension part, connecting the three parts together and passed the wire form the hole to be connected with circuit.
I placed the push button with its nut and connected it with the circuit.
Finally, I connected arduino cable and selected the board, the port then upload.
Attaching mini stand with book panel
Mounting the on/off switch
Connecting with crocodile wires
Mounting Arduino and adator port
After attaching arduino (back view for ports)
Final circuit look inside the body
Mounting the servo at the bottom of the book panel
The other servo enclosed in the box
Attached with screws
Connecting the box with book panel extension
Hardly connected the screws
Connecting the other panel and the fourth t-slot
Connecting the other panel and the fourth t-slot
Connected the push button
Final look of the panel (top view)
Final outcome after integration
The task I struggled with a lot was to make the design, there was several issues with the dimesnions. After I already finished it, I discovered that some pieces are bigger than the polywood sheet. One of my peers suggested to reduce every dimensions with 10% and after struggling with alot of conflicts it worked fine and the dimensions were suitble to be fabricsated
A problem I faced is that I didn't consider to make a hole for the wires to pass through to be connected with the circuit. The servo motor is enclosed in a box and its wires couldn't be connected unless I make a hole, so I used a driller as a suggestion from my colleagues in lab to make a hole a suitable hole.
Before
After
Motor box
Another problem I faced was the adaptor port I used, it had two legs tall and short. I assumed the taller one is the anode (+ve) and the other is the cathode (-ve) ,but unfortunately, this was wrong and I connected them as opposite to the cirucit and it wasn't working. I doubt about this so I troubleshooted using the Avometer and observed the sign of the voltage. I found out that it is the opposite, so I alternated the wires in the circuit.
The taller leg is on the right
Avometer is used to check voltage
I would modify the motor mechanism and add a wheeled arm to improve page-turning flexibility and accommodate varying book heights. Also, I would connect a small screen to view the time spend reading the book since first page flip after turning it on.
Programming (arduino code)