Measure: Difference between revisions

From OLPC
Jump to navigation Jump to search
(→‎Construction Details: flesh out with the idea of casting/molding. this would need some detail work but is a really interesting way to make "blocks" that are quasi-hermetic)
 
(149 intermediate revisions by 23 users not shown)
Line 1: Line 1:
{{Activity migrated to sl.o
| download=http://activities.sugarlabs.org/en-US/sugar/addon/4197
| git=http://git.sugarlabs.org/projects/measure
}}
{{Olpcboxtop|toptext=[[{{PAGENAME}}|Measure]]}}
{{Olpcboxtop|toptext=[[{{PAGENAME}}|Measure]]}}
{{ OBX activity |[[Image:Activity-measure.svg]]|bundled<!--|{{{text}}}--> }}
{{ OBX activity |[[Image:Activity-measure.svg]]|bundled<!--|{{{text}}}--> }}
Line 4: Line 8:
{{ OBX test |[[Tests/Measure|Measure]]<!--|2007-09-18--> }}
{{ OBX test |[[Tests/Measure|Measure]]<!--|2007-09-18--> }}
{{ OBX devtickets |measure-activity}}
{{ OBX devtickets |measure-activity}}
{{ OBX SL_devtickets |Measure}}
{{ OBX pootle|1=http://dev.laptop.org/git?p=projects/measure;a=blob_plain;f=po/Measure.pot;hb=HEAD|2=xobundled}}
{{ OBX pootle|1=http://dev.laptop.org/git?p=projects/measure;a=blob_plain;f=po/Measure.pot;hb=HEAD|2=xobundled}}
{{ OBX xobundle|http://dev.laptop.org/~arjs/Measure-14.xo|measure v14}}
{{ OBX xobundle|http://dev.laptop.org/~arjs/Measure-21.xo|measure v21}}
{{ OBX team |Adviser: [[User:Walter|Walter]], Core Development: [[User:arjs|Arjun]], Contributor(s): Cody Lodrige (drawing code optimization), Nathalia (translations)}}
{{ OBX team |Adviser: [[User:Walter|Walter]], Core Development: [[User:arjs|Arjun]], Contributor(s): Cody Lodrige (drawing code optimization), Eben Eliason (UI Design)}}
<small>see more [[:Category:OBX templates|templates]] or [[OBX proposals|propose new]]</small>
<small>see more [[:Category:OBX templates|templates]] or [[OBX proposals|propose new]]</small>
{{Olpcboxbottom}}
{{Olpcboxbottom}}


== '''SAFETY FIRST!''' ==
[[Image:Warning -- Read and Understand these Warnings and Cautions.png|left|800px]]


==What is the Measure Activity ? (Introduction)==

[[Image:Cautionary warning -- Electrocution.png|left|150px]]
'''* WARNING: ELECTRICITY CAN KILL. RISK OF ELECTROCUTION''': ''DO NOT, UNDER ANY CIRCUMSTANCES, APPLY AC LINE VOLTAGES FROM A WALL OUTLET OR MOTOR-GENERATOR OR OTHER POWER SUPPLY (E.G. CONVERTER OR INVERTER) INTO THE MICROPHONE INPUT, THE SPEAKER OUTPUT, OR ANY USB PORT.''

:::* Make measurements of AC line voltages with the proper equipment only -- for example, a multimeter designed for the purpose. The laptop is not a multimeter.

[[Image:Caution -- Read and Understand These Instructions.png|left|75px]]

* '''Read the following article'''. If you don't know what you are doing or are unsure, don't do it. Electricity can be dangerous.

[[Image:Cautionary warning -- Explosion and Fire.png|left|150px]]
'''* CAUTION: RISK OF BURNS, FIRE or EXPLOSION''': Even a AAA battery stores enough energy to cause '''burns''', and it may cause '''equipment damage''' if applied directly to the microphone input. If a 9 volt battery carried in a pocket makes contact with coins it will cause '''burns''', and it ''will'' cause '''equiment damage''' if it is applied directly to the microphone input. Higher-power sources present increased risk of '''burns, fire, explosion and electrocution''', the nature of which is unpredictable.


[[Image:Cautionary warning -- Caution.png|left|50px]]
'''* CAUTION: RISK OF EQUIPMENT DAMAGE.''' ''DO NOT, UNDER ANY CIRCUMSTANCES, EXCEED THE INPUT AND OUTPUT SPECIFICATIONS; DAMAGE OR DESTRUCTION OF THE EQUIPMENT WILL RESULT.

== Introduction ==
Children learn by doing things. It is said "Give the child a hammer, and the world are his nails".

This activity is a tool that allows kids to express their curiosity. It is a tool that allows kids to explore and learn by doing, by connecting and observing, span physical phenomena and real world events. Kids would learn by recording and observing the physical phenomena and by connecting their observations to a previously learned concept, or even better - learn the concept based on the experiments and observation. This activity enables children to measure DC and AC voltages by observing them on an oscilloscope-like interface, to watch waveforms in a frequency domain (spectrum analyzer), logging data at a specified time interval and drawing the graph of logged data.

== Elements of the Measure activity ==

* There is a 1150 X 800 pixels window in which one sees the waveform. There is a light Grey colored grid in the background which is like the scale.
* ''Measure Toolbar'' which allows one to switch between AC and DC modes, Toggle Bias Voltage On/Off, View waveform in time domain or frequency domain, Select frequency range display, and be able to pause waveform on the screen.
* ''A Log Toolbar'' which allows one to select the data logging interval, start and stop the logging, display the log

==Screen shots of Measure Activity==


{|
{|
|-
|[[Image:Measure_1.png|left|thumb|200px|Signal in time domain]]
|[[image:Measure_1.png|thumb|200px|Measure Activity on the XO]]
|
|[[Image:Measure_3.png|left|thumb|200px|Signal in frequency domain]]
|[[image:Measure_tut_1_24.jpg|thumb|200px|Analog Input port on the XO (in pink)]]
|
|[[Image:Measure_4.png|left|thumb|200px|Displaying result of a logging session]]
|
|[[Image:Ver_14.png|left|thumb|200px|Version 14 of Activity]]

|}
|}


The Measure Activity is a tool on the XO that allows kids to indulge in "learning by doing". It provides an interface for the kids to connect with the physical world and an opportunity to view and understand through a visual and statistical representation of the physical phenomena.
== A short video ==


Using the Measure Activity on the XO, one can:
<youtube>FE1ufEIXLVo</youtube>


* Connect sensors (light, heat, magnetic field etc) and view their signal. Thus it is possible to view and study physical phenomena
* Input voltages and signals into the XO laptop and use it as an oscilloscope and
* Log data at a specified interval and store and retrieve waveforms


==Learning Activities==
This video is of Release Version 8 of the Activity. The latest release features an improved UI and few more features.


Children learn by doing things. It is said "Give a child a hammer, and the world becomes his nails."
This activity is a tool that allows kids to express their curiosity. It is a tool that allows kids to explore and learn by doing, by connecting and observing, span physical phenomena and real world events.


See the [[Measure/Projects|projects]] page for detailed instructions on a few projects. Also see the [[Measure/Hardware|hardware]] page for other ideas.
== Measure Activity activities ==


==Projects and Activities Index==
All these activities in some way involve transducers. A '''transducer''' is a mechanism that converts a physical event -- motion of atoms in a gas or liquid or solid (heat), air-pressure waves (sound), photons hitting a surface (light), vibration of a wire, etc. -- into an electrical signal suitable for measurement by an "apparatus".
:Example: Our inner ears serve both as sound- and balance-transducers for our brain. Each tiny hair in the cochlea has its own ''resonant frequency''. When presented with a sound at its given frequency the hair vibrates; this motion causes the hair to transmit an electro-chemical "wave" on a neuron to the brain. Balance-signals come from the three ''semicircular canals'' that also have hairs that move in response to the position of our head. While electricity moves in a wire differently than does the electro-chemical "wave" in a neuron, the fact that electricity is involved in both cases emphasizes its biological and practical importance.
===Projects and Activities Index===
[[User:Ndoiron/Out_Of_The_Box#Measure_Lessons|Measure Lesson ideas]] from Nick Doiron and others, from work in Uganda, Uruguay and Haiti:


* '''Record neurons from insects''' [[Projects/SpikerBox]]. The Spikerbox allows you to record neural activity from insects to learn how the brain works.
# Record animal sounds , for example, sounds of birds and observe their waveforms. Which of these are high frequency sounds, which are the low frequency ones ? Adjust the frequency sliders accordingly.
* '''Measure and record temperature''' [[Measure/Projects/Measure Temperature]]
# Whistle into the mic and compare the loudness and frequency of whistles by observing the waveforms.
* '''Build an oscilloscope probe''' [[Measure/Projects/Oscilloscope probe]]. Build a laptop-protective probe that allows you to measure voltages up to 24 VAC (40 volts peak) without damaging the laptop.
# Turn the sensitivity slider up to the maximum and observe ambient noise - in a quiet room , near a noisy road
* '''Build a lighted graticule''' [[Measure/Projects/Lighted Graticule]]. Together with the oscilloscope probe, the graticule calibrates the screen in the following ranges: 0.5 volt per division, 0.1 volt per division or 0.010 volts per division, where a "division" appears as a lighted line on the graticule. The "zero" is adjustable up and down over the entire screen.
# Measure the voltage of an AA size pencil cell. What settings do you use ? AC or DC ?
* '''Explore magnets and coils of wire''': [[Measure/Activities/Magnets and Wire]]. For the basics all you need is a couple little cylindrical magnets, a couple plastic sewing bobbins, some (ie.. 100 feet of 30 AWG) magnet wire, glue, tape and a couple paper cups. This also includes the following additional activities:
# Measure resistance of water , other liquids
:* '''Build your own microphone and speaker''': (the speaker requires a 1:100 amplifier+driver circuit).
# Log temperature using a temperature sensor at one hour intervals. When in the day is it the hottest ? The coldest ?
:* '''Build your own telephone''' (requires two magnets+coils, the amplifier, and a "driver" circuit).
# Some very interesting sensor ideas given by Arnans Roger , see - http://padthai.media.mit.edu:8080/cocoon/gogosite/documentation/makingSensors.xsp?lang=en
:* '''Build a guitar "pick-up probe"''' Requires a 0.25 inch magnet (it fits nicely inside the coil) to convert a guitar-wire's vibrations into voltage that you can see on the laptop -- see the harmonics etc.
:* '''Build a tuning fork oscillator''': Build a steel tuning-fork, stick a magnet on each of its two tines, and then use the microphone probe to see its sinewave vibrations. Explore feedback (requires the 1:100 amplifier+driver circuit) to make your tuning fork hum at its natural frquency. Explore resonance (requires the signal generator -- see below). Careful design results in a useable frequency reference for other experiments.
*'''Build a signal-generator''': [[Measure/Projects/Signal-Generator]]. Describes the design of a voltage-to-frequency converter with better than 1% accuracy between 0 and 2000 Hz (0 to 2.000 volts). Together with a frequency-counter project (see below), the signal generator can double as a digital voltmeter. This, or a commercial equivalent, is necessary for a number of interesting activities.
*'''Build an ammeter:''' [[Measure/Projects/Ammeter]]. An '''ammeter''' or "amp(ere)-meter" measures electrical current (flow of electrons). A speaker coil, a magnetic compass, a 1000 ohm resistor and 5 volts from the laptop readily demostrate that (electro-)magnetism -- electrons moving in a coil of wire -- can cause motion. This experiment pursues the observation. With a magnet and a homemade -- but very-sensitive, balance-beam scale (made from the same 1/8 inch diameter steel rod used to build the tuning forks) -- I've detected (not measured) electric currents as low as 50 one-millionth of an ampere. The balance-beam scale's design is the fussy part, a more-suitable design is TBD.
:*'''Build a weight-measuring scale:''' The first step is a suitable balance beam scale with one side being pulled by the magnet+coil to "null" out weight in a pan on the other side. We then measure the "amps" required to null the weight.
*'''Build a length-transducer''':[[Measure/Projects/Length transducer]]. The simplest transducer for measuring length -- distance between two points in a straight line -- is a resistive "slider potentiometer". Although more complex this activity is more interesting because it reinforces the notions of electromagnetism.
:* '''Part I: Build a transformer''': Transformers can protect us from electrocution -- but they only work with alternating electricity (AC). They move, and change the voltage of, AC electrical energy without the input and output wires being in "galvanic" or direct physical contact. To build a "transformer" requires two pickup probes (coils of wire), an oscillator plus the driver/amplifier. The bottom-most coil serves as the driver (the input) and the top coil is the pickup (the output). What happens when the driving frequency changes?
::* Teaching point -- transformers and steel: Transformers work better when iron (steel) is inside the coils. Move the steel rod up and down inside the two coils and watch the "induced voltage" change on the screen.
::* Interesting teaching point about permanent magnets: A string of permanent magnets won't work as the "steel rod". Why? Because all the iron, cobalt etc atoms are lined up stiffly and can't be made to move by the teensy electrical field "induced" by the signal generator.
:* '''Part II: Build an LVDT (length-measuring device):''' Although the basic principle is shown with the moving-steel-rod experiment above, this experiment makes a better demonstration. This requires a third coil to be placed top-most in a stack of three coils with the driver coil in the middle, plus an appropriate hookup of the bottom and top coils "in series". The output can be seen on the screen to change dramatically with the location of the steel rod inside the three coils.
::* Can the LVDT be used together with a ''4th'' coil to build an ammeter? TBD.
* '''Build a (frequency-) counter:''' [[Measure/Projects/Frequency counter]]. This project can be used with the other projects and also -- together with the voltage-to-frequency oscillator -- serve as a voltmeter. It comes in two parts:
:*'''Build a 1-second "time base":''' Digital watches contain tiny crystal tuning forks -- remarkably inexpensive at $0.30 in single units -- that vibrate at at 32,768 Hz (cycles per second). With one of these and a couple inexpensive integrated circuits we can build a 1-second "time base". From the time base we derive "zero-the-counter" and "load-the-counts-to-the-display" pulses required by the event-counter.
:*'''Build an event-counter:''' A preliminary design uses four divide-by-ten counters (CD40110BE), four resistor arrays and four 7-segment LED to display accumulated counts -- over the one-second interval-- ranging from 0000 to 9999. (I have not found an inexpensive (e.g. less than $5.00) way of doing this -- exact design TBD).
* '''Build a "port-expander":''' [[Measure/Projects/Port expander]]. There aren't enough USB ports on the laptop to supply +5 volts to all the various projects described above. Also the heavy current draw of the 100:1 amplifer/driver can interfere with the other devices. A simple port expander can solve this problem (design TBD).


Some threads for interesting learning experiments are below -


# Record animal sounds, for example, sounds of birds and observe their waveforms. Which of these are high frequency sounds, which are the low frequency ones? Adjust the frequency sliders accordingly.
(Ideas 1 and 2 given by Erik Blankenship)
# Whistle into the microphone and compare the loudness and frequency of whistles by observing the waveforms.
# Get two people to try to whistle the same note, and look into Beat Frequencies.
# Turn the sensitivity slider up to the maximum and observe ambient noise - in a quiet room, near a noisy road.
# Measure the voltage of an AA size pencil cell. What settings do you use? AC or DC?
# Measure resistance of water, other liquids
# Log temperature using a temperature sensor at one hour intervals. When in the day is it the hottest? The coldest?
# Some very interesting sensor ideas given by Arnans Roger, see - http://padthai.media.mit.edu:8080/cocoon/gogosite/documentation/makingSensors.xsp?lang=en


==='''How to build low cost sensors'''===
== Downloading and running the activity on the XO ==


* '''Specifications:'''


{| class="wikitable"
The link for the latest version of the activity is http://dev.laptop.org/~arjs/Measure-11.xo . Other previous versions
|-
can be found at http://dev.laptop.org/~arjs/
! Name
! Description
! Vendor
! Reference
|-
| [[Image:Switch 04.JPG‎‎‎|thumb|center|200px|Switch]]
| Switch lever spdt 3A PCB
| http://www.digikey.com
| SW773-ND
|-
| [[Image:Thermistor 04.jpg‎‎|thumb|center|200px|Temperature]]
| Thermisor NTC 10K OHM 5%
| http://www.digikey.com
| 317-1258-ND
|-
| [[Image:Light sensor 03.jpg‎|thumb|center|200px|Light]]
| Photocell 5K-20K OHM 4.20 MM
| http://www.digikey.com
| PDV-P9203-ND
|-
| [[Image:Magnetic sensor 04.jpg‎|thumb|center|200px|Magnetic switch(1)]]
| Switch Reed 10-15AT SPST .5A
| http://www.digikey.com
| 420-1047-ND
|-
| Magnetic switch(2)
| Switch Reed SPST .5A 12-23 A/T
| http://www.digikey.com
| HE502-ND
|-
| [[Image:Humidity 04.JPG‎|thumb|center|200px|Humidity sensor]]
| Consists of a metal electrode on a humidity sensitive membrane mounted on a ceramic substrate
| http://www.rhopointcomponents.com
| SYH-1NC
|}


* '''Instructions in English:'''
:[[Making a Switch Sensor]]
:[[Making a Light Sensor]]
:[[Making a Humidity Sensor]]
:[[Making a Magnetic Sensor]]
:[[Making a Thermistor]]


==Downloading the Activity==
To install the .xo bundle, in the sugar shell (do not do this as root) type
Please visit the [[Measure/Download|download]] page to download the latest stable and unstable releases of the Activity.


==Kids guide to Measure==
sugar-install-bundle <path>/Measure-11.xo
==Teachers guide to Measure==
*[http://cnx.org/content/m13512/latest/ Talking about Sound and Music]. This content could make an excellent teaching supplement to Measure. Explains acoustic concepts.
*[http://cnx.org/content/m13246/latest/ Acoustics for Music Theory], another possibly useful teaching supplement.


==Hacker's guide to Measure==


===[[Measure/Start| Getting started]]===
''Activity has been found running well on build 575 and higher. Since it is a CPU intensive activity, it works best on B3 and B4 machines. Also pre-B4 machines might not fully support the DC mode.''


== Measure Projects ==
==Measure Temperature==


See also [[:Category:XO sensors]] for instructions on making other kinds of sensors.
# A low cost (possibly $2) probe that would increase the range of voltage that can be applied to the input.
# An ultrasonic distance measurement system that connects to the XO and allows the XO to log data. This has immense applications in water level monitoring in villages and also in robotics applications.
# A general purpose hardware kit that interacts with the measure activity. Something on similar lines to http://www.create.ucsb.edu/~dano/CUI/
# Sensors could be distributed along with the XO as peripherals. The advantage of this would be that the measure activity can be calibrated against the known specs of the sensors.
# Being able to measure resistance
# A low cost version of LEGO mindstorms system built around the XO. The XO has good hardware and software capabilities to achieve this.
# RS232 or serial interface would allow a host of electronic devices to interact and communicate with the XO.
# Build a sensor network using a sensor connected to each XO and utilize the mesh networking capability of the XO. This would give us a highly powerful, robust and reconfigurable sensor network.
# Build medical applications using sensors and the XO. See [[TeleHealth_Module]]
# Do some Fablab projects using the XO. See http://fab.cba.mit.edu/labs/vigyan/
# Collaborative music creation over the mesh using the music software on the XOs and giving input from an array of different sensors.
# Integrate sensor input into LOGO / Turtle activity
# Milk purity in rural areas. I remember reading about it in some FabLab's website - I think it requires an ADC, which we have.
# [[Measure_/_Oscilloscope#Temperature_monitoring_system|Temperature Monitoring and Logging]]
# [[Measure_/_Oscilloscope#Intrusion_Alarm_system|Intrusion Alarm System]]


===Construction===
== Hardware details ==
See [[Making XO sensors/Making a Temperature Sensor]] for detailed construction instructions.
The Analog Devices [http://www.datasheetcatalog.com/datasheets_pdf/A/D/1/8/AD1888.shtml AD1888] sound chip has the ability to sample DC voltages. Experimentally it has been found out that the range is fairly linear, however the range that it can sample is restricted to 0.3V - 1.9V , with all the internal gains turned to the minimum.


===Operation and measurement===
The XO hardware has been designed to facilitate measurement of DC voltages by the addition of an electronic switch that can be controlled via a setting on the Alsa mixer called 'Analog Input' . The high pass filter can also be turned on/off by a setting 'High Pass Filter' in Alsamixer. The ability to control V_REFOUT (bias voltage) is also available and is done by the control 'V_REFOUT' in alsamixer.


'''Please download the Activity from the link title "For LM35" from the unstable branch by going to the [[Measure/Download|downloads]] page. This release is a pre-calibrated version for using with this temperature sensor.''''


All the above settings are being handled in the activity by using an os.system("amixer <control name> <mute/unmute>")


[[Image:LM35.png|thumb|center|300px|This is what your temperature measurement would look like]]
=== Input specifications ===


[[Image:Img_3842.jpg|thumb|center|300px|Measuring temperature of water]]
[[Image:Cautionary warning -- Electrocution.png|left|150px]]
'''* WARNING: ELECTRICITY CAN KILL'''. '''RISK OF ELECTROCUTION''': ''DO NOT, UNDER ANY CIRCUMSTANCES, APPLY AC LINE VOLTAGES FROM A WALL OUTLET OR MOTOR-GENERATOR OR OTHER POWER SUPPLY (E.G. CONVERTER OR INVERTER) INTO THE MICROPHONE INPUT, THE SPEAKER OUTPUT, OR ANY USB PORT.''
:::*''There is a risk of electric shock resulting in death if the XO is used to measure mains voltage by direct connection. The audio input components are not designed for this. Dangerous voltages applied to the audio input may also be emitted on audio output, USB connectors, or the DC power input jack.''


==$2 USB I/O and sensor board==
[[Image:Cautionary warning -- Caution.png|left|50px]]
'''* CAUTION: RISK OF EQUIPMENT DAMAGE.''' ''DO NOT, UNDER ANY CIRCUMSTANCES, EXCEED THE INPUT AND OUTPUT SPECIFICATIONS; DAMAGE OR DESTRUCTION OF THE EQUIPMENT WILL RESULT
::::'''* -0.5 to +5.0 volts ABSOLUTE MAXIMUM input voltage.
::::'''* DO NOT REVERSE VOLTAGE:''' EVEN 1.5 volt BATTERY VOLTAGE IMPROPERLY APPLIED MAY DAMAGE LAPTOP''
:::::''* The extent of the damage is not easily predictable.''


[[Image:Sensor_Laptop_Wide.JPG |thumb|center|Low Cost USB Sensor board|300px]]
[[Image:Cautionary warning -- Caution.png|left|50px]]
'''* CAUTION: RISK OF EQUIPMENT DAMAGE AND/OR DEGRADED EQUIPMENT PERFORMANCE.''' ''DO NOT EXCEED THE OUTPUT-CURRENT SPECIFICATIONS OF THE USB PORTS. The extent of the damage is not easily predictable.''


See Edward Baafi's low cost USB sensor board [[USB_Sensor|here]]


==Learning activities==
The following specifications are based on terminal measurements of a G1G1 laptop and examination of the AD1888's specification sheet. ''Please correct them where necessary'':


==Sensor Input into Turtle Art==
[[Image:OLPC input jack.png|right|300px]]


[[Turtle_Art|Turtle Art]] is an abstraction. By allowing sensors to control various aspects of motion of the Turtle, one is enabling kids to connect with their physical world and bring that connection into the abstraction that Turtle Art represents
'''Specifications: Microphone input''' (red, standard audio jack):
* Monaural only: 3.5mm (1/8 inch) audio jack input (Note 0) (white jack of a stereo splitter)
:* Insertion of the audio jack routes external input to the A-to-D converter and disables the OLPC's speakers
:* Red jack of stereo splitter is open-circuited (i.e. not connected) [??]
* Absolute maximum input voltages: -0.5 volts, +5.0 volts ('''''CAUTION: ''Exceeding these voltages will damage the laptop'''''. See Note 1)
* Input impedance with BIAS OFF: approx 1100 ohms (Note 2)
* Input-DC offset voltage: (Note 3) +1.178 +/- ?? volts
* Range of DC amplification: TBD
* Range of AC amplification: TBD


I've integrated sensor support into Turtle Art. This basically allows one to add a "Sensor Input" block into Turtle Art. One can thereby control any aspect of the Turtle's motion depending upon the value of the sensor. When no sensor is connected, the default input is taken from the Mic.
''Note 0'': A solderable connector is the Radio Shack 274-286 "Mono 1/8" Phone Plug" with solder terminals and screw-on housing. A possible stereo connector is the similar Radio Shack 274-284 1/" Stereo Phone Plug" with solder terminals and screw-on housing. Only 1 of the two input-terminals of the stereo connector is available for input. The cost of the Radio Shack Mono plug is $2.99 US for quantity two plugs; cost of the Stereo plug is $3.99 US for quantity two plugs (neither are gold-plated). Other sources for resistors, wire, solder, naked USB and audio jack-connectors, "ball clips" (probes) etc can be found at www.mouser.com and www.digikey.com. Quantity pricing (e.g. Kobiconn plugs, 3.5mm MONO Mouser Part Number 171-PA-3191-1-E) is much reduced compared to the Radio Shack pricing (e.g. $0.71 USD single unit, $0.45 USD at quantity 100).
::Use insulated wire. To reduce electrical noise twist the attached wires approximately 1 twist per inch (1 twist per 2.5 cm).


'''''The code is in the git repository of Measure (look for the TurtleArt.activity folder)'''''
''Note 1'': Measured between the center conductor and the shield (ground, i.e. +0 volts). When an input voltage is greater than +5.0 volts or less than -0.5 volts the input-protection circuitry draws currents greater than 100 milliamperes and will damage the laptop. Also, the AD1888 codec's absolute maximum voltage (given a 5.0 volts supply) is -0.3 volts to +6.3 volts.
: This is weird. Talk to [[user:arjs|Arjun]] about fixing this so that it's merged into Turtle Art proper.


===Screen shots===
:: You must use input protection resistors and voltage divider if voltages greater than +5 volts will be applied. Resistors and a fast-blow fuse are recommended. Resistors should be present in both the ground circuit and the signal circuit, and this may introduce noise. A better circuit is a high-impedance differential-input amplifier. Recommended circuit TBD: see Note 3.
[[Image:Measure_turtle1.png|thumb|200px|center|The turtle that moves in proportion to sensor input. Increasing the temperature made it move in larger squares]]
[[Image:TA_sensors_learning_workshop.png|thumb|200px|center|Program made during learning workshop at OLPC by Adrian and other participants (11th - 14th Feb) to log sensor values at an interval of five seconds]]
[[Image:Measure_turtle2.jpg|thumb|200px|center|For demonstration, heating the temperature sensor. This caused the Turtle to move larger distances]]


===Try it out!===
''Note 2'': With BIAS ''ON'', measurements indicate a back-bias of +0.785 volts exists at the input. With BIAS ''OFF'' +0.020 volts (20mv) is present at the input. The BIAS voltage's effective source impedance seems to be approx 790 ohms. Any circuit that is to drive into the input (see Note 3) should do so with the BIAS ''OFF'' and have low-enough source impedance to sink and source into the 1100 ohm input adequately.
If you wish to try out Turtle Art with sensors, please click [[Measure/Turtle|here]] to go the download and usage guidelines page.


===Work remaining===
''Note 3'': This is the DC injection-voltage necessary to move the trace from the botton to into the center screen.
* Input based on the frequency of signal. This would allow whistling at a higher frequency give a higher input
:: A recommended protection circuit would be a differential amplifier (e.g. a single-operational-amplifier circuit that uses one half of an LM224 amplifier can process ground +0 volts as a possible input. Reversals of 1.5 volt cell battery voltages etc can then displayed. With a proper design ( e.g. a potentiometer-adjustable input-offset derived from a +1.25 volt bandgap reference and the second operational amplifier configured as a 2:1 amplifier) the input between the differential amplifier's inputs would match the AD1888's input range of +0 volts to +2.83 volts (2.83 volts peak-to-peak). +5 volts can be derived from the nearby USB port as described below. A naked USB connector-plug can be found at www.mouser.com (stock number 154-UAW16-E) at $0.68 USD. USB connectors with wires attached ("pigtails", "blunt end") can also be found at Mouser, Digikey, etc. for about $1.50 to $2.00 USD.
* Incorporating the various options (Bias/NoBias and AC/DC) into the UI of Turtle Art


===Acknowledgments===
=== Simple differential amplifier ===
Thanks to Brian Silvermann for helping me find my way in the existing Turtle Art code.
The following circuit allows the student or teacher to "input" both DC voltages (such as from a 1.5 volt battery, etc) and an AC voltage.
[[Image:Oscilloscope circuit 2.png|left|1000px]]


==Getting involved==


===Educators/Teachers===
We'd love help from educators. You can help by organizing learning activities around children wherever you are. Feel free to get in touch with us to discuss your ideas and co-ordinate efforts.


Document these learning activities that you undertake and help teachers and educators all around the world to replicate the same activities!


===Software developers===
Help is needed from volunteers from Python developers. Please visit [[Measure/Software|this]] page to find out details. If you have experience in writing optimized Python code, please leave a note on the discussion tab of this page and someone will get in touch with you.


===Hardware enthusiasts===
Do interesting hardware projects around the XO. Visit the [[Measure/Hardware|Measure hardware]] page to learn more. You might also want to see the [[Measure/Projects|projects]] page.


We are B.E students working on Measuring activity of various sensors in OLPC.
We are having Temperature and humidity sensor, which we have to connect to OLPC. We have checked it through Terminal window whether anything is connected to that port or not. But it was not detected and the log format also does not appear.. So can you tell us how it can be detected? So please help us as early as possible.


===Community Photos===


http://www.flickr.com/photos/tiayiti/sets/72157629707249381/


[ADD YOUR OWN PHOTOS/VIDEOS HERE!]


==A note about safety==
[[Image:Cautionary warning -- Caution.png|left|50px]]


'''SAFETY FIRST!'''


* Make measurements of AC line voltages with the proper equipment only -- for example, a multimeter designed for the purpose. The laptop is not a multimeter.


If you don't know what you are doing or are unsure, don't do it. Electricity can be dangerous.


==Future plans==
# Comparison of many graphs
# Sharing of the graphs
# Analog Input support into TamTam jam




For a version by version plans page see [[Measure/Plans|here]]






==Acknowledgments==
(In no particular order. List in progress...)


Thanks to
* Walter Bender - (project adviser) for providing invaluable guidance, encouragement and support at all stages of development.
* Mitch Bradley for help on a number of fronts including teaching me about decimation and window functions.
* Benjamin Schwartz for providing critical feedback.
* John Watlington for suggestions and help on a number of hardware related fronts; and also for allowing me to borrow your book on the Tale of the Scale which I find very inspiring.
* Bernardo Innocenti for teaching me many things about Linux, Python and also for a lot of help on code design.
* Michael Stone for great inputs towards the code design and for being great company at 1cc.
* Tom Boonsiri and Jake for great applications of Measure Activity in health peripherals
* WvBailey for a '''huge''' number of invaluable projects and documentation efforts. Thanks a lot!
* seberg (on d.l.o) for suggestions on code optmization
* Mary Lou Jepsen for suggestions and feedback
* Kim for testing related suggestions
* Ted Selker for a lot of great suggestions
* SJ Klein for a lot of great suggestions
* Albert Cahalan for a lot of important critical feedback
* C.J Leonard for links to great resources
* Tomeu for a lot of help on the code
* Eben Eliason for help in UI design
* Ivan for connecting me with the NumPy group
* Henry Edward Hardy for providing feedback and suggestions
* Daniel Drake for testing help
* C Scott for suggestions and help related to coding
* David Cavallo for suggestions and feedback
* Rafael Ortiz for help in testing and feedback
* Cody Lodridge for great drawing code optimizations
* Mel Chua for being the number one fan of Measure Activity and telling the whole world about it. Thanks Mel!
* Dan Winship for great help on the code and for teaching me about GObject.
* Jim Gettys for thinking of the Activity as an important part of the build system.
* The teacher at Khairat- Sandeep Surve for showing great enthusiasm towards it as it being an important learning tool and thereby increasing my enthusiasm to work in it further.
* Carla Gomez Monroy for teaching me so much about learning, team work and many other things, and also for great feedback from the field and for implementing many of my efforts on the field.
* Erik Blankinship and Mihir Bakhtiar for many engrossing discussions that allowed me to shape the development course of the Measure Activity.
* Julia Reynolds for thinking of Measure as the 'coolest Activity on the XO'
* Seth Woodworth for great suggestions and feedback
* Arnans Roger for introducing me to his work at MIT that allowed me to learn a lot about shaping the development course of the Activity.
* Henry Holtzman for great encouragement and support on the Activity
* Barry Vercoe for allowing me to demo my work to his class at MIT and for giving me great ideas about sensors in music


==Proposed re-organization of this page==


===General goals===
* small overall size of page
* links to other pages with a picture accompanying what the link is about
* links depend on the user and what he/she has come to look for on the page


===Possible links===
* Educators
* Getting started (perhaps on the main measure page itself)
* Activity activities
* Developers


===Work in progress here===
[[Measure/New_temp]]


==Contact==
Contact Arjun Sarwal through -


Email : arjun AT laptop dot org


IRC : arjs on #olpc #sugar




Line 199: Line 300:




'''Give a child a hammer and the world becomes his nails...'''


[[Category:Measure]]
{{Activity page
|icon=Image:Activity-measure.svg
|genre=Math and Science
|activity group=Activities/G1G1
|short description=TODO!: Measure lets kids measure the real world with their XO and provides a visual and statistical representation.
|long description=Using the Measure Activity on the XO, one can:


* Connect sensors (light, heat, magnetic field etc) and view their signal. Thus it is possible to view and study physical phenomena

* Input voltages and signals into the XO laptop and use it as an oscilloscope and

* Log data at a specified interval and store and retrieve waveforms
==== Specifications ====
|contact person=User:Arjs
These specifications are valid given use of the preferred components as listed in the Bill of Materials:
|activity source=http://dev.laptop.org/git?p=projects/measure
* '''Signal-input plug''': mono audio jack (3.5 mm, 1/8", see above)
|team=user:Walter
* '''Power-input plug''': USB connector
|bundle URL=http://dev.laptop.org/~arjs/Measure-21.xo
::* Use either a "naked" connector or a USB cable cut and stripped to reveal the red (+5 volt) and black (0 volt -- common) wires. Cut the other two wires flush and tape-over their ends individually.
|activity version=21
* '''Voltage Gain''': 1/10 (i.e. the circuit divides the input down by 10)
|releases=8.2.0 (767)
::* Accuracy will depend on the ratios of R1:R3 and R2:R4.
}}
* '''Input impedance''': 100,000 ohms (100K) each side to circuit common
{{Activity bundle
* '''Laptop settings''': Set either (i) MEASURE to DC and OFFSET to OFF, or (ii) MEASURE to AC and OFFSET to OFF
|bundle URL=http://dev.laptop.org/~arjs/Measure-21.xo
::* No harm will result if these setting are wrong, e.g. the activity starts in MEASURE = AC. The gain will be higher in AC, but the amplfier can be used in AC too).
|activity version=21
* '''+5 volt power source''' -- derived from the nearby USB port (red and black wires inside a sliced-open USB cable)
|releases=7.1.0 (650), 7.1.1 (653), 7.1.2 (656)
* '''+5 volt current draw''' -- a few milliamperes
}}
* '''Minimum power-source voltage''' -- approximately +4.0 volts [as low as +3.0 volts is possible, better meassurements TBD]

* '''Maximum input voltage''': +/-15 volts useable, tested to +/-30 volts. See also AC and DC common-mode rejection specifications.
::* I.e. apply the voltage of 15 volts (30 volts absolute maximum for testing) in both polarities by "flipping the battery"
* '''Frequency specification''': DC to 1000 hertz (1 KHz). Beyond this frequency significant aliasing occurs.
::* "Aliasing" appears as wiggles on what should be a pure sine wave (an envelope that modulates the input). This is caused by the sampling of the waveform done by the input-converter (codec).
* '''DC Common-mode rejection''': both inputs tied together and voltage injected relative to the power-common (circuit 0 volts), tested to +/-30 volts DC: less than 0.001 volt DC (unobservable on the laptop).
::* DC Common-mode rejection depends critically upon the matching to resistors R1 to R2 (100K) and R3 to R4 (10K). Matching of 0.1% is required either by buying 0.1% resistors, or buying e.g. a 100 or a 1000 of inexpensive metal-film resistors and sorting them.
* '''AC Common-mode rejection''': measured relative to the power-common (circuit 0 volts), 0-1000 Hz, +6 volts AC rms injected: less than 0.001 volt AC rms (observable at the highest gain setting of the laptop: approx 2 scale divisions)
::* AC common mode rejection depends critically not only on the matching of the resistors R1 to R2 and R3 to R4 but also upon stray capacitance in the circuit, the ''apparent'' impedance of the reference-voltage source (i.e. the reference-op amp's output impedance), the quality of the op-amps themselves, etc.

==== Circuit description ====
This simple circuit is called a "differential amplifer" and although not very fancy it does the trick. It derives its +5 volts input power from the USB port. The circuit uses a couple tricks, to be described below.
: This circuit has the advantage of not presenting an input voltage greater than +5 volts to the microphone input, plus the USB-port's circuit limits its +5 volt output-current to about 1 ampere in case something short-circuits the USB's output voltage.
::* '''''Any supply voltage derived from another source must be less than +5 volts'''''. For example, three 1.5 volt batteries will also work at +4.5 volts -- as long as the batteries are not accidentally reversed !! -- but four 1.5 volt batteries at 6.0 volts present a risk of inputting more than +5 volts into the microphone input.

::* ''Any externally-derived power voltage (batteries solar cells, etc) directly applied also risks of reveral. If a battery is to be used, add a reverse-protection schottky diode e.g. Avago 1N5711 static-protected by a 0.1 uf capacitor in series with the battery (i.e. a 4.5 volt battery with a 0.4 volt diode drop). A better scheme uses a low-current, +5 volt low-dropout-voltage regulator. Details TBD.''

'''Trick #1 -- Artificial "ground":''' The analog-to-digital converter (codec, A1888) converts (works only on) plus-DC voltages between +0 volts (minimum, corresponding to bottom of screen with high gain (control near the top)) and +2.83 volts (maximum, corresponding to top of screen with high gain (control near the top)) . A special highly-stable reference voltage called a "band-gap reference" provides a steady +1.225 volt "offset" to "locate" the input at 1/2 of this range i.e. approximately +1.41 volts (one G1G1 unit +1.181 volts). This voltage places the trace in the center of the screen. Thus, input-voltages less than this "centering-voltage" will drive the trace lower than center, and voltages greater than this "centering-voltage" will drive the trace higher than center.

'''Trick #2 -- Matched resistors:''' The "common-mode rejection ratio" -- the ability of the circuit to reject noise that is on ''both'' signal-leads simultaneously -- is determined by the precision of matching of the two 100K resistors to 0.1%, and the two 10K resistors to 0.1%. The exact 100K-to-10K ratio (i.e. 10:1) is not particularly important, and will be good to +/-2% with typical 1% resistors. (All four can be matched for very precise 10:1 division, but the resistors themselves can drift with temperature and time). The resistors should also not "drift" too much with temperature; since they will, at about 100 parts per million per degree C, they all should be of the same metal-film type. The recommended type is a tempertaure-time-voltage-stable metal-film 1/4 watt resistor such as the Vishay CMF55-type (commercial type similar to the RN55D type).

The recommended approach is to buy a bunch of decent resistors (e.g. from Mouser at www.mouser.com, a quantity of 100 cost about $11.00 US, a 1000 cost about $25.00 US) and then sort them into 0.1% categories. Unfortunately this requires a digital ohmmeter. Another approach is to just buy precision resistors (at about 10x the cost). Other approaches TBD.

==== Bill of Materials (BOM) ====

The following BOM specifies relatively good-quality components. Prices of the resistors assumes a 100-piece buy; all other prices (e.g. bandgap reference, LM358AN, potentiometer) are single-unit. 100-piece buys would cut the cost by at least 1/3 if not more. Substitution of lesser-quality components (e.g. carbon composition resistors, generic LM358N, two 1N4148 signal diodes in series in place of the bandgap reference, single-turn "trimmer" potentiometer) would cut the cost even further but significantly degrade performance.

{|{{prettytable}}
|- style="font-size:9pt;font-weight:bold" align="center"
| width="48" Height="24" | Part
| width="315" | Description
| width="63.75" | Preferred Manuf
| width="118.5" | Preferred Part Number
| width="162" | Equivalents
| width="20.25" | Qty
| width="40.5" | each, USD
| width="25.5" | USD

|- style="font-size:9pt"
| Height="24" align="center" | C1, C2
| Capacitor: 0.1 microfarad (uf), 10%, 63 V, metallized polyester, 0.20 inch lead spacing, box style
| align="center" | Visay/ Roederstein
| align="center" | MKT1817410065
| align="center" | AVX, Vishay/Roederstein, Wima, etc.
| align="center" | 2
| align="center" | 0.25
| align="center" | 0.50

|- style="font-size:9pt"
| Height="24" align="center" | IC1
| IC: Dual op-amp, single-supply 3 volt min, 3 mv max input offset, 30 nA input offset current max, 8-pin DIP
| align="center" | Fairchild Semi
| align="center" | LM358AN or LM258N
| align="center" | Fairchild, ST Micro, National Semi, Texas Instruments, etc.
| align="center" | 1
| align="center" | 0.28
| align="center" | 0.28

|- style="font-size:9pt"
| Height="24" align="center" | P1
| Potentiometer: 10K 15 Turn cermet rectangular: 0.2+0.3 x 0.1 inch lead spacing
| align="center" | Bourns
| align="center" | 3006P-1-104
| align="center" | Vishay/Spectrol, Visay/Sfernice. BI technologies, etc.
| align="center" | 1
| align="center" | 1.55
| align="center" | 1.55

|- style="font-size:9pt"
| Height="12" align="center" | R1, R2
| Resistor: 100K, 1%, 1/4 watt commercial, metal film, matched to 0.1%
| align="center" | Vishay
| align="center" | CMF55100K00FHEK
| align="center" | Generic: RN55D1003F
| align="center" | 2
| align="center" | 0.11
| align="center" | 0.22

|- style="font-size:9pt"
| Height="12" align="center" | R3, R4
| Resistor: 10K, 1%, 1/4 watt commercial, metal film, matched to 0.1%
| align="center" | Vishay
| align="center" | CMF5510K00FHEK
| align="center" | Generic: RN55D1002F
| align="center" | 2
| align="center" | 0.11
| align="center" | 0.22

|- style="font-size:9pt"
| Height="12" align="center" | R5 - R9
| Resistor: 10K, 1%, 1/4 watt commercial, metal film
| align="center" | Vishay
| align="center" | CMF5510K00FHEK
| align="center" | Generic: RN55D1002F
| align="center" | 5
| align="center" | 0.11
| align="center" | 0.55

|- style="font-size:9pt"
| Height="12" align="center" | Z1
| IC: Bandgap reference, 1.225 volt fixed, 1%, TO-92 package
| align="center" | ST Micro
| align="center" | TS821AIZ
| align="center" | Any 1.225 - 1.235 bandgap in TO-92
| align="center" | 1
| align="center" | 0.64
| align="center" | 0.64

|- style="font-size:9pt"
| Height="12" align="center" | PL1
| PL1: Plug, mono audio 3.5mm (1/8 inch), black plastic handle
| align="center" | Kobicon
| align="center" | Mouser 171-PA-3191-1-E
| align="center" | Generic
| align="center" | 1
| align="center" | 0.71
| align="center" | 0.71

|- style="font-size:9pt"
| Height="12" align="center" | PL2
| Plug: USB A-type, naked (no wires)
| align="center" | Kobicon
| align="center" | Mouser 154-UAW16-E
| align="center" | Generic USB cable
| align="center" | 1
| align="center" | 0.68
| align="center" | 0.68

|- style="font-size:9pt"
| Height="12" align="center" | PCB
| PC Board:
| align="center" | TBD
| align="center" | TBD
| align="center" |
| align="center" |
| align="center" |
| align="center" |

|- style="font-size:9pt"
| Height="24" align="center" | wire
| Red, Black, Blue multistranded (i.e. flexible) insulated wire 24 AWG
| align="center" | TBD
| align="center" | TBD
| align="center" | Do not use solid wire -- it is insufficiently flexible.
| align="center" |
| align="center" |
| align="center" |

|- style="font-size:9pt"
| Height="12" align="center" |
|
| align="center" |
| align="center" |
| align="center" |
| align="center" |
|style="font-weight:bold" align="center" | Total
|style="font-weight:bold" align="center" | 5.35

|- style="font-size:9pt"
| Height="12" align="center" |
| Minigrabber" test clip with wires AWG -- red, black
| align="center" | TBD
| align="center" | TBD
| align="center" | Buy double ended and cut in half
| align="center" | 2
| align="center" | 4.50/2
| align="center" | 4.50

|- style="font-size:9pt" align="center"
| Height="12" |
|style="font-weight:bold" | Optional
|
|
|
|
|
|

|- style="font-size:9pt"
| Height="12" align="center" | R10
| Resistor: 2K, 1%, 1/4 watt commercial, metal film
| align="center" | Vishay
| align="center" | CMF5510K00FHEK
| align="center" | Generic: RN55D2001F
| align="center" | 1
| align="center" | 0.11
| align="center" | 0.11

|- style="font-size:9pt"
| Height="24" align="center" | LED1
| LED: green diffused 20 millicandela, 2.2V forward voltage, T-1, 0.1 inch lead spacing
| align="center" | Kingbright
| align="center" | WP7104SGD
| align="center" | Any color, any manufacturer: Avago HLMP-3507
| align="center" | 1
| align="center" | 0.13
| align="center" | 0.13

|- style="font-size:9pt"
| Height="24" align="center" | Socket
| Socket: 8 pin DIP gold-flash contacts
| align="center" | Circuit Assembly
| align="center" | TBD
| align="center" | Any gold-flashed 8-pin DIP socket or equivalent
| align="center" | 1
| align="center" | 0.50
| align="center" | 0.50

|}

'''More detail to follow'''

==== Construction Details ====

> This circuit was actually prototyped -- without use of an oscilloscope -- on a "plug board" purchased from Radio Shack. Components were purchased from Radio Shack (the audio jack, 15 turn potentiometer, Micronta digital voltmeter) and from www.mouser.com (resistors, bandgap reference, LM258N) and some old Roederstein capacitors were taken from a sample kit. A USB cable was cannabalized: with an Exacto knife cut off the "B" end flush, carefully slice the exterior insulation around the circumference about 4 inches from the end, and then carefully cut the insulation lengthwise to expose the 4 wires inside (practice first!). Pull back the braided shield and snip off, likewise peel away the interior aluminum shield and cut off.

[[Image:Oscilloscope circuit 2c.png|right|750px|thumbnail|Sorry about the poor quality image, am working on a fix. Click on the image to enlarge it. A successful form of assembly is on a single-sided piece of copper-clad pc board drilled or punched on 0.1 inch centers drilled with .032 inch holes. Carefully remove etch with a Dremel tool -- the trick is to remove, with a tiny burr, as little etch as possible (to keep the work down).]]

> The most likely construction method will be on a piece of "perf" board (unplated PC board material perforated on 0.1 inch spacings) and configured as shown in the schematic drawing -- a USB connector and an audio jack both connected to a PC board some distance (e.g. 1/2 meter) away, plus some "ball clips" about 1/2 meter long for input. The assembly should be put into a little plastic box or at least glued to a sheet of plastic (don't use wood -- it can absorb moisture and become conductive). One approach would be to make a box-mold and cast the assembly in a high-grade molding compound designed specifically for electronics:
::* Notes: Do not expect nice adhesion of the potting compound to the wires. No molding materials stick well to vinyl insulation, the most common wire-insulation. If casting methods are used be sure to keep any light emitting diodes and the potentiometer adjustment out of the potting compound.

::* Best molding/casting practice: ''Use only flexible RTV rubbers designed for the purposes of electronics molding (expensive). Hard molding compounds may shrink on curing and crack the components. Some RTVs may not cure properly when in contact with certain materials -- the result is a gooey, conductive mess hidden inside what appears to be a good "pot". Experiment -- plan to section a prototype.''

::* Do not cast with commercial silicone rubber -- silicone rubber outgasses acetic acid (i.e. vinegar), a corrosive.

::* Do not use hard "potting" compound such as epoxy (expensive) or polyester resin (cheap). While clear polyester casting resin may work because it has low shrinkage, in general do not use hard potting compounds.

* Tools required: wire-stripping tool, Exacto knife, prototyping plug-board, little insulated jumper-wires (solid wire okay), ball clips, '''digital voltmeter''', mold and molding materials if used.
::* Soldering tools: rosin-core solder (NOTE: country-specific regulations may not allow use of lead-tin solder), soldering iron with small tip, solder-wick.

> A successful form of assembly is on a single-sided piece of copper-clad pc board drilled or punched on 0.1 inch centers drilled with .032 inch holes. Carefully remove etch with a Dremel tool -- the trick is to remove, with a tiny burr, as little etch as possible (to keep the work down).

> '''Best practices:''' The most difficult part of the circuitry is how to assemble it into a robust object suitable for use by children. The best assembly might be as a part of the USB plug. But if the assembly is too long a child risks are bumping and injuring the connector. Given surface-mount components and a PC board the entire device can be shrunk into the connector with a cable for the audio jack and a pair of probes on a shielded cable. However, provision must be made for an external potentiometer-adjustment knob (the DC offset adjustment).


'''More details to follow.'''

== For software developers ==

# See tickets assigned to measure-activity on trac for ways to help out!


===Brief overview of the code===


# audiograb.py
# drawwaveform.py
# config.py


''audiograb.py'' is the file that takes care of grabbing input audio samples. It uses a gstreamer pipeline in which the handoff signal of the fakesink element is used to intercept the data in the pipeline. Data logging is done in this class since we can use the sampling rate as a time reference; i.e. we know the sampling rate and also the number of elements in each buffer that is intercepted from the pipeline. So each atomic time interval is (1/Fs * bufferSize). This is the time interval after which we get a handoff signal.


''drawWaveform.py'' is the class that handles the waveform drawing part. It creates and uses a cairo context to draw the background, the grid and the waveform. It uses a combination of pango and cairo for displaying the text as it was found out that cairo is itself not good at rendering text. All drawing occurs in the expose function which is the gtk expose event handler. It does drawing from the real time samples or from a file. In real time, it can either draw time domain or display the frequency domain samples. self.integer_buffer is one buffer that is obtained from audiograb.py and self.main_bufers is the buffer that accumulates all these buffers. The self.main_buffers is sampled at varying intervals of time, depending upon the frequency range selected, to form self.buffers which is the buffer that is scaled and drawn. self.main_buffers is sampled at a larger interval (set by self.spacing) for lower frequencies and at a shorter interval for higher frequencies. An example calculation is as follows. If we form 1 self.buffers by taking all consecutive elements, we would be sampling at 48khz. I have found that to draw a reasonable representation of a sine wave, one needs at least 8 -12 points. Hence the largest frequency that can be represented accurately is given by 48/12 = 4Khz, or less.Text is updated after every self.update_text expose events.


''config.py'' contains all global variables.


=== Signals and timeouts used in the software ===

The handoff signal in audiograb.py is emitted whenever a new buffer is available. The signal handler is on_buffer which adds a gobject timeout. On timeout, _new_buffer is called which emits a custom signal new-buffer. The signal handler for this custom signal is _new_buffer in drawWaveform. Within _new_buffer, the new buffer is read and saved /stored. The expose event is queued in the main measure.py which causes the expose function to be called.



== For content developers ==
I have yet to work on a to-do task list for the content. However, I wish to develop a complete page around each of the points (and more) enumerated in the [[Measure_/_Oscilloscope#Learning_activities|Learning activities]] section mentioned above. Ideally I would want a short illustrative video on each page.



== Output and related ideas ==

This page presents a solution for electrical signals to be input to the XO. For the corresponding problem on output, no such solution exists, but there are some ideas at [[Electrical output]]. One idea there is to use the modem connection as finely-timed output - clearly, this would also work for increasing the number of input signals, though it is probably more useful for timing than for fine measurement.


[[Image:Cautionary warning -- Electrocution.png|left|150px]]
'''* WARNING: ELECTRICITY CAN KILL'''. ''RISK OF ELECTROCUTION: DO NOT, UNDER ANY CIRCUMSTANCES, APPLY AC LINE VOLTAGES FROM A WALL OUTLET OR MOTOR-GENERATOR OR OTHER POWER SUPPLY (E.G. CONVERTER OR INVERTER) INTO THE MICROPHONE INPUT, THE SPEAKER OUTPUT, OR ANY USB PORT.''
:::*''There is a risk of electric shock resulting in death if the XO is used to measure mains voltage by direct connection. The audio input components are not designed for this and damage is likely to result. The extent of the damage is not easily predictable. The only components intended for mains voltage are the pins of the AC adaptor. Dangerous voltages applied to the audio input may also be emitted on audio output, USB connectors, or the DC power input jack.''

== Temperature monitoring system ==


=== How to build ===
You need-
# LM35 or any similar temperature sensor
# USB connector
# Audio connector
# Some wire or a cable. You could use cut a USB cable and an audio cable from the middle
# Measure Activity


The USB port has two pins which are of use to us. One is the ground and the other one is the one which provides a constant 5V. When you cut a USB cable in the middle, you could find out by trial-and-error by using a simple Voltmeter which are the two wires corresponding to these two pins. If you don't have a Voltmeter, try using a simple LED and a resistor to do the job.

We provide the +5V that this temperature sensor requires from the USB port. For this we connect the +5V wire to the Vcc of the sensor. We connect the ground to the Ground terminal on the LM35. We connect the Vout of the sensor to the Audio Input jack.


=== How to operate ===
Set the Measure Activity to be in the DC Mode and Turn Off the Bias Voltage. Both these can be controlled by using the first two buttons on the 'Measure Toolbar'.

The DC voltage is proportional to the temperature . The voltage that the XO can read varies between 0.9 V - 3V. The output of the sensor would be from 0-5V, so, for for different ranges of temperature one can either use a potential divider for higher ranges or using resistances add a bias to the Vout of the sensor from the +5V of the USB again.


=== Learn More ===
The LM35 has an output voltage proportional to the temperature. The scale is 0.01V/C.
Read the [[http://www.ece.osu.edu/~passino/LM35.pdf Data Sheet]] to learn more.

One could log temperature over a period of time - say at an interval of 1 hour for a complete day to know when is it the hottest / coldest.

=== Video ===
(put video with flame demonstration here, put pictures here - including ckt diagram)

== Intrusion Alarm system ==


=== How to build ===
You need-
# A toy laser
# An LDR or a Photo-Voltaic cell
# Some wire
# Measure Activity

Open up the toy laser and remove the batteries. Connect a wire to the spring inside and connect the other wire to the metallic body inside. Connect both of these wires to the USB power supply wires. Click here to learn about how to determine the USB power supply lines.

Connect the LDR to the Audio Jack.

=== How to operate ===
Set the Measure Activity into DC Mode and turn ON the bias voltage. Setup the LDR and the laser to be in line and facing each other. When the path of the laser light gets cut, you should observe a marked increase in voltage indicated by the position of the waveform shifting up.

=== Learn More ===
The resistance of the LDR - Light Dependent Resistor is proportional to the amount of light falling on it. The potential drop across the LDR is dependent on the resistance of the LDR. When the path of the light gets cut,
the resistance increases hence we notice a marked increase in voltage indicated on the screen.

Click here to know more about Bias Voltage and how it works.

=== Video ===

Put a video here and some pics

[[Category:Hardware ideas]]
[[Category:Software ideas]]
[[Category:Peripherals]]

==Acknowledgments==
Thanks to Mitch Bradley and John Watlington for their help and suggestions during the development of the Activity.

Latest revision as of 23:13, 9 March 2016

?Sugar icon}}    This activity is now hosted at the Sugar Activity Library.

The information here is likely to be out-of-date. Consult the new pages for "Measure" first:

Activity-measure.svg This activity was bundled
TST Measure
Trac print.png Tickets all - active - new
Trac print.png SL Tickets all - active - new
OlpcProject.png Adviser: Walter, Core Development: Arjun, Contributor(s): Cody Lodrige (drawing code optimization), Eben Eliason (UI Design)

see more templates or propose new


What is the Measure Activity ? (Introduction)

Measure Activity on the XO
Analog Input port on the XO (in pink)

The Measure Activity is a tool on the XO that allows kids to indulge in "learning by doing". It provides an interface for the kids to connect with the physical world and an opportunity to view and understand through a visual and statistical representation of the physical phenomena.

Using the Measure Activity on the XO, one can:

  • Connect sensors (light, heat, magnetic field etc) and view their signal. Thus it is possible to view and study physical phenomena
  • Input voltages and signals into the XO laptop and use it as an oscilloscope and
  • Log data at a specified interval and store and retrieve waveforms

Learning Activities

Children learn by doing things. It is said "Give a child a hammer, and the world becomes his nails." This activity is a tool that allows kids to express their curiosity. It is a tool that allows kids to explore and learn by doing, by connecting and observing, span physical phenomena and real world events.

See the projects page for detailed instructions on a few projects. Also see the hardware page for other ideas.

Projects and Activities Index

All these activities in some way involve transducers. A transducer is a mechanism that converts a physical event -- motion of atoms in a gas or liquid or solid (heat), air-pressure waves (sound), photons hitting a surface (light), vibration of a wire, etc. -- into an electrical signal suitable for measurement by an "apparatus".

Example: Our inner ears serve both as sound- and balance-transducers for our brain. Each tiny hair in the cochlea has its own resonant frequency. When presented with a sound at its given frequency the hair vibrates; this motion causes the hair to transmit an electro-chemical "wave" on a neuron to the brain. Balance-signals come from the three semicircular canals that also have hairs that move in response to the position of our head. While electricity moves in a wire differently than does the electro-chemical "wave" in a neuron, the fact that electricity is involved in both cases emphasizes its biological and practical importance.

Projects and Activities Index

Measure Lesson ideas from Nick Doiron and others, from work in Uganda, Uruguay and Haiti:

  • Record neurons from insects Projects/SpikerBox. The Spikerbox allows you to record neural activity from insects to learn how the brain works.
  • Measure and record temperature Measure/Projects/Measure Temperature
  • Build an oscilloscope probe Measure/Projects/Oscilloscope probe. Build a laptop-protective probe that allows you to measure voltages up to 24 VAC (40 volts peak) without damaging the laptop.
  • Build a lighted graticule Measure/Projects/Lighted Graticule. Together with the oscilloscope probe, the graticule calibrates the screen in the following ranges: 0.5 volt per division, 0.1 volt per division or 0.010 volts per division, where a "division" appears as a lighted line on the graticule. The "zero" is adjustable up and down over the entire screen.
  • Explore magnets and coils of wire: Measure/Activities/Magnets and Wire. For the basics all you need is a couple little cylindrical magnets, a couple plastic sewing bobbins, some (ie.. 100 feet of 30 AWG) magnet wire, glue, tape and a couple paper cups. This also includes the following additional activities:
  • Build your own microphone and speaker: (the speaker requires a 1:100 amplifier+driver circuit).
  • Build your own telephone (requires two magnets+coils, the amplifier, and a "driver" circuit).
  • Build a guitar "pick-up probe" Requires a 0.25 inch magnet (it fits nicely inside the coil) to convert a guitar-wire's vibrations into voltage that you can see on the laptop -- see the harmonics etc.
  • Build a tuning fork oscillator: Build a steel tuning-fork, stick a magnet on each of its two tines, and then use the microphone probe to see its sinewave vibrations. Explore feedback (requires the 1:100 amplifier+driver circuit) to make your tuning fork hum at its natural frquency. Explore resonance (requires the signal generator -- see below). Careful design results in a useable frequency reference for other experiments.
  • Build a signal-generator: Measure/Projects/Signal-Generator. Describes the design of a voltage-to-frequency converter with better than 1% accuracy between 0 and 2000 Hz (0 to 2.000 volts). Together with a frequency-counter project (see below), the signal generator can double as a digital voltmeter. This, or a commercial equivalent, is necessary for a number of interesting activities.
  • Build an ammeter: Measure/Projects/Ammeter. An ammeter or "amp(ere)-meter" measures electrical current (flow of electrons). A speaker coil, a magnetic compass, a 1000 ohm resistor and 5 volts from the laptop readily demostrate that (electro-)magnetism -- electrons moving in a coil of wire -- can cause motion. This experiment pursues the observation. With a magnet and a homemade -- but very-sensitive, balance-beam scale (made from the same 1/8 inch diameter steel rod used to build the tuning forks) -- I've detected (not measured) electric currents as low as 50 one-millionth of an ampere. The balance-beam scale's design is the fussy part, a more-suitable design is TBD.
  • Build a weight-measuring scale: The first step is a suitable balance beam scale with one side being pulled by the magnet+coil to "null" out weight in a pan on the other side. We then measure the "amps" required to null the weight.
  • Build a length-transducer:Measure/Projects/Length transducer. The simplest transducer for measuring length -- distance between two points in a straight line -- is a resistive "slider potentiometer". Although more complex this activity is more interesting because it reinforces the notions of electromagnetism.
  • Part I: Build a transformer: Transformers can protect us from electrocution -- but they only work with alternating electricity (AC). They move, and change the voltage of, AC electrical energy without the input and output wires being in "galvanic" or direct physical contact. To build a "transformer" requires two pickup probes (coils of wire), an oscillator plus the driver/amplifier. The bottom-most coil serves as the driver (the input) and the top coil is the pickup (the output). What happens when the driving frequency changes?
  • Teaching point -- transformers and steel: Transformers work better when iron (steel) is inside the coils. Move the steel rod up and down inside the two coils and watch the "induced voltage" change on the screen.
  • Interesting teaching point about permanent magnets: A string of permanent magnets won't work as the "steel rod". Why? Because all the iron, cobalt etc atoms are lined up stiffly and can't be made to move by the teensy electrical field "induced" by the signal generator.
  • Part II: Build an LVDT (length-measuring device): Although the basic principle is shown with the moving-steel-rod experiment above, this experiment makes a better demonstration. This requires a third coil to be placed top-most in a stack of three coils with the driver coil in the middle, plus an appropriate hookup of the bottom and top coils "in series". The output can be seen on the screen to change dramatically with the location of the steel rod inside the three coils.
  • Can the LVDT be used together with a 4th coil to build an ammeter? TBD.
  • Build a (frequency-) counter: Measure/Projects/Frequency counter. This project can be used with the other projects and also -- together with the voltage-to-frequency oscillator -- serve as a voltmeter. It comes in two parts:
  • Build a 1-second "time base": Digital watches contain tiny crystal tuning forks -- remarkably inexpensive at $0.30 in single units -- that vibrate at at 32,768 Hz (cycles per second). With one of these and a couple inexpensive integrated circuits we can build a 1-second "time base". From the time base we derive "zero-the-counter" and "load-the-counts-to-the-display" pulses required by the event-counter.
  • Build an event-counter: A preliminary design uses four divide-by-ten counters (CD40110BE), four resistor arrays and four 7-segment LED to display accumulated counts -- over the one-second interval-- ranging from 0000 to 9999. (I have not found an inexpensive (e.g. less than $5.00) way of doing this -- exact design TBD).
  • Build a "port-expander": Measure/Projects/Port expander. There aren't enough USB ports on the laptop to supply +5 volts to all the various projects described above. Also the heavy current draw of the 100:1 amplifer/driver can interfere with the other devices. A simple port expander can solve this problem (design TBD).

Some threads for interesting learning experiments are below -

  1. Record animal sounds, for example, sounds of birds and observe their waveforms. Which of these are high frequency sounds, which are the low frequency ones? Adjust the frequency sliders accordingly.
  2. Whistle into the microphone and compare the loudness and frequency of whistles by observing the waveforms.
  3. Get two people to try to whistle the same note, and look into Beat Frequencies.
  4. Turn the sensitivity slider up to the maximum and observe ambient noise - in a quiet room, near a noisy road.
  5. Measure the voltage of an AA size pencil cell. What settings do you use? AC or DC?
  6. Measure resistance of water, other liquids
  7. Log temperature using a temperature sensor at one hour intervals. When in the day is it the hottest? The coldest?
  8. Some very interesting sensor ideas given by Arnans Roger, see - http://padthai.media.mit.edu:8080/cocoon/gogosite/documentation/makingSensors.xsp?lang=en

How to build low cost sensors

  • Specifications:
Name Description Vendor Reference
Switch
Switch lever spdt 3A PCB http://www.digikey.com SW773-ND
Temperature
Thermisor NTC 10K OHM 5% http://www.digikey.com 317-1258-ND
Light
Photocell 5K-20K OHM 4.20 MM http://www.digikey.com PDV-P9203-ND
Magnetic switch(1)
Switch Reed 10-15AT SPST .5A http://www.digikey.com 420-1047-ND
Magnetic switch(2) Switch Reed SPST .5A 12-23 A/T http://www.digikey.com HE502-ND
Humidity sensor
Consists of a metal electrode on a humidity sensitive membrane mounted on a ceramic substrate http://www.rhopointcomponents.com SYH-1NC
  • Instructions in English:
Making a Switch Sensor
Making a Light Sensor
Making a Humidity Sensor
Making a Magnetic Sensor
Making a Thermistor

Downloading the Activity

Please visit the download page to download the latest stable and unstable releases of the Activity.

Kids guide to Measure

Teachers guide to Measure

Hacker's guide to Measure

Getting started

Measure Temperature

See also Category:XO sensors for instructions on making other kinds of sensors.

Construction

See Making XO sensors/Making a Temperature Sensor for detailed construction instructions.

Operation and measurement

Please download the Activity from the link title "For LM35" from the unstable branch by going to the downloads page. This release is a pre-calibrated version for using with this temperature sensor.'


This is what your temperature measurement would look like
Measuring temperature of water

$2 USB I/O and sensor board

Low Cost USB Sensor board

See Edward Baafi's low cost USB sensor board here

Learning activities

Sensor Input into Turtle Art

Turtle Art is an abstraction. By allowing sensors to control various aspects of motion of the Turtle, one is enabling kids to connect with their physical world and bring that connection into the abstraction that Turtle Art represents

I've integrated sensor support into Turtle Art. This basically allows one to add a "Sensor Input" block into Turtle Art. One can thereby control any aspect of the Turtle's motion depending upon the value of the sensor. When no sensor is connected, the default input is taken from the Mic.

The code is in the git repository of Measure (look for the TurtleArt.activity folder)

This is weird. Talk to Arjun about fixing this so that it's merged into Turtle Art proper.

Screen shots

The turtle that moves in proportion to sensor input. Increasing the temperature made it move in larger squares
Program made during learning workshop at OLPC by Adrian and other participants (11th - 14th Feb) to log sensor values at an interval of five seconds
For demonstration, heating the temperature sensor. This caused the Turtle to move larger distances

Try it out!

If you wish to try out Turtle Art with sensors, please click here to go the download and usage guidelines page.

Work remaining

  • Input based on the frequency of signal. This would allow whistling at a higher frequency give a higher input
  • Incorporating the various options (Bias/NoBias and AC/DC) into the UI of Turtle Art

Acknowledgments

Thanks to Brian Silvermann for helping me find my way in the existing Turtle Art code.

Getting involved

Educators/Teachers

We'd love help from educators. You can help by organizing learning activities around children wherever you are. Feel free to get in touch with us to discuss your ideas and co-ordinate efforts.

Document these learning activities that you undertake and help teachers and educators all around the world to replicate the same activities!

Software developers

Help is needed from volunteers from Python developers. Please visit this page to find out details. If you have experience in writing optimized Python code, please leave a note on the discussion tab of this page and someone will get in touch with you.

Hardware enthusiasts

Do interesting hardware projects around the XO. Visit the Measure hardware page to learn more. You might also want to see the projects page.

We are B.E students working on Measuring activity of various sensors in OLPC. We are having Temperature and humidity sensor, which we have to connect to OLPC. We have checked it through Terminal window whether anything is connected to that port or not. But it was not detected and the log format also does not appear.. So can you tell us how it can be detected? So please help us as early as possible.

Community Photos

http://www.flickr.com/photos/tiayiti/sets/72157629707249381/

[ADD YOUR OWN PHOTOS/VIDEOS HERE!]

A note about safety

Cautionary warning -- Caution.png

SAFETY FIRST!

  • Make measurements of AC line voltages with the proper equipment only -- for example, a multimeter designed for the purpose. The laptop is not a multimeter.

If you don't know what you are doing or are unsure, don't do it. Electricity can be dangerous.

Future plans

  1. Comparison of many graphs
  2. Sharing of the graphs
  3. Analog Input support into TamTam jam


For a version by version plans page see here


Acknowledgments

(In no particular order. List in progress...)

Thanks to

  • Walter Bender - (project adviser) for providing invaluable guidance, encouragement and support at all stages of development.
  • Mitch Bradley for help on a number of fronts including teaching me about decimation and window functions.
  • Benjamin Schwartz for providing critical feedback.
  • John Watlington for suggestions and help on a number of hardware related fronts; and also for allowing me to borrow your book on the Tale of the Scale which I find very inspiring.
  • Bernardo Innocenti for teaching me many things about Linux, Python and also for a lot of help on code design.
  • Michael Stone for great inputs towards the code design and for being great company at 1cc.
  • Tom Boonsiri and Jake for great applications of Measure Activity in health peripherals
  • WvBailey for a huge number of invaluable projects and documentation efforts. Thanks a lot!
  • seberg (on d.l.o) for suggestions on code optmization
  • Mary Lou Jepsen for suggestions and feedback
  • Kim for testing related suggestions
  • Ted Selker for a lot of great suggestions
  • SJ Klein for a lot of great suggestions
  • Albert Cahalan for a lot of important critical feedback
  • C.J Leonard for links to great resources
  • Tomeu for a lot of help on the code
  • Eben Eliason for help in UI design
  • Ivan for connecting me with the NumPy group
  • Henry Edward Hardy for providing feedback and suggestions
  • Daniel Drake for testing help
  • C Scott for suggestions and help related to coding
  • David Cavallo for suggestions and feedback
  • Rafael Ortiz for help in testing and feedback
  • Cody Lodridge for great drawing code optimizations
  • Mel Chua for being the number one fan of Measure Activity and telling the whole world about it. Thanks Mel!
  • Dan Winship for great help on the code and for teaching me about GObject.
  • Jim Gettys for thinking of the Activity as an important part of the build system.
  • The teacher at Khairat- Sandeep Surve for showing great enthusiasm towards it as it being an important learning tool and thereby increasing my enthusiasm to work in it further.
  • Carla Gomez Monroy for teaching me so much about learning, team work and many other things, and also for great feedback from the field and for implementing many of my efforts on the field.
  • Erik Blankinship and Mihir Bakhtiar for many engrossing discussions that allowed me to shape the development course of the Measure Activity.
  • Julia Reynolds for thinking of Measure as the 'coolest Activity on the XO'
  • Seth Woodworth for great suggestions and feedback
  • Arnans Roger for introducing me to his work at MIT that allowed me to learn a lot about shaping the development course of the Activity.
  • Henry Holtzman for great encouragement and support on the Activity
  • Barry Vercoe for allowing me to demo my work to his class at MIT and for giving me great ideas about sensors in music

Proposed re-organization of this page

General goals

  • small overall size of page
  • links to other pages with a picture accompanying what the link is about
  • links depend on the user and what he/she has come to look for on the page

Possible links

  • Educators
  • Getting started (perhaps on the main measure page itself)
  • Activity activities
  • Developers

Work in progress here

Measure/New_temp

Contact

Contact Arjun Sarwal through -

Email : arjun AT laptop dot org

IRC : arjs on #olpc #sugar





Give a child a hammer and the world becomes his nails...

Activity Summary

Icon: Sugar icon::Image:Activity-measure.svg
Genre: Activity genre::Math and Science
Activity group: ,|x|Activity group::x}}
Short description: Short description::TODO!: Measure lets kids measure the real world with their XO and provides a visual and statistical representation.
Description: [[Description::Using the Measure Activity on the XO, one can:
  • Connect sensors (light, heat, magnetic field etc) and view their signal. Thus it is possible to view and study physical phenomena
  • Input voltages and signals into the XO laptop and use it as an oscilloscope and
  • Log data at a specified interval and store and retrieve waveforms]]
Maintainers: ,|x|Contact person::x}}
Repository URL: Source code::http://dev.laptop.org/git?p=projects/measure
Available languages: ,|x|Available languages::x}}
Available languages (codes): ,|x|Language code::x}}
Pootle URL:
Related projects: Related projects,|x|Related projects::x}}
Contributors: ,|x|Team member::x}}
URL from which to download the latest .xo bundle Activity bundle::http://dev.laptop.org/~arjs/Measure-21.xo
Last tested version number: Activity version::21
The releases with which this version of the activity has been tested. ,|x|Software release::x}}
Development status:
Ready for testing (development has progressed to the point where testers should try it out): ,|x|Ready for testing::x}}
smoke tested :
test plan available :
test plan executed :
developer response to testing :


URL from which to download the last .xo bundle that works with old releases Activity bundle::http://dev.laptop.org/~arjs/Measure-21.xo
Activity version number: Activity version::21
The releases with which this version of the activity has been tested. ,|x|Software release::x}}
Development status: