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 a cómo utilizar el módulo GPRS

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 de 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 cómo usar el 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:



Server

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;
  }
}

 

HTTP Client

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

¬ŅEn busca de tu PLC 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.


Comparativa PLC industrial >>

¬ŅQuieres m√°s informaci√≥n?

¬°Rellena el formulario!

¬°Cu√©ntame m√°s!