Menú *611# y *103#
Materiales Utilizados:
- Modulo sim900
- Tarjeta Arduino Uno
- Sim card de Claro "para Colombia". Si esta en un país distinto, puedes probar con distintas sim card y ver con cual funciona bien.
Conexión
Selección puerto de comunicación:
Los conectores jumper puentes, permiten cambiar los puertos RX y TX entre los pines D8 y D7, o D1 y D0. Se selecciona entre un UART por software (D8, D7) o un UART por hardware (D1, D0).
Pines utilizados:
Pines (D1, D0).
Descripción del código
El código que se describe en este tutorial, permite navegar por las opciones del menú *611#, este menú conocido como servicio de datos suplementarios estructurados se puede acceder en los diferentes operadores móviles, pero no siempre marcando el mismo número, en el caso del operador que se está utilizando (Claro Colombia) sería *611#, además de esta opción, también se puede conocer el saldo de la línea móvil marcando *103#.
Para poder navegar dentro del menú *611#, se utiliza una función que recibe un dato por parámetro de tipo String "cadena", este dato sería el ingresado por el puerto serial, por ejemplo: *611#, *103# y las opciones que se quiere seleccionar del menú *611#, opción 1, opción 2, etc., dentro de esta función se tiene otra función "clearBuffer()" que permite limpiar el buffer para no tomar caracteres indeseados.
String readAnswer(String at){
String result,atAdj;
if(at.length()>3){ //*611#
atAdj = at.substring(0,5);
}else{
atAdj = at.substring(0,1);
}
delay(1000);
while(!o){
Serial.println("AT+CUSD=1,\""+atAdj+"\",15");
clearBuffer();
o = true;
}
while(!Serial.available()){}
result = Serial.readString();
Serial.println(result);
return result;
}
void clearBuffer(){
delay(1000);
while(Serial.available()>0)
Serial.read(); // Limpie el buffer de entrada
}
Luego de obtener el dato pasado por parámetro, se adjunta al comando AT que habilita el servicio de datos suplementarios estructurados: "AT+CUSD=1,\""+atAdj+"\",15", que posteriormente se envía al modulo sim900, y así se puede navegar por el menú del *611#. Este proceso se puede apreciar con mayor detalle en el video tutorial de este apartado.
Conceptos:
Serial.readString(): Función propia de Arduino, que permite leer todo lo ingresado por el puerto serial o buffer y, convertirlo a dato de tipo String o una cadena, es decir nos devuelve un dato de tipo String.
Serial.read(): Igual que la función anterior, pero el dato que nos devuelve esta función es de tipo int.
lastIndexOf(): Función que permite buscar dentro de un String, un carácter u otro String, si lo encuentra, esta función devuelve 0, en caso contrario devuelve -1.
Ejemplo:
result.lastIndexOf("+CUSD: 2")
Donde:
result es una variable de tipo String.
+CUSD: 2 es la cadena a buscar.
substring(from,to): Función que obtiene una subcadena de una cadena, desde un posición inicial "from" hasta una posición final "to".
Ejemplo:
at.substring(0,5)
Donde:
at es una variable de tipo String.
0 posición inicial.
5 posición final.
Tips para realizar las pruebas
- Fijar la frecuencia del módulo en 19200 bps "Serial.begin(19200)" y "MOD_SIM900.begin(19200)", con esta frecuencia el modulo trabaja mucho mas estable, si no le funciona con dicha frecuencia, ir modificando hasta encontrar la correcta.
- Cuando se disponga a subir el código a la tarjeta de Arduino Uno, tener presente que la conexión con los pines de trasmisión por hardware TX y RX (D1, D0), deben estar desconectado para que no se tenga error por conexión ó por ende no tener alimentado el modulo sim900 en el momento.
Códigos Fuentes Utilizados
En el siguiente enlace, puedes encontrar el repositorio con los códigos fuentes que se utilizaron en las pruebas.
0 Comentarios