Autor Tema: Controlar iPod e iPhone con PIC  (Leído 7071 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Controlar iPod e iPhone con PIC
« en: 29 de Agosto de 2009, 02:11:57 »
Hola chicos!
Hace tiempo que no pongo algo productivo por el foro. Asi que aqui voy  :mrgreen:
Para el que no lo sepa, me dedico a hacer espectaculos, y muchas veces, cuando actuo sólo es para mi muy importante tener el control del sonido. Hasta ahora lo que hacia era tener la mesa de sonido cerca y mi iPhone conectado a ella. Tiraba la musica con el iPhone, pero "manualmente"... cosa que no es muy estetico, escenicamente hablando, ya que hay que ir hasta la mesa de sonido cada vez que quieres subir o bajar el volumen, o pasar de cancion.
Hace unos dias me entere que Apple hace tiempo libero su "Apple Accessory Protocol" (AAP), que es el que hace posible comunicarse con los iPods y iPhones mediante comunicacion serie. Encontre que habia algo hecho con un dsPIC, pero la verdad no entendi el codigo  :( asi que me puse a investigar el protocolo y despues de unas cuantas horas investigando y probando logre descifrar su funcionamiento  :-/ :-/
Hace un ratito logre terminar el mini proyecto, que no es mas que un mando a distancia para controlar mi iPhone (o iPod) por radio frecuencia con un 12F683.
Los comandos implementados son:
-Play/Pause
-Vol +
-Vol -
-Skip >> / Fast foward
-<< Skip / Rewind

Ademas de estos comandos hay muchos otros, pero estos son lo que me hacian falta a mi.
Os dejo el codigo fuente para que sirva como base para ampliar/adaptar a sus necesidades.

Ademas, hay dos paginas que os daran la informacion basica para poder empezar:
http://pinouts.ru/PortableDevices/ipod_pinout.shtml
http://nuxx.net/wiki/Apple_Accessory_Protocol

Espero que a alguien le sea de ayuda.
Yo, al ver que mediante el puerto del iPhone, y con el AAP puedo controlar unas cuantas cosas, me estoy planteando hacer un manos libres para el coche, aunque supongo que me sera mas barato de tiempo y recursos comprarme un "Parrot"  :D

Salu2

PS: por lo visto esta lleno el servidor y no se pueden subir archivos. El codigo es muy cortito y es el siguiente:
Código: C
  1. #include <12F683.h>
  2. #device adc=8
  3.  
  4. #FUSES XT,NOWDT,NOMCLR,PUT,INTRC_IO,PROTECT
  5.  
  6. //GPIO
  7. #byte GP    =  0x05
  8.  
  9. #define TX      PIN_A0
  10. #bit BTPLAY     = GP.1
  11. #bit D3         = GP.2
  12. #bit D2         = GP.3
  13. #bit D1         = GP.4
  14. #bit D0         = GP.5
  15.  
  16. #use delay(clock=8000000)
  17. #use fast_io(a)
  18. #use rs232(baud=19200, xmit=TX)
  19.  
  20. //Leer http://nuxx.net/wiki/Apple_Accessory_Protocol
  21. //Algunos botones tienen una funcion diferente segun sea una pulsacion corta o larga.
  22. //Para simular una pulsacion larga hay que enviar SOLO UNA VEZ el comando
  23. //y este se mantendra "presionado" hasta que se envie el comando "released"
  24.  
  25. //                | Header  |Len |Mode| Command |Check (0x100-Len-Mode-Command)
  26. char INIT[]             = {0xFF,0x55,0x03,0x00,0x01,0x02,0xFA}; //inicializar "simple remote"
  27.  
  28. char RELEASED[] = {0xFF,0x55,0x03,0x02,0x00,0x00,0xFB}; //fin de pulsacion
  29. char PLAY[]             = {0xFF,0x55,0x03,0x02,0x00,0x01,0xFA}; //play/pause
  30. char VOLUP[]    = {0xFF,0x55,0x03,0x02,0x00,0x02,0xF9}; //volumen +
  31. char VOLDW[]    = {0xFF,0x55,0x03,0x02,0x00,0x04,0xF7}; //volumen -
  32. char NEXT[]             = {0xFF,0x55,0x03,0x02,0x00,0x08,0xF3}; //cancion siguiente/fast foward
  33. char PREV[]             = {0xFF,0x55,0x03,0x02,0x00,0x10,0xEB}; //cancion anterior/rewind
  34.  
  35. //Rutinas
  36. void Send_AAP(char *APP);
  37.  
  38. void main() {
  39.         setup_adc_ports(NO_ANALOGS);
  40.         setup_adc(ADC_CLOCK_INTERNAL);
  41.         setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  42.         setup_timer_1(T1_DISABLED);
  43.         setup_timer_2(T2_DISABLED,0,1);
  44.         setup_ccp1(CCP_OFF);
  45.         setup_comparator(NC_NC);
  46.         setup_vref(FALSE);
  47.  
  48.         setup_oscillator(OSC_8MHZ);
  49.         set_tris_a(0b00111110);
  50.        
  51.         Send_AAP(&INIT[0]);     //inicializar el ipod en modo "simple remote"
  52.        
  53.         do{
  54.                 if(BTPLAY == 0){
  55.                         Send_AAP(&PLAY[0]);
  56.                         Send_AAP(&RELEASED[0]);
  57.                         while(BTPLAY == 0){delay_ms(20);}       //antirebote
  58.                 }
  59.                
  60.                 if(D0 == 1){
  61.                         Send_AAP(&VOLUP[0]);    //comando volumen +
  62.                         while(D0 == 1){delay_ms(20);}   //espera a que se deje de presionar (mientas el volumen sigue subiendo)
  63.                         Send_AAP(&RELEASED[0]); //detiene la subida de volumen
  64.                 }
  65.                
  66.                 if(D1 == 1){
  67.                         Send_AAP(&VOLDW[0]);    //comando volumen -
  68.                         while(D1 == 1){delay_ms(20);}   //espera a que se deje de presionar (mientas el volumen sigue bajando)
  69.                         Send_AAP(&RELEASED[0]); //detiene la bajada de volumen
  70.                 }
  71.                
  72.                 if(D2 == 1){    //pulsacion corta: skip>> ; pulsacion larga: fast foward
  73.                         Send_AAP(&NEXT[0]);
  74.                         while(D2 == 1){delay_ms(20);}
  75.                         Send_AAP(&RELEASED[0]);
  76.                 }
  77.                
  78.                 if(D3 == 1){    //pulsacion corta: <<skip ; pulsacion larga: rewind
  79.                         Send_AAP(&PREV[0]);
  80.                         while(D3 == 1){delay_ms(20);}
  81.                         Send_AAP(&RELEASED[0]);
  82.                 }
  83.         }while(TRUE);
  84.  
  85. }
  86. void Send_AAP(char *AAP){
  87.         int x;
  88.        
  89.         for(x=0;x<7;x++){
  90.                 putc(AAP[x]);
  91.         }
  92. }
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Controlar iPod e iPhone con PIC
« Respuesta #1 en: 29 de Agosto de 2009, 02:23:57 »

Genial Martyn!

XD solo que no tengo ipod :(

Exelente , saludos!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Controlar iPod e iPhone con PIC
« Respuesta #2 en: 29 de Agosto de 2009, 02:50:54 »
Magnífico, mago. Felicidades.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Controlar iPod e iPhone con PIC
« Respuesta #3 en: 29 de Agosto de 2009, 10:31:20 »
Bastante útil  :mrgreen:

Felicidades por echarlo a andar Marttyn

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Controlar iPod e iPhone con PIC
« Respuesta #4 en: 29 de Agosto de 2009, 14:42:47 »
Foto y videito... no se ve muy bien, pero al menos da la idea  :D



La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: Controlar iPod e iPhone con PIC
« Respuesta #5 en: 29 de Agosto de 2009, 15:18:40 »
que bueno... la magia de la serie 12F... como me gustan esos enanos.

y me recordó un enlace ya perdido en mis marcadores: http://www.zerosign.net/index.php/2006/07/28/ibrella-control-your-ipod-with-an-umbrella/ muy útil para quienes vivimos en Galicia.

un saludo

Desconectado ra.zamorano

  • PIC10
  • *
  • Mensajes: 1
Re: Controlar iPod e iPhone con PIC
« Respuesta #6 en: 03 de Septiembre de 2009, 22:06:10 »
Bastante agradable tu post, muy bueno el tema hace un par de años andaba buscando algo por el estilo, no entiendo mucho C pero es legible y con hartos comentarios apartes los links que diste son bastante explicativos, lo unico que me queda es saber como consigo los conectores para el ipod o que tipo de cable con el conector debo comprar y faenar para poder aplicarlo.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Controlar iPod e iPhone con PIC
« Respuesta #7 en: 05 de Septiembre de 2009, 11:24:03 »
Hola! Bienvenido al foro!
Los conectores los consigo comprando accesorios para iPod y luego desarmandolos  :P
En ebay hay accesorios (mandos a distancia, cables de datos, cables AV...) para iPod por apenas un par de euros si buscas en vendedores chinos. Estos conectores son normales, pero solo te traeran los pines que el accesorio utiliza. Por ejemplo, en el cable de datos te vienen solo cuatro pines: USB+, Gnd, D+ y D-. Tendras quitar los pines de su lugar y ponerlo en el que a ti te convenga.
Sino tambien hay una pagina que te vende conectores "virgenes" con todos los pines por 2 dolares creo. http://www.chargeconverter.com/shop/connector.htm
Sparkfun tambien tiene conectores, pero son mas caros.
Salu2 y esperamos verte por el foro!
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Controlar iPod e iPhone con PIC
« Respuesta #8 en: 05 de Septiembre de 2009, 12:10:40 »
Genial cacharro!!!! enhorabuena mago marttyn!

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Controlar iPod e iPhone con PIC
« Respuesta #9 en: 06 de Septiembre de 2009, 20:30:53 »
 :mrgreen: Gracias por los elogios!
Pero como no todo puede ser halagos tengo que decir que el viernes probe el aparatito y funciono decentemente bien, pero en otro espectaculo el sabado no funciono como esperaba. Dependiendo del ruido electromagnetico del entorno o de la distancia al receptor puede que haya que subir un poco el antirrebote. Al darle a cancion siguiente a veces pasaba dos canciones seguidas en vez de una. Asi que ya sabeis...  :P
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Controlar iPod e iPhone con PIC
« Respuesta #10 en: 07 de Septiembre de 2009, 00:48:42 »
muuuuy bueeena marttyn!!!... sencillamente espectacular!
felicitciones y saludos!
 8)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado amyver

  • PIC12
  • **
  • Mensajes: 75
Re: Controlar iPod e iPhone con PIC
« Respuesta #11 en: 08 de Septiembre de 2009, 16:35:08 »
Marttyn espectacular!!!!! :twisted: :twisted:

gracias nos sera de mucha utilidad chauuuuuuuuuuuu............. :-/ :-/ :-/ :-/

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Controlar iPod e iPhone con PIC
« Respuesta #12 en: 07 de Enero de 2011, 09:57:40 »
Muy bueno que te quedo.

No se como me perdi el desenlace  :mrgreen:

Ahora si tengo ipod xD

Espero conseguir un dock para hacer las pruebas.

Saludos!!!
-------------------------------

Marttyn , que dock pediste??

Creo que me iria bien con el de 15° de inclinacion para montar en pcb.
-----

Ya identifique el que usas en la página xD .
« Última modificación: 07 de Enero de 2011, 10:27:56 por AKENAFAB »


 

anything