Afordable PS2 Controlled Arduino Nano 18 DOF Hexapod

by MusaW in Circuits > Robots

23630 Views, 133 Favorites, 0 Comments

Afordable PS2 Controlled Arduino Nano 18 DOF Hexapod

IMG_20200531_115351.jpg
IMG_20200531_115322.jpg
Arduino Nano Sword leg Hexapod
lynxmotion.JPG

Simple Hexapod Robot using arduino + SSC32 servo controller and Wireless controlled using PS2 joystick. Lynxmotion servo controller have many feature that can provide beautiful motion for mimicking spider.

the idea is to make a hexapod robot that is easy to assemble and affordable with many features and smooth movements.

The component i choose will be small enough to fit in the main body and light enough for MG90S servo can lift...

Supplies

part.jpg

All the electronic ingridians is:

  1. Arduino Nano (Qty = 1) or u can use other Arduino but this is the suite one for me
  2. SSC 32 channel servo controller (Qty =1) or budged friendly SSC-32 clone
  3. MG90S Tower Pro metal gear servo (Qty = 18)
  4. Female to femala dupont cable jumper (Qty = as needed)
  5. Self-Lock Push button Switches (Qty = 1)
  6. 5v 8A -12A UBEC (Qty = 1)
  7. 5v 3A FPV Micro UBEC (Qty = 1)
  8. PS2 2.4Ghz Wireless Controller (Qty = 1) it just ordinary PS2 wireless controller + cable extension
  9. 2S lipo battery 2500mah 25c (Qty = 1) usually for RC Helicopter Battery like Syma X8C X8W X8G with voltage protection board
  10. Battery connector (Qty = 1 pair) usually like JST connector
  11. AAA battery (Qty = 2) for PS2 controller Transmitter
  12. Active buzzer (Qty = 1) for control feedback

All the non electronic ingridians is:

  1. 3D printerd hexapod frame (Qty = 6 coxa, 6 femur, 6 tibia, 1 body bottom, 1 body top, 1 top cover, 1 board bracket)
  2. M2 6mm screw (Qty = at least 45) for servo horn and else
  3. M2 10mm screw(Qty = at lest 4) for top cover
  4. Small cable tie (as needed)

Tools u need :

  1. SCC-32 Servo Sequencer Utility Apps
  2. Arduino IDE
  3. Soldering iron set
  4. Screwdriver

Total cost estimation is $150

Bracket for Electronic Instalation

bracket-1.JPG

Bracket is using for easy installation and make all module become one unit, this is only simple holder for all board, u can use screw or double site tape for attach all board.

after all become one unit u can attach it into 3D printed bottom body using M2 6mm screw

Cable Diagram

oprational.png
main-qimg-db14020976fc9e8df2dc7c3da850971e.jpg

For pin to pin connection u can use colored Female to Female 10-20cm Dupont cable jumper is enought, and for power distributionis better using small silicone AWG.

Other that this is the thing that sould be note...

  1. The battery : for this hexapod i using 2S lipo 2500mah with 25C it mean 25Amp Continues Discharge. with average 4-5amp all servo consumption and 1-2amp all logic board consumption,with this type of battery is enough juice for all logic and servo driver.
  2. Single power source, two distribution: the idea is separate the logic board power from servo power for prevent power stall on logic board, that's why i using 2 BEC for it for split it from single power source. with 5v 8A - 12A max BEC for servo power and 5v 3A BEC for logic board.
  3. 3,3v PS2 wireless joystick power: pay attentions, this remote receiver is using 3,3v not 5v. So use the 3,3v power pin from Arduino Nano to power it.
  4. Power switch: Use self lock switch for switching it ON or OFF
  5. SSC-32 Pin configuration:
    • VS1=VS2 pin : both pin should be CLOSE, it mean all 32 CH is using single power source ether it from VS1 power socket or VS2 power socket
    • VL=VS pin : this pin should be OPEN, it mean SCC-32 logic board power socket is separate from servo power (VS1/VS2)
    • TX RX pin : this both pin should be OPEN, this pin is only exists on DB9 version SSC-32 and Clone version SSC-32. When it OPEN means we not using DB9 port to communicate between SSC-32 and arduino but using TX RX and GND pin
    • Baudrate pin : this pin is ditermine SSC-32 TTL speed rate. i'm using 115200 so both pin is CLOSE. and if u want to change it to other rate, don't forget also change it on the code too.

Upload the Code to the Arduino Nano

Connect your computer to the arduino nano... before u upload the code, make sure u have install this PS2X_lib and SoftwareSerial from my attachment to the arduino library folder.

After u have all the library needed, u can open the MG90S_Phoenix.ino and upload it...

PS: This code is already optimize for MG90S servo on my frame only... if u change the frame using others, u have to reconfigure it again...

Frame Assembly (Tibia)

IMG_20200524_184805.jpg
IMG_20200524_185028.jpg

For tibia, all screw is from back not front... do the same for the rest Tibia...

PS: No need attach servo horn, unless for temporary holder only.. servo
horn will be attach after all servo connect to SSC 32 board @ the next step

Frame Assembly (Femur)

IMG_20200524_185101.jpg
IMG_20200524_185340.jpg
IMG_20200524_185404.jpg

Insert the pool first than snap the servo gear head to the servo horn holder... do the same for the rest femur...

PS: No need attach servo horn, unless for temporary holder only.. servo horn will be attach after all servo connect to SSC 32 board @ the next step

Frame Assembly (Coxa )

IMG_20200524_190435.jpg
IMG_20200524_190445.jpg

Put all coxa servo with gear head position like figure above... all coxa screw is from back just like tibia...

PS: No need attach servo horn, unless for temporary holder only.. servo
horn will be attach after all servo connect to SSC 32 board @ the next step

Connect the Servo Cable

Leg-diagram.png
IMG_20200529_174629.jpg
IMG_20200529_181121.jpg

After all servo in place, connect all cable just like diagram above.

  • RRT = Right Rear Tibia
  • RRF = Right Rear Femur
  • RRC = Right Rear Coxa
  • RMT = Right Middle Tibia
  • RMF = Right Middle Femur
  • RMC = Right Middle Coxa
  • RFT = Right Front Tibia
  • RFF = Right Front Femur
  • RFC = Right Front Coxa
  • LRT = Left Rear Tibia
  • LRF = Left Rear Femur
  • LRC = Left Rear Coxa
  • LMT = Left Middle Tibia
  • LMF = Left Middle Femur
  • LMC = Left Middle Coxa
  • LFT = Left Front Tibia
  • LFF = Left Front Femur
  • LFC = Left Front Coxa

Attach the Servo Horn

Coxa-angle.png
coxa-femur-angle.jpg
IMG_20200524_185144.jpg

After all servo cable attached, power on the hexapod and press "Start" from the PS2 remote and firm the servo horn just like figure above.

Firm the servo horn in place but don't screw it at first. make sure all the Tibia, Femur and Coxa angle is correct... than u can screw it with the screw include + 1 M2 6mm screw attached on the horn to the femur and coxa.

Tidy Up the Cable

IMG_20200531_104922.jpg
IMG_20200531_104911.jpg

After all servo work well and firm in place, u can tidy up the servo cable.

U can just spool it and tide it using cable tie or heat shrink tube and u can also cut the cable as u need... is up to u...

Close the Cover

IMG_20200529_182505.jpg
IMG_20200529_181334.jpg

After All neat... u can close it using the upper body + top cover using 4 x M2 10mm screw ... and u can use the cover as battery holder for your 2S 2500mah 25c lipo...

Servo Calibration

SSC32-calibration.png
full.jpg

Sometimes after plug and release your servo horn, the hexapod leg seems still not in right position... That's why u need calibrate it using SSC-32 Servo Sequencer Utility.exe

This work for all SSC-32 board (original or clone), but before u can use it plase follow this step:

  1. Close the VL=VS pin with jumper
  2. Detach RX TX GND cable from SSC-32 to Arduino nano
  3. Connect this RX TX GND cable to the computer using USB TTL converter
  4. Power up the robot
  5. Select the correct Port and baudrate (115200)

After your board detected, u can click calibrate button and adjust each servo as u need


Enjoy Your Robot...

common controls.png
move.jpg
rotate.jpg
single-leg-.jpg
FGXCSJDJESSX3MS.LARGE.jpg

After all, this is only just for fun....

for Demo detail how to operate this robot, u can check on step 1 video. Other ways this is the basic control of the robot.

Enjoy it... or u also can share it...

  • PS: Recharge your battery when reach less than 30% or voltage bellow 6,2V... to prevent battery damage.
  • if u push your battery to much, usually your robot movement will be like crazy and could damage your robot servos...