Raspberry PI Spiderbot

From BITPlan Wiki
Revision as of 13:47, 25 July 2019 by Wf (talk | contribs) (→‎Wiring)
Jump to navigation Jump to search

Inspired by the Arduino Project below we'd like to create a Raspberry PI version as in https://github.com/yasaspeiris/aragog

Video

Links

Parts

# picture part example sources documents ~ price
1 713LX1Z383L. SL1500 .jpg Raspberry PI 3 B+ Raspberry PI 3 B+ en 35 €
2 81UBu4aoQHL. SL1500 .jpg microSD Card SanDisk 16 GB 7 €
3 61Z5yEYfnAL. SL1426 .jpg Raspberry PI Camera 1080 p Camera Module 23 €
4 41smcErJNjL.jpg DC/DC Converter 12 V-> 5V 12 V->5 V Converter Module 7 €
5 31pzC7A3D3L.jpg Micro USB Connector Delock USB 2.0 Micro USB 6 €
6 SpiderBot-Parts-IMG 0033.JPG 3D Printed Parts: Coxa, Tibia, Femur, Hinge parts from regishu's design
7 61B2dK96ysL. SL1000 .jpg Adafruit PCA9685 16 channel PWM controller PCA9685 6.5 €
8 61yfILxEkgL. SX679 .jpg set of small screws set of small screws 8.5 €
9 71a1K3RQuqL. SX679 .jpg 12 x MG90S 12 x MG90s 42 €
Total ~ 135 €
a 71AYEqpWHcL. SL1500 .jpg Breadbord Kit MB102 Breadbord Kit 7 €
b 714Ep9LpwoL. SL1200 .jpg Ulrasound Sensor 5 x HC-SR04 + Cables 10 €

Printing

You might want to make sure that you print your parts with sufficient infill - I used 75%.

SpiderBotParts-IMG 0028.jpeg

Example for broken part

This part was printed with Cura's default infill and broke off:

Broken-IMG 0034.JPG

Assembly

  • Legs and hinges are connected with 1.4x5mm screws
  • Legs and servos are connected with 1.7x6mm screws

Leg IMG 0029.JPG LegConnection-IMG 0030.JPG

We use the raspberry base from https://github.com/yasaspeiris/aragog/blob/master/3d%20printed%20parts/base.STL

Plate-IMG 0033.JPG

Leg Test

sudo python3 testadafruit.py 0 1 2 3  0

Legs0-IMG 0030.JPG

sudo python3 testadafruit.py 0 1 2 3  90

Legs90-IMG 0031.JPG

sudo python3 testadafruit.py 0 1 2 3  180

Legs180-IMG 0032.JPG

testadafruit.py

# Test Adafruit 
# WF 2019-07-09
import sys
import time
from adafruit_servokit import ServoKit
kit = ServoKit(channels=16)

# 
# set the given angle for the given servos
#
def setAngle(servos,angle):
  print (angle)
  for id in servos:
    kit.servo[id].angle=angle
  time.sleep(0.3)

# Test Servo Software
servos=[]
args=len(sys.argv)
fromangle=0
toangle=180
step=1
if args>1:
  for port in range(1,args-1,1):
    servos.append(int(sys.argv[port]))
  anglestr=sys.argv[args-1]
  if "-" in anglestr:
    parts=anglestr.split("-") 
    fromangle=int(parts[0])
    toangle=int(parts[1])
  else:
    fromangle=int(anglestr)
    toangle=fromangle
else:
  servos.append(0)
  servos.append(1)
  servos.append(2)

if fromangle!=toangle:
  try:
    while True:
      for setangle in range(fromangle,toangle+step,step):
        setAngle(servos,setangle)
  except KeyboardInterrupt:
    print("Keyboard interrupt")
else:
  setAngle(servos,fromangle)

Evolution of Base

Since we'd like to use a Raspberry PI we couldn't use the orignal Base by regishu. Trying the one from https://github.com/yasaspeiris/aragog also did not work since our raspberry PI case hat a different size. So incrementally a new design was created:

Evolution of Base IMG 0030.JPG

Legtest 2

The three parts of a leg have been connected to the ports 10,11 and 12 and then the test was started with:

sudo python3 testadafruit.py 10 11 12 60-120

Wiring

Breadboard - style wiring before designing a proper holder:

Wiring-IMG 0035.JPG

In this state of affairs:

  1. the power input of the raspberry is blocked by a servo - needs to be moved by at least 13 mm
  2. the corner hinges are to close to the corners of the servo holders
  3. the pivots to be used for the next level are blocking e.g. the usb connectors

What Links Here