sábado, 13 de junio de 2015

Transmitir datos por la toma de auriculares: archivos de cualquier tipo

Bueno, pues en el anterior articulo os enseñé como transmitir imagenes sin compresion a traves de la toma de auriculares con los defectos que esta transmisión analogica suponia (Desincronización, alteracion de los valores,...) por lo que no pasé de las imagenes en blanco y negro sin compresion. No obstante, aprovechando que tenia un par de dias de descanso entre los examenes finales, analicé las limitaciones que esta transmisión analogica de audio me suponía, y decidí buscar una forma de transmitir datos digitales de forma fiable y a una velocidad aceptable.
Pues lo conseguí, despues de analizar el comportamiento de las señales de audio analogicas de la entrada de audio, conseguí crear un codificador y un decodificador de archivos que permiten transmitir cualquier tipo de archivo de forma fiable (y con sincronizacion) a una velocidad de hasta 48kbps (con una señal de audio a 48Khz con mis equipos).
Esta forma de transmitir los datos es haciendo variar la señal de audio de 1 a -1 en intervalos muy pequeños transmitiendo los datos de forma binaria. Esto es distinto a por ejemplo como se codificaban los datos en cassetes de ZX Expectrum o similares, los cuales al codificar en medios mas sensibles como son los cassetes, utilizaban tonos (a una velocidad de datos mucho menor). Os adjunto los programas con... Atencion... El codigo fuente (Es la primera vez en la historia de mi blog que adjunto un codigo fuente, sin contar scripts linux).
Podeis decargar todo aquí. Dentro del zip hay un fichero con instrucciones detalladas sobre el uso.

Por ultimo recomiendo transmitir los archivos siempre comprimidos (en zip por ejemplo) ya que los valores altos o bajos continuados hacen que la señal acabe cayendo (Como se puede apreciar en la imagen), lo cual puede arruinar la transmision.

Cualquier duda o comentario aqui me teneis ;)

3 comentarios:

  1. Interesado en descargar las cosas, pero el google drive no esta disponible.

    ResponderEliminar
    Respuestas
    1. Acabo de verlo en el drive y me sale que Google tiene que revisar si cumple las condiciones el contenido (supongo que por los *.exe adjuntos). En realidad el codigo que hice tampoco es muy perfecto y la salida es audio RAW (PCM_U8). Si te interesa y sabes de programacion tambien puedes aventurarte y hacer un codigo parecido, aunque si de verdad tienes muchas ganas de probarlo, para hacerlo funcionar necesitaras buenas señales de sonido. Lo intenté con mi radio-CD y no funcionó porque la señal tenia demasiado ruido. En el experimento lo conseguí hacer funcionar finalmente desde la salida de audio de una Raspberry Pi.

      Eliminar
  2. Si, también soy programador. Como sea, siempre es mas fácil si esta hecho a hacerlo. Como sea, solo es por curiosidad, ya ves que en realidad todo esto no tiene mucho sentido en la actualidad. Es solo un ejercicio mental y curiosidad.

    ResponderEliminar