Módulo KY 037 - tectijuana/sistemasprogramables-kamikaze GitHub Wiki

alt text

¿Qué es el sensor KY-037?

Este módulo Ky-037 Sensor De Sonido permite detectar cualquier tipo de sonido superior al rango ajustado por el potenciómetro que lleva este. También permite obtener dos salidas, una análoga, que lleva toda la información que está detectando el micrófono y una digital que es una salida de encendido o apagado que se activa cuando el sonido supera un cierto volumen establecido por el potenciómetro.

Datos técnicos

Salida digital: Puede usar un potenciómetro para configurar un valor extremo para el sonic. Si el valor excede el valor extremo, enviará una señal a través de la salida digital.

Salida analógica: Señal directa del micrófono como valor de voltaje.

LED1: Muestra que el sensor recibe voltaje. LED2: Muestra que se detectó un campo magnético.

Especificaciones técnicas.

  1. Modelo: KY-037
  2. Voltaje de funcionamiento: 5 Volts
  3. Salidas: Analógica y digital
  4. Permite ajustar un nivel de umbral de salida
  5. Usa el Micrófono Gao Gan grado, de alta sensibilidad.
  6. Tiene un indicador LED de encendido
  7. Tiene un LED que indica la salida del comparador
  8. Interruptor digital salida (0 / 1)
  9. Temperatura: -40 a +85 °C
  10. Dimensiones: 35 x 15 x 14 mm
  11. Peso: 4 gr

Pinout

alt text

Funcionalidad del sensor.

El sensor tiene 3 componentes principales en su placa de circuito. Primero, la unidad de sensor en la parte frontal del módulo que mide el área físicamente y envía una señal analógica a la segunda unidad, el amplificador. El amplificador amplifica la señal, de acuerdo con el valor resistente del potenciómetro, y envía la señal a la salida analógica del módulo. El tercer componente es un comparador que apaga la salida digital y el LED si la señal cae por debajo de un valor específico. Puede controlar la sensibilidad ajustando el potenciómetro. alt text

Codigo Ejemplo en Arduino

El programa lee el valor de voltaje actual que se medirá en el pin de salida y lo muestra a través de la interfaz en serie. Además de eso, el estado del pin digital se mostrará en el terminal, lo que significa si se superó o no el valor extremo.

// Declaration and initialization of the input pin
int Analog_Eingang = A0; // X-axis-signal
int Digital_Eingang = 3; // Button
  
void setup ()
{
  pinMode (Analog_Eingang, INPUT);
  pinMode (Digital_Eingang, INPUT);
       
  Serial.begin (9600); // Serial output with 9600 bps
}
  
// The program reads the current value of the input pins
// and outputs it via serial out
void loop ()
{
  float Analog;
  int Digital;
    
  // Current value will be read and converted to voltage
  Analog = analogRead (Analog_Eingang) * (5.0 / 1023.0); 
  Digital = digitalRead (Digital_Eingang);
    
  //... and outputted here
  Serial.print ("Analog voltage value: "); Serial.print (Analog, 4);  Serial.print ("V, ");
  Serial.print ("Extreme value: ");
  
  if(Digital==1)
  {
      Serial.println (" reached");
  }
  else
  {
      Serial.println (" not reached yet");
  }
  Serial.println ("----------------------------------------------------------------");
  delay (200);
}

Conecciones al Arduino.

KY-037 Arduino
Señal digital Pin 3
+V Pin 5V
GND Pin GND
Señal analógica Pin 0

Codigo Ejemplo en Raspberry Pi

El programa lee los valores actuales de los pines de entrada y los emite en el terminal en [mV]. Además de eso, el estado del pin digital se mostrará en la terminal para mostrar si se superó o no el valor extremo.

#############################################################################################################
### Copyright by Joy-IT
### Published under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
### Commercial use only after permission is requested and granted
###
### KY-053 Analog Digital Converter - Raspberry Pi Python Code Example
###
#############################################################################################################
 
 
# This code is using the ADS1115 and the I2C Python Library for Raspberry Pi
# This was published on the following link under the BSD license
# [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code]
from Adafruit_ADS1x15 import ADS1x15
from time import sleep
 
# import needed modules
import math, signal, sys, os
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
 
# initialise variables
delayTime = 0.5 # in Sekunden
 
# assigning the ADS1x15 ADC
 
ADS1015 = 0x00  # 12-bit ADC
ADS1115 = 0x01  # 16-bit
 
# choosing the amplifing gain
gain = 4096  # +/- 4.096V
# gain = 2048  # +/- 2.048V
# gain = 1024  # +/- 1.024V
# gain = 512   # +/- 0.512V
# gain = 256   # +/- 0.256V
 
# choosing the sampling rate
# sps = 8    # 8 Samples per second
# sps = 16   # 16 Samples per second
# sps = 32   # 32 Samples per second
sps = 64   # 64 Samples per second
# sps = 128  # 128 Samples per second
# sps = 250  # 250 Samples per second
# sps = 475  # 475 Samples per second
# sps = 860  # 860 Samples per second
 
# assigning the ADC-Channel (1-4)
adc_channel_0 = 0    # Channel 0
adc_channel_1 = 1    # Channel 1
adc_channel_2 = 2    # Channel 2
adc_channel_3 = 3    # Channel 3
 
# initialise ADC (ADS1115)
adc = ADS1x15(ic=ADS1115)
 
# Input pin for the digital signal will be picked here
Digital_PIN = 24
GPIO.setup(Digital_PIN, GPIO.IN, pull_up_down = GPIO.PUD_OFF)
  
#############################################################################################################
  
# ########
# main program loop
# ########
# The program reads the current value of the input pin
# and shows it at the terminal
  
try:
        while True:
                #Current values will be recorded
                analog = adc.readADCSingleEnded(adc_channel_0, gain, sps)
  
                # Output at the terminal
                if GPIO.input(Digital_PIN) == False:
                        print "Analog voltage value:", analog,"mV, ","extreme value: not reached"
                else:
                        print "Analog voltage value:", analog, "mV, ", "extreme value: reached"
                print "---------------------------------------"
  
                sleep(delayTime)
  
  
  
except KeyboardInterrupt:
        GPIO.cleanup()

Conecciones al Raspberry Pi.

KY-037 Raspberry Pi
Señal digital GPIO24 Pin 18 (RPi)
+V 3,3V Pin 1 (RPi)
GND GND Pin 06 (RPi)
Señal analógica Analog 0 Pin A0 (ADS1115 - KY-053)