Ir al contenido principal

Un (molesto) theremin con Arduino y un HC-SR04

El theremin o eterófono es un instrumento muy peculiar. Se basa en el hecho físico de que un cuerpo dentro de un campo electromagnético producido por un modulación de radiofrecuencia, produce cambios de frecuencia en dicho campo. El theremin usa dos circuitos con dos antenas: uno de volumen y otro de tono. Construir un theremin no es sencillo, pero usando un Arduino y un sensor de ultrasonidos podemos crear algo mucho más básico que no nos va a servir para hacer música, pero sí divertirnos un poco.

Threremin con Arduino

Si te gusta la serie Big Bang Theory, seguramente recuerdas al doctor Sheldon Cooper tocando un theremin. Si no recuerdo mal, la sintonía de inicio de Star Trek. Con este montaje vamos a poder emularlo, no tanto como músico, sino más bien como compañero de piso molesto.

Sheldon tocando el theremin

Además del Arduino, necesitamos un sensor de ultrasonidos como el económico HC-SR04 y un buzzer (yo he usado un TMB12A05).

Esquema theremin con Arduino

Y el código para Arduino es éste.

#define MIN_DISTANCIA 30
int echo = 9;     // Pin para echo                          
int trigger = 10; // Pin para trigger                               
int speaker = 11; // Pin para el buzzer
unsigned long tiempoRespuesta;
unsigned long distancia;
float freqRad;
int tono;
void setup() {
  pinMode(speaker, OUTPUT);                  
  pinMode(trigger, OUTPUT);                     
  pinMode(echo, INPUT);                    
 }
 void loop() {
  digitalWrite(trigger, HIGH);            // Enviamos pulso de 10 microsegundos
  delayMicroseconds(10);                        
  digitalWrite(trigger, LOW);                   
  tiempoRespuesta = pulseIn(echo, HIGH);  // Y esperamos pulso de vuelta
  distancia = tiempoRespuesta/58;         // Calculo de distancia en cm
  if (distancia < MIN_DISTANCIA) {
    freqRad = sin(distancia*(3.14/180)); // Pasamos frecuencia a radianes
    tono = 2000+(int(freqRad*1000));     // calculamos el tono        
    tone(speaker, tono, 500);
  } 
}

El funcionamiento es muy sencillo. Con el sensor de ultrasonidos se hace una medida de distancia. Esto es, se emite un pulso usando la señal trigger y se recoge a través de la patilla echo. El tiempo que tarda en reconocerse el pulso de vuelta al rebotar en el obstáculo nos indica la distancia. No voy a entrar en más detalle ya que hay miles de documentos en Internet explicando el funcionamiento de este sensor a fondo.

Si la distancia al objeto (en este caso la mano) es inferior a 30 cm se calcula la frecuencia del tono como función sinusoidal de dicha distancia y se emite el tono a través del buzzer. En el siguiente vídeo se puede ver el (desastroso) resultado de intentar tocar una melodía con este montaje.

Comentarios

Entradas populares de este blog

Creando firmas de virus para ClamAV

ClamAv es un antivirus opensource y multiplataforma creado por Tomasz Kojm muy utilizado en los servidores de correo Linux. Este antivirus es desarrollado por la comunidad, y su utilidad práctica depende de que su base de datos de firmas sea lo suficientemente grande y actualizado. Para ello es necesario que voluntarios contribuyan activamente aportando firmas. El presente artículo pretende describir de manera sencilla cómo crear firmas de virus para ClamAV y contribuir con ellas a la comunidad.

Ingeniería inversa de un parche de Microsoft Windows

A estas alturas ya hemos asumido que la seguridad total en Internet es, cuanto menos, un mito. Ningún software está libre de vulnerabilidades, y por mucha auditoría, test de intrusión o pruebas de fuzzing que nos empeñemos en hacer, ninguna metodología puede demostrar sin lugar a dudas que un software es 100% seguro. Ante este panorama, hay dos tendencias mayoritarias a la hora de hacer públicas las vulnerabilidades. Por un lado, están los que piensan que cuando se descubre un fallo ha de hacerse público de forma inmediata. En este escenario, la publicación de una vulnerabilidad es el pistoletazo de salida para una carrera entre el desarrollador para sacar el parche y los "malos" para lograr explotarla. Esta política es conocida como full disclosure . Por otro lado, tenemos a los siguen una política responsible disclosure , que abogan por mantener la vulnerabilidad en secreto hasta la salida del parche por parte del desarrollador. Sin entrar en cuestiones filosóficas que no...

Scripts en NMAP

Cuando pensamos en NMAP, pensamos en el escaneo de puertos de un host objetivo al que estamos relizando una prueba de intrusión, pero gracias a las posibilidades que nos ofrecen su Scripting Engine , NMAP es mucho más que eso. Antes de continuar, un aviso: algunas de posibilidades que nos ofrecen los scripts de NMAP son bastante intrusivas, por lo que recomiendo hacerlas contra hosts propios, máquinas virtuales como las de Metasploitable, o contrato de pentesting mediante. Para este artículo voy a usar las máquinas de Metasploitable3 . No voy a entrar en los detalles sobre el uso básico de NMAP, ya que hay miles de tutoriales en Internet que hablan sobre ello. Lo cierto es que NMAP tiene algunas opciones que permiten obtener información extra, además de qué puertos están abiertos y cuales no. Por ejemplo, la opción -sV trata de obtener el servicio concreto, e incluso la versión del servicio que está corriendo en cada puerto. Otro ejemplo es la opción -O, que intenta averiguar el ...