Siste update Moon Buggy


Hei bloggen!
Det er siste dag før innlevering / framføring og dokumentasjon er nødvendig. Vi bestemte oss derfor for å lage en post der vi tar for oss veien fra idé til et produkt.

Det hele startet med en idé om å lage en bil som skal styres med en analog joystick, og et kamera som gjør det mulig å styre bilen uten visuell kontakt. Det skal også implementeres sikkerhetsfunksjoner som gjør at systemet skal kunne overskrive den manuelle styringen hvis det er potensielle kollisjons muligheter.

I dag er det siste dag med prosjektet og produktet er så ferdig som det kan få blitt.
1424526_10153556459135694_1214329893_n

Utstyr:
– Analog joystick
– Arduino nano
– 2x Raspberry pi
– Trådløs router
– Arduino mega
– Raspberry pi kamera
– 2x wifi dongles
– “12v batteri” (8x 1,5v batterier i serie kobling)
– 9v batteri
– 5v batteri
– Mosfet
– Lys sensor
– IR sensor
– Bilen med 2x motorer og motor driver
– div kabler
– LCD skjerm

PROBLEMER:
Det første problemet vi møtte var i2c overføringen fra Arduino 1 til Raspberry pi 1. Problemet var at vi måtte sende over to bytes per overføring, men i2c støtter bare en byte. Neste problem var den trådløse kommunikasjonen mellom Raspberry pi’sa. Vi bestemte for å overføre verdiene over socket, men problemet utartet seg når vi sendte to verdier. Når vi prøvde å lagre disse to verdiene på Raspberry pi 2 kunne det oppstå et problem med at verdiene ble byttet om.
Vi har også hatt problemer med video streaming. Problemet er at video overføringen tar for lang tid og dette gjør at det nesten er umulig å styre bilen uten visuell kontakt. Delayet ligger på rundt 3 sekunder, som kan minne om at man styrer en bil som kjører på månen, derav navnet Moon Buggy.
Vi har hatt mangel på strøm til bilen og ikke fått batteriet som vi skulle bruke pga dårlig leveringstid fra DX.com. Derfor må vi bruke et eget batteri til Raspberry pi 2 som vi må bære ved siden av bilen fordi batteriet er for tungt.

1463168_10153556459430694_201778852_n

Signaloverføring:
Overføring moon buggy
For å styre bilen bruker vi en joystick som  gir to verdier. Disse verdiene beskriver joystickens posisjon i x og y retning. Den gir en verdi fra 0 ~ 1024 hvor hvile posisjonen gir en verdi på ca 500. Siden vi bruker i2c busen og denne kun kan sende en og en byte, valgte vi å dele begge verdiene på 4 for å få verdien til max 255. Verdiene sender vi videre i et char array med seks plasser.

For å sende verdiene videre mot bilen valgte vi å bruke et lokalt trådløst nett som er satt opp av en standard router. For å kunne koble Raspberry Pi’sa sammen brukte vi to wifi dongles og en UDP-socket for å kommunisere. For å sende verdiene videre tok vi alle verdiene fra arrayet og satt de i en string  noe som python krevde.1471379_10153556458705694_1808596675_n

Verdiene er nå på den raspberry pi 2 og skal over til arduino 2. Her gjorde vi om stringen til et byte array og satte inn de konverterte tallene. Dette arrayet overførte vi via i2c igjen.

Verdiene er nå mottatt på arduino 2 som skal bruke verdiene til å styre bilen. Siden verdiene er halvparten av maksimums verdien i joystickens hvileposisjon brukte vi en mapping funksjon til å sette nye variable som tar utgangspunkt i hvileposisjonen. Dermed blir hvileposisjonen 0 og alle sidene får en egen verdi som går mot 255 hvis joysticken peker mot denne posisjonen.  Disse verdiene blir brukt til å bestemme spenningen på motorene.

Potensielle utvidelser:
– Flere og sikrere sikkerhetsfunksjoner(flere sensorer til å sikre bilen bedre fra å kollidere, og bedre implementasjon av sikkerhetsfunksjonene)
– Bedre video overføring

Slutt tanker:
Prosjektet har vært veldig hektisk. Det har tatt tid fra planen var lagt til alle komponenter ble mottatt. Hadde vi hatt mer tid så kunne vi klart å finpusse mer på produktet. Prosjektet har vært spennende å jobbe med, men det har vært utfordrende å bare vært datastudenter på grunn av lite elektro erfaring. Det har vært mye nytt å sette seg inn i, noe som har gjort at alt har tatt ekstra tid.

1462948_10153556427975694_48244525_n

Kode:
Kode

Gruppemedlemmer: Ståle Rudin, Henrik Berge Sørum og Martin Stenbro

GOD JUL! 😀


Leave a Reply