p-v-o-s / pioneer-valley-open-science.github.com

9 stars 2 forks source link

PVOS-K-12: Arduino-based Pressure and Temp Sensor Kit #8

Open dwblair opened 12 years ago

dwblair commented 12 years ago

Image

Background

Goal: Develop a cost effective device that can simultaneously measure pressure and temperature for use with a variety of high school science labs. The device should be able to function as a stand alone measurement tool for simple measurements and/or be able to connect to a computer to output data real-time data graphically while generating a .csv file for later analysis.

Prototype v0.01

An IMAGE of the first functional "proof-of-concept" device:

Brief description of capabilities for v0.01

Parts List v0.01 The links are ONLY SUGGESTIONS for purchasing materials and may not be ideal. The devices were wired using the manufacturer datasheets found at Digikey.

Main Components

Minor components

Code v0.01 Current Arduino code for v0.01 -- (DEPRECATED)

Future updates

dwblair commented 12 years ago

Amazing development: just found out that John Resig (who wrote processing.js) has created an entire intro to computer science course at Khan Academy based around the Processing language

mbockmann commented 12 years ago

If you're looking for an inexpensive waterproof temp probe, Craig and I had worked on a library for taking temp measurements with a thermistor. The example Arduino sketch is designed for a RSBR-302J-Z50 Teflon-Coated 3k Thermistor from Redfish sensors. I was going to use it for some projects related to homebrew, but I had also thought of taking it to show my highschool chemistry teacher who may find it interesting. I've been working on plotting the data in Python... but I have some interest in learning Processing. The library I mentioned is here: https://github.com/cversek/umass-physics/tree/c9e91d67d62d72875d9acaf70caf54b9843b3a4c/teis/arduino/ThermistorLib

dwblair commented 12 years ago

Matt -- I confess to thinking this is a great suggestion, in part b/c I'd already ordered precisely of the same Thermistor from Redfish, and was planning to use it for this project :) Great to hear you were thinking of talking to your high school chem teacher -- we should plan some demos / prototypes, and then maybe do a Kickstarter all together? I will check out the python library these next few days -- I'd like to work something up in Processing because of the connection to Khan Academy, but it'd be great to have a python option in parallel ...

dwblair commented 12 years ago

Tom Igoe's serial port library: http://tigoe.net/pcomp/serial-processing.shtml

dwblair commented 12 years ago

Fix for problem with native RXTX libraries on Mac OS: http://www.sundh.com/blog/2011/05/get-processing-and-arduino-to-talk/

dwblair commented 12 years ago

The fix I'm trying for the serial port: http://www.tonyivanov.se/posts/118

dwblair commented 12 years ago

Serial issues: http://wiki.processing.org/w/Serial_Issues

dwblair commented 12 years ago

Holy cow. On Ubunut, just needed to download the latest version of Processing.

dwblair commented 12 years ago

BOOM! Working.

dwblair commented 12 years ago

Nice tutorial: http://www.processing.org/discourse/beta/num_1254511350.html

dwblair commented 12 years ago

Working demo of Processing + pressure measurement! http://www.youtube.com/watch?v=18x_vbNHqf4&feature=youtu.be

dwblair commented 12 years ago

ATmega32u4 mcu

dwblair commented 11 years ago

Cheap little USB microSD reader: http://www.amazon.com/Kingston-microSDHC-Memory-Reader-FCR-MRG2/dp/B0028R3NCU/ref=pd_cp_e_3

tacrosby commented 11 years ago

Cheap pH meter http://www.flinnsci.com/store/Scripts/prodView.asp?idproduct=17142

Not sure how useful or cost effective it is at this point but some "cheap stuff" does exist

dwblair commented 11 years ago

Great! Looking forward to taking one of these apart :)

On Wed, Nov 7, 2012 at 8:55 PM, tacrosby notifications@github.com wrote:

Cheap pH meter http://www.flinnsci.com/store/Scripts/prodView.asp?idproduct=17142

Not sure how useful or cost effective it is at this point but some "cheap stuff" does exist

— Reply to this email directly or view it on GitHubhttps://github.com/Pioneer-Valley-Open-Science/pioneer-valley-open-science.github.com/issues/8#issuecomment-10173177.

voice / SMS: +1-651-252-4765 skype: dwingateb

dwblair commented 11 years ago

Nice hardware alternative to the Leonardo -- the "LeoStick" -- http://www.freetronics.com/products/leostick#.UJsp4TQaPtA

dwblair commented 11 years ago

Another neat kit from freetronics -- mobile sensing kit: http://www.freetronics.com/collections/all-products/products/mobsendat#.UJsq9zQaPtA

dwblair commented 11 years ago

include

include

// Calibration coeffs for RSBR-302J-Z50 Teflon-Coated 3k Thermistor

define A 3.3501

define B 0.5899

define C 0.0104

define R_25C 3000.0 /ohms/

define R_STANDARD 3224.0 /ohms/

define tempPin 0

define pressurePin 1

define Vin 5

Thermistor firstThermistor(A,B,C,R_25C,R_STANDARD);

int pointNum;

// initialize the library with the numbers of the interface pins LiquidCrystal lcd(7,8,9,10,11,12);

void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. //lcd.setCursor(0, 1); //lcd.print("[Recording]"); Serial1.begin(9600); // NOTE: for Leonardo, need to use "Serial1" if want to access TX and RX pins while (!Serial1) { ; // wait for serial port to connect. Needed for Leonardo only } firstThermistor.begin(tempPin); pointNum=0; }

void loop() {

double T = firstThermistor.readTemperature(); double pressureVout = (analogRead(pressurePin)/1024.)*Vin; double pressure = ((pressureVout/5.)+.04)/.004; // scaling in kPa from data sheet double P = pressure/101.325; // convert to atm

// print to the lcd lcd.setCursor(0, 0); lcd.print("# "); lcd.print(pointNum); //lcd.print(pointNum); lcd.setCursor(0,1); lcd.print(T); lcd.print(" C "); lcd.print(P); lcd.print(" Atm"); //lcd.print(T); delay(1000);

//print to USB port

Serial.print(pointNum); Serial.print(", "); Serial.print(T); Serial.print(", "); Serial.println(P);

//print to board Serial1.print(pointNum); Serial1.print(", "); Serial1.print(T); Serial1.print(", "); Serial1.println(P);

//increase pointNum pointNum=pointNum+1;

}

dwblair commented 11 years ago

Arduino Uno Ethernet: http://www.adafruit.com/products/418

and ethernet shield: http://www.adafruit.com/products/201

... both include a microSD slot!