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

Testing a GPRS module using an Arduino based PLC

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.

Requisitos 

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

Industrial Shields boards:   Industrial Shields Boards            

Adafruit FONA library:          Adafruit FONA github library        


       

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


   This program is free software: you can redistribute it and/or modify

   it under the terms of the GNU Lesser General Public License as published by

   the Free Software Foundation, either version 3 of the License, or

   (at your option) any later version.


   This program is distributed in the hope that it will be useful,

   but WITHOUT ANY WARRANTY; without even the implied warranty of

   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

   GNU Lesser General Public License for more details.


   You should have received a copy of the GNU Lesser General Public License

   along with this program.  If not, see <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


   This program is free software: you can redistribute it and/or modify

   it under the terms of the GNU Lesser General Public License as published by

   the Free Software Foundation, either version 3 of the License, or

   (at your option) any later version.


   This program is distributed in the hope that it will be useful,

   but WITHOUT ANY WARRANTY; without even the implied warranty of

   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

   GNU Lesser General Public License for more details.


   You should have received a copy of the GNU Lesser General Public License

   along with this program.  If not, see <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


 
 

¿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.