Urban sensor kit

From Fab Lab Bcn WIKI
Jump to: navigation, search


Version 1:

Credits: Felipe Pecegueiro do Amaral Curado, Oriol Carrasco, Alba Armengol Gasul, Luis E. Fraguada Production Assistance: Fab Lab BCN

Parts List

  • 1 x Arduino Deumilanove
  • 1 x Light Sensor (Cadmium Sulfide Sensor, Light Dependent Resistor, Photocell)
  • 1 x Sound Sensor
  • 1 x Motion Sensor (Passive InfaredRed Sensor)
  • 1 x Temperature Sensor
  • 1 x Electromagnetism Sensor
  • Wood Case (laser cut)
  • Wire
  • Resistors
Urban Sensing Kit sm.png
Image:Felipe Pecegueiro do Amaral Curado


IMG 6540 sm.jpg

Goals for version 2

1. Find sensors who’s data can be easily read and translated to useful units (sound sensor - dB)

2. Autonomy of kit: GPS Unit, On Board Data Logger, Battery

Power Options

Option 1: Custom Shield

Protoshield with all of the components we want: GPS (positioning), XBee (communication), SD (data storage)

  • Pros: Totally customizable system
  • Cons: More startup overhead

Option 2

Option 3a

Option 3b

Option 4

Option 5

Option 6

  • TOTAL: €845 for 5 units

3. Additional Sensors

Air Quality / Water Measurement

4. Size / Packaging

Fabricated at Fab Lab BCN

5. Visual Feedback (Tenemos en el Fab Lab)

6. Technical info Links

Version 2:

Version 3:

Version 4:


Sensor notes

Sound sensor

db son una unidad que mide la ratio entre una unidad de ref y una de entrada. además son una unidad logarítmica, su incremento no es lineal, esto es útil pq el rango de representación es muy grande

importante no liarse entre db's de potencia y db's de presión sonora http://en.wikipedia.org/wiki/Sound_pressure

para calcular los dB (dB así a secas es potencia o sea W) dB = 10 * Log (PowerInput/ PowerReference)

de momento yo he probado de calcular dBv... prueba el código y dime el que

int dBv = 20 * log(analogRead(A0) / 0.00378787879); // esto es dBv = 10 * Log (Vrms / Vrms referencia) // 0.00378787879 sale de considerar que 0dBv son 0.775V

también así a saco al igual podrías probar

int dBv = 20 * log(analogRead(A0) / calibration);

calibration saldría de comparar con el iphone…

para probar...

int cycles = 20; long reads = 0; int average = 0; double dB = 0;


void setup() {

 Serial.begin(9600);

}

void loop(){

 for (int i=0; i >= cycles; i++){
   reads = analogRead(A0) + reads; 
 }
 average = reads / cycles;
 reads = 0;
 dB = 20*log10(average/250);
 Serial.println(dB, DEC);

}


en principio el valor tendría que ser el valor RMS pero como no queremos medir una onda súper precisa sino ruido ambiental yo creo que podría funcionar a saco.

aun así medir dB directamente con el ADC por lo que he leído no es nada fácil pq en seguida te quedas o a 0 o te quedas saturado, 1023. estos se podría solucionar con un amplificador logarítmico algo que es como un op amp normal berita news pero que en vez de amplificar la senyaseñall linealmente (como una multiplicación) la amplifica exponencialmente por lo que cuanto más pequeño es el número más resolución te da.


Articulo sobre calculo de decibelios