Sorteo

Sensor evita obstaculos KY-032 para Raspberry Pi y Arduino

Este sensor, es conocido también como Keyes KY-032, posee cuatro pines:

  1. EN (Enable).

  2. out (Salida).

  3. + (Power de 3,3v a 5v CC).

  4. GND (Tierra).

Además posee dos potenciometros (R5: 502, R6: 103), un Jumper, dos LEDs (Encendido y Sensor), LED IR (Tx), sensor HS0038B (Rx), dos capacitores, 4 resistencias SMD (R1: 2001, R2: 223, R3: 223, R4: 2001) y un Circuito Integrado NE555.

Especificaciones:

  • Tensión de trabajo: 3,3v a 5v Corriente continua.

  • Corriente de trabajo: ≥ a 20mA.

  • Temperatura operativa: Entre -10°C a +50°C.

  • Distancia de detección: Entre 2cm a 40cm.

  • Interfaces de Entrada/Salida I/O: 4 Pines (EN, +V, S, GND).

  • Señal de salida: Nivel TTL.

  • Nivel LOW si el obstaculo es detectado.

  • Nivel HIGH si el obstaculo no es detectado.

  • Ajuste: 2 pontenciometros de giro único.

  • Ángulo efectivo: ± 35°.

  • Tamaño: 28mm x 23mm.

  • Peso: 9g.

El corazón de éste sensor es un Circuito Integrado NE555 configurado para generar una onda cuadrada de 38KHz, la cual es utilizada para iluminar el LED IR. La luz reflejada desde el LED IR es detectada por el módulo receptor Vishay HS0038B. El módulo incorpora un filtro optico Infrarrojo externo de 950nm y un filtro paso de bando de 38KHz interno electrónico, que hace, que solo, reciba el pulso de luz, a esa frecuencia.

Uno de los potenciometros (R6) es utilizado para ajustar la señal a exactamente 38KHz, el otro (R5) ajusta el Ciclo de trabajo de la señal, el cual ajusta el brillo del LED IR transmisor.

Esquematico apróximado:

Hagamos las conexiones en la Raspberry Pi

  • GND del sensor a GND Pin fisico 6 de Raspberry Pi.

  • + del sensor a 3,3v Pin fisico 1 deRaspberry Pi.

  • Out del sensor a GPIO24 (Pin fisico 18) de Raspberry Pi.

  • EN del sensor es habilitado por el Jumper en la placa, el pin no se conecta.

Programación del sensor en Python

Abrimos Geany y creamos un nuevo archivo .py copiamos las siguientes líneas y guardamos, luego para ejecutarlo, abrimos Terminal e introducimos el siguiente comando:

  • sudo python sensorky32.py

# Importamos los modulos.
import RPi.GPIO as GPIO 
import time  
GPIO.setmode(GPIO.BCM)
 # Declaramos el pin que conectamos al sensor. 
GPIO_PIN = 24 
GPIO.setup(GPIO_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
# retraso en segundos entre medicion y medicion. 
delayTime = 0.5 print "Sensor- Test [presiona ctrl+c para terminar test]"
 try: 
       while True:
            if GPIO.input(GPIO_PIN) == True:
               print "Sin obstaculo"
            else: 
               print "Obstaculo detectado"
               print "---------------------------------------"
        # Reset + Delay
        time.sleep(delayTime) 
 # Limpiamos GPIO al terminar el programa
 except KeyboardInterrupt:
 GPIO.cleanup()

Una vez ejecutado podemos acercar algun objeto entre 2cm y 40cm y veremos el mensaje “Obstaculo detectado”, cuando no esté nada, en ese umbral, veremos el mensaje “Sin obstaculo”.

Hagamos las conexiones en Arduino UNO

  • GND del sensor a GND de Arduino.

  • + del sensor a 5v de Arduino.

  • Out del sensor a Pin 10 de Arduino.

  • EN se habilita mediante la colocación del Jumper en el módulo, el pin queda libre.

Programación con Arduino IDE

Abrimos el IDE de Arduino, vamos a Archivo → Guardar y le ponemos un nombre; sensor.ino, ahora conectamos nuestra placa al puerto USB , vamos a Herramientas → Tarjeta → Arduino UNO, luego seleccionamos Herramientas → Puerto Serial → Elegimos el puerto que nos dió nuestra Raspberry Pi. Ahora comenzamos a escribir el siguiente código.

int Sensor = 10; // Declaramos el pin out del sensor
void setup ()
 { 
Serial.begin(9600); // Iniciamos el puerto serie 
pinMode (Sensor, INPUT) ; // declaramos la variable Sensor como entrada
 } 
// El programa lee el estado del pin out 
// y lo muestra por la consola serie Sin obstaculo, Obstaculo detectado 
void loop ()
 { 
bool val = digitalRead (Sensor) ; // la senial del pin out es leida

 if (val == HIGH) // si se detecta un valor alto,el LED se encendera, sino no. 
{ 
   Serial.println("Sin obstaculos"); 
} 
else 
{ 
   Serial.println("Obstaculo detectado");
 } 
Serial.println("------------------------------------"); 
delay(500); // retraso de 500ms entre medicion y medicion
 }

Ahora guardamos, presionamos verificar, si no hemos cometido ningún error de sintaxis, presionamos Cargar. Una vez cargado al Arduino abrimos el Monitor Serie; Herramientas → Monitor Serial, veremos el mensaje “Sin obstaculo” hasta que coloquemos un obstaculo, entre 2cm y 40cm, donde veremos la leyenda “Obstaculo detectado”.

Este sensor es comunmente usado en autos para evitar que se golpeé contra las paredes, para darle una autonomía de movimiento a un robot. Además de lo que se te ocurra.

Gracias por leer!

Podes leer mis otros artículos en Ditecno Makers

views
81
 


ElectroMercado

  • arduino | circuitos | programación | raspberry_pi
2 Comentarios
  1. German
    German 9 meses

    Muy completo amigo, con especificaciones técnicas y esquemas como me gusta a mi. Felicitaciones.

    1+

Contesta

CONTACTANOS

Esta es su red social de tecnología para compartir tus ideas y proyectos .Puedes enviarnos un correo si tienes dudas.Nos vemos

Enviando

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account