En este ejemplo se imprime el número IMEI del módem, a continuación, se comprueba si está conectado a una portadora e imprime la fuerza de la señal. También explora todas las redes cercanas.
Hardware nesesitado
Escudo GSM/GPRS Telefonica + Arduino
Tarjeta SIM habilitada para datos
Circuito
Código
En primer lugar, importar la biblioteca de GSM
#define PINNUMBER ""
Inicializar instancias de las clases que va a utilizar. Va a necesitar GSM, GSMScaner, y la clase GSMmodem.
GSM gsmAccess;
GSMScanner scannerNetworks;
GSMModem modemTest;
GSMScanner scannerNetworks;
GSMModem modemTest;
Crear una variable para contener el número de IMEI, y unos mensajes de estado para enviar al monitor de serie:
String IMEI = "";
String errortext = "ERROR";
En setup, abra una conexión serie al ordenador. Después de abrir la conexión, enviar un mensaje al monitor serie que indica que el programase ha iniciado. Llamada a @ scannerNetworks.begin () @@ para restablecer el módem.
void setup(){
Serial.begin(9600);
Serial.println("GSM networks scanner");
scannerNetworks.begin();
Serial.begin(9600);
Serial.println("GSM networks scanner");
scannerNetworks.begin();
Crear una variable local para realizar un seguimiento del estado de la conexión. Vamos a usar esto para mantener el programa funcionando hasta que la tarjeta SIM esté conectada a la red:
boolean notConnected = true;
Conectarse a la red llamando a gsmAccess.begin (). Se necesita el PIN de la tarjeta SIM como argumento. Al colocar esto dentro de un bucle while (), se puede comprobar continuamente el estado de la conexión. Cuando el módem se conecte, gsmAccess () devolverá GSM_READY. Use esto como una bandera para establecer la variable notConnected a true o false. Una vez conectado, se ejecutará el resto de la configuración.
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
Obtener el IMEI del módem con modemTest.get IMEI () e imprimirlo en el monitor serie.
Serial.print("IMEI del Modem : ");
IMEI = modemTest.getIMEI();
IMEI.replace("\n","");
if(IMEI != NULL)
Serial.println(IMEI);
En loop (), escanear e imprimir todas las redes disponibles. Esto puede tomar algo de tiempo
Serial.println("Escaneando redes disponibles. Puede tardar algunos segundos.");
Serial.println(scannerNetworks.readNetworks());
Imprimir la actual portadora conectada, y la fuerza de la señal. La intensidad de la señal está en una escala de 0-31, donde 0 es el más bajo, y el 31 es el más alto. Cerrar loop ().
Serial.print("Portadora actual: ");
Serial.println(scannerNetworks.getCurrentCarrier());
Serial.print("Fuerza de la señal: ");
Serial.print(scannerNetworks.getSignalStrength());
Serial.println(" [0-31]");
Una vez que se carga el código, abrir el monitor serie para ver el estado de la conexión.
El programa completo se muestra a continuación.
// Escaneado de Redes GSM // En este ejemplo se imprime el número IMEI del módem, a continuación, se comprueba // para ver si está conectado a una portadora. Si es así, se imprime el número de // teléfono asociado a la tarjeta. A continuación, se analiza en busca de redes // cercanas e imprime sus intensidades de señal. // Circuito: // * Escudo GSM // * Tarjeta SIM // Creado 8 Marzo de 2012 por Tom Igoe, ejecutado por Javier Carazo Modificación // el 4 Febrero de 2013 por Scott Fitzgerald // http://www.arduino.cc/en/Tutorial/GSMToolsGsmScanNetworks // Este ejemplo de código es de dominio público * / // bibliotecas #include <GSM.h> // Numero de PIN #define PINNUMBER "" // inicializa la instancia biblioteca GSM gsmAccess; // incluye un parámetro "verdadero" para habilitar la depuración GSMScanner scannerNetworks; GSMModem modemTest; // Almacena los datos en variables String IMEI = ""; // resultado de error por el monitor serie String errortext = "ERROR"; void setup() { // inicializa las comunicaciones serie y espera a que se abra el puerto: Serial.begin(9600); while (!Serial) { ; // espera a que el puerto serie este conectado. Necesario para Leonardo solamente } Serial.println("Escaner de redes GSM"); scannerNetworks.begin(); // connection state boolean notConnected = true; // Inicia el escudo GSM // Si su SIM tiene PIN, pasarlo como un parámetro de begin () entre comillas while (notConnected) { if (gsmAccess.begin(PINNUMBER) == GSM_READY) { notConnected = false; } else { Serial.println("No conectado"); delay(1000); } } // obtiene los parametros del modem // IMEI, ientificador unico del modem Serial.print("IMEI del Modem: "); IMEI = modemTest.getIMEI(); IMEI.replace("\n", ""); if (IMEI != NULL) { Serial.println(IMEI); } } void loop() { // busca las redes existentes, muestra una lista de las redes Serial.println("Escaneando redes disponibles. Puede tardar algunos segundos."); Serial.println(scannerNetworks.readNetworks()); // portadora conectada actualmente Serial.print("Portadora actual: "); Serial.println(scannerNetworks.getCurrentCarrier()); // Devuelve la fuerza y la BER // señal de fuerza enescala 0-31 . 31 significa potencia > 51 dBm // BER es la tasa de error. Escala de 0-7. 99 = no detectable Serial.print("Fuerza de la señal: "); Serial.print(scannerNetworks.getSignalStrength()); Serial.println(" [0-31]"); }
No hay comentarios:
Publicar un comentario