Programmering og koding

Robotbyggesett: velg riktig robot for læring og prosjekt

En enkel robotarm, en liten hjulrobot og en firbeint robothund plassert side om side på et ryddig elektronikkverksted

Det beste robotbyggesettet er det der akkurat det du vil øve på er vanskelig, og resten er enkelt. Vil du skrive kode, velger du en liten hjulrobot. Vil du forstå gir og ledd, bygger du en manuell arm. Vil du styre bevegelser presist, tar du en servoarm. En robothund er en ferdig maskin du tester og bruker, ikke noe du bygger.

Kort forklart Første robot for kode: Cutebot med micro:bit. Mekanikk uten kode: Velleman KSR10. Koordinater, servoer og strøm: femakset servoarm med eget styrekort. Kartlegging og sikker drift av en stor plattform: Unitree Go2 Air.
Nivå
Fra første robot til avansert plattform
Tid
Omtrent 1 time til første Cutebot-program
Lodding
Nei til Cutebot, KSR10 og servoarmen
Du lærer
Velge etter alder og mål, skrive et første program og regne moment
Tegning av Cutebot etter første kveld: bilen lyser grønt med fri vei, rødt foran en bok, og rygger og svinger unna.
Dette er målet for første kveld med Cutebot og programmet lenger ned. Det er en tegning av hva programmet skal gjøre, ikke et bilde av en kjøring.

Hva skal roboten din gjøre den første kvelden?

Start med oppgaven, ikke med hvor imponerende roboten ser ut. Hvert av de fire settene under har et første mål du kan nå, og et første hinder du må regne med.

Kjøre og reagere

Velg Cutebot hvis du vil se kode bli til bevegelse i løpet av en time. Mekanikken er nesten ferdig, så tiden går til sensorer og beslutninger.

Skru og forstå

Velg KSR10 hvis du vil bygge gir og ledd selv og styre med brytere. Det finnes ingen kode i grunnsettet, og det er poenget.

Flytte ting nøyaktig

Velg servoarmen hvis du kan litt Arduino og vil programmere stillinger. Du må selv ordne styrekort, strøm og vinkelgrenser.

Kartlegge et rom

Velg robothund hvis oppgaven er navigasjon og testing med LiDAR, og du har plass og en ansvarlig operatør.

Cutebot-robotbil for micro:bit sett fra siden, med ultralydsensor foran og to drevne bakhjul
Cutebot er liten nok til å kjøre på et kjøkkengulv: under 9 cm lang, og massen er oppgitt til 65,8 g.
Ferdig montert Velleman KSR10-robotarm i gult og svart med kablet kontrollboks og fem brytere
KSR10 kommer i deler. Du monterer fem motorer og girkasser og styrer dem med fem brytere.
Femakset robotarm i svart aluminium med metallgriper, rund dreieskive og seks servoer på akrylplate
Servoarmen er Joy-IT Robot02. Settet har mekanikk og seks servoer, men ikke styrekort eller strømforsyning.
Unitree Go2 Air robothund sett skrått forfra, med fire bein og LiDAR-sensor på hodet
Go2 Air veier omtrent 15 kg. Tenk på den som en maskin som trenger en egen arbeidsrutine.
Test deg selv: du vil lære if-setninger og har en ledig kveld. Hva velger du?

Cutebot. Du får en sensor og to motorer i én pakke, og du kan se at programmet tar en beslutning. En arm bruker den første kvelden på mekanikk.

Test deg selv: en 12-åring liker Lego og vil bygge noe stort. Hva velger du?

KSR10, med en voksen i nærheten under monteringen. Her er selve byggingen målet, og armen virker uten datamaskin.

Test deg selv: du har programmert Arduino og vil flytte klosser. Hva velger du?

Servoarmen, sammen med et styrekort for servoer og en egen strømforsyning. Hvis du heller vil ha alt i én eske, kan du se på Arduino Braccio, som har styrekort og strømforsyning. Selve Arduino-kortet må kjøpes separat.

Hvilken robot passer for barn i ulik alder?

Følg aldersmerkingen på produktet, men se også på hva barnet liker. Et barn som elsker å skru, blir lei av en bil som er ferdig på fem minutter. Et barn som vil se noe skje med en gang, blir lei av mange små deler. Kartet under viser hvor du kan begynne. Alle settene ligger under roboter for nybegynnere og roboter.

Velg robotbyggesett etter alder og mål: tabell med tre aldersgrupper mot kode, bygging uten kode og robotarm.
Forslagene bygger på aldersmerkingen på produktsidene. Cutebot og KSR10 har ingen oppgitt alder, så der er rådet vårt skjønn.

Robot for barn under 8 år: lek først

Under 8 år bør målet være å leke, ikke å kode. Ingen av byggesettene i denne guiden er merket for denne alderen, og de har små deler.

Velg lekerobot hvis

barnet vil snakke med roboten. Den røde lekeroboten er ferdig montert, er merket over 3 år og gjentar ord og lyder. Den er ikke programmerbar. Den går på tre knappcellebatterier av typen LR44 som er satt inn, så kontroller at batterirommet er sikret før barnet får den.

Velg Cutebot hvis

en voksen vil sitte ved siden av. Cutebot er nesten ferdig fra esken, så den voksne laster opp programmet, mens barnet trykker på knappen og setter noe i veien.

Hvilken robot passer for barn på 8 til 13 år?

Fra 8 år kan barn begynne med blokkprogrammering, og det er her utvalget er størst. Alle de fire settene under er merket fra 8 eller 9 år.

Velg BitCar hvis

barnet vil kode en bil med sensor. BitCar er merket fra 8 år. micro:bit og tre AAA-batterier følger ikke med.

Velg Maqueen Lite hvis

en klasse eller flere barn skal kode sammen. Maqueen Lite er merket fra 8 år og bruker tre AA-batterier. micro:bit følger ikke med.

Velg solcellerover hvis

barnet vil bygge uten kode og uten batterier. Roveren er anbefalt fra 8 år og går på sol, så den står stille inne om kvelden.

Velg Light Chaser hvis

barnet er klart for å lære å lodde med en voksen. Light Chaser følger lys uten programmering og har en anbefalt aldersgrense på 9 år.

BitCar-robotbil til micro:bit sett forfra, med ultralydsensor og hjul på begge sider
BitCar er merket fra 8 år og programmeres med micro:bit.
Maqueen Lite V5 med ultralydsensor foran, en liten STEM-robot til micro:bit
Maqueen Lite er laget for undervisning og er merket fra 8 år.

Robot for 14 år og eldre: mer å bygge, mer å forstå

Fra 14 år åpner resten av byggesettene seg. Her avgjør målet valget mer enn alderen. Vil du kode en gående robot, er Tobbie II en seksbeint robot til micro:bit, der du skriver i JavaScript Blocks Editor eller Python Editor. Tobbie med 107 deler er også merket fra 14 år og går på fire AAA-batterier. Liker du å bygge uten datamaskin, gir KSR19 5-i-1 mekanisk koding, som produktsiden anbefaler fra 14 år, og 12-i-1-settet går på sol. Flere modeller finner du under DIY-byggesett.

Byggesett for robotarm: hvilken velger du?

Velg etter hvordan du vil styre armen. Bare KSR10 styres uten kode og uten styrekort, med brytere.

RobotarmStyres medVelg denne hvis
Velleman KSR10Fem brytere og 4 LR20-batterierDu vil bygge gir og ledd, uten kode.
4-DOF i metallmicro:bit og Bluetooth, fire bevegelserDu kan micro:bit og vil programmere en arm. Skrutrekker følger med.
Femakset servoarmArduino eller Raspberry Pi med eget styrekortDu vil lære servoer, strøm og sekvenser.
Arduino BraccioMedfølgende styrekort og strømforsyning, Arduino-kort kjøpes separatDu vil ha styrekort og strømforsyning med i pakken.

Hvor mange ledd må du styre samtidig?

Tallet som sier mest om vanskelighetsgraden, er antall frihetsgrader: hvor mange bevegelser som må styres hver for seg. En hjulrobot trenger to. Svinger du, får det ene hjulet bare en annen fart enn det andre.

En arm må tenke annerledes, fordi hvert ledd flytter alt som sitter lenger ut. Beveger du skulderen, flytter griperen seg også. Derfor må du planlegge rekkefølgen. Ett bein på en robothund har tre ledd, og fire bein gir tolv. Der tar produsentens styringssystem seg av balansen, så den kan du ikke lære ved å bygge selv.

Frihetsgrader i hjulrobot, robotarm og robotbein: to hjul, seks nummererte servoer på armen og tre ledd i ett bein.
Numrene på armen er de samme som kanalnumrene i programmet senere i guiden. Griperen regnes vanligvis ikke som en akse. Derfor heter armen femakset selv om den har seks servoer.

Hvorfor løfter en utstrakt arm så mye mindre?

Dette er regnestykket som overrasker flest. Et ledd må motvirke et moment, altså kraft ganger avstand. En masse på 100 g trekkes ned med omtrent 0,98 N. Den kraften er den samme uansett hvor massen er, men momentet vokser med armens lengde.

Moment rundt skulderen fra samme last på 100 g: 0,098 Nm på 10 cm og 0,29 Nm på 30 cm avstand fra leddet.
Tre ganger så lang avstand gir tre ganger så stort moment. Armens egen masse er ikke med på tegningen, og den kommer i tillegg.

Så kan du regne på den femaksede armen. Joy-IT oppgir 21,5 kg·cm ved 7,4 V for servoene, som tilsvarer omtrent 2,1 Nm. Anta at den bevegelige delen av armen veier 500 g, med tyngdepunktet 15 cm fra skulderen. Det er et regneeksempel, så vei gjerne din egen.

  • Armens egen masse: 0,5 kg × 9,81 m/s² × 0,15 m = 0,74 Nm
  • Last på 100 g ytterst, 30 cm ut: 0,29 Nm
  • Til sammen 1,03 Nm, altså omtrent halvparten av det oppgitte momentet

Margen er i virkeligheten mindre. Motorino-styrekortet tåler høyst 6 V, så du når ikke 7,4 V, og Joy-IT oppgir ikke momentet ved lavere spenning. I tillegg krever akselerasjon ekstra moment. Det er en av grunnene til at programmet senere i guiden beveger armen sakte.

Robotbyggesett side om side

RobotInnsatsVerktøyStrømNivåKostnad
CutebotLiten: monteres på minutterIngen3 AAA-batterierNybegynnerLav, micro:bit i tillegg
Velleman KSR10Stor: hele mekanikkenNebbtang, avbiter og skrutrekker4 LR20-batterierNybegynner med tålmodighetLav
Femakset servoarmStor: montering, kalibrering og koblingHåndverktøy og multimeterEgen 5 V-forsyning, opptil 12 A ved full lastViderekommenMiddels, styrekort og forsyning i tillegg
Unitree Go2 AirLite bygging, mye rutineTommestokk og ryddig testrom8000 mAh-batteri og 119 W laderAvansertHøy

Cutebot: en leveringsbil som viker for hindringer

Nivå 1: nybegynner. Tid: omtrent 1 time. Du trenger Cutebot, et micro:bit-kort med USB-kabel, tre AAA-batterier og svart teip. Batterier og micro:bit følger ikke med bilen.

Målet er en avgrenset leveringsrute på gulvet: bilen kjører fra Hent til Lever med en lett pappeske, og reagerer hvis noen setter noe i veien. Bygg den i tre trinn, slik at du alltid har noe som virker.

Leveringsrute for Cutebot med svart teip på lyst gulv, stoppestedene Hent og Lever og en hindring 20 cm foran bilen.
Ruten sett ovenfra. Bruk teip på lyst, matt gulv: linjesensorene ser etter kontrast, og blanke flater kan lure dem.
  1. Batterier: Sett tre AAA-batterier i holderen, slik merkingen viser. De følger ikke med.
  2. Sensor: Med bilen slått av plugger du ultralydsensoren i raden merket SONAR, med de to runde lydgiverne vendt fremover.
  3. micro:bit: Skyv kortet helt ned i sporet, med LED-skjermen og knappene vendt mot sensoren.
  4. Program: Åpne MakeCode, klikk New Project, og følg teksten under. Koble micro:bit til PC-en med USB-kabelen og klikk Download.
  5. Kjør: Sett bilen på gulvet, slå på hovedbryteren bak og trykk på knapp A. Hold en bok foran den.

Programmet under er første trinn med sensor: bilen rygger og svinger unna i stedet for å stoppe. I MakeCode legger du inn utvidelsen cutebot under Utvidelser (Extensions), bytter til JavaScript og limer inn koden. Knapp A starter bilen og knapp B stopper den.

let kjorer = false
let avstand = 0
let naer = 0
input.onButtonPressed(Button.A, function () {
    kjorer = true
})
input.onButtonPressed(Button.B, function () {
    kjorer = false
})
basic.forever(function () {
    if (kjorer) {
        avstand = cuteBot.ultrasonic(cuteBot.SonarUnit.Centimeters)
        if (avstand > 1 && avstand < 20) {
            naer += 1
        } else {
            naer = 0
        }
        if (naer >= 2) {
            cuteBot.colorLight(cuteBot.RGBLights.ALL, 0xff0000)
            cuteBot.motors(-40, -40)
            basic.pause(400)
            cuteBot.motors(0, -40)
            basic.pause(randint(300, 600))
            naer = 0
        } else {
            cuteBot.colorLight(cuteBot.RGBLights.ALL, 0x00ff00)
            cuteBot.motors(40, 40)
        }
    } else {
        cuteBot.stopcar()
        cuteBot.closeheadlights()
    }
})

Variabelen naer er den lille detaljen som gjør programmet robust. Bilen reagerer først når to målinger på rad er under 20 cm, så én feilmåling ikke får den til å rygge. Verdier på 1 cm eller mindre regnes som ugyldige.

Hvis det ikke virker: bilen står stille etter knapp A

Se etter LED-en ved hovedbryteren. Lyser den ikke, er batteriene tomme eller satt inn feil vei. Lyser den, trykker du micro:bit helt ned i sporet og laster ned programmet på nytt.

Hvis det ikke virker: MakeCode viser røde feil i koden

Utvidelsen mangler. Bytt tilbake til Blocks, klikk Extensions under Advanced, søk etter «cutebot» og velg utvidelsen fra ElecFreaks. Lim deretter inn koden på nytt.

Hvis det ikke virker: bilen rygger hele tiden eller ser ikke boken

Kontroller at sensoren står i raden SONAR og at ingenting henger foran den. Hold en stor, hard bok 10 til 15 cm foran bilen. Reagerer den fortsatt ikke, kan du vise avstanden på LED-skjermen for å se hva sensoren faktisk leser.

Neste steg er å følge teipen med de to linjesensorene og stoppe ved hvert stoppested. Alt sammen, med tegninger av blokkene og kode for linjefølgeren, står i den komplette Cutebot-guiden. Er micro:bit helt nytt for deg, begynner du med kom i gang med micro:bit.

Prøv selv: Endre 20 til 30 og 40 til 60. Når begynner bilen å treffe boken før den rekker å reagere?

KSR10: lag et program på papir, uten kode

Nivå 1: nybegynner. Tid: en kveld til øvelsene, og mer til montering. Du trenger Velleman KSR10, fire LR20-batterier, nebbtang, avbiter og skrutrekker, en skumkloss og en stoppeklokke. Settet krever ikke lodding.

KSR10 kan ikke programmeres i grunnversjonen, men du kan likevel tenke som en programmerer. Hvert trykk på en bryter er en kommando, og hele rekkefølgen er et program. Du og en venn kan bytte på å være datamaskin.

Program på papir for KSR10-armen: rutenett med fem brytere og åtte trinn som flytter en skumkloss til et nytt sted.
Tegn dette rutenettet på et ark og skriv antall sekunder i hver farget rute. Den som styrer armen, får bare lov til å gjøre det som står på arket.
  1. Merk bordet. Sett to kryss med teip innenfor rekkevidden, som Velleman tegner med omtrent 32 cm radius, og legg en lett skumkloss på det første.
  2. Kjør for hånd og mål. Flytt klossen én gang, og noter bryter, retning og sekunder for hvert trinn.
  3. Kjør etter arket. Sett armen tilbake og la en annen person følge arket med stoppeklokke. Treffer klossen krysset?
  4. Finn feilen. Rett bare ett tall om gangen og kjør på nytt. Dette er feilsøking, og det virker på samme måte i kode.
  5. Bytt batterier. Kjør det samme arket med nesten tomme batterier. Tidene passer ikke lenger, siden armen ikke vet hvor den er.
Slipp bryteren ved endestopp. Velleman skriver at girkassene har en sikkerhetsmekanisme som slår inn ved ytterpunktene, og ber deg slippe bryteren med en gang for å spare girene. Hører du klikking, har du gått for langt. Produsenten oppgir 100 g som høyeste løfteevne, men som regnestykket over viser, er det lurt å starte med skum og kort rekkevidde.

Femakset servoarm: myk bevegelse og sikker parkering

Nivå 2: viderekommen. Tid: montering og kalibrering først, deretter 1 time til programmet. Du trenger armen, Motorino og resten av listen under. Kan du lite om Arduino, begynn med Arduino-programmering for nybegynnere først.
Hold 1 meter avstand. Joy-IT krever minst 1 meter sikkerhetsavstand så lenge strømmen står på, en bryter du kan nå uten å gå inn i armens område, og at platen står støtt, helst skrudd fast i underlaget. Armen har skarpe kanter og kan klemme eller slynge gjenstander. Slå av strømmen før du tar i den. Vernebriller er lurt. Joy-IT tillater bruk fra 12 år og bare med en voksen som kan gripe inn når som helst, og de advarer mot at de mange små skruene og mutrene kan svelges.

Joy-IT beskriver armen med styrekort fra egen serie: MotoPi for Raspberry Pi og Motorino for Arduino. Motorino står som et skjold (shield) oppå UNO-kortet og lager servosignalene selv, med en PCA9685-brikke og en egen krystall. Arduinoen trenger bare å gi beskjed over I²C.

Kalibrer før du monterer

Dette er trinnet folk angrer på at de hoppet over. Joy-IT ber deg sette hver servo til 1500 µs, og griperens servo til 1600 µs, før du skrur den fast. Da står armen rett opp i midtstillingen og får hele arbeidsområdet. Programmet under gjør det samme når det starter, så du kan bruke det til dette: koble til én servo om gangen og la den finne stillingen før du monterer resten.

Koble opp: to strømkretser, felles GND

Robotarm på Motorino og UNO R4 WiFi: seks servoer på kanal 0 til 5, egen 5 V-adapter og felles GND gjennom pinnene.
Forenklet tegning av kortet sett ovenfra, med kanal 0 øverst. Kanalnumrene er trykt på undersiden av Motorino, så sjekk dem der. Servoene får aldri strøm fra UNO-kortet.
  1. Trykk Motorino ned på UNO R4 WiFi med strømmen helt av. Sett jumperen på kortet til 5V, som er logikknivået på UNO-kortet.
  2. Plugg inn servoene: dreieskive på kanal 0, skulder på 1, albue på 2, håndledd på 3, vri på 4 og griper på 5. Pinnene heter GND, V+ og PWM. Brun leder går til GND, rød til V+ og oransje til PWM.
  3. Sett 5 V-adapteren i DC-kontakten merket VIN og i grenuttaket, som står av. Skjoldet tåler 4,8 til 6 V og høyst 5 A i denne kontakten. Ikke bruk 7,4 V her, selv om servoene tåler det.
  4. Koble UNO-kortet til PC-en med USB-C. Den gir logikkstrøm og data, ikke servostrøm.
  5. Vri armen for hånd omtrent rett opp før du slår på grenuttaket. Servoene vet ikke hvor de står, og går raskt til første posisjon de får beskjed om.
Hvor mye strøm trengs? Joy-IT oppgir opptil 2 A per servo og 12 A hvis alle er fullt belastet, og skriver at en mindre forsyning kan brukes så lenge den ikke overbelastes, siden alle sjelden trekker maks samtidig. Mobilladere egner seg ikke. Joy-IT anbefaler en forsyning på 4,8 A (24 W) til Motorino. Adapteren på 4 A ligger litt under, men er et rimelig utgangspunkt for dette rolige programmet, der leddene flyttes sakte og uten last. Vi har ikke målt strømmen. Hvis servoene rykker, er forsyningen for svak. Vil du måle og sette en strømgrense, bruker du en laboratoriestrømforsyning på skruterminalen, høyst 6 A. Guiden om laboratoriestrømforsyning forklarer hvordan.

Hele programmet

Installer «Adafruit PWM Servo Driver Library» i Library Manager i Arduino IDE. Joy-IT har også en egen tilpasset utgave. Programmet bruker den offisielle og ber den bruke krystallen på kortet, slik Joy-ITs utgave gjør. Last opp, åpne Serial Monitor på 115200 baud og skriv k eller p.

// Femakset robotarm (Joy-IT Robot02) med Motorino-skjold på Arduino UNO R4 WiFi.
// Skriv k og Enter i Serial Monitor for å kjøre sekvensen, p og Enter for å parkere.
// Skriver du noe mens armen beveger seg, avbrytes sekvensen og armen parkerer sakte.
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm(0x40);  // adressebroene på skjoldet er åpne

const uint8_t PRESKALER = 121;           // 25 MHz / (4096 x 122) gir omtrent 50 Hz
const uint32_t KRYSTALL_HZ = 25000000;   // krystallen på Motorino
const uint8_t ANTALL = 6;
const uint16_t STEG_MS = 20;             // ny posisjon 50 ganger i sekundet
const uint16_t PARK_MS = 3000;           // parkering tar alltid minst så lang tid

const char *NAVN[ANTALL] = {"dreieskive", "skulder", "albue", "håndledd", "vri", "griper"};

// Grenser i mikrosekunder per kanal. Forsiktige verdier rundt midtstillingen, med vilje.
const uint16_t MIN_US[ANTALL] = {1000, 1300, 1200, 1100, 1000, 1200};
const uint16_t MAX_US[ANTALL] = {2000, 1800, 1600, 1900, 2000, 1900};

// Parkering er kalibreringsstillingen fra Joy-IT: armen står rett opp.
const uint16_t PARK[ANTALL] = {1500, 1500, 1500, 1500, 1500, 1600};

const uint16_t APEN = 1400;    // bytt om APEN og LUKKET hvis griperen går motsatt vei
const uint16_t LUKKET = 1750;  // så lukket at en skumkloss holdes uten at servoen summer

struct Stilling {
  const char *navn;
  uint16_t us[ANTALL];
  uint16_t varighetMs;
};

const Stilling SEKVENS[] = {
  {"sving mot hent", {1250, 1500, 1500, 1500, 1500, APEN}, 2500},
  {"len fram", {1250, 1650, 1350, 1400, 1500, APEN}, 3000},
  {"lukk griper", {1250, 1650, 1350, 1400, 1500, LUKKET}, 1500},
  {"løft", {1250, 1500, 1500, 1500, 1500, LUKKET}, 3000},
  {"sving mot lever", {1750, 1500, 1500, 1500, 1500, LUKKET}, 4000},
  {"senk", {1750, 1650, 1350, 1400, 1500, LUKKET}, 3000},
  {"slipp", {1750, 1650, 1350, 1400, 1500, APEN}, 1500},
  {"løft igjen", {1750, 1500, 1500, 1500, 1500, APEN}, 3000},
};
const uint8_t ANTALL_STILLINGER = sizeof(SEKVENS) / sizeof(SEKVENS[0]);

uint16_t naa[ANTALL];  // siste posisjon vi har sendt til hver servo

// Myk start og stopp: t går fra 0 til 1, svaret starter og slutter med fart null.
float myk(float t) {
  return t * t * (3.0f - 2.0f * t);
}

// Tømmer alt som ligger i mottaket, også linjeskiftet fra Serial Monitor.
void tomSerial() {
  delay(20);
  while (Serial.available() > 0) {
    Serial.read();
  }
}

// Flytter alle ledd samtidig. Svarer false hvis noen skrev noe underveis.
bool flytt(const uint16_t mal[ANTALL], uint16_t varighetMs, bool kanAvbrytes) {
  uint16_t fra[ANTALL];
  uint16_t til[ANTALL];
  for (uint8_t k = 0; k < ANTALL; k++) {
    fra[k] = naa[k];
    til[k] = constrain(mal[k], MIN_US[k], MAX_US[k]);
  }
  uint16_t steg = max(varighetMs / STEG_MS, 1);
  for (uint16_t i = 1; i <= steg; i++) {
    if (kanAvbrytes && Serial.available() > 0) {
      return false;
    }
    float s = myk((float)i / steg);
    for (uint8_t k = 0; k < ANTALL; k++) {
      int forskjell = (int)til[k] - (int)fra[k];
      naa[k] = fra[k] + (int)(forskjell * s);
      pwm.writeMicroseconds(k, naa[k]);
    }
    delay(STEG_MS);
  }
  return true;
}

void parker() {
  Serial.println("Parkerer sakte");
  flytt(PARK, PARK_MS, false);
  Serial.println("Parkert");
}

void kjorSekvens() {
  for (uint8_t i = 0; i < ANTALL_STILLINGER; i++) {
    Serial.print("Flytter til: ");
    Serial.println(SEKVENS[i].navn);
    if (!flytt(SEKVENS[i].us, SEKVENS[i].varighetMs, true)) {
      tomSerial();
      Serial.println("Avbrutt");
      break;
    }
    delay(300);
  }
  parker();
}

void setup() {
  Serial.begin(115200);
  while (!Serial && millis() < 3000) {
  }
  if (!pwm.begin(PRESKALER)) {
    Serial.println("Fant ikke skjoldet på 0x40. Sjekk at det står riktig på UNO-kortet.");
    while (true) {
      delay(1000);
    }
  }
  pwm.setOscillatorFrequency(KRYSTALL_HZ);
  Serial.println("Motorino funnet på 0x40");

  // Én servo om gangen, fra griperen og ned. Strømtoppen blir mindre,
  // og du rekker å slå av hvis et ledd går feil vei.
  for (int k = ANTALL - 1; k >= 0; k--) {
    naa[k] = PARK[k];
    pwm.writeMicroseconds(k, naa[k]);
    Serial.print("Vekker kanal ");
    Serial.print(k);
    Serial.print(": ");
    Serial.println(NAVN[k]);
    delay(1000);
  }
  Serial.println("Klar. Skriv k for sekvens, p for parkering.");
}

void loop() {
  if (Serial.available() > 0) {
    char kommando = Serial.read();
    tomSerial();
    if (kommando == 'k') {
      kjorSekvens();
    } else if (kommando == 'p') {
      parker();
    }
  }
}
Hopp og myk bevegelse for en servo: brått hopp fra 1500 til 1750 µs mot en S-formet kurve med rolig start og stopp.
Funksjonen myk() tegner den blå kurven. Farten er null i begge ender, og dermed slipper armen rykk og store strømtopper.

Slik skal det se ut når du har skrevet k:

Motorino funnet på 0x40
Vekker kanal 5: griper
Vekker kanal 4: vri
Vekker kanal 3: håndledd
Vekker kanal 2: albue
Vekker kanal 1: skulder
Vekker kanal 0: dreieskive
Klar. Skriv k for sekvens, p for parkering.
Flytter til: sving mot hent
Flytter til: len fram
Flytter til: lukk griper
Flytter til: løft
Flytter til: sving mot lever
Flytter til: senk
Flytter til: slipp
Flytter til: løft igjen
Parkerer sakte
Parkert

Linjene som ikke sier seg selv

  • pwm.begin(PRESKALER) starter brikken med ekstern klokke, altså krystallen. Tallet 121 gir omtrent 50 Hz ved 25 MHz, som er klokkefrekvensen Joy-ITs bibliotek regner med. Joy-IT oppgir ikke frekvensen til krystallen på kortet, så sjekk at servoene oppfører seg normalt før du monterer armen. Etterpå må setOscillatorFrequency kalles, ellers regner biblioteket om mikrosekundene med feil klokkefrekvens.
  • constrain i flytt() gjør at ingen stilling kan komme utenfor MIN_US og MAX_US, selv om du skriver feil tall i tabellen. Grensene i tabellen er forsiktige verdier rundt midtstillingen, ikke tall fra Joy-IT. Utvid dem bare litt om gangen, og aldri lenger enn leddet kan bevege seg uten å støte mot noe.
  • parker() er laget slik at den ikke kan avbrytes. Når du stopper en sekvens, går armen rolig opp til midtstilling i stedet for å bli stående utstrakt.
«Fant ikke skjoldet på 0x40»

Sjekk at alle pinnene står i kontaktene på UNO-kortet, og at ingen er bøyd. Adressebroene på Motorino skal være åpne. Skjoldet bruker SDA, SCL og D7. Ikke koble noe annet til D7.

Servoene rykker eller UNO-kortet starter på nytt

Forsyningen er for svak, eller leddene beveger seg for fort. Øk varigheten i tabellen, og flytt ett ledd om gangen. Skjer det likevel, bruker du en sterkere forsyning. Motorino kan også få en ekstra kondensator på sin egen tilkobling.

En servo står helt stille

Sjekk at kabelen sitter riktig vei, med brun på GND, og at grenuttaket er på. Lyser ikke Power-lampen på skjoldet, får det ikke strøm. Bytt kanal med en servo som virker, for å se om feilen følger servoen.

Prøv selv: Legg en skumkloss der armen griper, og juster bare tallene i SEKVENS til den treffer. Legg deretter til en tredje plass. Guiden om trinnmotorer viser et annet motorprinsipp med samme regel for egen motorforsyning.

Denne koden er kompilert for UNO R4 WiFi, men ikke prøvd på en fysisk arm. Kjør derfor sakte første gang, og juster tallene etter din egen montering.

Robothund: en testplan i stedet for en byggeplan

Nivå 3: avansert. Tid: en halv dag til første kontrollerte økt. Du trenger Unitree Go2 Air, et tomt rom og en tommestokk. Manuell kontroller er tilleggsutstyr på Air, så sjekk hvordan du stopper roboten før du starter.

Unitree oppgir omtrent 15 kg, opptil 2,5 m/s, en trinnhøyde på omtrent 15 cm og en helning på 30° for Air, og 1 til 2 timers drift. Gang og balanse er allerede løst. Det som gjenstår å øve på, er hvordan du bruker en slik maskin kontrollert, og hvor godt den faktisk ser rommet.

Testområde for robothund med stopp hos operatøren, fire målepunkter i rommet, glassflate og stolbein som må sjekkes.
Plantegning av første økt. Glass og tynne stolbein er med fordi det er slike flater du vil se om kartet får med seg.
  1. Rydd og merk. Fjern løse kabler og gjenstander og merk testområdet med teip. Ingen personer eller dyr i området.
  2. Sjekk stopp først. Få roboten til å stå og stoppe noen ganger før den går noe sted. Bare én person styrer.
  3. Gå sakte. Kjør laveste fart langs de fire punktene på plantegningen.
  4. Mål. Sammenlign avstander i appens kart med tommestokken. Skriv ned avviket for glass, blanke flater og stolbein.
  5. Vurder neste steg. Først når dette er kjedelig, er det tid for trapper eller terreng, og da med en egen risikovurdering.
En robothund er ikke et leketøy. Hold den borte fra barn, trapper, trafikk og folk under testing. Batteriet er et kraftig litiumbatteri: følg Unitrees laderutiner, lad under tilsyn, og bruk aldri et skadet batteri. Roboten har kamera og kart, så tenk over personvernet før du bruker den der andre oppholder seg.

Hva du lærer, og hva du kjøper etterpå

Hvis du startet medDu har lærtNaturlig neste steg
CutebotSensorer, if-setninger, tilstander og filtrering av målingerRing:bit-robotbil med flere sensorer, eller robotarm for micro:bit
KSR10Gir, ledd, tyngdepunkt og hvorfor styring etter tid bommerMotorstyring i guiden om L298N og PWM, deretter servoarmen
Femakset servoarmPWM, I²C, strømbudsjett, vinkelgrenser og sekvenserMotoPi hvis du vil styre fra Raspberry Pi med kamera
Go2 AirSikre rutiner, kartkvalitet og testing i et avgrenset romEgen testprotokoll og et større, kontrollert område

Skal en gruppe jobbe sammen, er flere små hjulroboter nesten alltid bedre enn én stor plattform. Da får alle prøve, og noe kan gå galt uten at det koster dyrt.

Vanlige spørsmål

Hvilket robotbyggesett er best for en nybegynner?

Cutebot med micro:bit gir raskest vei fra idé til synlig resultat, fordi monteringen tar minutter. Liker du heller å bygge enn å kode, er KSR10 et godt alternativ.

Kan Velleman KSR10 programmeres?

Ikke i grunnsettet. Det styres med en kablet boks med fem brytere og har ingen programmerbar kontroller. Du kan likevel øve på sekvenser med papirprogrammet i denne guiden.

Følger det styrekort med den femaksede armen?

Nei. Pakken har mekanikk og seks servoer. Du trenger et styrekort, for eksempel Motorino til Arduino eller MotoPi til Raspberry Pi, og en egen strømforsyning.

Hvor mye kan en hobbyrobotarm løfte?

Det kommer an på avstand, stilling og fart. Velleman oppgir 100 g for KSR10. For servoarmen må du regne moment for din egen stilling, som vist over, og teste med lett last først.

Kan jeg drive servoene fra 5 V-pinnen på Arduino?

Nei. Hver servo kan trekke opptil 2 A, som kortet ikke er laget for. Bruk en egen forsyning og felles GND.

Hvilken robot for barn er best?

Det kommer an på alder og mål, og vi har ikke testet settene mot hverandre. Under 8 år: en lekerobot eller Cutebot med voksen. Fra 8 år: BitCar eller Maqueen Lite for kode og solcelleroveren for bygging. Se kartet over.

Kan barn programmere en robot uten å kunne kode?

Ja. MakeCode bruker blokker som dras sammen, og det samme programmet kan vises som JavaScript senere. Begynn med kom i gang med micro:bit uten robot, så er det lettere å skjønne hva bilen gjør.

Hva er forskjellen på en robotarm for hobby og en robotarm i industrien?

Hovedsakelig løfteevne, presisjon og sikkerhet. En hobbyarm som KSR10 er oppgitt til 100 g og er laget for å lære, mens en industriarm står i et sikret område og gjentar samme bevegelse hele dagen. Prinsippene med ledd, moment og sekvenser er de samme.

Kan jeg bygge en robothund selv?

Ikke med settene her, for en firebent robot krever styringssystem for balanse. Vil du bygge noe som går, er edderkoppen med åtte bein mekanisk enklere, og Tobbie II har seks bein og kode. Unitree Go2 Air er robothunden du tester og bruker.

Er en robothund egnet for barn?

Nei, ikke uten en voksen som styrer. Go2 Air veier omtrent 15 kg og kan bevege seg raskt, så bruk krever avgrenset område og faste rutiner.

Kilder

Tekniske data er hentet fra Joy-ITs side om Robot02, med håndbok, kalibrering og kodeeksempel, Joy-ITs side om Motorino, Vellemans håndbok for KSR10, ELECFREAKS' dokumentasjon for Cutebot og Unitrees side om Go2.

Alle guider

Produkter omtalt i denne guiden

Produktene som brukes og sammenlignes i guiden, med pris og lagerstatus.