Category Archives: Smart Systems2013-Joystick Bil

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! 😀

Moon Buggy update

01.12-13

Som skrevet i de forrige blog postene så har vi hatt mye problemer med overføring av signaler gjennom systemer våres.

I dag hadde vi endelig et gjennombrudd og fikk til å overføre signalene gjennom hele systemet, så her kommer det en forklaring på hvordan vi fikk det til.

På den stasjonære arduinoen tar vi inn analoge signaler fra joystick og lagrer de i to int variable. Disse variablene putter vi inn i et array og sender arrayet over i2c bussen til den stasjonære Raspberry Pien, her lagrer vi verdiene i arrayet over i to variable. Derfra sender vi verdiene over UDP socket til den andre Raspberry Pien, her lagres verdiene i et nytt array og sendes over til den andre Arduinoen over i2c bussen. På denne Arduinoen splitter vi opp arrayet og lagrer verdiene i to integers som brukes til å bestemme retning og hastighet på bilen.

Vi satte komponenter på bilen og skulle begynne å teste, men fikk elektriske problemer med 5v converteren og bestemte oss for å ta kvelden pga vi trenger elektrisk ekspertise!

Moon Buggy uke 46

Vi har offisielt byttet navn på oppgave til Moon Buggy!

Oppdatering uke 46:

Ukes Agenda: Prøve å ta input fra joystick og sende signalene til arduino på bilen.

Det første vi startet med denne uken var å bruke en arduino med analoge inputs fra joystick som skulle styre 4 leds (opp, ned, venstre og høyre). Hovedpoenget med dette var å se om vi klarte dimme leds med verdier hentet fra joysticken.
Vi klarte dette ved hjelp av PWM utganger fra arduino.
DSC_0592

Vidre til neste problem, overføring:
Overføringen av verdiene gjennom alle komponentene er noe vi forventet skulle ta lang tid og det hadde vi rett i.
Vi startet uken med å overføre verdier fra den stasjonære arduinoen til den stasjonære raspberry pien med “Serial”. Deretter overførte vi fra den stasjonære raspberry pien til den andre raspberry pien over lokalt nettverk, til sist fra raspberry pi til arduino med “Serial” igjen.
Dette fikk vi ikke til å fungere, klarte å sende verdiene hele veien, men problemet ble å lese verdiene og bruke de på arduinoen.

Neste forsøk var da å gjøre om overførings protokollen fra raspberry pi til arduinoen.
I2C var svaret. Vi testet litt og fikk det til å fungere når det ble sendt over verdier i en retning ( altså i OPP/NED retning eller VENSTRE/HØYRE retning), problemet dukket opp når vi skulle sende verdiene for begge retningene.

Uken har for få dager så vi bestemte oss for å fortsette neste uke!

Moon Buggy uke 41

Uke 41

Starta å se på sensorer og wifi til raspberry piene.  Testa kjapt at sensorene fungerte og fikk satt opp et system med photosensitiv sensor som skrur på lys automatisk når det blir mørkt.

Fikk til å koble til trådløst nettverk med wifi enheten, men fant ut at den ikke kan sette opp hotspot selv.

Testa å streame video via kamera over nettverket mellom to raspbery pi’s.

DSC_0574