Permalänk
Medlem

Project Retrofit Robot [Raspberry Pi]

Hejsan allihop!

När jag var liten så hade min farmor leksaksaffär och det slutade naturligtvis med att vi i familjen fick många leksaker.
En av dessa leksaker fascinerade mig mer än alla andra när jag såg den för första gången. Detta var en äldre radiostyrd robot tillverkad av Nikko som min farmor hade liggandes i originalkartong inne i en garderob som jag fick ta fram och leka med när vi var på besök.

En tid senare så skulle min farmor tömma alla garderober på leksaker då de flesta av dessa var överfulla. Barnen i släkten fick då komma och välja ut några stycken leksaker att ta med hem. När det var min tur frågade jag om jag fick lov att ta med mig den roboten med vilket min farmor svarade: "Jag har sparat den till dig" med ett vänligt leende.

Många år senare efter mycket användning slutade denna robot tyvärr att röra på sig när man tryckte på fjärrkontrollen men den förblir fortfarande ett av mina bästa minnen från barndomen.

Nu är det dock äntligen dags att få den här roboten att röra på sig igen i ett litet projekt som jag har börjat på!

Tanken är att det i första hand att robotens originalfunktion och utseende kommer att bevaras men den kommer att kunna styras genom antingen bluetooth eller wifi och även kanske fjärrstyrning över internet med en webbkamera som strömmar video så man kan styra den på håll.

Införskaffat:

  • Raspberry Pi Zero

  • Adafruit 16-Channel Servo Driver

  • 2st kontinuerligt roterande servon (Feetech FS90R)

  • 1st standardservo (Futaba S3003)

  • USB Hubb

  • Wifikort USB

  • Li-po laddare + 5v booster

Står på inköpslistan:

  • 6000mah li-po batteri

  • (Seriell bluetooth modul)

Kommer att uppdatera löpande så mycket jag hinner men har mycket att göra i skolan så detta blir i första hand på helgerna. Blir ett galleri när projektet är helt klart och roboten susar runt på golvet.

Tack för att ni tar en titt!

UPPDATERING 1 (2016-01-17):

BILDER:

Fortfarande i fint skick efter alla år:

Raspberry Pi Zero:

Adafruit Servo Driver:

4 port usb hubb med borttagna usb portar, kommer att löda kablar till dessa istället.

Innehållet i den övre delen.
Servo kontrollen sitter fast med dubbelhäftande tejp, servot sitter fast med dubbelhäftande + buntband.
Armarna har en ganska simpel men genial konstruktion med två axlar som klämmer ihop och lyfter armarna med endast en motor:

Servo i noll-läget:

Servo i max-läget:

Undertill har jag lagt till tre skruvar som håller fast servokonstruktionen för hjulen.

Original så satt det en DC motor som drev en axel där ena hjulet låste sig när man backade vilket gjorde att roboten svängde och körde man framåt så gick båda hjulen framåt.
I min konstruktion så är det istället två servon som driver roboten framåt vilket gör att den kan styra åt båda hållen.

Lite epoxy håller fast hjulen på brickan som skruvas fast i servot och dessa kläms fast med lite självhäftande tejp emellan.
I det här utrymmet satt en hållare för 4 st AA batterier men i min konstruktion så kommer ett massivt 6000mah li-po batteri sitta där istället:

Sladdarna inkopplade för att se så att allt får plats:

Inte mycket extra plats inuti skalet:

Funderar fortfarande på hur jag ska montera raspberryn:

Belysning kommer att läggas till senare också, gjorde ett test med en liten led:

Originaldelarna som tagits ur roboten:

Fjärrkontrollen, funderar på om jag ska använda den i projektet eller inte:

Härligt retro:

uppdaterad inköpslista
Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem

UPPDATERING 2 (2016-01-22):

BILDER:

Fixar med kabeldragning:

Hittade en lite mindre usb hubb på biltema som bättre får plats i roboten:

Höljet var bara tryckt ihop så det var lätt att ta isär:

Passade perfekt i huvudet på roboten och jag slipper löda massa extra kablar:

Tillverkade en monteringsplatta till mikrodatorn i tunn plexi med hjälp av en brytbladskniv, dremel och borrmaskin.
Inte det vackraste jag gjort men det funkar:

Bytte ut buntbanden mot en variant tjockare för att få lite extra stabilitet:

Plockade ut en webbkamera ur en skrotad hp laptop som skall integreras i roboten vid ett senare tillfälle.
Då webbkameran listas som en usb enhet i linux så testade jag att rakt av löda på en usb kabel direkt till anslutningen, fungerade perfekt:

Hittade även en minimal liten högtalare (~2cm i diameter) i en skrotad filmkamera som antagligen kommer att användas också:

Min kära lödstation som jag använder:

Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem

UPPDATERING 3 (2016-01-30):

Liten uppdatering medans jag väntar på batteriet som jag beställt: LiPo 3.7V 6000mAh

Lödde fast en micro-usb kontakt istället för en usb-a kontakt på usb-hubben:

Funkar fint att driva raspberry:n bara genom att ge ström till usb-hubben, alla enheter upptäcks i raspbian och man slipper den extra kabeln som är enbart för strömförsörjning.

Fick hem en adafruit powerboost 1000c, boost converter + li po laddare i microformat:

Har även fått hem en charger doctor så jag kan se strömförbrukningen på raspberry + servo driver + servon + usb-hubb + wlan kort.
Hittills har jag testat raspberry + usb-hubb + wlan kort vilket resulterade i en strömförbrukning på max ca 140mA så det finns ganska mycket rum över till resten av komponenterna. Tanken är att koda roboten så att när någonting ska lyftas så stannar de servon som driver hjulen och vice versa när roboten ska köra omkring kan ingenting lyftas. Detta för att minimera risken för överbelastning av batteriet då ett standardservo kan vara ganska strömhungrigt.

Test av lyftfunktion med allt utan hubben inkopplat:

stavfel
Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem

Kul bygge. Kommer följas!

Permalänk
Medlem
Skrivet av jocke92:

Kul bygge. Kommer följas!

Tackar, tackar!

Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem

UPPDATERING 4 (2016-01-31):

Testmontering med skalet på för att se hur raspberry:n får plats.
Aktivitetslampan hamnar ganska lägligt så man ser om den lilla datorn är igång eller inte på baksidan:

Led lampan som sitter på servo kontrollen lyser lite väl starkt inne i chassit, blir nog att deaktivera den senare då man ser ljuset genom plasten på framsidan:

Gjorde ett test som får roboten att se ut som frankensteins monster för att se om drivfunktionen på hjulen fungerar där ett isärplockat powerpack på 10000mah används som tillfälligt batteri.
De två servon som driver roboten ger bra styrka framåt, en matta i vägen var inga problem att klättra över.

Rejält baktung, ramlade bakåt flera gånger under testerna.

Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk

Denna var ju skitfrän! Snyggt jobbat!
Ska bli kul o se slutersultatet.
Förväntar mig att du lägger upp en videosnutt!

Permalänk
Medlem
Skrivet av BigRedMachine:

Denna var ju skitfrän! Snyggt jobbat!
Ska bli kul o se slutersultatet.
Förväntar mig att du lägger upp en videosnutt!

Tackar så mycket!
Jajamensan, kommer filmklipp inom kort också. Ska bara skriva lite kod till den först.

Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem

Grymt bygge!
Kul att kunna återuppliva en gammal leksak på köpet.
Följer med spänning^^

Visa signatur

Bara gammalt skräp...

Permalänk
Medlem

Skithäftigt!

Permalänk
Medlem
Skrivet av bardbard:

Grymt bygge!
Kul att kunna återuppliva en gammal leksak på köpet.
Följer med spänning^^

Skrivet av biorrith:

Skithäftigt!

Tackar, kul att ni gillar det

Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem

UPPDATERING 5 (2016-02-06):

Tagit isär kontrollen för skojs skull, inte mycket inuti:

Digitalt ska det vara Trodde det var någon analog potentiometer som kände av spaken men det visade sig bara vara att två metallbitar pressas ihop:

Kapade av kanten på usb hubben lite och knipsade bort en av usb portarna för att få lättare plats i robotens huvud. Ristade ett spår med en brytbladskniv och bröt sedan kretskortet med tång:

Lyckades koppla in en ps4 kontroller till roboten via bluetooth för att kunna testa och köra omkring lite:

Första testet att köra omkring och plocka upp något, ni får ursäkta mina dåliga skills då jag styrde roboten genom att titta på kameradisplayen samtidigt som jag körde
Slängde ihop ett program lite hastigt så det är "tank controls" än så länge där varje joystick på kontrollen styr ett servo.
Höger analoga avtryckare styr armarna nästan steglöst när man håller inne fyrkant på kontrollen:

Lite äldre videoklipp på robotens lyftfunktion innan allt monterades.
Styrde genom att köra två script: up.py och down.py så det är tyvärr lite knappande i bakgrunden från mitt mekaniska tangentbord:

Koden för de som är intresserade:

#!/usr/bin/python

from Adafruit_PWM_Servo_Driver import PWM
import time
import pygame

pygame.init()

pwm = PWM(0x40)

servoMin = 150
servoMax = 240

wheel_max = 150
wheel_min = 650

def translate(value, leftMin, leftMax, rightMin, rightMax):
leftSpan = leftMax - leftMin
rightSpan = rightMax - rightMin
valueScaled = float(value - leftMin) / float(leftSpan)
return rightMin + (valueScaled * rightSpan)

def setServoPulse(channel, pulse):
pulseLength = 1000000 # 1,000,000 us per second
pulseLength /= 60 # 60 Hz
print "%d us per period" % pulseLength
pulseLength /= 4096 # 12 bits of resolution
print "%d us per bit" % pulseLength
pulse *= 1000
pulse /= pulseLength
pwm.setPWM(channel, 0, pulse)

exitLoop = False

joysticks_connected = pygame.joystick.get_count()
print (joysticks_connected, " joysticks connected!")
if joystick_count > 0:
ps4_joystick = pygame.joystick.Joystick(0)
ps4_joystick.init()
else:
print("Error, no controllers found!")

pwm.setPWMFreq(60)

while exitLoop==False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exitLoop=True
joy1_v_axis = ps4_joystick.get_axis(1)
joy2_v_axis = ps4_joystick.get_axis(5)
right_trigger = ps4_joystick.get_axis(4)

left_wheel = translate(joy1_v_axis, -1, 1, wheel_min, wheel_max)
right_wheel = translate(v_axis_pos_h, 1, -1, wheel_min, wheel_max)
left_wheel_int = int(left_wheel)
right_wheel_int = int(right_wheel)

right_trigger_out = translate(right_trigger, -1, 1, servoMin, servoMax)
right_trigger_int = int(right_trigger_out)

button = ps4_joystick.get_button(0)

if ((joy1_v_axis > 0.2 or joy1_v_axis < -0.2) or (joy2_v_axis > 0.2 or joy2_v_axis < -0.2)):
pwm.setPWM(6, 0, left_wheel_int)
pwm.setPWM(8, 0, right_wheel_int)
time.sleep(0.07)
else:
pwm.setPWM(6, 0, 0)
pwm.setPWM(8, 0, 0)

if button == 1:
pwm.setPWM(7, 0, right_trigger_int)
time.sleep(0.07)
else:
pwm.setPWM(7, 0, 0)
pygame.quit ()

Dold text
Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem

UPPDATERING 6 (2016-02-14):

Liten uppdatering på projektets status:

Batteriet har anlänt. Tre stycken balanserade li-po celler på 2000mAh som tillsammans fungerar som ett enda 6000mAh batteri:

Börjat kika på hur jag ska montera batteriet i roboten. Kapade till en bit meccano som hittades bland gömmorna vilket får fungera som fasthållning med hjälp av två skruvar som jag ska limma fast med epoxy:

Har haft funderingar på hur roboten skall kunna hålla koll på sin position i ett rum. Har börjat demontera en USB mus som kan användas för avläsa hur långt roboten har färdats i en viss riktning:

Kommer att behöva avlöda och flytta på kondensatorerna och lite andra saker som sticker upp ovanför kretskortet då avståndet mellan botten och batteriet är ganska litet:

Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem

För position kanske dessa kan vara intressanta?
Keep it up!

Visa signatur

Bara gammalt skräp...

Permalänk
Medlem
Skrivet av bardbard:

För position kanske dessa kan vara intressanta?
Keep it up!

Tackar för tipset. Blir ett försök med musen först då en enkoder inte kan hantera om hjulen på roboten skulle slira på underlaget, hoppas på en hyfsat exakt avläsning av sträckan i två dimensioner.

Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem

Hur går det?!

Permalänk
Medlem

Häftigt projekt! Det är verkligen en fin robot!

Permalänk
Medlem

coolt bygge

Visa signatur

i5-12600KF | Noctua NH-D15S Chromax Black | MSI MAG B660M | 64 GB G.Skill Trident Z | 3 * WD Black SN750 | Asus TUF OC RTX 3080 | Fractal Design Torrent | Corsair RM750W | Samsung Odyssey G9 49" |

Permalänk

Du borde kunna byta elektroniken i fjärrkontrollen till en IR-led och mottagare på roboten, eller varför inte blåtand? Riktigt kul bygge!

Permalänk
Proffsmobbare
Permalänk
Medlem

Fett bygge! Riktigt kul att följa!

Visa signatur

MS-7673 | i5-2500K @ 4.4Ghz | GTX 670 @ ~1.3GHz | Corsair 24GB VENGEANCE LP | Corsair AX 860W 80+ Platinum | Fractal Design R4

Permalänk
Medlem

UPPDATERING 7 (2016-03-04):

Lite sen uppdatering, har mycket att göra med universitetsstudierna just nu.

Batteriet är numera fastsatt med kardborreband och har börjat dra kablar:

Tar isolering av kablar på allvar då jag vill undvika risken för eldsvåda vid ett senare tillfälle.
Headern till vänster på bilden är en dubbel tre rad med jord till höger, 5v i mitten och signalkablarna till båda servon till vänster.

Kabeldragning i den övre delen. Blå kablar är signalkablar och då hjulens servon får ström direkt från kablarna i botten behövs bara två kablar för dessa.

Monterade en strömbrytare som kortsluter enable och jord på powerboost:en, vilket gör att det går att stänga av all strömförsörjning.

Smältlim får hålla fast usb-hubben i huvudet, bluetooth och wifi är också inkopplade:

Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |

Permalänk
Medlem
Skrivet av bergann:

Hur går det?!

Framåt, lite småjusteringar kvar

Skrivet av twk:

Häftigt projekt! Det är verkligen en fin robot!

Skrivet av PierreB:

coolt bygge

Skrivet av I_KILL_HORSES:

Du borde kunna byta elektroniken i fjärrkontrollen till en IR-led och mottagare på roboten, eller varför inte blåtand? Riktigt kul bygge!

Skrivet av Laine:

Underbart!

Skrivet av djwalle:

Fett bygge! Riktigt kul att följa!

Tackar så mycket allihop!

Visa signatur

| Phenom II X3 720BE 2,8GHz (upplåst till X4 20) @ 3.6GHz | Corsair HX850W | Crosshair IV Formula | 8GB Kingston HyperX Blue | 2st 5970 Crossfire | Intel 120GB SSD | Silverstone Fortress 2 | H80 |