En este tutorial demostramos cómo conectar un modem FONA 808 de  Adafruit con un ARDUINO UNO para poder realizar operaciones en la red de telefonía movil GSM tales como el envío de mensajes SMS o comunicación por internet usando una red 3G.

En esta entrega discutiremos las conexiones de diversos puertos y pines del FONA, así como el envío de comandos AT mediante el monitor serial del IDE de ARDUINO (o cualquier terminal serial conectada al ARDUINO)

Paso 1 – Conexiones entre el FONA 808 y el ARDUINO UNO

FONA 808               ARDUINO UNO
GND -----------------> GND
VIO <----------------- 5V
RX  <----------------- 10 (TX)
TX  -----------------> 11 (RX)
RTS -----------------> 12 GPIO
KEY -----------------> GND

Adicionales:
GPS ANT ---< ANTENA GPS 
GSM ANT ---< ANTENA GSM
JST =======< Batería LIPO 3.7V
USB =======< Poder USB 5V (carga la batería)

LEDs:
Amarillo: Se enciende mientras se carga la batería usando suministro eléctrico del puerto USB
Azul (PWR): Se enciende al conectar la alimentación a VIO
Rojo (NET): Se enciende al comunicarse con la red telefónica

Tarjeta SIM
Debe estar instalada para que funcione, sin código PIN configurado. El código PIN puede ser deshabilitado desde cualquier celular compatible.

Paso 2 – Sketch de Prueba TX/RX en el ARDUINO UNO

El siguiente sketch se utiliza para enviar datos desde el monitor serial del ARDUINO IDE hasta el FONA 808 y devolver las respuestas del FONA 808 al monitor serial del ARDUINO UNO.

/**
  This sketch is public domain stuff
  It will allow you to transmit AT commands to the FONA
  using a terminal connected to your ARDUINO UNO board.

**/

#define DEBUG_MODE true

#include <SoftwareSerial.h>

SoftwareSerial Serial1 = SoftwareSerial(11 /*RX*/, 10/*TX*/); //TX,RX at FONA

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  delay(1000);
  pinMode(12, OUTPUT);
  digitalWrite(12, LOW);
  Serial.println("SETUP COMPLETE!");
  Serial.println(" PIN 10 should be connected to RX  @ FONA");
  Serial.println(" PIN 11 should be connected to TX  @ FONA");
  Serial.println(" PIN 12 should be connected to RTS @ FONA");
}

void loop() {
  String serialData = readSerial();
  if (isNotEmpty(serialData)) {
    logMessageln("Data Found: |" + serialData + "|");
    if (serialData.startsWith("CTRL+Z")) {
      Serial1.write(0x1A); //CTRL+Z Caracter (ASCII 26) para salir del modo texto
    } else {
      Serial1.println(serialData);
    }
  }

  String swSerialData = readSWSerial();

  if (isNotEmpty(swSerialData)) {
    logMessageln("SData Found: |" + swSerialData + "|");
  }
}

boolean isNotEmpty(String data) {
  return data != "";
}

String readSWSerial() {
  String serialData = "";
  if (Serial1.available()) {
    //THIS IS INTENDED TO READ LINES WRITTEN BY ANOTHER ARDUINO USING Serial.println() function
    //WHICH WILL END COMMUNICAITON WITH \r\n
    //https://www.arduino.cc/en/Serial/Println

    serialData = Serial1.readStringUntil('\r\n');
  }

  return serialData;
}

String readSerial() {
  String serialData = "";
  if (Serial.available()) {
    //THIS IS INTENDED TO READ LINES WRITTEN BY ANOTHER ARDUINO USING Serial.println() function
    //WHICH WILL END COMMUNICAITON WITH \r\n
    //https://www.arduino.cc/en/Serial/Println

    serialData = Serial.readStringUntil('\r\n');
  }

  return serialData;
}

void logMessageln(String message) {
  if (DEBUG_MODE) {
    String timestamp = String(millis());
    Serial.println(timestamp + "-" + message);
  }
}

Paso 3 – Probando algunos comandos AT

El FONA808 al igual que muchos modems en la industria funciona mediante un conjunto de comandos denominado «AT»

El sketch que subimos en el paso 2 permite interactuar con el FONA808 usando comandos AT que son enviados desde el monitor serial del ARDUINO IDE.

La siguiente imagen muestra la ejecución del sketch. Hemos abierto el monitor serial del IDE de ARDUINO usando la combinación de teclas
[CTRL]+[SHIFT]+[M]

A su vez nótese que en la parte inferior de la ventana tenemos seleccionado la opción «Both NL CR» y la velocidad de 9600 baud.

Al escribir la palabra «AT» en la caja de entrada superior y hacer clic en el botón [Send] dicho comando es enviado al FONA808 el cual responde con una frase «OK»

Se pueden econtrar referencias al conjunto de comandos AT compatibles en el sitio oficial de ADAFRUIT para el FONA808

Prácticamente todas las operaciones de comunicación con el FONA808 se realizan mediante comandos AT, tanto para inicializar el dispositivo, configurarlo y operarlo.

Vamos a utilizar algunos comandos útiles que se describen en este artículo de y en este otro artículo de Adafruit.

Algunos comandos útiles para probar el envío de SMS

ATI        Muestra el nombre y revisión del módulo.
AT+CCID    Muestra el número de identificación del SIM Card.
AT+COPS?   Muestra los datos de la conexión activa de la red.
AT+CSQ     Muestra la fuerza de la señal detectada.
AT+CBC     Retorna el estado de la batería LIPO
AT+CMGF=1  Configura el módulo para envío de texto SMS
AT+CMGS="nnnnnn" Solicita el envío de un mensaje de texto SMS al número definido por nnnn
                 por ejemplo AT+CMGS="83893042"
                 Mostrará un indicador ">" para escribir el mensaje de texto
                 Envíe la cadena "CTRL+Z" para salir del modo SMS y enviar el mensaje.
                 Recibirá una respuesta de tipo +CMGS y otra de tipo +CMTI como confirmación del envío.

Las imágenes a continuación muestran el funcionamiento de esta terminal.

 

Espero que este artículo les haya sido de utilidad. En próximas entregas estaremos explorando la comunicación HTTP y el uso del GPS.

 10,377 total views,  3 views today

13Shares
Última modificación: mayo 19, 2018

Autor

Comentarios

Saludos Jose, muchas gracias por tus aportes, te comento que estoy tratando de conectar un Fona3G SIM5320A con Arduino Leonardo, sin embargo no logro hacerlo trabajar, he tratado con todos los sketch que he visto en internet y ninguno me funciona, he revisado los pinout y me parece que todo está bien, ocupo conectarlo para un proyecto en el cual requiero pasa datos a la nube con este servicio de 3G, te agradezco de ante mano toda la ayuda que puedas brindar.

    Buen día Rodrigo, en muchas ocasiones me he topado con que el sistema no funciona del todo si no se conecta una batería al Fona. ¿Has verificado esto? Podrías incluso enviarnos un enlace o diagrama de lo que estás haciendo para ayudarte.

Escribe una respuesta o comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.