Servo:bot med Micro:bit
Her skal vi se på hvordan vi kan bygge vår egen robot med servoer, samt hvordan denne kan kodes til å bli en "tegnemaskin". Vi skal først lage en enkel servo:bot, kun med Micro:bit og servoer.
Dersom du ikke allerede er litt kjent med hvordan du styrer en Micro:bit kan du med fordel kikke litt på hvordan du koder Micro:biten og hvordan du kan styre en servo.
180 eller 360 servoer
Det finnes to typer servoer som er aktuelle i vår sammenheng, såkalte 180-graders servoer (omtalt i den øvingen som linkes til ovenfor) og såkalte 360-graders eller kontinuerlige servoer. Det ligger jo i navnene: 180-servoer kan bevege seg 180 grader - frem og tilbake, mens 360-servoene går rundt og rundt. 360-servoene går imidlertid ikke til bestemte posisjoner, men går i en kontinuerlig bevegelse, fremover eller bakover.
Servoene ser nesten helt like ut, men noen 360-servoer gir seg til kjenne ved at de har en liten justeringsskrue i metall (se bilde nedenfor). For å gjøre det litt vanskelig for oss finnes det imidlertid også 360-servoer uten denne skruen. Hvis ikke disse er merket er de vanskleig å skille fra 180-servoer, før du kobler disse til en Micro:bit og sender et styringssignal til servoen.
Kodingen av servoene er ganske logisk når det gelder se som beveger seg 180 grader. 360 fungerer helt annerledes, noe som henger sammen med at den editoren vi koder i ikke har direkte støtte for 360-servoer. For 180-graders servoer henviser tall fra 0 til 180 til antall grader servoen stiller seg inn mot. For 360-servoer betyr imidlertid kommandoen "180" at servoen går full fart forover. "0" betyr full fart bakover, og "90" betyr at servoen står stille. Se kodeeksempel nedenfor.
Enkel servo:bot
Denne er basert på en stegvis oppskrift (engelsk forklaring). Her bygges servo:boten i papp. Papp er et rimelig og godt materiale, men vi har gode erfaringer med å bygge basen i 4mm finér. Dette gjør at vi har et sterkere fundament for å feste servoene, og vi kan eventuelt lage egne braketter ved hjelp av 3D-printing. Du trenger ikke en slik brakett, men fordelen er at denne gir skikkelig feste for servoen, samtidig som denne r enkel å demontere.
Vær oppmerksom på hvilken vei du monterer servoene. Servoene må være montert slik at akslingene står rett ovenfor hverandre. Hvis de monteres kjevt vil servo:boten svinge, selv om koden sier at den skal gå rett frem.
Koblinger
Alle servoer har tre ledninger. Vanligvis merket brunt, rød og gul/oransje.
Brun – skal kobles sammen med Micro:bitens jord (GRD)
Rød – kobles til batteripakkens positive pol (den røde ledningen) som gir strøm til servoene.
Gul – kobles til de koblingspunktene på Micro:biten som skal styre de respektive servoene
Gitt at vi skal styre to servoer med én Micro:bit må vi koble sammen flere ledningen og det blir dermed litt jobb med å holde orden på alle ledningene.
Det viktigste er å følge ledningene ut fra servoene og koble disse videre på riktig farge.
Hold styr på ledningene
Når vi skal koble sammen en servobot, uten en egen servokontroller, må vi holde orden på disse ledningene. Wago-klemmer elelr lignendeegner seg godt i kombinasjon med koblingsledninger med pinner:
Punkt 1 – røde ledninger:
Vi begynner med de røde ledningene fra servoene. Sett en ledningsstump i kontakten ved den røde ledningen og koble dette til Wago-klemmen (merket [2] på bildet). Gjør dette med begge servoene.
Når de røde ledningen fra servoene er koblet til tar du den røde ledningen fra batteripakken og kobler denne til den siste åpningen i Wago-klemmen.
Punkt 2a – brune ledninger:
Vi tar nå de brune ledningene som kommer ut fra servoene.
Sett inn en ledningsstump i kontakten ved den brune ledningen og koble denne ledningen til en av Wago-klemmene (merket [3] på bildet). Gjør dette for begge servoene
Den siste åpningen i denne Wago-klemmen brukes til en ekstra ledning, som kobles videre til en annen Wago-klemme (en “hjelpeklemme” som gjør det enklere å holde styr på ledningene)
Punkt 2b – "mellomkobling":
"Hjelpeklemmen", (merket [1] på bildet) har nå en ledning som kommer fra Wago-klemme [2]. I denne klemmen [1] kobles også den sorte ledningen fra batteripakken. Til slutt kobler vi en ledning med en krokodilleklemme, videre til jord (GND) på Microbiten (den røde krokodilleklemmen på bildet.
Punkt 3:
De siste kobling er å knyttet de gule ledningene fra servoene til kontakter på Micro:biten. Dette gjør at Micro:biten kan styre servoene. I vårt kodeeksempel har vi koblet disse ledningene til P0 (gul krokodilleklemme) og P1 (sort krokodilleklemme).
Punkt 4:
Test ved å laste ned kode på Micro:biten. Når du ser at du har kontroll på servoene kan du isolere koblingene med elektrikertape. Dette for at de ikke skal kortslutte når dere pakker alt inn i esken.
Når koblingene er gjort kan det være lurt å dekke med litt elektrikertape. Dermed unngår du eventuelle kortslutinger når ledningene pakkes tettere sammen.
Den sorte batteripakken gir strøm til servoene. Denne batteripakken kan gjerne ha en bryter, som gjør det lettere å slå det hele av og på.
Nede til høyre ser du så vidt ledninger til batteripakken som gir strøm til Micro:biten. Her har vi altså to batteripakker.
Det er gjerne en fordel å bygge farkosten rundt en slags boks. Dette gjør det enklere å holde orden på ledningene, samt ha et sted å legge batteriene. Det er lett at det blir surr i ledningene og/eller disse kommer i berøring med hverandre, slik at noe kortslutter.
En mulig løsning: Til venstre en plate som servoene kan festes til. Til høyre en boks, som kan plasseres over de to listene, festet til platen. Delene er kun limt sammen, men dette gir en solid base som en kan bygge relativt store figurer på.
Boksen blir på denne måten mulig å bytte ut, og kan utformes på ulike måter, og/eller være bærer av ulike figurer. Dermed har man en mulighet for en plattform for ulike tredimensjonale utforminger.
En liten praktisk sak: For at roboten skal få en forutsigbar start har vi lagt inn en rutine "on start". Denne kaller opp funksjonen "F" i det mikrobiten får strøm, og lar så denne kjøre et sted mellom ett og to sekunder. Tidsangivelse er i millisekunder.
Legg også merke til at vi skriver bokstavene F, B, H, V og S i displayet. Dermed kan vi lett se hvilke funksjoner roboten til enhver tid kjører. Dette er en nyttig metode dersom du skal lete etter eventuelle feil i koden. Du kan eventuelt fjerne dette når du er sikker på at koden fungerer slik du ønsker.
Kode
Du kan selv forsøke deg frem ved å redigere denne koden. Kodeeksemplet er i all hovedsak laget av Erling Johan Hareide, student i kunst og håndverk ved HVL.
De fem blå blokkene du ser til venstre er funksjoner som vi kan kalle opp fra den delen av koden som styrer logikken (se nedenfor). Vi bruker servoer som kan bevege seg kontinuerlig forover eller bakover (360-graders servoer). Når "servo write pin" settes til "0" betyr dette at servoen går bakover, men "180" får den til å gå forover.
Se for eksempel på funksjonen "F" (Forover). Her går den ene servoen bakover, mens den andre går forover. Dette er gjort fordi servoene er montert hver sin vei, som vist nedenfor, slik at begge akslingene kommer på den samme linjen.
Du kan fint feste servoene direkte på boksen. Her er det imidlertid brukt noen 3D-printede braketter. Her kan du se hvordan de er laget.
Dette er selve logikken i koden, som består av en evig løkke (blå, "forever"). Inne i dette ligger en annen løkke (grønn) som gjentas fra 2 til 6 ganger. Antallet velges tilfeldig.
Deretter kommer vi til selve styringen, inn ei "if"-løkken (turkis). Før denne løkken begynner setter vi variabelen "retning" til en verdi, 1 til 5. Dette velges også tilfeldig.
Inne i selve "if"-løkken sjekker vi for de ulike verdiene av variabelen "retning", kaller funksjonene som korresponderer med den til enhver tid gjeldende verdien og lar programmet velge en varighet innenfor gitte intervaller.
Merk at vi sjekker for verdiene 1,2,3 og 4. Om ingen av disse er gjeldende verdi vil denne være 5.
Helt til slutt i "forever"-løkken er det lagt inn en noe lengre pause. Denne kan du gjerne korte ned, eller for den saks skyld fjerne helt.
Til høyre har vi pakket ledninger og batteri inn i en liten pappboks. Dermed blir det lettere å holde styr på, og vi kan dekorere boksen på ulike måter. Dette kan det blir svært spennende og tverrfaglige prosjekter av.
Det er litt vanskelig å se på bildet til høyre, men her har vi brukt to batteripakker: Den store, som gir strøm til servoene (jmf monteringsanvisningen ovenfor) og en liten batteripakke som er koblet direkte til Micro:biten og gir strøm til denne.
Nedenfor en digitalisert variant av et bilde som er tegnet ved hjelp av flere roboter. Vi har her avfotografert tegningen og deretter forsterket de sirklene som vi kan identifisere tydelig i bildet. Sirklene oppstår når robotene begynner å gå til høyre eller venstre, og ulik diameter skyldes først og fremst forskjellig størrelse på figurene. her er det mange måter en kan jobbe videre med tegningene på. En annen variant kan være å tegne videre på de ner tilfeldige strekene og utvikle hele tegningen til en form for kollektiv fantasitegning. Nok en variant er å klippe opp det støre arket i mindre biter, slik at hver elev kan jobbe videre individuelt – for så til slutt å sette det hele sammen igjen, da til t mer collage-aktig uttrykk..
Her har vi montert en tusj på "halen" til roboten. Dermed blir dette en programmert "tegnemaskin". Denne kan produsere bilder som vi igjen kan bruke som utgangspunkt for videre arbeid med ulike analoge og digitale teknikker:
Mer avansert variant
Nedenfor en beskrivelse av en mer avansert servobot, som kan utstyres med en avstandsmåler, go dermed gis mer avanserte egenskaper. Denne er bygget rundt et micro:bit servo:bot kretskort, som selges fra Kodegenet. Dette kretskortet gjør det mulig å styre inntil fire servoer, og det forsyner Micro:biten med strøm. Prisen på dette kortet er det ikke noe å si på og det åpner for å bygge mer avanserte konstruksjoner. For eksempel kan vi lett se for oss en robot som kan kjøre, slik som den vi har bygget, men som i tillegg har to "armer" – da kan vi virkelig begynne å snakke om en "tegnemaskin".