Go Down

Topic: Duda con Shell SIM 900 (Read 769 times) previous topic - next topic

dietalia

Hola a todos. Escribo esto a ver si me podeis ayudar. En un proyecto que vengo haciendo, necesitos saber si la placa SIM900 esta encendida o apagada. Saberlo por software, claro, ya que no puedo verla fisicamente. Sé apagarla y encenderla por software, pero necesito saber su estado.

          ¿Alguna sugerencia?

                  Gracias por la paciencia.  Saludos.

alfredomrh

Hola, creo que esa placa se comunica con arduino por Uart (TX, RX), y acepta comandos AT para su configuración. Entonces solo tienes que enviarle AT y si te responde OK, es que está encendida.

Aqui tienes un manual y también mirate los ejemplos de las librerias que se utilizan en el IDE.

Saludos,

dietalia

Hola alfredomrh. Ante todo gracias por el interes.
 Efectivamente, he intentado hacerlo de esa manera, pero tengo un problema (aún estoy poco ducho en el tema). Si escribo la respuesta directamente en el monitor serial (Serial.println(MySimm.read()) todo funciona perfectamente. Le he suprimido el echo en la sim, por lo que a una llamada con comando AT una respuesta limpia. El problema viene cuando intento guardar el resultado en una variable en vez de escribirla, para poder compararla luego. Lo he intentado con string, char, etc. y en todas me salen numeros (que no corresponden al ASCII de OK), caracteres raros, etc. de manera que estoy un poco perdido.
¿Alguna sugerencia?.

              Una vez mas, gracias por la paciencia.  Saludos

alfredomrh

En un ejemplo de un modulo BT de Adafruit que he utilizado, que también es configurable mediante comandos AT, he encontrado este fragmento...

Code: [Select]
// Check for incoming characters from Bluefruit
  ble.println("AT+BLEUARTRX");
  ble.readline();
  if (strcmp(ble.buffer, "OK") == 0) {
    // no data
    return;
  }
  // Some data was found, its in the buffer
  Serial.print(F("[Recv] ")); Serial.println(ble.buffer);
  ble.waitForOK();


Como verás mediante el comando BLUEARTRX obtiene el buffer y despues con strcmp() lo compara, pero desconozco si en la SIM900 se puede hacer algo parecido, de todas formas tal vez funcione strcmp(MySimm.read(), "OK") == 0 entonces pones encendido a true.

Saludos,

surbyte

Ambos son dispositivos seriales que responden a comandos AT y devuelven respuestas que pueden incluir o no Carriage Return (0x0d) y Line Feed (0x10)

Asi que lo que has puesto se aplica al SIM900

De todos modos, cuando se sepan algo busquen en GOOGLE : Arduino SIM900 y verán infinidad de códigos.

En alguno esta la respuesta que buscan.


dietalia

Perfecto. Ya funciona.

                Gracias por la ayuda recibida.

                    Saludos.

Go Up