Paso 12: Servidor MATLAB
Nuestro servidor MATLAB se comunica mediante el protocolo que describen en el último paso. Hay 5 archivos:
runserver.m es el lazo de servidor principal. Continuamente se escucha una entrada serial, procesa los comandos enviados desde el Arduino. También maneja el envío y recepción de configuraciones diferentes auriculares previamente calibrado. Por defecto, nuestro código se conecta en el puerto "COM8". Esto puede ser diferente para cualquier ordenador que utilices.
build_basis.m se llama una vez para un funcionamiento del servidor. Se construye el "vectores de la base" de cualquier auricular está en el micrófono. Lo hace por el valor de todos los cacharros digitales 255 (todo 0 ganancia), excepto uno, y obtener la función de transferencia de los auriculares con esa banda quitado. Hace esto para todos los 6 canales y luego construye una matriz de "base" A que se utilizará para los instalación paso de mínimos cuadrados.
networkAnalyze_chirp ejecuta un barrido de frecuencia, en la forma de una función de chirrido de lograithmic y reproduce el sonido resultante de los altavoces del ordenador. A continuación, agarra el valor del detector de pico (siendo transmitido por el Arduino) y devuelve las amplitudes y el desplazamiento de la respuesta.
target_fit toma una matriz de base A y corresponde a un auricular de destino A través de mínimos cuadrados. A continuación establece las macetas digial en los valores ajustados y realiza un barrido de frecuencia final en los auriculares para la verificación.
write_pots publica los valores de la elegida (un array de valores, longitud 6, valores 0 - 255) para Arduino. pausa entre cada envío de una cantidad especificada por el retraso para asegurar el Arduino se acaba escribiendo a SPI.
Por favor descargar y jugar con el código!
Nota: Esto también se puede implementar en el Arduino, desafiamos el usuario avanzado de Arduino para hacerlo!