Busca en nuestro Blog. Encontrarás múltiples aplicaciones, soluciones, ejemplos de código. Navega utilizando la nube de etiquetas o busca utilizando criterios específicos

Primeros pasos usando el módulo GPRS

En este post vamos a ver como introducirnos en la programación del GPRS en Arduino IDE, remarcando los primeros pasos a hacer para configurar y usar de un modo correcto y funcional este módulo.


Primeros Pasos


1. Introduce the SIM card: 

We will proceed to deposit the SIM card correctly to the PLC. To do this, you must first locate the SIM card entry of the Smart Light Controller, which is located on the top cover of the device. You will be able to see the symbol for the SIM card on the screen printing; the entrance is just below. To enter the card, you must do it as shown in the following images:



2. Software configuration: 

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

    1.- Seleccione la familia y modelos adecuados para las Boards (la familia y modelo GPRS que usted tenga). 



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

#include <GPRS.h>

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

    -Instalando las Boards de Industrial Shields en Arduino IDE (Actualizado)



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

GPRS.enableGPRS(APN, USERNAME, PASSWORD)

    Si usted desea ver todas las funciones GPRS disponibles, puede consultar el documento pertinente cuando se descargue las Boards.


Ejemplos

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




Server

Antes de nada, debe definir los parámetros de su tarjeta SIM (PIN, APN, USERNAME, PASSWORD). Estos dependen de la compañía de la tarjeta, puede encontrarlos en Internet o contactando directamente com la compañía si no los tiene. 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 progama 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í tiene 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, debe definir los parámetros de su tarjeta SIM (PIN, APN, USERNAME, PASSWORD). Estos dependen de la compañía de la tarjeta, puede encontrarlos en Internet o contactando directamente com la compañía si no los tiene. 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 progama 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í tiene 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();
          }
        }
      }
    }
  }
}


¿Quieres más información?

Con la tecnología Open Source, puedes ejecutar tus propias instalaciones.

Rellena el formulario y contactaremos contigo lo más pronto posible.

Enviar  Por favor, completa el formulario correctamente.