MemoDroid: How I Built a Smart Robotic Arm from Scratch While Studying and Working Full-Time

ย 

๐Ÿ’ก Introduction โ€” Turning Vision Into Action

MemoDroid started as a bold idea:
Could I, as a single developer, design and build a fully functional robotic arm โ€” complete with motion recording, Bluetooth control, a mobile interface, and smooth servo handling โ€” in just a few weeks?

As a full-time computer science student balancing a packed academic semester and a demanding job, this wasnโ€™t just a project. It was a test of focus, engineering, and willpower.

I took on this challenge as part of an IoT & Robotics course led by Dr. Yehuda Rosilho not knowing just how deep it would go. What followed was a true end-to-end engineering journey โ€” every circuit, every line of code, every screw placed with intent and urgency.

ย 

Figure 1: MemoDroid Logo
Figure 2: The completed MemoDroid robotic arm, fully built and tested.

๐Ÿ“œ Goal & Core Idea

MemoDroid was designed to solve a real problem:
โ€œMake it easy for anyone to automate small, repetitive tasks at home or work using a robotic arm.โ€
Key objectives:
  • Remote control via mobile app
  • Ability to record and replay movement routines
  • Smooth, human-like servo transitions
  • Intuitive UI for non-technical users
  • Expandability (360ยฐ rotation, multiple profiles, scheduling)
But beyond the functionality, I wanted to design something accessible. MemoDroid isnโ€™t just a robotic arm โ€” itโ€™s an approach to democratize robotics.

๐Ÿงฐ Planning & Architecture

Figure 3: Custom electronic blueprint built manually using Wokwi-inspired layout. Includes 5 servos, Bluetooth module, PCA9685, and power circuit.
Figure 4: The implementation of the blueprint
 

๐Ÿ”จ Hardware Stack

Component Description
Arduino Uno Main microcontroller for servo control and logic
PCA9685 16-channel IยฒC PWM driver for precise motor control
6 Servos Total 5 standard + 1 continuous rotation
HC-05 Bluetooth Module Wireless communication bridge with the mobile app
Breadboard + Jumpers Prototyping and connection base
6V 2A External Power Dedicated supply to stabilize servo load

โž• The Sixth Motor: 360ยฐ Servo

Halfway through the project, I added a 6th servo โ€” the Hitec HSR-1425CR, a continuous rotation servo. Unlike the others, it doesnโ€™t rely on angles โ€” it uses PWM signal range to control speed and direction.

๐Ÿ“ฒ Mobile Application

Figure 5: Screenshot 1 of the mobile app
Figure 6: Screenshot 2 of the mobile application
Figure 7: The main logic of the mobile application

๐Ÿ› ๏ธ Implemented Functionalities in the Arm and App

  1. ๐ŸŽฎ Manual Control for Each Servo
    Real-time control via Bluetooth using commands s1 to s6.
    Supports both standard 180ยฐ servos and a continuous rotation servo (servo6).
  2. ๐Ÿ’พ Save & Replay Movement Routines
    • SAVE: Stores the current position of all servos
    • RUN: Replays the saved sequence to automate tasks
  3. โฑ๏ธ Custom Speed Control (Built from Scratch)
    Speed control is not provided by default in servo movement.
    I implemented a manual speed mechanism using delay injection between servo position updates.
    The delay can be adjusted dynamically via the ss<value> command to simulate different movement speeds.
  4. ๐Ÿ“ก Reliable Bluetooth Command Parsing
    Developed a robust input buffer and parser to handle fragmented Bluetooth transmissions, ensuring commands are processed correctly even when split across multiple reads.
    Supported commands include:
    • RUN โ€“ Start executing saved routine
    • SAVE โ€“ Save current positions
    • PAUSE โ€“ Temporarily stop execution
    • RESET โ€“ Clear saved positions
Communication is done via custom serial protocol:
s1<angle>
s2<angle>
...
s6<mode> (1-5)
Each message is sent to the Arduino and interpreted by the core parser.

โš™๏ธ Firmware & Control Logic

๐ŸŒŸ Command Handling

All servo commands are processed via handleCommand(), which intelligently reads commands like s2130 and moves the relevant motor. For Servo 6:
s6<1โ€“5> โ†’ mapped to:
1 = full reverse (0)
2 = slow reverse (45)
3 = stop (90)
4 = slow forward (135)
5 = full forward (180)

๐Ÿง Buffered Bluetooth Parser

One of the hardest bugs I encountered was due to Bluetooth message fragmentation. Data arrived in pieces, like:
s3
1
80
This caused misfires and corrupted commands. To solve this:
  • I built a custom string buffer
  • Extracted complete commands using indexOf('s')
  • Deferred processing until a full command was available
Now the robot reads fragmented Bluetooth messages perfectly every time.
Figure 8: Creating my own data serialization for communication
Figure 9: Serial Monitor output showing commands

ย 


๐Ÿงช Calibration & Testing

I implemented a TestCalibration() routine and spent hours adjusting and observing each servo to get ranges right:

  • Servo 1: 0โ€“45ยฐ
  • Servo 2: 100โ€“130ยฐ
  • Servo 3: 150โ€“270ยฐ
  • Servo 4: 0โ€“270ยฐ
  • Servo 5: 45โ€“180ยฐ
  • Servo 6: 1โ€“5 (mapped to continuous rotation behavior)

This fine-tuning ensured that MemoDroid behaves like a real robotic system, not a toy.

 

โš ๏ธ Roadblocks I Overcame

๐Ÿ›ก๏ธ Obstacle ๐Ÿ› ๏ธ Solution
Motors jittering from insufficient power Switched to 6V 2A external supply
No PCA9685 or HC-05 parts in simulator Manually designed the full electronic scheme
Bluetooth messages broken mid-stream Built a custom buffered parser
Complex calibration ranges Developed test functions + manual tuning
Debugging during silent failures Added real-time Serial Monitor logs

โœ… Results & Capabilities

  • Built a functional robotic arm from scratch
  • Added 360ยฐ motor support
  • Built a mobile controller from scratch
  • Implemented data recording and replay
  • Created a stable custom communication protocol
  • Made everything intuitive and modular

๐Ÿ’ป Technical Architecture Snapshot

[Mobile App] โ†’ Bluetooth โ†’ HC-05 โ†’ Arduino Uno
                              โ†“
          Command Parser & Logic Handler
                              โ†“
       PWM via PCA9685 โ†’ Servo Motors (1โ€“6)

๐ŸŒ Open Source

All firmware and design files are available here: ๐Ÿ‘‰ GitHub: BlackD0C/RoboticArm

๐ŸŒฌ๏ธ Whatโ€™s Next?

In future releases, I’d like to expand MemoDroid with:
  • โ˜‘๏ธ Cloud scheduling + remote logging
  • ๐Ÿง  Computer vision for object detection
  • ๐Ÿ•น๏ธ Joystick or gesture control
  • ๐ŸŒ Web interface for control from any device

๐Ÿง Reflections

I designed and built MemoDroid entirely alone โ€” the code, the electronics, the mobile app, the testing, the debugging, the documentation.
This project taught me:
  • How to engineer across disciplines
  • That debugging hardware is 10x harder than software
  • Why protocols and parsing matter
  • And most importantly: with enough focus, you can do more than people expect โ€” even alone
Figure 10: Version 1 of the robotic arm

๐Ÿ™ Final Thoughts

MemoDroid isn’t just a robot. Itโ€™s a personal victory. A product of discipline, late nights, self-learning, and never giving up.
โ€œYou donโ€™t need a team of engineers or unlimited time. Just a clear goal, smart planning, and the will to execute.โ€

Leave a Comment

Your email address will not be published. Required fields are marked *