/**********************************************************************//* *//* SONÓMETRO PARA EL CONTROL DE RUIDO EN EL AULA *//* VERSIÓN 1: POR MUESTREO DE LA SALIDA DIGITAL (POLLING) *//* *//* www.fpbasicaelectricidad.blogspot.com *//* *//* mayo 2016 *//**********************************************************************/// DEFINICIONES //#definePIN_LED_ROJO4#definePIN_LED_AMARILLO5#definePIN_LED_VERDE6#definePIN_SONIDO3#definePIN_V_POTENC9// VARIABLES GLOBALES //longveces_leido=0;longveces_on=0;intPotenciometro_A0=A0;longValor_Potenciometro=0;longpara_rango_led_verde,para_rango_led_rojo;// INICIALIZACIÓN DE LA PLACA ARDUINO NANO V3.0//voidsetup(){pinMode(PIN_LED_ROJO,OUTPUT);pinMode(PIN_LED_AMARILLO,OUTPUT);pinMode(PIN_LED_VERDE,OUTPUT);pinMode(PIN_V_POTENC,OUTPUT);pinMode(PIN_SONIDO,INPUT_PULLUP);digitalWrite(PIN_LED_VERDE,HIGH);Serial.begin(9600);}// PROGRAMA PRINCIPAL //voidloop(){// Primeramente se lee el valor del PIN DIGITAL del MÓDULO DE SONIDO //// 200.000 veces y se contabilizan las que superan el umbral //for(veces_leido=0,veces_on=0;veces_leido<=200000;veces_leido++){if(!digitalRead(PIN_SONIDO))veces_on++;}// Se lee el valor del potenciómetro escribiendo primeramente un bit en PIN_V_POTENC //digitalWrite(PIN_V_POTENC,HIGH);Valor_Potenciometro=analogRead(Potenciometro_A0);digitalWrite(PIN_V_POTENC,LOW);// Se calculan los umbrales para iluminar los led's correspondientes //// en función de la sensiblidad ajustada en el potenciómetro //para_rango_led_rojo=long(1000+Valor_Potenciometro*165);para_rango_led_verde=long(2+Valor_Potenciometro*50);if(veces_on<=para_rango_led_verde){digitalWrite(PIN_LED_ROJO,LOW);digitalWrite(PIN_LED_AMARILLO,LOW);digitalWrite(PIN_LED_VERDE,HIGH);Serial.write(20);// SE ENVÍA ESTE CÓDIGO PARA EL USO CON PROCESSING. // NO SE USA SI SOLO TENEMOS SALIDAS A LED'S}elseif(veces_on>=para_rango_led_rojo){digitalWrite(PIN_LED_ROJO,HIGH);digitalWrite(PIN_LED_AMARILLO,LOW);digitalWrite(PIN_LED_VERDE,LOW);Serial.write(22);// SE ENVÍA ESTE CÓDIGO PARA EL USO CON PROCESSING. // NO SE USA SI SOLO TENEMOS SALIDAS A LED'S}else{digitalWrite(PIN_LED_ROJO,LOW);digitalWrite(PIN_LED_AMARILLO,HIGH);digitalWrite(PIN_LED_VERDE,LOW);Serial.write(21);// SE ENVÍA ESTE CÓDIGO PARA EL USO CON PROCESSING. // NO SE USA SI SOLO TENEMOS SALIDAS A LED'S}// ESTAS LLAMADAS A FUNCIONES SE HAN UTILIZADO PARA LA PUESTA A PUNTO PARA LEER LOS DATOS DESDE EL MONITOR SERIE//Serial.print(" VECES_ON= ");Serial.print(veces_on);Serial.print(" VALOR POTENCIOMETRO= ");Serial.print(Valor_Potenciometro);Serial.print(" PARA_RANGO_ROJO= ");Serial.print(para_rango_led_rojo);Serial.print(" PARA_RANGO_VERDE= ");Serial.print(para_rango_led_verde);Serial.println("--");}
VERSIÓN 2. MEDIANTE INTERRUPCIONES ASÍNCRONAS
/**********************************************************************//* *//* SONÓMETRO PARA EL CONTROL DE RUIDO EN EL AULA *//* VERSIÓN 2: POR INTERRUPCIONES *//* *//* www.fpbasicaelectricidad.blogspot.com *//* *//* mayo 2016 *//**********************************************************************/// DEFINICIONES //#definePIN_LED_ROJO4#definePIN_LED_AMARILLO5#definePIN_LED_VERDE6#definePIN_SONIDO3#definePIN_V_POTENC9// VARIABLES GLOBALES //longveces_leido=0;longveces_on=0,int_veces_on;intPotenciometro_A0=A0;longValor_Potenciometro=0;longpara_rango_led_verde,para_rango_led_rojo;// INICIALIZACIÓN DE LA PLACA ARDUINO NANO V3.0//voidsetup(){pinMode(PIN_LED_ROJO,OUTPUT);pinMode(PIN_LED_AMARILLO,OUTPUT);pinMode(PIN_LED_VERDE,OUTPUT);pinMode(PIN_V_POTENC,OUTPUT);pinMode(PIN_SONIDO,INPUT_PULLUP);// INICIALIZACIÓN DE LA INTERRUPCCIÓN EN EL PIN_SONIDO = D3attachInterrupt(digitalPinToInterrupt(PIN_SONIDO),funcion_interrupcion,HIGH);digitalWrite(PIN_LED_VERDE,HIGH);Serial.begin(9600);// SOLO PARA PRUEBAS}// RUTINA DE INTERRUPCIÓN //voidfuncion_interrupcion(){int_veces_on++;}// PROGRAMA PRINCIPAL //voidloop(){delay(1000);// PAUSA ESTABLECIDA PARA TOMAR UN RANGO DE TIEMPO //veces_on=int_veces_on;// SE COPIA EL VALOR DE VECES_ON DE LA INTERRUPCIÓN PARA UNA SIGUIENTE PUESTA A 0int_veces_on=0;// SE INICIALIZA EL VALOR DE LA VARIABLE QUE SE INCREMENTA EN CADA RUTINA DE INTERRUPCIÓN// Se lee el valor del potenciómetro escribiendo primeramente un bit en PIN_V_POTENC //digitalWrite(PIN_V_POTENC,HIGH);Valor_Potenciometro=analogRead(Potenciometro_A0);digitalWrite(PIN_V_POTENC,LOW);// Se calculan los umbrales para iluminar los led's correspondientes //// Se utiliza un rango logaritmico por las características logaritmicas //// de percepción por el oido humano y ya que se ha utilizado un potenciómetro lineal //para_rango_led_rojo=long(100+Valor_Potenciometro*5);para_rango_led_verde=long(2+Valor_Potenciometro/2);if(veces_on<=para_rango_led_verde){digitalWrite(PIN_LED_ROJO,LOW);digitalWrite(PIN_LED_AMARILLO,LOW);digitalWrite(PIN_LED_VERDE,HIGH);Serial.write(20);}elseif(veces_on>=para_rango_led_rojo){digitalWrite(PIN_LED_ROJO,HIGH);digitalWrite(PIN_LED_AMARILLO,LOW);digitalWrite(PIN_LED_VERDE,LOW);Serial.write(22);}else{digitalWrite(PIN_LED_ROJO,LOW);digitalWrite(PIN_LED_AMARILLO,HIGH);digitalWrite(PIN_LED_VERDE,LOW);Serial.write(21);}}// FIN DEL PROGRAMA
/* fpbasicaelectricidad.blogspot.com Arduino + Processing: Semáforo de ruido ARCHIVOS DE PROCESSING CON POTENCIÓMETRO DE NIVEL MAYO DE 2016*/import processing.serial.*; //Importamos la librería Serial
Serial port; //Nombre del puerto serieimport controlP5.*;
ControlP5 cp5;
int dato_puerto;
PImage imagen_rojo, imagen_amarillo, imagen_verde;
voidsetup()
{
port = new Serial(this, Serial.list()[0], 9600); //Abre el puerto serie COM3size(450, 450); //Creamos una ventana de 450 píxeles de anchura por 450 píxeles de altura
imagen_rojo = loadImage("triste.jpg");
imagen_amarillo = loadImage("indiferente.jpg");
imagen_verde = loadImage("riyendo.jpg");
background(255,255,255);//Fondo de color blanco
crea_potenciometro();
}
void crea_potenciometro() {
cp5 = new ControlP5(this);
cp5.addSlider("Sensibilidad")
.setPosition(10,10)
.setSize(100,20)
.setRange(0,100)
.setValue(50)
;
}
voiddraw()
{
float s1=0, s2=0;
// Mandar datos del potenciometro al arduino
s1 = cp5.getController("Sensibilidad").getValue();
if (s1 != s2) {
port.write(int (s1));
s2=s1;
}
//Recibir datos del sonido del Arduino if(port.available() > 0) // si hay algún dato disponible en el puerto
{
dato_puerto = port.read();//Lee el dato y lo almacena en la variable "dato_puerto"if (dato_puerto == 20) image(imagen_verde, 0, 0);
elseif (dato_puerto == 22) image(imagen_rojo, 0, 0);
elseimage(imagen_amarillo, 0, 0);
//println(dato_puerto);
}
//else print (" Arduino desconectado del puerto USB");
}
Los iconos para el programa de Processing:
Vídeos:
:
Fotos del proceso de construcción:
PRESENTACIÓN DEL SONÓMETRO EN LAS JORNADAS PROVINCIALES DE BUENAS PRÁCTICAS EN LA FORMACIÓN PROFESIONAL.
Hola: Nosotros hemos usado el transistor BD-139. Es un NPN-80V-1,5A-250HFE. Las características de ganancia del BJT no son restrictivas pues trabaja en corte-saturación como interruptor, con lo cual puedes utilizar otros muchos transistores y funcionaría también bien. Un saludo Feliz 2018.
Hola. Lo primero, enhorabuena por el proyecto. Soy Alfonso Muñoz, de valencia. Portavoz de un grupomuy numeroso de vecinos del barrio de Benimaclet, en Valencia. Te resumo. Nuestro barrio está sujeto a permanentes agresiones al orden y al descanso como consecuencia del ruido... Las autoridades no nos hace ni caso. Nuestra idea es instalar sonómetros gráficos , q intenten concienciar a los inquilinos de la calle, y su semáforo de ruido nos parece genial, ya q pensamos en instalar algo así en nuestros balcones a título personal. Cómo no somos ni asociación ni ningún tipo colectivo reconocido, no contamos con medios económicos ni subvenciones de ningún tipo. Pensamos q quizás, podrían "donarnos" los proyectos q los chicos hagan. A nosotros nos harían un grandísimo favor para comenzar nuestra campaña de.concienciacion ciudadana, y en compensación, sus alumnos verían q.sus proyectos están siendo utilizados realmente por una grandiosa causa, hacer q gente normal y corriente q no puede ni descansar en sus casas, puedan volver a hacerlo. Mi email: alfonso@iaprende.es Muchas gracias
Hola Alfonso: Disculpa que hay tardado en contestar, desde hace algún tiempo tengo desatendido el blog porque estoy impartiendo clases en otros módulos y otros niveles. Me alegra, y te agradezco tu comentario en el blog, que te haya gustado nuestro proyecto y que veas una utilidad práctica en él. De hecho, además de como recurso didáctico, estos sonómetros se diseñaron y construyeron para controlar el nivel de ruido en durante distintas actividades en clase y en los recreos. En estos momentos imparto otros módulos, en otros niveles e incluso estoy en otro Centro, de forma que estamos haciendo otro tipo de prácticas. A pesar de eso, lo que me pides es imposible de hacer; el material de los ciclos formativos se compra a base de asignaciones (bastante ajustadas) de la conserjería de Educación, con lo cual el material se usa en las prácticas y se queda en el centro o se recicla de nuevo para otras prácticas. De todas formas, el proyecto está suficientemente documentado para poder hacerlo con unos básicos conocimientos de Arduino. De nuevo, muchas gracias. Un saludo
Hola, quiero hacer este proyecto con mis alumnos, quisiera preguntarte cusl de los dos métodos te ha ido mejor. Si has hecho mejoras. Es un proyecto que quiero que hagan para montarlo en las aulas. Gracias
hola, que componentes usas? quiero hacer la simulacion en proteus, pero no alcanzo a encontrar, "Electret Microphone Breakout Board parte 1". Saludos, espero tu respuesta muyyy pronto, porfavor
Hola, me gustaría poder comunicarme contigo de cualquier manera (vía correo, WhatsApp, zoom etc.), para poder debatir algunas cosas, ya que me gustaría poder implementar funciones de este proyecto, en un proyecto de sonido ambiental que estoy haciendo.
Hola, pregunta, que transistores ocupan?
ResponderEliminarHola:
ResponderEliminarNosotros hemos usado el transistor BD-139. Es un NPN-80V-1,5A-250HFE. Las características de ganancia del BJT no son restrictivas pues trabaja en corte-saturación como interruptor, con lo cual puedes utilizar otros muchos transistores y funcionaría también bien.
Un saludo
Feliz 2018.
Hola.
ResponderEliminarLo primero, enhorabuena por el proyecto.
Soy Alfonso Muñoz, de valencia.
Portavoz de un grupomuy numeroso de vecinos del barrio de Benimaclet, en Valencia.
Te resumo.
Nuestro barrio está sujeto a permanentes agresiones al orden y al descanso como consecuencia del ruido... Las autoridades no nos hace ni caso.
Nuestra idea es instalar sonómetros gráficos , q intenten concienciar a los inquilinos de la calle, y su semáforo de ruido nos parece genial, ya q pensamos en instalar algo así en nuestros balcones a título personal.
Cómo no somos ni asociación ni ningún tipo colectivo reconocido, no contamos con medios económicos ni subvenciones de ningún tipo.
Pensamos q quizás, podrían "donarnos" los proyectos q los chicos hagan.
A nosotros nos harían un grandísimo favor para comenzar nuestra campaña de.concienciacion ciudadana, y en compensación, sus alumnos verían q.sus proyectos están siendo utilizados realmente por una grandiosa causa, hacer q gente normal y corriente q no puede ni descansar en sus casas, puedan volver a hacerlo.
Mi email:
alfonso@iaprende.es
Muchas gracias
Hola Alfonso:
EliminarDisculpa que hay tardado en contestar, desde hace algún tiempo tengo desatendido el blog porque estoy impartiendo clases en otros módulos y otros niveles.
Me alegra, y te agradezco tu comentario en el blog, que te haya gustado nuestro proyecto y que veas una utilidad práctica en él. De hecho, además de como recurso didáctico, estos sonómetros se diseñaron y construyeron para controlar el nivel de ruido en durante distintas actividades en clase y en los recreos.
En estos momentos imparto otros módulos, en otros niveles e incluso estoy en otro Centro, de forma que estamos haciendo otro tipo de prácticas.
A pesar de eso, lo que me pides es imposible de hacer; el material de los ciclos formativos se compra a base de asignaciones (bastante ajustadas) de la conserjería de Educación, con lo cual el material se usa en las prácticas y se queda en el centro o se recicla de nuevo para otras prácticas.
De todas formas, el proyecto está suficientemente documentado para poder hacerlo con unos básicos conocimientos de Arduino.
De nuevo, muchas gracias.
Un saludo
Hola
ResponderEliminarMe preguntaba en que rangos de dB trabaja este proyecto?
De antemano muchas gracias y felicitaciones por su proyecto.
Hola, quiero hacer este proyecto con mis alumnos, quisiera preguntarte cusl de los dos métodos te ha ido mejor. Si has hecho mejoras. Es un proyecto que quiero que hagan para montarlo en las aulas. Gracias
ResponderEliminarhola, que componentes usas?
ResponderEliminarquiero hacer la simulacion en proteus, pero no alcanzo a encontrar, "Electret Microphone Breakout Board parte 1". Saludos, espero tu respuesta muyyy pronto, porfavor
Hola, me gustaría poder comunicarme contigo de cualquier manera (vía correo, WhatsApp, zoom etc.), para poder debatir algunas cosas, ya que me gustaría poder implementar funciones de este proyecto, en un proyecto de sonido ambiental que estoy haciendo.
ResponderEliminar