Probando un módulo GPRS con un PLC basado en Arduino

1 de marzo de 2019 por
Probando un módulo GPRS con un PLC basado en Arduino
Boot & Work Corp. S.L., Support Team

Introducción

En este post, vamos a hablar sobre cómo utilizar el módulo sim800l con la biblioteca adafruit fona. Esta placa se puede controlar con comandos AT y ofrecer posibilidades tales como llamadas, llamadas, enviar o recibir sms o incluso hacer publicaciones en una página web entre muchos otros. 

Si desea ver todas las posibilidades permitidas por la biblioteca telefónica, aquí hay un enlace a su github.

Requirements

Ethernet or 20 I/Os PLC:      Ethernet PLC     20 I/Os PLC     

Placas Industrial Shields:   Placas Industrial Shields        

Biblioteca Adafruit FONA:          Biblioteca github de Adafruit FONA        


       

Descripción

Módulo GPRS

El módulo SIM800L es el componente principal de las tarjetas FONA 800 de Adafruit, para que podamos utilizar la biblioteca hecha para estas tarjetas con los módulos económicos que ensamblan el SIM800L.

En este tutorial nos centramos en el uso de la biblioteca adafruit, pero también mostramos cómo probar el módulo que envía comandos AT por el monitor serie y también cómo registrar la tarjeta SIM para enviar mensajes de texto.

 

Conexiones




Nota: Si tu proyecto necesita el pin de restablecimiento, puedes conectarlo al pin 2 de MDuino/Ardbox.

Software


En este primer boceto comprobamos si el módulo sim800l recibe correctamente los comandos AT. Simplemente espera recibir los comandos a través del puerto serial y, si la operación es correcta, devuelve la respuesta AT a través del mismo puerto serial: 

/*

   Copyright (c) 2019 Boot&Work Corp., S.L. All rights reserved


Este programa es software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General Reducida de GNU publicada por la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.

Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de COMERCIALIZACIÓN o ADECUACIÓN A UN PROPÓSITO PARTICULAR.  Consulta la Licencia Pública General Reducida de GNU para más detalles.

Deberías haber recibido una copia de la Licencia Pública General Reducida de GNU junto con este programa.  Si no es así, consulta <http://www.gnu.org/licenses/>.

 */


#define SERIAL_PORT   Serial1


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

void setup() {

  Serial.begin(9600L);

  Serial.println("gprs-serial started");


  Serial1.begin(115200UL);

}


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

void loop() {

  

}


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

void serialEvent() {

  Serial1.write(Serial.read());

}


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

void serialEvent1() {

  Serial.write(Serial1.read());

}


En este primer boceto comprobamos si el módulo sim800l recibe correctamente los comandos AT, nos permite,a través de la biblioteca Adafruit FONA para configurar la tarjeta SIM introduciendo el PIN e indicará el estado de registro en el que se encuentra la tarjeta.

Existen las siguientes posibilidades:

No registrado, No registrado (búsqueda), Denegado, Registrado (casa) o Registrado (roaming). 

Recuerde introducir el número de móvil al que va a enviar el SMS,el número pin de su tarjeta SIM y la configuración de APN de la compañía telefónica de su SIM.

El SMS solo se enviará una vez y será cuando la tarjeta SIM se haya registrado correctamente (en casa, no en roaming).


 /*

   Copyright (c) 2019 Boot&Work Corp., S.L. All rights reserved


Este programa es software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General Reducida de GNU publicada por la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.

Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de COMERCIALIZACIÓN o ADECUACIÓN A UN PROPÓSITO PARTICULAR.  Consulta la Licencia Pública General Reducida de GNU para más detalles.

Deberías haber recibido una copia de la Licencia Pública General Reducida de GNU junto con este programa.  Si no es así, consulta <http://www.gnu.org/licenses/>.

 */


#include <Adafruit_FONA.h>


#define SIM800L_SERIAL Serial1

#define SIM800L_RESET  2


#define PIN "XXXX" //Enter the pin code of your SIM card

#define CALL_NUM "XXXXXXXXX" //Enter the mobile number to which you want to send the SMS


Adafruit_FONA sim800l = Adafruit_FONA(SIM800L_RESET);


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

void setup() {

  Serial.begin(9600L);

  Serial.println("sim800l started");

  SIM800L_SERIAL.begin(115200UL);


  sim800l.begin(SIM800L_SERIAL);


 char imei[16];

 if (sim800l.getIMEI(imei) > 0) {

   Serial.print("IMEI: ");

   Serial.println(imei);

  }


 //Find the APN configuration of your SIM card company. Here you have two examples (Yoigo and Orange configuration).


  //sim800l.setGPRSNetworkSettings(F("internet"), F(""), F("")); // YOIGO

  //sim800l.setGPRSNetworkSettings(F("orangeworld"), F("orange"), F("orange")); // ORANGE



  if (sim800l.unlockSIM((char*)PIN)) {

    Serial.println("PIN OK");     

  }

  else {

    Serial.println("PIN FAIL");

  }

}


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

void loop() {

  static uint32_t lastStatusRead = millis();

  if (millis() - lastStatusRead > 3000) {

    lastStatusRead = millis();

    int networkStatus = sim800l.getNetworkStatus();

    switch (networkStatus) {

      case 0:

        Serial.println("Not registered");

        sim800l.enableGPRS(true);

        break;

      case 1:

        Serial.println("Registered (home)");

        sendSMS();

        break;

      case 2:

        Serial.println("Not registered (searching)");

        break;

      case 3:

        Serial.println("Denied");

        sim800l.enableGPRS(true);

        break;

      case 4:

        Serial.println("Unknown");

        sim800l.enableGPRS(true);

        break;

      case 5:

        Serial.println("Registered (roaming)");

        break;

    }

  }

}


void sendSMS() {

  static bool sent = false;

  if (!sent) {

    sent = true;

    sim800l.sendSMS(CALL_NUM, "Industrial Shields says Hi everyone!"); 

    Serial.println("message sent");

  }  

}


Video


 
 

Buscar en nuestro blog

Probando un módulo GPRS con un PLC basado en Arduino
Boot & Work Corp. S.L., Support Team 1 de marzo de 2019
Compartir

¿Estás buscando 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.


Industrial PLC comparison >>>