arduino y tc35i gsm modem!!

hola,
tengo problemas para comunicar arduino con un modem GSM tc35i de SIEMENS...
uso un interface basado en el tipico MAX232 para enlazar el modem con el arduino.
Aqui esta el conexionado.

Cuando conecto arduino con hyperterminal u otros terminales la comunicacion es perfecta.
De la misma manera todo va bien si conecto el modem con cualquier terminal.
Es decir:

arduino -> terminal = OK (llegan los comandos AT al terminal)
terminal -> arduino = OK (bien, el led de test se enciende, indicando que ha recibido una contestacion)
terminal -> modem = OK (el modem contesta correctamente a los comandos AT)
arduino -> modem = NO FUNCIONA, el led de arduino no se enciende

Para hacer el test he probado con el comando mas simple: "AT"
La forma correcta de enviarlo a traves del puerto es:

"at\r\n" o en decimal: 65,84,13,10 (si envio esto desde el terminal el modem contesta correctamente con un mensaje de OK)

si envio esto desde arduino (y he comprobado qeu llega desde el terminal) el modem no responde.

¿Que se os ocurre que puede estar pasando?

Este es el codigo de test que estoy usando:

char serInString[100];  

int led1 = 2;
int led2 = 13;

void readSerialString (char *strArray) {
    int i = 0;
    if(Serial.available()) {    
       //Serial.print("reading Serial String: ");  //optional: for confirmation
       while (serialAvailable()){            
          strArray[i] = Serial.read();
          
          //if( (strArray[i] == 'K') && (strArray[i-1] == 'O') )
            digitalWrite(led1, HIGH);
          
          i++;
          //Serial.print(strArray[(i-1)]);         //optional: for confirmation
       }
       
       if (strArray[i] != 0) {     
         while(strArray[i] != 0) {
            //Serial.print( strArray[i] );
            strArray[i] = 0;                  // optional: flush the content
            i++;          
         }
       }

       //Serial.println();                          //optional: for confirmation
    }      
}


void printSerialString(char *strArray) {
     int i=0;
     if (strArray[i] != 0) {     
         while(strArray[i] != 0) {
            Serial.print( strArray[i] );
            strArray[i] = 0;                  // optional: flush the content
            i++;          
         }
     }
} 


void setup() {
  
  Serial.begin(9600);


  pinMode(led1, OUTPUT);  // declare LED as output
  pinMode(led2, OUTPUT);  // declare LED as output


}

void loop () {

  readSerialString(serInString);
  
  digitalWrite(led2, HIGH);
  

  Serial.print(65, BYTE); // 'A'  // first way
  Serial.print(84, BYTE); // 'T'
  Serial.print(13, BYTE);
  Serial.print(10, BYTE);
  
  delay(1000);
  Serial.print("at\r\n");  // second way
 
  
  delay(1000);
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);
  delay(1000);
  
}

Y este es el esquematico de la mochila completa. El resto no lo tengo conectado para esta prueba, por lo que no afecta al comportamiento del sistema.


gracias,

Alex