16. System Integration
Robot Arm Lamp System Integration Plan
Project Title: Robot Arm Lamp inspired by Pixar Luxo Jr.
Concept
My final project, Jelamp, is planned as a 3-DOF interactive robotic desk lamp inspired by Pixar Luxo Jr. and the form of a giraffe. It combines practical lighting with expressive robotic movement, visual sensing, optional voice interaction, and programmable LED expressions.
The planned motion system uses three STS3215 serial bus servos to control the base yaw, arm pitch, and head tilt. A camera module will support visual interaction, while optional microphone and speaker modules can add voice input and audio feedback. The lighting module will provide both functional illumination and expressive lighting effects. The ESP32-S3 will serve as the main controller and provide wireless control through a web interface.
Concept images generated with ChatGPT Image, showing the planned product direction and form language.
Final Project Timeline
This timeline shows the planned milestones for completing the final project, from system integration planning to fabrication, assembly, testing, and final documentation.
Final project timeline showing the planned milestones and deadlines.
System Architecture
The planned system is organized around one ESP32-S3 board, a 7.4 V power rail, and a daisy-chained servo bus. The diagram below shows the relationship between power, control, sensing, output, and user interface layers.
Planned system block diagram for power, control, sensing, actuation, and interface.
Subsystem Map
| Subsystem | Components | Related Fab Academy Week |
|---|---|---|
| Structure | 3D printed joints and arms, laser-cut base details | Week 3, 5, 8 |
| Main PCB | ESP32-S3, power regulation, connectors | Week 6, 8 |
| Input | Camera module, VL53L1X distance sensor, optional microphone | Week 11 |
| Output | STS3215 x 3, lighting module, optional speaker | Week 12 |
| Communication | STS3215 half-duplex UART bus and WiFi | Week 13 |
| Interface | Web-based control panel | Week 15 |
| Integration | Wiring, packaging, calibration, final assembly | Week 16 |
Mechanical Integration
The lamp is designed to have three degrees of freedom. Each joint will be driven by one STS3215 servo: base yaw, arm pitch, and head tilt. The base is planned to contain the PCB and ballast weight, while the arm sections will be hollow so cables can pass through the structure.
Side-view planning sketch showing the three main motion axes and base structure.
3D Printed Parts
| Part | Material | Approx. Print Time | Notes |
|---|---|---|---|
| Base bottom | PLA | 3 h | 30% infill, slots for PCB and ballast |
| Base top cover | PLA | 2 h | Touch area and cable pass-through |
| Base yaw bracket | PLA | 1.5 h | U-shape bracket for servo #1 |
| Lower arm | PLA | 2 h | Hollow 150 mm tube, 3 mm wall |
| Arm pitch bracket | PLA | 1.5 h | U-shape bracket for servo #2 |
| Upper arm | PLA | 1.5 h | Hollow 120 mm tube, 3 mm wall |
| Head bracket | PLA | 1 h | Holds servo #3 |
| Lamp shade | White PLA | 2 h | Conical shade, 80 mm opening |
| Diffuser | Frosted acrylic, 3 mm | Laser cut | Press-fit into lamp shade |
Joint Bracket Design
Each joint uses the same U-bracket principle. The servo is fixed between two side walls, with one side supporting the bearing/bushing and the other side connected to the servo output shaft.
- Inner width: 22 mm, giving the 20 mm servo body 1 mm clearance on each side.
- Wall thickness: 4 mm.
- M3 screws pass through the side walls into the servo mounting holes.
Cable Routing
Cable routing is one of the most important integration risks in this design. The STS3215 daisy-chain bus reduces the number of wires because all servos share VCC, DATA, and GND. This means only the bus wires need to travel through the full arm, and each servo can tap into the bus locally.
Cable Protection Rules
- Use flexible silicone wire instead of stiff PVC wire.
- Leave about 15 to 20 mm slack loop at each moving joint.
- Add software angle limits to prevent over-rotation.
- Use heat-shrink tubing at cable entry and exit points.
Electronics Integration
The main PCB is designed to fit inside the base. It will contain the ESP32-S3, 3.3 V regulation, USB-C programming connection, servo bus connector, I2C connector, MOSFET LED driver, reset and boot buttons, and filter capacitors.
Main Board
ESP32-S3-WROOM-1 on a 60 mm x 45 mm board, planned to mount inside the base with M3 standoffs.
Servo Bus
Three STS3215 servos will share one half-duplex UART data line with 7.4 V power.
STS3215 Half-Duplex UART
This is the most critical electronic integration detail to verify. STS3215 servos use half-duplex communication, so transmit and receive share one data wire.
ESP32-S3 STS3215 Daisy Chain
GPIO17 TX -- 100 ohm --+
+---- DATA ---- Servo #1 ---- Servo #2 ---- Servo #3
GPIO18 RX -------------+
7.4 V power rail ---------------- Servo VCC
GND ----------------------------- Servo GND
The 100 ohm resistor on TX helps prevent bus contention when the servo sends feedback data back to the ESP32-S3.
Power Budget
| Component | Voltage | Max Current | Power |
|---|---|---|---|
| ESP32-S3 with WiFi | 3.3 V | 350 mA | 1.2 W |
| STS3215 x 3 moving | 7.4 V | 500 mA each | 11.1 W |
| STS3215 x 3 idle | 7.4 V | 100 mA each | 2.2 W |
| Lighting module full brightness | 5 V / 7.4 V | 350 mA estimated | 2 to 3 W |
| Sensors | 3.3 V | 20 mA | 0.1 W |
The planned supply is a 7.4 V 3 A DC adapter. I also plan to add a 470 uF capacitor near the servo power rail to absorb current spikes during movement.
Software Integration
The planned firmware combines low-level device drivers, behavior logic, and a web interface. I will use a layered structure so each subsystem can be tested independently before final assembly.
Layer 4: User Interface Web page with joint sliders, preset pose buttons, animation triggers, status display Layer 3: Behavior and Animation State machine: IDLE, CURIOUS, WORKING, SLEEPING Animations: wake, nod, dance, greet, idle micro-motions Layer 2: Device Drivers SCServo library, LED PWM driver, VL53L1X driver, touch read Layer 1: Hardware Abstraction UART1 at 1 Mbps, LEDC PWM at 5 kHz, I2C at 400 kHz
Key Firmware Structure
#include <SCServo.h>
#include <WiFi.h>
#include <WebServer.h>
#include <Wire.h>
#define STS_RX 18
#define STS_TX 17
#define LED_PIN 4
#define TOUCH_PIN 6
#define I2C_SDA 8
#define I2C_SCL 9
#define ID_BASE 1
#define ID_ARM 2
#define ID_HEAD 3
struct Pose {
int base;
int arm;
int head;
int led;
};
Pose POSE_HOME = {2048, 2048, 2048, 100};
Pose POSE_SLEEP = {2048, 2700, 2900, 0};
Pose POSE_WORK = {2048, 2400, 2700, 255};
Integrated Behaviors
| Planned Behavior | What It Should Do | Integrated Subsystems |
|---|---|---|
| Wake up | The lamp should uncurl, fade the light in, and nod once. | Servo bus, LED PWM, pose control |
| Work mode | The lamp should move to a useful lighting angle and increase brightness. | Pose presets, LED driver, web UI |
| Sleep mode | The lamp should fold down and slowly pulse at low LED brightness. | State machine, LED PWM |
| Touch response | A touch on the base should trigger wake, greet, or dance depending on current state. | Touch input, state machine, animations |
| Web control | A phone or laptop browser should be able to move joints, choose poses, and trigger animations. | WiFi AP, WebServer routes, JavaScript UI |
Web Interface Routes
| Route | Method | Purpose |
|---|---|---|
| / | GET | Serve the control panel page. |
| /move | POST | Receive base, arm, and head target positions. |
| /pose | POST | Move to preset poses such as home, work, sleep, or look up. |
| /led | POST | Change LED brightness from 0 to 255. |
| /anim | POST | Trigger animations such as wake, nod, dance, or greet. |
Packaging
The packaging goal is to make the lamp look like a finished consumer product instead of a loose prototype. The planned design will hide wires, PCB, and solder joints while keeping the lamp serviceable.
Functional Layer
PCB mounted on brass standoffs, servos fixed into brackets, and LED mounted to a heat spreader.
Structural Layer
3D printed shells will enclose the mechanisms, route cables through hollow arms, and hold joints with M3 fasteners.
Finish Layer
Sanded surfaces, a consistent white or gray finish, frosted acrylic diffuser, and anti-slip silicone feet.
Interaction Layer
Touch-sensitive base area, accessible USB-C port, rear power jack, and small visible status LED.
Base Interior Layout
Top view, base cover removed +--------------------------------------+ | | | PCB, 60 mm x 45 mm | | ESP32-S3, LDO, MOSFET, capacitors | | | | | | cables up | | Base yaw servo bracket | | | | Steel ballast plate, about 300 g | | | | DC jack and USB-C at rear | +--------------------------------------+
Lamp Head Detail
The lamp head is planned to contain the lighting module, a small aluminum plate for heat spreading if needed, and a frosted acrylic diffuser press-fit into the shade rim. This should keep the light softer and reduce the risk of overheating.
Planned Assembly Process
I will assemble the system in stages, testing each layer before hiding it inside the final enclosure. This should make it easier to identify whether a problem comes from electronics, wiring, mechanical constraints, or software calibration.
Step 1: Electronics Preparation
- Solder the main PCB and flash the first firmware test through USB-C.
- Check that the ESP32-S3 boots and the WiFi access point appears.
- Set servo IDs one by one: base ID 1, arm ID 2, head ID 3.
- Daisy-chain all three servos and verify that all IDs respond to ping commands.
- Test basic motion, synchronized motion, LED PWM, and sensor input before assembly.
Step 2: Mechanical Assembly
- Mount the PCB in the base with M3 screws and brass standoffs.
- Place the ballast weight in the base.
- Mount servo #1 in the base yaw bracket and fix it to the base.
- Attach the arm servo, upper structure, head servo, and lamp head from bottom to top.
Step 3: Wiring and Calibration
- Route the servo bus, LED wires, and sensor wires through the arm interiors.
- Leave slack loops at each joint and check that no wire snags during motion.
- Physically position the lamp straight up and record the HOME pose values.
- Move each joint to its safe mechanical range and set software limits.
- Adjust all pose values until motion looks natural.
Step 4: Packaging and Planned Final Test
- Sand printed parts from 220 to 400 grit.
- Close the base cover and press-fit the acrylic diffuser.
- Add silicone feet and strain relief for the power cable.
- Run a cold-start test, touch test, web UI test, pose test, LED test, and 30-minute heat test.
Planned Bill of Materials
This is my estimated material list for the integrated prototype. The final quantities and cost may change after fabrication and assembly.
| # | Component | Spec | Qty | Approx. Cost |
|---|---|---|---|---|
| 1 | Servo motor | Feetech STS3215 | 3 | $36 |
| 2 | MCU module | ESP32-S3-WROOM-1 | 1 | $3.5 |
| 3 | LDO regulator | AMS1117-3.3 SOT-223 | 1 | $0.2 |
| 4 | MOSFET | AO3400A SOT-23 | 1 | $0.1 |
| 5 | Capacitors and resistors | 100 nF, 10 uF, 22 uF, 470 uF, 0603 resistors | Set | $0.8 |
| 6 | USB-C connector and headers | USB-C 16P, 1x3, 1x4 | Set | $0.5 |
| 7 | Lighting module | NeoPixel ring or 5 W warm white COB | 1 | $1 |
| 8 | Distance sensor | VL53L1X breakout | 1 | $3 |
| 9 | Touch pad | Copper foil tape, 20 mm x 20 mm | 1 | $0.5 |
| 10 | PCB | 60 mm x 45 mm, self-milled FR4 | 1 | Fab Lab |
| 11 | Mechanical materials | PLA, acrylic, screws, standoffs, silicone wire, heat shrink | Set | $11 |
| 12 | Power and stability | 7.4 V 3 A adapter, steel ballast, silicone feet | Set | $7.5 |
| Total estimated cost | About $62 | |||
Expected Challenges and Planned Solutions
Possible problem: One servo may not respond after daisy-chaining.
Planned solution: I will check the servo ID, connector order, shared ground, and re-solder or reinforce any weak connector joints.
Possible problem: The arm may hit the base if the base yaw or arm pitch moves too far.
Planned solution: I will define safe software angle limits after checking the real mechanical range.
Possible problem: The lamp may tip forward when fully extended.
Planned solution: I plan to add about 300 g of steel ballast inside the base and test the center of gravity.
Possible problem: The servos may jitter during idle motion.
Planned solution: I will start with small idle motion values and reduce the motion amplitude if jitter appears.
Possible problem: The LED may become hot during longer use.
Planned solution: I will add a small aluminum heat spreader inside the lamp head and run a temperature test.
Integration Notes Before Building
- Each subsystem should be tested before final assembly, especially each servo's ID and motion range.
- STS3215 servo IDs must be configured one at a time because all new servos start with the same default ID.
- Cable routing is part of mechanical design, not only electronics. I need to keep enough room inside the arms for flexible wires and slack loops.
- Weight distribution is critical for an articulated lamp. I need to test the base stability with the arm fully extended.
- Software calibration must happen after mechanical assembly because servo horn position changes the real HOME pose.
- The 100 ohm resistor on the TX line is important for reliable half-duplex servo communication.
Files
| File | Description | Format |
|---|---|---|
| robot_lamp_main.ino | Planned integrated firmware | Arduino |
| set_servo_id.ino | Planned servo ID configuration utility | Arduino |
| robot_lamp.kicad_pro | Planned KiCad project | KiCad 8 |
| robot_lamp.kicad_sch | Planned schematic | KiCad 8 |
| robot_lamp.kicad_pcb | Planned PCB layout | KiCad 8 |
| assembly.f3d | Planned full 3D assembly | Fusion 360 |
| base_bottom.stl, base_top.stl | Planned base shell files | STL |
| base_yaw_bracket.stl, arm_pitch_bracket.stl, head_bracket.stl | Planned joint bracket files | STL |
| lower_arm.stl, upper_arm.stl, lamp_shade.stl | Planned arm and shade files | STL |
| diffuser.dxf | Planned acrylic diffuser cutting file | DXF |
Source document: Week 16 System Integration - Robot Arm Lamp
Planning Checklist
This checklist tracks whether the integration plan covers the Fab Academy system integration requirements. The status will be updated after the physical build and test documentation are completed.
| Requirement | Planned Evidence | Status |
|---|---|---|
| Plan methods of packaging | Base enclosure, internal cable routing, diffuser, surface finishing, anti-slip feet | Planned |
| Design final project to look like a finished product | Consistent shell, no exposed wires or PCB, clean silhouette | Planned |
| Document system integration plan | Architecture, electronics, mechanics, software, packaging, assembly, and test plan documented on this page | In progress |
| Connect to final project documentation | This page will be linked from the final project page after the final build is completed | To do |
Hero Shots and Video Plan
Photos and videos I plan to add after the final physical build is ready:
- Complete product at a 45 degree angle, lamp on, dark background.
- Side view showing the joint structure.
- Working scene where the lamp illuminates a book or keyboard.
- Open base photo showing the internal PCB and cable routing.
- Exploded layout photo with all printed and electronic parts arranged clearly.
- Short function video: power on, wake animation, touch interaction, and web control.