ย
๐ก 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.
ย


๐ 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)
๐งฐ Planning & Architecture


๐จ 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



๐ ๏ธ Implemented Functionalities in the Arm and App
-
๐ฎ Manual Control for Each Servo
Real-time control via Bluetooth using commandss1
tos6
.
Supports both standard 180ยฐ servos and a continuous rotation servo (servo6
). -
๐พ Save & Replay Movement Routines
SAVE
: Stores the current position of all servosRUN
: Replays the saved sequence to automate tasks
-
โฑ๏ธ 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 thess<value>
command to simulate different movement speeds. -
๐ก 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 routineSAVE
โ Save current positionsPAUSE
โ Temporarily stop executionRESET
โ Clear saved positions
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 viahandleCommand()
, 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


ย
๐งช 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

๐ 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.โ