IFD:PhysicalComp2011/Dianna Mertz: Difference between revisions

From Medien Wiki
mNo edit summary
No edit summary
Line 1: Line 1:
==In-Depth: Smart Containers==
==In-Depth: Smart Containers==


===Need===
===Concept===
Question: Is there enough flour and sugar at home to make a cake for your friend's birthday tomorrow? Or do you need to stop at the store on your way home?
Question: Is there enough flour and sugar at home to make a cake for your friend's birthday tomorrow? Or do you need to stop at the store on your way home?


===Concept===
Solution: Smart containers for your pantry — this way all you need to do is check your mobile device and you can see exactly how much flour and sugar you have at home. No need for unnecessary purchases or stops on the way home.
Containers for pantry bulk items that relay content levels to smart phone app in real time.
 
===Prototype===


===Equipment===
====Equipment====
* [[Arduino]]
* [[Arduino]]
* Sharp GP2D120XJ00F Analog Distance Sensor 4-30cm
* Sharp GP2D120XJ00F Analog Infrared Distance Sensor 4-30cm
* Container
* Container
* Computer
* Computer
* Mobile Device


===Prototype===
====Gallery====
(coming soon)
<br>
http://indepth.imorrison.webfactional.com/web/presentation/thumbs/Picture_1_thumb.jpg<br>
Short range (3 - 40 cm) infrared sensor fixed to container lid, container with flour, Arduino, computer, mobile device<br><br><br>
http://indepth.imorrison.webfactional.com/web/presentation/thumbs/Picture_0_thumb.jpg<br>
Short-range (3 - 40 cm) Infrared Distance Sensor and Arduino<br><br><br>
http://indepth.imorrison.webfactional.com/web/presentation/thumbs/Picture_2_thumb.jpg<br>
Shot of Arduino and Processing running with on-screen visualizer<br><br><br>
http://indepth.imorrison.webfactional.com/web/presentation/thumbs/Picture_3_thumb.jpg<br>
Shot of Arduino and Processing stopped and .tsv file opened to display the data produced<br><br><br>
http://indepth.imorrison.webfactional.com/web/presentation/icon_tablet_startup.jpg<br>
In-Depth icon<br><br><br>
http://indepth.imorrison.webfactional.com/web/presentation/thumbs/Picture_4_thumb.jpg
http://indepth.imorrison.webfactional.com/web/presentation/thumbs/Picture_5_thumb.jpg
http://indepth.imorrison.webfactional.com/web/presentation/thumbs/Picture_6_thumb.jpg <br>
In-Depth mobile device screen shots (vertical)<br><br><br>
http://indepth.imorrison.webfactional.com/web/presentation/thumbs/Picture_7_thumb.jpg<br>
In-Depth mobile device content levels visualizer (horizontal)<br><br>
 
====Videos====
 
<videoflash type=vimeo>36023409</videoflash>
<videoflash type=vimeo>36025703</videoflash>
 
====Web====
 
[http://indepth.imorrison.webfactional.com/ In-Depth: Smart Containers web site -- optimized for mobile device]
 
====Code====


===Code===
=====Arduino=====
====Arduino====
<source lang="java">
<source lang="java">
int sensePin = 1;  // infrared sensor to analog pin
int sensePin = 1;  // infrared sensor to analog pin
Line 34: Line 62:
</source>
</source>


====Processing====
=====Processing=====
<source lang="java">
<source lang="java">
Serial myPort; // variable for the serial
Serial myPort; // variable for the serial
Line 57: Line 85:
   fill(reVal); // fill the visualization with the rescaled incoming value
   fill(reVal); // fill the visualization with the rescaled incoming value
   rect(0,height - reVal,width,height); // draws rectangle of the incoming value
   rect(0,height - reVal,width,height); // draws rectangle of the incoming value
   println("Pasta:" +(reVal)+ " Rice:" + r+ " Bulgar:" + b+ " Quinoa:" + q+ " Oats:" + o ); // incoming value to be seen in console
   println("Flour:" +(reVal)+ " Sugar:" + r+ " Oats:" + b+ " Pasta:" + q+ " Millet" + o ); // incoming value to be seen in console
   PrintWriter output = createWriter("data/data.tsv"); // send info to external file
   PrintWriter output = createWriter("data/data.tsv"); // send info to external file
   output.println("Pasta:" +(reVal)+ " Rice:" + r+ " Bulgar:" + b+ " Quinoa:" + q+ " Oats:" + o ); // directs which information to be written to new file
   output.println("Flour:" +(reVal)+ " Sugar:" + r+ " Oats:" + b+ " Pasta:" + q+ " Millet:" + o ); // directs which information to be written to new file
   output.flush(); // write the info
   output.flush(); // write the info
}
}
</source>
</source>


====PHP====
=====PHP=====
(Uploads data to web)
(Gets the data from an automatically uploaded file from desktop)
<source lang="php">
<source lang="php">
  <?php  
  <?php  
Line 76: Line 104:
?>  
?>  
</source>
</source>
===Final Product Design===
(Forthcoming)


===References===
===References===
[http://cdn.bitrebels.netdna-cdn.com/wp-content/uploads/2011/09/Internet-Of-Things-By-Intel-1.jpg The Internet of Things Infographic]<br>
[http://www.sparkfun.com/datasheets/Sensors/Infrared/GP2D120XJ00F_SS.pdf Reference for Sharp GP2D120XJ00F Analog Distance Sensor 4-30cm] <br>
[http://www.sparkfun.com/datasheets/Sensors/Infrared/GP2D120XJ00F_SS.pdf Reference for Sharp GP2D120XJ00F Analog Distance Sensor 4-30cm] <br>
[http://luckylarry.co.uk/arduino-projects/arduino-using-a-sharp-ir-sensor-for-distance-calculation/ Arduino – Using a Sharp IR Sensor for Distance Calculation] <br>
[http://luckylarry.co.uk/arduino-projects/arduino-using-a-sharp-ir-sensor-for-distance-calculation/ Arduino – Using a Sharp IR Sensor for Distance Calculation] <br>
[http://www.ibm.com/developerworks/library/os-php-readfiles/ The Right Way to Read Files with PHP]
[http://www.uni-weimar.de/medien/wiki/IFD:PhysicalComp2011/code#28.11.2011_Arduino_.26_Processing_sketches Frederic Gmeiner's Potentiometer Code]<br>
[http://www.ibm.com/developerworks/library/os-php-readfiles/ The Right Way to Read Files with PHP]<br>
[http://www.sencha.com/products/touch/charts Sencha Touch Charts]<br>
[http://blog.cocoia.com/2010/iphone-4-icon-psd-file/ iPhone 4 PSD template]<br>

Revision as of 18:11, 1 February 2012

In-Depth: Smart Containers

Concept

Question: Is there enough flour and sugar at home to make a cake for your friend's birthday tomorrow? Or do you need to stop at the store on your way home?

Solution: Smart containers for your pantry — this way all you need to do is check your mobile device and you can see exactly how much flour and sugar you have at home. No need for unnecessary purchases or stops on the way home.

Prototype

Equipment

  • Arduino
  • Sharp GP2D120XJ00F Analog Infrared Distance Sensor 4-30cm
  • Container
  • Computer
  • Mobile Device

Gallery


Picture_1_thumb.jpg
Short range (3 - 40 cm) infrared sensor fixed to container lid, container with flour, Arduino, computer, mobile device


Picture_0_thumb.jpg
Short-range (3 - 40 cm) Infrared Distance Sensor and Arduino


Picture_2_thumb.jpg
Shot of Arduino and Processing running with on-screen visualizer


Picture_3_thumb.jpg
Shot of Arduino and Processing stopped and .tsv file opened to display the data produced


icon_tablet_startup.jpg
In-Depth icon


Picture_4_thumb.jpg Picture_5_thumb.jpg Picture_6_thumb.jpg
In-Depth mobile device screen shots (vertical)


Picture_7_thumb.jpg
In-Depth mobile device content levels visualizer (horizontal)

Videos

<videoflash type=vimeo>36023409</videoflash> <videoflash type=vimeo>36025703</videoflash>

Web

In-Depth: Smart Containers web site -- optimized for mobile device

Code

Arduino
int sensePin = 1;   // infrared sensor to analog pin
int value;     // value coming from the sensor

void setup() {
  Serial.begin(9600); // start the serial port                          
}

void loop() {
  int value = analogRead(sensePin); // current value of the sensor
  byte scaledVal = map(value, 0, 600, 0, 255); // rescale to send as one byte     
  Serial.write(scaledVal);  //print the distance
  delay(100);  // arbitrary wait time
}
Processing
Serial myPort; // variable for the serial
import processing.serial.*; // reads information coming in through the server via Arduino
int incomingVal; // incoming number value
int r; // example
int b; // example
int q; // example
int o; // example 
 
void setup(){
  size(255,255); // visualization window size
  myPort = new Serial(this,"/dev/tty.usbmodem411",9600); // my Arduino port
}
 
void draw(){
  background(0); // background black for visualization
  while(myPort.available() > 0){
    incomingVal = myPort.read(); // while new data coming in from Arduino, store in variable
  }
  float reVal =map(incomingVal, 51, 255, 0, 255); // rescale the incoming value to the depth of the container
  fill(reVal); // fill the visualization with the rescaled incoming value
  rect(0,height - reVal,width,height); // draws rectangle of the incoming value
  println("Flour:" +(reVal)+ " Sugar:" + r+ " Oats:" + b+ " Pasta:" + q+ " Millet" + o ); // incoming value to be seen in console
  PrintWriter output = createWriter("data/data.tsv"); // send info to external file
  output.println("Flour:" +(reVal)+ " Sugar:" + r+ " Oats:" + b+ " Pasta:" + q+ " Millet:" + o ); // directs which information to be written to new file
  output.flush(); // write the info
}
PHP

(Gets the data from an automatically uploaded file from desktop)

 <?php 
$file_handle = fopen("data.tsv", "r");
while (!feof($file_handle)) {
   $line = fgets($file_handle);
   echo $line;
}
fclose($file_handle);
?>

Final Product Design

(Forthcoming)

References

The Internet of Things Infographic
Reference for Sharp GP2D120XJ00F Analog Distance Sensor 4-30cm
Arduino – Using a Sharp IR Sensor for Distance Calculation
Frederic Gmeiner's Potentiometer Code
The Right Way to Read Files with PHP
Sencha Touch Charts
iPhone 4 PSD template