Teknisk dokumentasjon for Ludosphaera

Like dokumenter
Teknisk rapport. Julian Vars. Haweya Jama. Kjersti Viksaas. Yas Taheranpour. Inger Nordby Grønn. Institutt for informatikk. Universitetet i Oslo

Teknisk Rapport HVASS

IN1060: Bruksorientert design

INF1510: Bruksorientert design

INF1510: Bruksorientert design

WORKSHOP BRUK AV SENSORTEKNOLOGI

Prosjektrapport for. Gameguru. av Silje Helene Lund, Nikolas Ebbesberg, Erik Nystad, Maria Løvland Johansson og Vanessa Storøy Merine

Teknisk rapport GRUPPE 101

Teknisk rapport. IN Bruksorientert design. boks

Reunited. Hanna Dokken, Rhea Toling, Marlene Hasle, Suresh Sapkota & Jonas Blårud. Teknisk rapport. IN Bruksorientert design.

INF1510: Bruksorientert design

Pseudonym presenterer TEKNISK RAPPORT. Medlemmer: Camilla Christensen, Emma Tvinnereim, Hedda Dyngeland og Maren Berge

Prototyping med Arduino del 2

TEKNISK RAPPORT. INF1510 Ellen Katrine Sveen Anna Sofie Schei Jostein Hellerud Espen Wøien Olsen

INF1510 Oblig #1. Kjetil Heen, februar 2016

Ultralydsensor. Introduksjon. Litt om ultralydsensorer. Arduino. Skrevet av: Martin Ertsås & Morten Minde Neergaard

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

Teknisk rapport. Språkopplæring i norsk for unge voksne. Fredrik T. Haugstulen Nina Sophie Justnæs Ina Ek Bjørntvedt Sondre Sandberg

IN1060: Bruksorientert design

Universitetet i Oslo. Institutt for informatikk. IN Bruksorientert design TEKNISK RAPPORT. Pentagon. Christopher Kløv Andersen

Steg 1: Installere programvaren

Teknisk rapport for prototype «BOWMASTER»

Prototyping med Arduino del 3

Espen. The Five Year Club. Anna. Aleksander. Jakob

1. Arduino Bluetooth 2 HC-05 modul

Teknisk rapport. IN Bruksorientert design Vår Universitetet i Oslo - Institutt for informatikk

Verden. Steg 1: Vinduet. Introduksjon

Elektronikk og programmering av ubrukelige roboter

INF Obligatorisk innlevering 7

2. La det bli lys Ditt første Arduino program

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

En to-timers oppskrift for å bygge og programmere en Arduino-drevet strikk-

Hva er maskinvaren Arduino

Kodetime for Nordstrand barneskole

Bruksanvisning Unitronics Vision

UNIVA as, Tromøyveien 26, N-4841 Arendal, Norway Phone: , web:

SUPER DISCLAIMER. Vi endrer opplegget litt fra år til år, og vi hører på dere!

Mars Robotene (5. 7. trinn)

INF Obligatorisk innlevering 7

ARDUINO STUDIELABEN PROGRAMMERING DIGITALE/ANALOGE INNDATA/UTDATA LYSDIODER FRITZING. Roger Antonsen INF januar 2012

ARDUINO STUDIELABEN. Roger Antonsen INF februar 2012

Rapport Øving 2 TDT4258 Mikrokontroller Systemdesign

super:bit-oppdraget Lærerveiledning Versjon 1, august 19.

Steg 1: Lag bildedeklarasjon

Kan micro:biten vår brukes som et termometer? Ja, den har faktisk en temperatursensor!

Uendelig bakke. Introduksjon. Skrevet av: Kine Gjerstad Eide

ARDUINO PRODUKTKATALOG 2016

AUDACITY. Lyninnføring i lydopptak- og redigeringsprogrammet. Fagdag i fysikk, : Lastes ned gratis fra

Arduino bilen er en selvgående liten robot. Roboten består av:

3. obligatoriske innlevering, høsten 2014

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Lokal læreplan i valgfag programmering Utkast august 2018

Stødighetstester. Lærerveiledning. Passer for: trinn Antall elever: Maksimum 15

Bruksanvisning. mp3/mp4 filmspiller 4gb microsd-kortspor. DENVER ELECTRONICS A/S Omega 5A, Soeften DK-8382 Hinnerup. Danmark

Lærerveiledning - Straffespark

Kom i gang med. Åpne nettleseren, gå til: Velg «New Project».

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Løgndetektoren 9. trinn 90 minutter

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Reddot award MagniLink S

Brukermanual. Vanntett radiomottaker, bygget for utendørs bruk! Bluetooth, DAB/FM, USB inngang, AUX inngang og RCA-kabler.

Tips og triks Musikk/Sal og Scene del 3

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

Læringsmål og pensum. v=nkiu9yen5nc

Steg 1: Katten og fotballbanen

Visuell Programmering: Kom i gang med Processing

Hvilken BitBot går raskest gjennom labyrinten?

Steg 1: Piler og knappetrykk

Rapport for Oblig 2 Fag: INF1510 Bruksorientert design

Teknisk Rapport. Effektivisering av natteravnene i Oslos ressurser. Kristine Lokke Lotte Stubdal Renate Farberg Ane Marthe Ness Anna Helgestad

Kjenn din PC (Windows 7)

Forelesning inf Java 1

Eksterne enheter. Brukerhåndbok

WAKE FM-KLOKKERADIO BRUKERHÅNDBOK

7-Segment Display. Introduksjon. Steg 1: Finn frem utstyr. Til denne oppgaven trenger du. Skrevet av: Martin Ertsås & Morten Minde Neergaard

System Dokumentasjon. Team2. Høgskolen i Sørøst-Norge Fakultet for teknologi, naturvitenskap og maritime fag Institutt for elektro, IT og kybernetikk

Straffespark Introduksjon Scratch Lærerveiledning

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

ivisjon TV BRUKERVEILEDNING

PXT: Komponer en melodi

Bruk av interrupt og Timer i Arduino-program.

Eksterne enheter Brukerhåndbok

VEDLEGG 1 KRAVSPESIFIKASJON

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 h2006

AV-mottaker med flere kanaler. Begynn her Hei! Dette er din hurtigoppsettsveiledning

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

UNIVERSITETET I OSLO

Mindstorm, robot- og reguleringskurs

ipad Uke

Arduino bilen er en selvgående liten robot. Roboten består av:

Innlevering 2b i INF2810, vår 2017

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

Introduksjon 3: Teknologi som støtte for læring

7-Segment Display Nybegynner Arduino Lærerveiledning

Laget av Atle Hybertsen Høst 2017

HTML: Legg til lyd og video

Kapittel 3. The fun starts

Eksamensbesvarelser i REA3015 Informasjonsteknologi 2

ELE610 Prosjekter i robotteknikk, vår 2017.

Transkript:

Teknisk dokumentasjon for Ludosphaera Av Gameguru ved Nikolas Ebbesberg, Silje Helene Lund, Vanessa Storøy Merine, Erik Nystad og Maria Løvland Johansson IN1060 - Vår 2019 Institutt for Informatikk Matematisk-Naturfaglige Fakultet Universitetet i Oslo

1. Mål for prosjektet Problemstillingen for prosjektet vårt var hvordan kan vi legge til rette for økt innlevelse, og skape en innbydende atmosfære under spillet?, da innlevelse og atmosfære er to av mange aspekter som påvirker spillopplevelsen under bordrollespill. Målet for prosjektet ble dermed å styrke disse aspektene, da vi håpet at dette ville adressere spillernes behov for lek og underholdning. Prototypen vår, Ludosphaera, bidrar til å nå dette målet ved at den gir muligheter for å bygge lydbilder og lage stemningslys, som er spesielt tilpassede til vår målgruppes bruksområde. Prototypen skal styres av Keeperen, da det er han som lager spillscenarioet, og leder spillerne gjennom historien. Resten av spillerne som deltar i spillscenarioet opplever selve effekten av lydbildene og stemningslyset som produseres, der disse effektene skal bidra til en innbydende atmosfære i rommet, samt at spillerne lever seg mer inn i spillhistorien. 2. Presentasjon av video Link til presentasjonsvideo av prototypen: https://bit.ly/2x35cpf Videoen starter med å gi en introduksjon til bordrollespillet Call of Cthulhu, og presenterer samtidig hvordan en typisk spillsetting kan se ut. Deretter presenteres prototypen vi har utformet som løsning til problemstillingen vår. Den består av en kontrollboks for lyd, en lyskule og et sett høyttalere. Kontrollboksen inneholder en mikrokontroller fra Arduino, et breadboard, tre potentiometere og tre RFID-lesere. Den brukes ved å legge på et RFID-kort med ønsket lydfil oppå boksen og deretter kontrollere volumet med hvert sitt potentiometer, mappet til riktig leser. Komponentene blir forsynt med strøm fra en laptop som, gjennom processing, spiller av lyden med høyttalerne. Lyskulen er LED-lampe med en tilhørende fjernkontroll som brukes til å skifte farge. Deretter viser videoen et bruksscenario, hvor vi ser hvordan Keeper tar både lyskulen og lydboksen i bruk og hvilken effekt det har på stemningen i rommet. Videoen viser all funksjonalitet vi har implementert i prototypen. 3. Teknisk dokumentasjon I denne delen vil vi først beskrive de ulike tekniske komponentene som ble brukt i prototypen. Deretter vil vi forklare og beskrive hvordan Arduino- og Processing-kodene er implementert. Avslutningsvis vil vi presentere tekniske utfordringer vi stod overfor, og deretter beskrive hvordan vi løste dem. 1

3.1 Komponenter Navn Antall Beskrivelse Arduino Uno 1 Mikrokontroller som leser analoge og digitale signaler fra RFID-lesere og potentiometre. Snakker med Processing gjennom Serial-kommunikasjon og USB-kabel. Processing 3 1 Programvare for å styre lydavspilling. Snakker med Arduino-en gjennom Serial-kommunikasjon og USB-kabel. Breadboard 1 Brett brukt til å koble ledninger, RFID-lesere og potentiometre til selve Arduino-en. RFID-leser 3 Lesere basert på Radio Frequency Identification (RFID)-teknologi. Brukes for å registrere og lese tilhørende RFID-kort. RFID-kort 13 Hvert RFID-kort er programmert med én unik ID, der hver ID er knyttet til en spesifikk lydfil i Processing. Når et kort leses av, spilles den tilhørende lydfilen. Potentiometer 10k Ω 3 Brukt for å styre lydnivået til hver fil som spilles av. Laptop 1 Brukt som strømkilde til kontrollboksen, samt for å kjøre Processing-programmet som styrte lydavspilling. USB-kabel 1 Koblet mellom Laptop og Arduino. Brukt for strømtilførsel, samt for å opprette kontakt mellom Arduino-en og Processing-programmet. Treboks 1 Boks brukt for å samle alle tekniske komponenter inni. RFID-kortene legges oppå boksen. RGB bordlampe med Fjernkontroll 2.1 lydsystem: to høyttalere og en subwoofer 1 Ferdig produkt kjøpt på Clas Ohlson. Fjernkontrollen kommuniserer med lampen gjennom IR-signaler. 1 Brukes for å spille av lyd. Høyttalerne plasseres i hver sin ende ved bordet det spilles rundt, og subwooferen plasseres på gulvet. AUX-kabel 1 Koblet mellom Laptop og 2.1 lydsystem. 2

3.2 Fritzing-diagram av løsning Diagrammet under viser hvordan de forskjellige RFID-leserne og potentiometrene er koblet til breadboardet og selve Arduino-en. 3.3 Forklaring av kode Link til Arduino-kode: https://bit.ly/2qxlyc0 Link til Processing-kode: https://bit.ly/2xiqqui I Processing-koden importerer vi processing.serial, processing.sound og java.util.map for å legge til rette for henholdsvis Serial-kommunikasjon, avspilling/kontrollering av lyd og bruk av HashMap. Vi bruker arduino-bibliotekene <MFRC522.h> som gjør at vi kan lese fra og skrive til RFID-kortene, og <SPI.h> som legger til rette for kommunikasjon mellom Arduino en og SPI-enheter, slik som RFID-lesere. For å 3

hente av ID-en til kortene har vi brukt (justert etter vårt behov) følgende kode fra Arduino s eksempelprogram for avlesing av RFID-kort: Serial. print (F( "Card UID:" )); for ( byte i = 0 ; i < mfrc522.uid. size ; i++) { Serial. print (mfrc522.uid.uidbyte[i] < 0x10? " 0" : " " ); Serial. print (mfrc522.uid.uidbyte[i], HEX); } Serial. println (); Løsningen baserer seg på Serial kommunikasjon mellom Arduino og Processing. For hver gang loop-metoden i Arduinoen kjøres printes det seks kommandoer til Serial-monitoren. Tre av meldingene forteller hvilket potentiometer den kommende verdien gjelder, og deretter den analoge verdien som blir lest av potentiometret (eks. "Pot1,104"). Tre meldinger forteller Processing RFID-en til hvert av kortene som leses av som enten en ",Stop" eller en ",Play"-kommando avhengig om kortet ligger på leseren eller nettopp er tatt av. Til slutt vises et tall som forteller hvilken RFID-leser kortet ligger på (eks. "8F 5D E4 29,Play,1"). Dersom det ikke er noe kort på leseren printes bare en verdi "ingen,ting", som forteller Processing at RFID-leserne venter på et kort. I Processing leses verdiene fra Serial-porten som Arduinoen er koblet på. Deretter hentes lydfilen til den tilhørende ID-en fra et HashMap og spilles av/stoppes. Til slutt leses volumet til et gitt potentiometer av og mappes til riktig verdi (fra 0-1023 til 0-1), og volumet på lydfilen blir satt til å være den nye verdien. I tillegg er det lagt til en grafisk representasjon av potentiometrene i Processing for å lettere kunne se om de oppfører seg slik de skal. Nærmere forklaringer av koden linje for linje er beskrevet som kommentarer i kodefilene lastet opp på GitHub. 3.4 Utfordringer En utfordring vi møtte på var at dersom RFID-lesere ble plassert for nært hverandre ble signalene fra RFID-kortene forstyrret, og dermed mistet signalet til den korrekte leseren. Ved å plassere RFID-leserne så langt unna hverandre som mulig inne i boksen fikk vi minimalisert denne effekten. En av de største utfordringene ved den tekniske implementasjonen var å finne en måte å spille av en spesifikk lydfil når det tilhørende RFID-kortet var nært en leser og deretter stoppe når kortet ble fjernet fra leseren. Dette 4

skulle i tillegg kunne gjøres på tre forskjellige RFID-lesere samtidig. Dette løste vi med bruk av millis() og et format på meldinger til serial-monitoren som fortalte hvilket RFID-kort som ble avlest, om det skulle spilles eller stoppes og hvilken RFID-leser kommandoen gjaldt. En annen stor utfordring var at Serial-kommunikasjonen var lite konsistent til tider, spesielt rett etter oppstart av programmet. Dette førte til at Processing av og til kunne stoppe og gi feilmeldinger, men deretter fungere fint under neste kjøring uten endringer i koden. Vi løste dette med en rekke if-tester og kasting av exceptions. Vi støtte også på problemer ved volumkontrollering: vi opplevde at potentiometeret som styrte volumet til en gitt lydfil kunne henge med når vi flyttet kortet til en ny leser, i stedet for at volumet ble styrt av potentiometeret til den nye leseren. Dette løste vi med å bruke tre variabler for filen som ble spilt av der og da (på en gitt leser) i stedet for et Array av disse som vi først hadde implementert. 5