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.

Robot Arm Lamp Robot Arm Lamp

Concept images generated with ChatGPT Image, showing the planned product direction and form language.

Current status: the final build is not completed yet. This page documents the system integration plan: how the mechanical structure, power system, serial servo communication, LED control, sensing, web interface, packaging, and final assembly are intended to work together.

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

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.

System Architecture

Planned system block diagram for power, control, sensing, actuation, and interface.

Subsystem Map

SubsystemComponentsRelated Fab Academy Week
Structure3D printed joints and arms, laser-cut base detailsWeek 3, 5, 8
Main PCBESP32-S3, power regulation, connectorsWeek 6, 8
InputCamera module, VL53L1X distance sensor, optional microphoneWeek 11
OutputSTS3215 x 3, lighting module, optional speakerWeek 12
CommunicationSTS3215 half-duplex UART bus and WiFiWeek 13
InterfaceWeb-based control panelWeek 15
IntegrationWiring, packaging, calibration, final assemblyWeek 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.

3D Printed Parts

Side-view planning sketch showing the three main motion axes and base structure.

3D Printed Parts

PartMaterialApprox. Print TimeNotes
Base bottomPLA3 h30% infill, slots for PCB and ballast
Base top coverPLA2 hTouch area and cable pass-through
Base yaw bracketPLA1.5 hU-shape bracket for servo #1
Lower armPLA2 hHollow 150 mm tube, 3 mm wall
Arm pitch bracketPLA1.5 hU-shape bracket for servo #2
Upper armPLA1.5 hHollow 120 mm tube, 3 mm wall
Head bracketPLA1 hHolds servo #3
Lamp shadeWhite PLA2 hConical shade, 80 mm opening
DiffuserFrosted acrylic, 3 mmLaser cutPress-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.

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 Routing

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

ComponentVoltageMax CurrentPower
ESP32-S3 with WiFi3.3 V350 mA1.2 W
STS3215 x 3 moving7.4 V500 mA each11.1 W
STS3215 x 3 idle7.4 V100 mA each2.2 W
Lighting module full brightness5 V / 7.4 V350 mA estimated2 to 3 W
Sensors3.3 V20 mA0.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 BehaviorWhat It Should DoIntegrated Subsystems
Wake upThe lamp should uncurl, fade the light in, and nod once.Servo bus, LED PWM, pose control
Work modeThe lamp should move to a useful lighting angle and increase brightness.Pose presets, LED driver, web UI
Sleep modeThe lamp should fold down and slowly pulse at low LED brightness.State machine, LED PWM
Touch responseA touch on the base should trigger wake, greet, or dance depending on current state.Touch input, state machine, animations
Web controlA phone or laptop browser should be able to move joints, choose poses, and trigger animations.WiFi AP, WebServer routes, JavaScript UI

Web Interface Routes

RouteMethodPurpose
/GETServe the control panel page.
/movePOSTReceive base, arm, and head target positions.
/posePOSTMove to preset poses such as home, work, sleep, or look up.
/ledPOSTChange LED brightness from 0 to 255.
/animPOSTTrigger 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.

#ComponentSpecQtyApprox. Cost
1Servo motorFeetech STS32153$36
2MCU moduleESP32-S3-WROOM-11$3.5
3LDO regulatorAMS1117-3.3 SOT-2231$0.2
4MOSFETAO3400A SOT-231$0.1
5Capacitors and resistors100 nF, 10 uF, 22 uF, 470 uF, 0603 resistorsSet$0.8
6USB-C connector and headersUSB-C 16P, 1x3, 1x4Set$0.5
7Lighting moduleNeoPixel ring or 5 W warm white COB1$1
8Distance sensorVL53L1X breakout1$3
9Touch padCopper foil tape, 20 mm x 20 mm1$0.5
10PCB60 mm x 45 mm, self-milled FR41Fab Lab
11Mechanical materialsPLA, acrylic, screws, standoffs, silicone wire, heat shrinkSet$11
12Power and stability7.4 V 3 A adapter, steel ballast, silicone feetSet$7.5
Total estimated costAbout $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

Files

FileDescriptionFormat
robot_lamp_main.inoPlanned integrated firmwareArduino
set_servo_id.inoPlanned servo ID configuration utilityArduino
robot_lamp.kicad_proPlanned KiCad projectKiCad 8
robot_lamp.kicad_schPlanned schematicKiCad 8
robot_lamp.kicad_pcbPlanned PCB layoutKiCad 8
assembly.f3dPlanned full 3D assemblyFusion 360
base_bottom.stl, base_top.stlPlanned base shell filesSTL
base_yaw_bracket.stl, arm_pitch_bracket.stl, head_bracket.stlPlanned joint bracket filesSTL
lower_arm.stl, upper_arm.stl, lamp_shade.stlPlanned arm and shade filesSTL
diffuser.dxfPlanned acrylic diffuser cutting fileDXF

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.

RequirementPlanned EvidenceStatus
Plan methods of packagingBase enclosure, internal cable routing, diffuser, surface finishing, anti-slip feetPlanned
Design final project to look like a finished productConsistent shell, no exposed wires or PCB, clean silhouettePlanned
Document system integration planArchitecture, electronics, mechanics, software, packaging, assembly, and test plan documented on this pageIn progress
Connect to final project documentationThis page will be linked from the final project page after the final build is completedTo do

Hero Shots and Video Plan

Photos and videos I plan to add after the final physical build is ready:

← Week 15 Back to Assignments Final Project →