Proyecto de Raspberry Pi Pico: Control de Servo con Sensor de Sonido

Descripción del Proyecto:

El proyecto consiste en utilizar una Raspberry Pi Pico junto con un servo motor y un sensor de sonido para crear un dispositivo que toque automáticamente un redoblante cuando se detecte un sonido, como un chasquido o un aplauso. El servo motor se mueve a una posición específica cuando se detecta un sonido, lo que simula el golpe en el redoblante.

Video

Código del Sketch:


#include  // Biblioteca con la que trabaja el servomotor SG90

Servo myservo;               // Crear un objeto Servo
int pin_servo = 0;           // Pin al que está conectado el servo (GP0 - Pin 1 de la Raspberry Pi Pico)
int pin_sensor = 1;          // Pin al que está conectado el módulo del sensor de sonido (GP1 - Pin 2 de la Raspberry Pi Pico)
bool sonido_previo = LOW;    // Variable para almacenar el estado previo del sensor de sonido
unsigned long tiempo_previo = 0;  // Variable para almacenar el tiempo de la última detección de sonido
unsigned long tiempo_actual = 0;  // Variable para almacenar el tiempo actual
bool servo_activado = false; // Variable para controlar si el servo está activado o no

void setup() {
  myservo.attach(pin_servo);      // Asignar el pin del servo
  pinMode(pin_sensor, INPUT);     // Configurar el pin del sensor de sonido como entrada
}

void loop() {
  // Obtener el tiempo actual
  tiempo_actual = millis();
  
  // Leer el estado actual del sensor de sonido
  int sonido_actual = digitalRead(pin_sensor);
  
  // Si el estado actual es HIGH y el estado previo es LOW, y ha pasado suficiente tiempo desde la última detección
  if (sonido_actual == HIGH && sonido_previo == LOW && !servo_activado) {
    // Mover el servo a la posición deseada
    myservo.write(60);    // Mover el servomotor al ángulo de 60 grados
    tiempo_previo = tiempo_actual;  // Actualizar el tiempo de la última detección de sonido
    servo_activado = true; // Marcar el servo como activado
  }
  
  // Si el servo está activado y ha pasado un tiempo suficiente, volver a la posición inicial
  if (servo_activado && (tiempo_actual - tiempo_previo) > 100) {
    myservo.write(90);    // Volver el servo a la posición inicial, que sería en este caso de 90 grados
    servo_activado = false; // Marcar el servo como desactivado
  }
  
  // Actualizar el estado previo del sensor de sonido
  sonido_previo = sonido_actual;
}

Foto de las Conexiones:

Foto de las conexiones Foto de las conexiones Foto de las conexiones

Conexiones Físicas:

Servo Motor:

Módulo del Sensor de Sonido:

Consideraciones sobre la Salida Analógica del Sensor de Sonido:

En este proyecto, se optó por utilizar la salida digital del sensor de sonido en lugar de su salida analógica por varias razones. En primer lugar, la salida digital proporciona una señal más clara y fácil de procesar para detectar eventos de sonido, como chasquidos o aplausos (o, como en el caso de este proyecto, "soplidos"), debido a su naturaleza binaria (alta o baja). Esto simplifica el código y el proceso de detección de eventos sonoros. Además, la salida digital es más adecuada para aplicaciones donde se necesitan respuestas rápidas y precisas, como en este caso, donde se busca una respuesta rápida del servo motor al sonido detectado. Por otro lado, la salida analógica del sensor de sonido proporcionaría una señal continua que requeriría una mayor complejidad en el procesamiento de la señal para determinar eventos específicos. En resumen, la elección de utilizar la salida digital del sensor de sonido se basó en su simplicidad y adecuación para las necesidades del proyecto.

Data Sheets

Servo Motor (SG90):

Servo Motor SG90

Para obtener más información técnica sobre el Servo Motor SG90, podés consultar el datasheet en el siguiente enlace:

Datasheet del Servo Motor SG90

Sensor de Sonido (Micrófono):

Sensor de Sonido (Micrófono)

Raspberry Pi Pico:

Raspberry Pi Pico

Marco Artístico

En el contexto artístico y conceptual de este proyecto, se explora la intersección entre dos familias de instrumentos musicales, específicamente la percusión y los instrumentos de viento, a través de la convergencia de las nuevas tecnologías y el universo del arte sonoro. Esta convergencia permite la creación de un dispositivo que, en su funcionamiento, en cierta manera permite desdibujar las fronteras tradicionales entre estas dos familias instrumentales. Este enfoque se enmarca dentro del contexto más amplio del arte sonoro, un campo multidisciplinario que abarca la exploración experimental del sonido en sus diversas manifestaciones.

El proyecto se sitúa en el cruce de dos dimensiones: la física y la simbólica. Desde un punto de vista físico, el dispositivo se activa mediante el flujo de aire exhalado por el intérprete, estableciendo una conexión directa entre la acción corporal y la producción sonora. Esta relación tangible entre el cuerpo del intérprete y el instrumento subraya la naturaleza orgánica y visceral de la experiencia musical, invitando a una exploración sensorial y kinestésica del acto de hacer música.

Desde una perspectiva simbólica, el proyecto dialoga con la noción de "familias de instrumentos" en la música, una categorización tradicional que agrupa instrumentos según sus características tímbricas y técnicas de ejecución. Al fusionar elementos de percusión y viento en un solo dispositivo, se desafían las convenciones establecidas sobre la taxonomía musical, revelando la fluidez y la interconexión inherentes a la creación sonora contemporánea.

Información del Artista:

Este proyecto fue realizado en Mayo de 2024, en el contexto del Seminario de Diseño y Desarrollo de Interfaces, dictado por el docente Jorge Crowe en el marco de la Especialización en Arte Sonoro de la Universidad Nacional de Tres de Febrero, por el alumno Facundo Nicolás Suárez (aka Facu Suárez).