Dificultad: intermedia

Este proyecto es de los más sencillos y a su vez de los más populares.

Como dijimos es un proyecto muy simple, pero dependiendo del país donde te encuentres trabajarás con tensiones de 110v o 220v, por lo que deberás ser muy cuidadoso cuando trabajes con alto voltaje.

Si no se tiene conocimientos básicos de electricidad con red domiciliaria, se recomienda utilizar voltajes bajos como 5v o 12v.

Materiales necesarios:

  • Arduino UNO o equivalente
  • Modulo de Relé
  • Modulo de sensor de sonido
  • Protoboard
  • Cables de conexión
  • Cable con enchufe y portalámparas
  • Lampara de bajo consumo.

Imágenes ilustrativas de componentes:

PASO 1: conexión de componentes:

A continuación, podemos ver el diagrama de conexión. Primero conectaremos el micrófono y el relé al Arduino uno.
Si el sensor de sonido tiene 4 pines significa que tiene una salida digital y una salida analógica, asegúrate de utilizar la salida analógica para la conexión. Si el micrófono sólo tiene 3 pines es porque sólo tiene salida analógica. Conecta el micrófono al pin analógico 0 A0 de tu Arduino. Luego conecta el relé al pin digital 2.

Las imágenes son ilustrativas y pueden ser diferentes a tus modulo de Rele y sensor de Sonido.

Una vez conectados los módulos a la placa Arduino es momento de conectar el cable del portalámparas al relé. Recuerde que este cable se conecta a alta tensión por lo que deberá hacer las conexiones sin estar conectado a la corriente eléctrica y con las precauciones necesarias.

Paso 2 programación:

Código Básico

Cuando hayas terminado con todas las conexiones sube el código de abajo que enciende la lámpara con un aplauso. Si todo funciona bien, ahora puedes conectar el enchufe al relé.

void setup() {

pinMode(2, OUTPUT);

pinMode(A0, INPUT);

}

void loop() {

if(analogRead(A0) > 600) {

digitalWrite(2, !digitalRead(2));

delay(1000);

}

}

El código que acabamos de subir a nuestro Arduino funcionará, pero tiene un problema. Si escuchamos música fuerte o subimos el volumen del televiso puede ocurrir que lámpara parpadée. Para evitar este inconveniente debemos lograr que el código sea más robusto y capaz de ignorar ese ruido.

Código Mejorado

Una forma de conseguirlo es almacenando las últimas lecturas de la salida del micrófono, entonces si se detecta un aplauso (al leer desde el micrófono se recibe la señal High) comprobamos si hay un anterior High almacenado, y si no lo hay cambiamos el estado de la lámpara.

Este método no es perfecto, hay algunas formas más avanzadas de hacerlo, pero con esta solución lograremos evitar la mayoría de los errores por ruidos fuertes. Claro que no servirá por ejemplo si tosémos fuerte, o si estornudamos, o si se nos cae algo al piso.

Lo haremos de la siguiente forma:

Tendremos un long long int

Cada pocos milisegundos cambiaremos este valor por uno (así: valor = valor << 1 ) desplazará todos los bits uno a la izquierda y añadirá 0 al principio

Entonces si el micrófono será mayor que algún valor, incrementaremos nuestro valor por uno

Al mismo tiempo, si la salida del micrófono es mayor que algunos valores, cambiaremos el estado de la lámpara, pero sólo cuando nuestro valor con long int value sea == 0 , ¿por qué cero? porque significa que para las últimas lecturas no se detectó ningún sonido fuerte.

Veamos el código, que es mucho más simple que la explicación:

long long int last_states = 0;

void setup() {

pinMode(2, OUTPUT);

pinMode(A0, INPUT);

}

void loop() {

last_states = last_states << 1;

if(analogRead(A0) > 600) {

if(last_states == 0){

digitalWrite(2, !digitalRead(2));

}

last_states++;

}

delay(20);

}

Con este código lámpara no reaccionará a una música fuerte o a la TV encendida.

Fuentes: http://proyectosconarduino.com/proyectos/encender-y-apagar-luz-con-aplausos/