Detector de presencia con Ultrasonidos y buzzer

Introducción

En este tutorial vamos a medir la distancia de objetos mediante ultrasonido. Además dicha distancia se mostrará en una pantalla LCD de un Nokia 5110 y cuando sea menor de 10 cm se activará un buzzer como alarma que nos indicará que se ha vulnerado la distancia mínima.

¿Qué necesitamos?

  • LCD de Nokia 5110
  • Buzzer
  • Un Módulo sensor ultrasonidos HC-RS04, se puede encontrar en Dealextreme por unos pocos dólares.
  • Arduino UNO o similar

Librerías necesarias

  • HC-SR04, esta librería ya nos proporciona todo lo necesario para medir distancias y hasta incluso el tiempo que tarda el sonido en ir y volver.
  • Adafruit para LCD de Nokia 5110 y Adafruit GFX, es posible que si utilizáis el IDE 1.0.5 de Arduino la carga de la librería os de problemas. Para solucionarlo simplemente tenemos que borrar la librería de Robot_Control, si tenéis algún tipo de problemas no dudéis en comentarlo en el post.

Montaje

ultrasonic_nokia_and_buzzer_bb

 

El montaje de la parte de la pantalla LCD lo podemos encontrar en esta entrada del blog: Empezando con Nokia 5110 y Arduino, recordad que la pantalla se alimenta con 3,3V NO con 5V.
El sensor de ultrasonidos solo tiene 4 pines:
  • VCC: colocado directamente a 5V
  • Trig: colocado directamente al pin 10 de Arduino.
  • Echo: colocado directamente en el pin 13.
  • GND: directamente a GND proporcionado por Arduino.
El buzzer:
  • GND: directamente a GND de Arduino.
  • Pin positivo: colocado en el pin 9 con una resistencia de 330 ohm.

 

IMG_20131013_192807

 

Código

Cabecera:

Se incluyen las librerías a utilizar y se definen tanto el display LCD como el sensor de ultra sonido.
1
2
3
4
5
6
7
8
9
10
11
#include 
#include 
#include  
// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 3 - LCD reset (RST)
// pin 4 - LCD chip select (CS)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 3, 4);
Ultrasonic ultrasonic(10,13); // (Trig PIN,Echo PIN)
int BUZZER = 9;

Setup:

Se establece la comunicación, inicialización y se establece el contraste del LCD.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void setup()   {
  Serial.begin(9600);
  display.begin();
  // Inicializacion completada
  // Cambia el contraste para una mejor visualizacion
  display.setContrast(50);
  display.display(); // Muestra el splashscreen de Adafruit
  delay(2000);
  display.clearDisplay();   // Limpia la pantalla y el buffer de comunicaci´n
 
  pinMode(BUZZER, OUTPUT); // Se establece como salida el pin 9 para el buzzer
 
  //Sonidos de configuracion del buzzer
  beep(20);
  delay(1000);
}

Funciones de escritura y emisión de sonidos:

  • La función beep(int frec) recibe como parámetro la frecuencia del sonido y simplemente lo escribe en el pin 9 que está conectado al pin positivo del buzzer.
  • La función write(int value) recibe como parámetro el valor en cm que se mostrará por el LCD.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void beep(int frec){
 
analogWrite(BUZZER, frec);      // Permite cualquier valor entre 0 y 255, donde 0 indica la ausencia de sonido
}
void write(int value) {
 
  display.clearDisplay();
  String valueString = String(value);
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
 
  if(value < 10) {
 
    display.println("Dist.: " + valueString + "  cm");
    display.println("Peligro!");
    display.display();
    beep(20);
  } else {
 
    display.println("Dist.: " + valueString + " cm");
    display.display();
    beep(0);
  }

Vídeo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>