Tafy RDOS Robot Assembly Guide
This guide walks you through assembling a basic differential drive robot for Tafy RDOS.
Before You Start
Required Documents
- HARDWARE_BOM.md - Parts list
- WIRING_DIAGRAMS.md - Connection diagrams
- QUICKSTART.md - Software setup
Tools Needed
- Phillips screwdriver
- Wire strippers
- Soldering iron (optional)
- Hot glue gun
- Multimeter
- Computer for programming
Time Required
- Mechanical assembly: 1-2 hours
- Wiring: 1-2 hours
- Software setup: 30 minutes
- Testing: 30 minutes
- Total: 3-5 hours
Step 1: Chassis Assembly (30 minutes)
Option A: Acrylic Kit
- Remove protective film from acrylic pieces
- Attach motors to side brackets using included screws
- Mount wheels on motor shafts
- Assemble frame using spacers and screws
- Attach caster wheel at front
Option B: 3D Printed
- Print chassis files from
/hardware/chassis/ - Clean up prints, remove supports
- Press-fit motors into holders
- Attach wheels
- Screw on caster wheel
Option C: Cardboard Prototype
- Cut base from sturdy cardboard (20x15cm)
- Hot glue motors to sides
- Add wheels
- Tape ping pong ball as caster
Tip: Motor Placement
- Motors should be parallel
- Leave 10-15cm between wheels
- Center of gravity toward wheels
Step 2: Mount Electronics (30 minutes)
Raspberry Pi Mounting
- Use standoffs to elevate Pi 5mm above chassis
- Position for easy access to ports
- Leave room for cooling
- Secure with M2.5 screws
ESP32 Mounting
- Use breadboard for prototyping OR
- Solder to perfboard for permanent install
- Position near motor driver
- Keep USB port accessible
Motor Driver
- Mount L298N with heat sink facing up
- Position close to motors (short wires)
- Use standoffs or double-sided tape
- Ensure good airflow
Battery Placement
- Motor battery pack: Low and centered
- Pi power bank: Above motor battery
- Secure with velcro straps
- Balance weight distribution
Step 3: Wiring - Power (45 minutes)
⚠️ ALWAYS disconnect batteries when wiring!
Motor Power Circuit
- Battery pack positive → L298N +12V
- Battery pack negative → L298N GND
- Add switch in positive line
- Optional: Add 5A fuse
Logic Power
- USB power bank → Raspberry Pi USB-C
- Raspberry Pi USB → ESP32 micro USB
- Alternative: L298N +5V → ESP32 VIN (if jumper enabled)
Ground Connections
- Connect all grounds together:
- L298N GND
- ESP32 GND
- Battery pack negative
- Raspberry Pi GND (via GPIO)
Step 4: Wiring - Motors (30 minutes)
Motor A (Left)
- Motor red wire → L298N OUT1
- Motor black wire → L298N OUT2
- Note: Swap if direction reversed
Motor B (Right)
- Motor red wire → L298N OUT3
- Motor black wire → L298N OUT4
- Note: Swap if direction reversed
Control Signals
Follow pinout from WIRING_DIAGRAMS.md:
ESP32 → L298N
GPIO12 → IN1
GPIO14 → IN2
GPIO27 → IN3
GPIO26 → IN4
GPIO13 → ENA
GPIO25 → ENB
GND → GND
Cable Management
- Twist motor wires together
- Route away from sensors
- Use zip ties or tape
- Keep wires short as possible
Step 5: Sensor Installation (30 minutes)
Ultrasonic Sensor (HC-SR04)
- Mount at front, 10-20cm above ground
- Angle slightly downward (5-10°)
- Wire according to diagram
- Add voltage divider for Echo pin!
Optional: Side Sensors
- Mount at 45° angles
- Height same as front sensor
- Check detection overlap
Optional: IMU
- Mount flat, arrow pointing forward
- Away from motors (magnetic interference)
- Secure firmly (no vibration)
Step 6: Pre-Power Checklist (15 minutes)
Visual Inspection
- All connections secure
- No exposed wires
- Correct polarity on all connections
- Motors can spin freely
- Batteries secured
Multimeter Tests
- No continuity between power and ground
- Battery voltage correct (6V, 5V)
- 3.3V present at sensor power
- Motor terminals show continuity
Step 7: First Power On (15 minutes)
-
Connect logic power only (Pi + ESP32)
- Check LEDs light up
- No unusual heat
- WiFi accessible
-
Test sensors
i2cdetect -y 1 # On Pi -
Connect motor power
- L298N power LED on
- No smoke or heat
- Motors don't run yet
-
Emergency stop ready!
Step 8: Software Setup (30 minutes)
-
Flash ESP32 firmware
cd firmware/esp32
pio run -t upload -
Access Node-RED
- Browse to:
http://raspberrypi.local:1880 - Or use IP address
- Browse to:
-
Import test flow
- See QUICKSTART.md
-
Test motors
- Start with 30% speed
- Check directions
- Adjust wiring if needed
Step 9: Calibration (30 minutes)
Motor Calibration
- Test forward motion
- Both wheels same speed?
- Adjust PWM if needed
- Test turning
- Smooth rotation?
- Check center of rotation
Sensor Calibration
- Ultrasonic: Measure known distances
- IMU: Calibrate gyro/accel
- Encoders: Count ticks per revolution
Save Configuration
Create /config/robot.yaml:
robot:
wheel_diameter: 65 # mm
wheel_base: 150 # mm
motors:
swap_left: false
swap_right: false
sensors:
ultrasonic_offset: 100 # mm from center
Step 10: First Autonomous Run
- Clear test area (2x2 meters)
- Import obstacle avoidance flow
- Set conservative speeds (30%)
- Place cardboard box as obstacle
- Deploy and watch!
Troubleshooting
Robot spins in place
- One motor reversed → Swap motor wires
- Different wheel sizes → Check wheels
- PWM imbalance → Calibrate speeds
Hits obstacles
- Sensor not reading → Check wiring
- Angle wrong → Adjust sensor mount
- Too fast → Reduce speed
Stops randomly
- Power issue → Check batteries
- Loose connection → Secure wires
- Software crash → Check Node-RED logs
WiFi issues
- Can't find robot → Check router
- Disconnects → Improve antenna position
- Slow response → Reduce camera resolution
Safety Tips
-
Always have emergency stop
- Physical button
- Remote kill switch
- Software timeout
-
Start slow
- Test at 30% speed first
- Increase gradually
- Watch for overheating
-
Protect circuits
- Use fuses
- Check polarity
- No metal tools near circuits
Next Steps
Basic Testing Complete?
- Try color following
- Add more sensors
- Experiment with speeds
Want More Features?
- Add camera for vision
- Install manipulator arm
- Add display/speakers
Join the Community
- Share build photos
- Get help with issues
- Find new projects
Maintenance
Regular Checks
- Tighten screws monthly
- Check wire connections
- Clean sensors
- Calibrate IMU
Battery Care
- Don't over-discharge
- Store charged
- Check balance (LiPo)
- Replace when weak
Congratulations! You've built a Tafy RDOS robot! 🎉
Share your build: #TafyRobot