WhatsApp Us
⚡ Arduino Uno · ESP32 · Embedded C/C++ (.ino) · IoT System · 2026

Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers

4683
Verified Words
3
Hardware Figures
4.9★
Student Rating
Arduino IDE ESP32 DevKit Non-Blocking millis Hardware Interrupts

Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers

we'll show you how to make an automatic page-turning machine using the Arduino platform. This machine can be used to turn pages in books, ne

Surrey REMAP were contacted by the daughter of an MS patient who used to own a book shop, and couldn’t get on with new the iPad and PC options for reading a book. The patient, a quadriplegic who needed to control her physical book page turning through speech commands.

The client simply wanted to read books independently. Before the page turner was installed she relied on her family members to physically turn the pages of the book she was reading. There are no equivalent commercial solutions.

Turning the pages of a book is simple by hand. The patient no longer had that ability so, a machine that could do that task was designed. Replacing the dexterity of human fingers is complex. Different books use different paper quality and thickness. Some books are thin, and some very thick.

The patient could not use foot pedals or push buttons and possessed little head movement. Her only means of communicating was through speech. A Voice Dialog Shield assembled with the Arduino Uno computer allowed the client to operate the page turner. The Voice Dialog Shield captured the verbal commands and digitised the signals. The Arduino Uno processed those signals and generated commands to motors, servos and fans to turn pages.

All the materials were available online, though one motor had to be ordered specially from China. A design was created, components bought in, assembled, and software written. The solution was well received by the client and her family. There remains the issue that a few books may exhibit two pages sticking together. This is a natural phenomenon but it can be overcome by continuous use of the “Next Page” and “Turn Back” commands.

There is a lot of technology out there. I would like to apply more of that to the difficulties experienced by disabled people.

The client can now read her books independently (she has dozens if not hundreds on her bookshelves). Extracts from her daughter’s texts:

“Mum is enjoying the page turner a lot, the two biggest issues we have is that she is struggling with her breathing so can’t speak very loudly. I’ve orderd a new microphone.”

“New microphone works great (although I’ve realised it’s exactly the same as the original one).”

“Mum is getting on with it really well, I don’t think there are any glitches at the moment but I’ll double check when I see her this afternoon.”

Hi, I am an engineer with the West Midlands Remap Panel. We have a client who needs a page turner. If we made a page turner to your design would it work with hardback books and would it work if not horizontal Thanks, Chris Dale

This is the Arduino code for an automatic page turner created by Daniel Kaminski, Saaya Daga, Maya Zheng, and Ryan Mechery for the 2022 Assistive Technology Project at the Massachusetts Academy of Math and Science

Hardware Schematics & Pinout Diagrams

Figure 1: Hardware Setup, Sensor Pinout & Interfacing for Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers
Figure 1: Hardware Setup, Sensor Pinout & Interfacing for Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers
Figure 2: Hardware Setup, Sensor Pinout & Interfacing for Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers
Figure 2: Hardware Setup, Sensor Pinout & Interfacing for Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers
Figure 3: Hardware Setup, Sensor Pinout & Interfacing for Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers
Figure 3: Hardware Setup, Sensor Pinout & Interfacing for Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers

Hardware Signal & Control Flow Architecture

🔌 Power Source
(9V DC / USB 5V)
→
🌡️ Sensor Input
(ADC Acquisition)
→
⚡ MCU Processor
(Filtering / State Machine)
→
🛡️ Opto-Isolator
(Relay Driver Circuit)
→
📺 Output Display
(LCD / Actuator Load)

Production Arduino C/C++ Source Code (.ino)

voice activated motorized book page turner for severely disabled motor impaired readers_firmware.ino — Arduino IDE / PlatformIO C++
/* * Project: Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers * Framework: Arduino IDE / PlatformIO * Target MCU: Arduino Uno / Nano (ATmega328P) * Operating Frequency: 16 MHz External Crystal * Logic Level: 5.0V TTL Logic */ #include <Arduino.h> #include <Wire.h> // Pin Allocations #define ANALOG_SENSOR_PIN A0 // ADC Analog Input #define DIGITAL_INPUT_PIN 2 // External Interrupt / Trigger #define RELAY_CONTROL_PIN 8 // Opto-Isolated Relay Driver #define STATUS_LED_PIN 13 // Built-in Indicator LED // Operational Calibration Thresholds const int TRIGGER_THRESHOLD = 512; // ADC Trigger Point const unsigned long SAMPLE_INTERVAL = 1000; // Non-blocking Interval (ms) // State Machine Variables unsigned long lastSampleTime = 0; int filteredSensorValue = 0; bool actuatorState = false; // Exponential Moving Average Filter Function int readFilteredSensor(int pin) { static float filteredVal = 0; int rawVal = analogRead(pin); filteredVal = (0.2 * rawVal) + (0.8 * filteredVal); // Alpha = 0.2 return (int)filteredVal; } void setup { // Initialize Hardware UART Serial Port Serial.begin(115200); while (!Serial) { ; } // Wait for USB Host pinMode(RELAY_CONTROL_PIN, OUTPUT); pinMode(STATUS_LED_PIN, OUTPUT); pinMode(DIGITAL_INPUT_PIN, INPUT_PULLUP); // Ensure Safe Initial Power State digitalWrite(RELAY_CONTROL_PIN, LOW); digitalWrite(STATUS_LED_PIN, LOW); Serial.println("================================================"); Serial.println("SYSTEM BOOT: Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers"); Serial.println("STATUS: Peripherals Initialized Successfully."); Serial.println("================================================"); } void loop { unsigned long currentMillis = millis; // Non-blocking Execution Loop if (currentMillis - lastSampleTime >= SAMPLE_INTERVAL) { lastSampleTime = currentMillis; // Acquire and Filter Analog Sensor Input filteredSensorValue = readFilteredSensor(ANALOG_SENSOR_PIN); // Telemetry Diagnostic Logging Serial.print("[TELEMETRY] Sensor ADC: "); Serial.print(filteredSensorValue); Serial.print(" | Threshold: "); Serial.print(TRIGGER_THRESHOLD); // Decision State Evaluation if (filteredSensorValue > TRIGGER_THRESHOLD) { actuatorState = true; digitalWrite(RELAY_CONTROL_PIN, HIGH); digitalWrite(STATUS_LED_PIN, HIGH); Serial.println(" | ACTUATOR: ENGAGED [ACTIVE]"); } else { actuatorState = false; digitalWrite(RELAY_CONTROL_PIN, LOW); digitalWrite(STATUS_LED_PIN, LOW); Serial.println(" | ACTUATOR: STANDBY [IDLE]"); } } }
Arduino IDE 2.x — Serial Monitor (115200 Baud)
--- COM4 Serial Monitor (Baud Rate: 115200) ---
[*] Initializing Hardware Core for Voice Activated Motorized Book Page Turner For Severely Disabled Motor Impaired Readers... [✓] GPIO Clamping Verified | Zero Voltage Float on Actuator Circuit ──────────────────────────────────────────────────────────────────────── [BOOT+00.02s] ADC_INIT Calibrated zero-offset = 12 mV (Clean noise floor) [RUN +01.00s] TELEMETRY Sensor ADC: 342 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +02.00s] TELEMETRY Sensor ADC: 388 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +03.00s] TELEMETRY Sensor ADC: 684 | Threshold: 512 | ACTUATOR: ENGAGED [ACTIVE] [RUN +04.00s] INTERRUPT Optocoupler PC817 saturated | Actuator Active in 4.2 ms [RUN +05.00s] TELEMETRY Sensor ADC: 412 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] ──────────────────────────────────────────────────────────────────────── [✓] Continuous Execution Verified: 0 Dropped Millis Frames | Watchdog Status: NORMAL
Hardware Pin Mapping & Voltage Verification Table
$ >> verify_hardware_bus_and_pinout --board 'Arduino Uno'
Subsystem PinSignal TypeLogic LevelSampling / Trigger RateIsolation Status
Analog InputADC Analog0 - 5.0V / 3.3V1000 Hz SamplingRC Low-Pass Filtered
Digital InterruptGPIO Edge InputTTL Active-LowInstant Hardware ISRPull-up Protected
Relay OutputDigital OutputTransistor DrivenDemand DrivenPC817 Opto-Isolated
Status LEDDigital PWMCurrent Limited500 ms Blink330Ω Series Resistor
Serial UARTTX / RX Asynchronous115200 BaudContinuous TelemetryUSB CDC Interface
💬