Embedded utvikling på en fjernstyrt kartleggingsrobot
Master thesis
Permanent lenke
http://hdl.handle.net/11250/2451065Utgivelsesdato
2017Metadata
Vis full innførselSamlinger
Sammendrag
Oppgaven startet med å få på plass en løsning for å få flere avstandssensorer tilkoblet NXT-roboten, i tilegg til gyroskop og kompass. På selve NXT er det bare fire inngangsporter der det er meningen å koble inn kontakter fra standard Lego-sensorer. Altså måtte det på plass et grensesnitt for de tredjeparts komponentene som var ønsket brukt. For å få til dette ble det bestemt at et kretskort skulle utvikles som inneholder en mikrokontroller som fungerer som et mellomledd mellom roboten og sensorene. Kretskortet skulle kobles via en ledning inn på en NXT-port, og over denne linjen kommunisere alle sensorverdiene.
Prosessen med å utvikle denne løsningen begynte med at det ble satt opp en spesifikasjon over hvilke komponenter kretskortet skulle inneholde og hvordan disse skulle kommunisere. Løsningen som ble utviklet innebar at mikrokontrolleren på kretskortet har kompass og gyroskop tilkoblet på en I2C-buss, og de analoge spenningene avstandssensorene leverer som angir målt avstand leses av en analog-digital-konverterer i mikrokontrolleren. Mikrokontrolleren ble også satt opp til å kommunisere med Bluetooth-dongelen med en UART. Det hadde tidligere vært problemer med kommunikasjonen mellom NXT og dongelen, og det ble funnet ut at dersom dongelen også blir inkludert i kretskortet kunne dette løses. En annen av UARTene på mikrokontrolleren ble satt opp til å styre en RS485-transceiver som genererer kommunikasjonssignalet mot NXT.
Denne spesifikasjonen måtte omsettes først i en prototype på et breadboard der funksjonaliteten ble testet opp mot målene, og deretter realiseres på et kretskort. For å ta steget fra prototype til et endelig kretskort ble en CAD-programvare tatt i bruk. Kretskortdesign er en to-trinns prosess, så først ble en skjematisk tegning laget som inneholder alle komponentene og de elektroniske forbindelsene mellom disse. Neste trinn var å ta i bruk denne tegningen til å utvikle den fysiske layouten til kortet. Komponentenes fotavtrykk ble plassert på logiske steder, og de elektroniske forbindelsene fra tegningen måtte realiseres med legging av kobberbaner mellom de forskjellige inn- og utgangene. Dette trinnet var det mest tidkrevende, og bestod av mange iterasjoner med flytting av komponenter og nye forsøk på å få rutet alle kobberbanene slik at ingen krysser hverandre.
Selve kretskortet ble ikke produsert selv, men tegningene ble sendt til en produsent som gjorde dette. De forskjellige komponentene, motstander, kondensatorer, mikrokontroller og så videre, ble deretter plassert på det ferdige kretskortet og loddet fast.
Mikrokontrolleren ble satt opp til å kommunisere med NXT over en halv-duplex RS485-linje. Siden linjen er halv-duplex og begge parter derfor ikke kan sende data samtidig da det kan resultere i kollisjoner, ble det implementert en protokoll som definerer NXT som master på linjen. Mikrokontrolleren får bare lov til å sende data når NXT gir den beskjed om dette.
Mikrokontrolleren har blitt programmert til å kontinuerlig lese av sensorverdier og å motta data fra Bluetooth-dongelen. Disse blir lagret og ovserendt NXT når denne ber om dette.
Videre har et nytt operativsystem, FreeRTOS, blitt implementert på NXT. For å gjøre dette har selve NXT-boksen blitt åpnet for å blottlegge elektronikken og mikrokontrolleren inni. Her ble det loddet ledninger fast på hovedkortet som gjorde det mulig å koble til mikrokontrollerens JTAG-grensesnitt. Ledningene ble i den andre enden festet i en kontakt som ble plugget inn i et programmeringsverktøy. Med dette verktøyet var det så mulig å laste inn operativsystemet og programmer.
Drivere som implementerer grensesnitt mot de de forskjellige komponentene NXT er utstyrt med, som LCD-skjerm og RS485-modul, måtte også på plass. Slike drivere fantes i operativsystemet som hadde vært brukt tidligere, og disse ble overført og tilpasset til den nye plattformen. Når alt dette var løst ble robot-applikasjonen fra AVR-roboten, som også bruker FreeRTOS, enkelt overført til NXT.
Til slutt har det blitt utviklet et nytt kommunikasjonssystem for totalsystemet. Denne kommunikasjonen ble implementert i lag inspirert av i OSI-modellen. Et av lagene, nettverkslaget, definerer den laveste dataenheten som blir kommunisert. Denne inneholder adressen til avsender og mottaker, i tilegg til dataen som skal sendes. Ved hjelp av adressene kan donglene videresende dataen til riktig sted.
Over dette laget er det utviklet et transportlag som definerer to forskjellige kommunikasjonsprotokoller. Den ene ligner på UDP i Internets protokollkatalog, og muliggjør vanlig simpel meldingsoverføring. Den andre er inspirert av TCP og benytter seg av automatisk retransmisjon av meldinger dersom data går tapt. Dataen disse protokollen ønsker å overføre blir gitt til nettverkslaget der de blir sendt på nettverket som en del av datafeltet i nettverks-pakken.