Primeros pasos usando el módulo GPRS
Aprende a cómo comenzar con el módulo GPRS / GSM
23 agosto, 2019 por
Primeros pasos usando el módulo GPRS
Boot & Work Corp. S.L., Quesada Dani Salvans

Introducción

En este post vamos a ver cómo introducirnos a la programación GPRS en el IDE de Arduino, destacando los primeros pasos a realizar para configurarlo y utilizarlo de forma adecuada y funcional en este módulo.

Primeros pasos para programar el módulo GPRS con Arduino IDE

1. Introduce la tarjeta SIM 

Procederemos a depositar correctamente la tarjeta SIM en el PLC. Para hacer esto, primero debes ubicar la entrada de la tarjeta SIM del PLC, que se encuentra en la tapa superior del dispositivo. Podrás ver el símbolo de la tarjeta SIM en la serigrafía; la entrada está justo debajo. Para ingresar la tarjeta, debes hacerlo como se muestra en las siguientes imágenes:

Cómo introducir la tarjeta SIM en el Módulo GPRS

2. Configuración del software

Debemos seguir estos puntos para asegurar un funcionamiento correcto del GPRS:

    1.- Selecciona la familia y modelos adecuados para las Boards (la familia y modelo GPRS que tengas). 

Arduino IDE M-Duino Boards 1



Arduino IDE M-Duino Boards 2








GPRS


   2.- Asegúrate de importar el header GPRS.h, el cual esta incluido en nuestras Boards y ha sido desarrollado por nuestros programadores. 

#include <GPRS.h>

 Aquí tienes el post sobre cómo instalar nuestras Boards:


    3.- Es muy importante implementar ciertas funciones como la que se usa para activar el módulo si son necesarias en su programa: 

GPRS.enableGPRS(APN, USERNAME, PASSWORD)

Si quieres ver todas las funciones GPRS disponibles, puedes consultar el documento pertinente cuando te descargues las Boards.


Ejemplos de uso del módulo GPRS

Ahora que ya sabemos los principales pasos, vamos a ver dos ejemplos sobre cómo utilizar el Módulo GPRS. Puedes encontrar los dos en los ejemplos de GPRS de las Boards de Arduino IDE:



Servidor

Antes de nada, debes definir los parámetros de tu tarjeta SIM (PIN, APN, USERNAME, PASSWORD). Estos dependen de la compañía de la tarjeta, puedes encontrarlos en Internet o contactando directamente con la compañía si no los tienes. Este programa es un simple ejemplo de un servidor. En el bloque del setup, este mira si se requiere el número PIN y, si es así, comprueba si es correcto y desbloquea la SIM. En el bloque del loop, el programa reproduce cada 3 segundos los siguientes parámetros; comprueba si NetworkStatus es 1 (Registered(home)) o 5 (Registered(roaming)), si es uno de estos dos, activa el GPRS (si todavía no estaba activado) y, si un cliente está disponible lo que significa conectado al servidor, escribe en el Puerto Serie (Serial Monitor) el mensaje que el cliente ha enviado.

Aquí tienes el código:

// GPRS library example
// by Industrial Shields
#include <GPRS.h>
#define PIN ""
#define APN ""
#define USERNAME ""
#define PASSWORD ""
uint8_t buffer[1024];
int networkStatus = -1;
////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
  Serial.begin(9600UL);
  if (!GPRS.begin(80)) {
    Serial.println("Impossible to begin GPRS");
    while(true);
  }
  int pinRequired = GPRS.isPINRequired();
  if (pinRequired == 1) {
    if (!GPRS.unlockSIM(PIN)) {
      Serial.println("Invalid PIN");
      while (true);
    }
  } 
  else if (pinRequired != 0) {
    Serial.println("Blocked SIM");
    while (true);
  }
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  static uint32_t lastStatusRead = millis();
  if (millis() - lastStatusRead > 3000) {
    networkStatus = GPRS.getNetworkStatus();
    lastStatusRead = millis();
    
    if (networkStatus == 1 || networkStatus==5) {
      
      if (!GPRS.enableGPRS(APN, USERNAME, PASSWORD)){
        GPRS.enableGPRS(APN, USERNAME, PASSWORD);
      }
      else{
        GPRSClient client = GPRS.available();
        if (client) {
          size_t len = client.available();
          if (len > 0) {
            client.read(buffer, len);
            Serial.write(buffer, len);
          }
        }
      }
    }
  }
    
    switch (networkStatus) {
      case 0:
        Serial.println("Not registered");
        break;
      case 1:
        Serial.println("Registered (home)");
        break;
      case 2:
        Serial.println("Not registered (searching)");
        break;
      case 3:
        Serial.println("Denied");
        break;
      case 4:
        Serial.println("Unknown");
        break;
      case 5:
        Serial.println("Registered (roaming)");
        break;
  }
}

Servidor

Antes de nada, debes definir los parámetros de tu tarjeta SIM (PIN, APN, USERNAME, PASSWORD). Estos dependen de la compañía de la tarjeta, puedes encontrarlos en Internet o contactando directamente con la compañía si no los tienes. Este programa es un simple ejemplo de un servidor. En el bloque del setup, este mira si se requiere el número PIN y, si es así, comprueba si es correcto y desbloquea la SIM. En el bloque del loop, el programa reproduce cada 3 segundos los siguientes parámetros; comprueba si NetworkStatus es 1 (Registered(home)) o 5 (Registered(roaming)), si es uno de estos dos, este procede a comprobar GPRSStatus, si es 1(GPRS conectado) comprueba si el cliente esta conectado y envía diversos mensajes al servidor. Después de esto, si el cliente está disponible, el programa escribe los mensajes previos en el Puerto Serie (Serial Monitor) con el fin de comprobarlos.


Aquí tienes el código:

// GPRS library example
// by Industrial Shields

#include <GPRS.h>

#define PIN ""
#define APN ""
#define USERNAME ""
#define PASSWORD ""

GPRSClient client;
uint8_t buffer[1024];

////////////////////////////////////////////////////////////////////////////////////////////////////

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

  if (!GPRS.begin()) {
    Serial.println("Impossible to begin GPRS");
    while(true);
  }

  int pinRequired = GPRS.isPINRequired();
  if (pinRequired == 1) {
    if (!GPRS.unlockSIM(PIN)) {
      Serial.println("Invalid PIN");
      while (true);
    }
  }
  else if (pinRequired != 0) {
    Serial.println("Blocked SIM");
    while (true);
  }
}

////////////////////////////////////////////////////////////////////////////////////////////////////

void loop() {
  static uint32_t lastStatusTime = millis();
  if (millis() - lastStatusTime > 2000) {
    uint8_t networkStatus = GPRS.getNetworkStatus();
    Serial.print("Status: ");
    Serial.println(networkStatus);
    lastStatusTime = millis();

    if ((networkStatus == 1) || (networkStatus == 5)) {
      int GPRSStatus = GPRS.getGPRSStatus();
      if (GPRSStatus == 0) {
        if (!GPRS.enableGPRS(APN, USERNAME, PASSWORD)) {
          Serial.println("GPRS not enabled");
        }
      } 
      else if (GPRSStatus == 1) {
        if (GPRS.connected()) {
          if (!client.connected()) {
            static bool requestDone = false;
            if (!requestDone) {
              if (!client.connect("www.industrialshields.com", 80)) {
                Serial.println("Error connecting to web");
              } 
              else {
                client.println("GET /index.html HTTP/1.1");
                client.println("Host: www.industrialshields.com");
                client.println("User-Agent: GPRS-PLC");
                client.println();
                Serial.println("Connected");
                Serial.println("Data sent");
                requestDone = true;
              }
            }
          } 
          else if (client.available()) {
            Serial.println("HTTP response:");
            size_t len = client.read(buffer, sizeof(buffer));
            Serial.write(buffer, len);
            client.stop();
          }
        }
      }
    }
  }
}


Primeros pasos usando el módulo GPRS
Boot & Work Corp. S.L., Quesada Dani Salvans
23 agosto, 2019
Compartir
Archivar

¿Buscas tu controlador lógico programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparación PLC industrial>>>

¿Quieres más información?

¡Rellena el formulario!

¡Cuéntame más!