Portefølje 3 IOT

Studerende : Mette Tanggaard Ohlsen, Ling Siu Chang & Natascha Denise Grønlie

Dropbox linkhttps://www.dropbox.com/sh/glldv1djm80sj6c/AACC5is3u0dQcQvfJ814dv52a?dl=0

Beskrivelse

Ideen med vores applikation er at vise, hvordan temperatur og sollys hænger sammen. Vi har forsøgt at illustrere dette ved at vise en isterning der smelter når temperaturen stiger. Dertil har vi lagt en blå baggrund ind på scenen som skal forestille himlen. Baggrundsfarven varierer fra mørkeblå til lyseblå afhængig af, hvor meget sollys der er. Vi har derfor benyttet to sensorer, en LDR-sensor og en temperatursensor. Isterningen reagerer på input fra temperatursensoren og baggrunden reagerer på input fra LDR-sensoren. Hvis LDR-sensoren modtager meget lys bliver baggrundsfarven lyseblå, og hvis der ikke er noget lys vil baggrunden være mørkeblå. Hvis temperatursensoren bliver varm vil isterningen begynde at smelte og blive til flydende vand. Dette kommer til at at ligne en vandpytte, og dens størrelse afhænger af temperatursensorens input. Hvis temperatursensoren bliver kold vil isterningen ændres tilbage til dens originale størrelse og vandpytten vil blive mindre. I applikationen vises værdierne for temperaturen og lyset øverst på venstre hjørne.

 

Foto af det fysisk system med skriftlig forklaring

 

Vi har valgt at bruge en LDR-sensor og temperatursensor. LDR-sensoren er valgt fordi den gør det muligt at ‘måle’ hvor meget lys der er på sensoren. Temperatursensoren er valgt da den gør det muligt at måle temperaturen. Vi har valgt at bruge dem sammen, da de begge vil blive påvirket af solen. Mere sollys giver større input fra LDR-sensoren, samtidig med at sollyset varmer temperatursensoren, så den ligeledes vil give et højere input.

 

Screendumps fra den kørende applikation

Input fra lyssensoren bliver vist i form af farven på baggrunden af isterningen, som skal illustrerer himlen. Dette gøres ved at mappe inputtet fra sensoren til en farve, og derefter opdatere farven på kameraets baggrund. Input fra temperatursensoren visualiseres i form af størrelsen på isterningen, og den vandpyt der er placeret under den. Størrelsen er baseret på temperaturen, gennem en udregning der sørger for at høje temperaturer resulterer i en mindre størrelse. Vandpyttens størrelse hænger direkte sammen med temperaturen. Derudover bliver både temperaturen og den mappede lysværdi skrevet på skærmen.

 

Video

 

Kodehighlights

void loop(){
  lightValue = analogRead(lightPin); 
  tempValue = analogRead(tempPin);

  lightValue = map(lightValue, 0, 1023, 0, 255); 
  Serial.print(lightValue);
  Serial.print(",");

  float millivolts = (tempValue / 1024.0) * 5000;
  float celsius = millivolts / 10; // sensor output is 10mV per degree Celsius
  Serial.println(celsius);

Kode fra vores loop funktion på Arduinoen. Den læser de analoge input fra vores LDR-resistor, og temperatursensor, fra lightPin og tempPin, som hhv. lightValue, og tempValue. Den mapper vores lightValue, så en målt værdi på 0 svarer til 0, og 1023 svarer til 255. derefter skriver den værdien til Serial porten (som bruges til at kommunikere mellem Arduinoen og en computer). Den sender efterfølgende et komma, som skal bruges til at skille værdierne af i Unity. TempValue omregnes til millivolt og derefter celsius, og skriver værdien til Serial porten.

SerialPort sp = new SerialPort("/dev/cu.usbmodem1421", 9600); //ændres til Arduinos

Koden fra vores behaviorScript, der definerer sp som vores serial port (her på en mac).

void Update () {
		if (!sp.IsOpen)
			sp.Open ();
		rawDataString =  sp.ReadLine();

		string[] dataInput =  rawDataString.Split(',');
		lightValue = float.Parse (dataInput [0]);
		Debug.Log (lightValue);
		tempValue = float.Parse (dataInput [1]);

I update funktionen, hvis serial porten ikke er åben åbner vi den. derefter læser vi ind, som en string, hvad der bliver skrevet til den fra Arduinoen (lightValue, celsius). Derefter deler vi den op i et array af strings, ved at splitte ved “,”. Vi parser index 0 i arrayet til en float kaldet lightValue, og index 1 til en float kaldet tempValue.

Leave a Reply