Como conectar Shield sim808 (DFRobot TEL007)


#1

Hola comunidad, mis saludos desde Chile.
Por un requerimiento en mi trabajo, he estado intentando conectar una Shield SIM808 al Dashboard, sin exito, he ocupado las librerias de FONA y de Ubidots GPRS Library, especificamente el ejemplo llamado UbidotsSaveValue, sin ningun exito, ya que en el monitor serial se muestran los mensajes de error al intentar realizar los comandos AT.
Errores que copio a continuacion

Response of GPRS:

Response of GPRS:

Error with AT
GPRS/3.0.0|POST||GPRS=>temperature:485.0000|end
Response of GPRS:

Error with AT+CIPSTATUS
Response of GPRS:

Error sending variables

Obviamente he estado googleando acerca de esto intensamente durante dos noches sin exito, si alquien de la comunidad ha tenido exito en esta tarea, por favor, arroje luz en donde me estoy equivocando o cual libreria usar.

Gracias!


#2

Buenas @jhernandez71,

Principalmente es importante mencionar que los dispositivos soportados por Ubidots son los presentes en esta lista. Al decir soportados, me refiero a que han sido probados previamente y para algunos se han construido librerias propias para hacer el “Get started” del usuario mucho mas amigable. De todas maneras, esto no significa que tu dispositivo no se pueda conectar con ubidots, si tu dispositivo es capaz de conectarse a internet no tendrias ningun problema intergrandolo con la plataforma.

Para intergrar el dispositivo con Ubidots te recomiendo seguir los siguientes pasos:

  1. Ir a la pagina oficial de DF Robots, y buscar el Shield utilizado. Al final de la pagina encontraras una sección llamada “More Examples”, selecciónala.
  2. En la pagina a la cual seras redirigido encontraras una lista de contenidos, en la cual debes seleccionar el ejemplo “Connect TCP and Send GET Requests”.
  3. Sigues los pasos mencionados en el ejemplo, y verifica que el modulo este funcionando correctamente.
  4. Una vez hayas logrado hacer funcionar el ejemplo anterior, debes modificar el request del código de ejemplo para hacer la petición a Ubidots, para ello puedes hacer referencia a la siguiente guia la cual te ayudara a entender como manejar las conexiones TCP con Ubidots.

Espero que esto te sea de gran ayuda para comenzar con tu proyecto de IoT!

Saludos,
Maria C.


#3

Estimada Señorita Maria Hernandez.

De ante mano, le agradezco enormemente sus buenas artes y efectiva asistencia, ha sido de ayuda sumamente efectiva.

He adelantado, asi como aprendido cantidad y valoro ello.

He logrado hacer funcionar el codigo como me lo ha susgerido y siguiendo la guia que me ha dejado a bien, para modifcar el mismo, mas sin embargo estoy teniendo un error de conexcion a la url y puerto que reza la guia.

AT+CFUN=1
AT+CPIN?
AT+CSTT=“bam.entelpcs.cl”,"",""
AT+CIICR
AT+CIFSR
IP Address is 10.26.17.226
AT+CIPSTART=“TCP”,“translate.ubidots.com”,9012
Error al conectar a Ubidots
waiting to fetch…
AT+CIPSEND=84
Recv: 14 bytes:
CONNECT OK

AT+CIPSTATUS
AT+CIPSHUT

Como puede ver en el vuelco del terminal serial que le dejo anteriormente.

Quedo a la espera en el caso de que este a su alcance arrojar luz a mi error, para finiquitar el código y hacer uso de la plataforma para nuestros proyectos como empresa.


#4

Me alegra saber que logro completar los primeros pasos con exito, eso es un gran avance! Por otro lado, me queda un poco dificil saber donde podria estar el problema viendo solamente el debug. Si desea, puede compartir el código para echarle un vistazo.

Saludos.


#5

Muy Buenos días, Señorita Maria Hernandez.

Gracias por su interés y buenas artes. Le dejo copia de las lineas que ocupo.

/*
### Connect TCP and send GET request.
1. This example is used to test DFRobot_SIM808 GPS/GPRS/GSM Shield's connect TCP and send GET request.
2. Open the SIM808_TCPConnection example or copy these code to your project
3. Download and dial the function switch to Arduino
4. Open serial helper
5. Waiting for a few minutes, until serial has sent "Connect mbed.org success"
6. Serial will send "Hello world!"

create on 2016/09/23, version: 1.0
by jason
*/
#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>

//#define PIN_TX    10
//#define PIN_RX    11
//SoftwareSerial mySerial(PIN_TX,PIN_RX);
//DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,

//make sure that the baud rate of SIM900 is 9600!
//you can use the AT Command(AT+IPR=9600) to set it through SerialDebug

DFRobot_SIM808 sim808(&Serial);

//char http_cmd[] = "GET /media/uploads/mbed_official/hello.txt HTTP/1.0\r\n\r\n";
char http_cmd[] = "My-Test/1.0|POST|A1E-f22H6RHz7SX6TVnYkmRIKBcVxz86ba|arduino-gprs=>my-variable:30|end";
char buffer[512];

void setup(){
  //mySerial.begin(9600);
  Serial.begin(9600);
  
  //******** Initialize sim808 module *************
  while(!sim808.init()) {
      delay(1000);
      Serial.print("Sim808 init error\r\n");
  }
  delay(3000);  
    
  //*********** Attempt DHCP *******************
  while(!sim808.join(F("bam.entelpcs.cl"))) {
      Serial.println("Sim808 join network error");
      delay(2000);
  }

  //************ Successful DHCP ****************
  Serial.print("IP Address is ");
  Serial.println(sim808.getIPAddress());

  //*********** Establish a TCP connection ************

  if(!sim808.connect(TCP,"translate.ubidots.com", 9012)) {
      Serial.println("Error al conectar a Ubidots");
  }else{
      Serial.println("Connect ubidots.com success");
  }
  //*********** Send a GET request *****************
  Serial.println("waiting to fetch...");
  sim808.send(http_cmd, sizeof(http_cmd)-1);
  while (true) {
      int ret = sim808.recv(buffer, sizeof(buffer)-1);
      if (ret <= 0){
          Serial.println("fetch over...");
          break; 
      }
      buffer[ret] = '\0';
      Serial.print("Recv: ");
      Serial.print(ret);
      Serial.print(" bytes: ");
      Serial.println(buffer);
      break;
  }

  //************* Close TCP or UDP connections **********
  sim808.close();

  //*** Disconnect wireless connection, Close Moving Scene *******
  sim808.disconnect();
}

void loop(){

}


#6

En la sección donde llama la función join lo cambie agregando usuario y contraseña del APN, sin resultados diferentes.

while(!sim808.join(F(“bam.entelpcs.cl”),F(“entelpcs”),F(“entelpcs”))) {
Serial.println(“Sim808 join network error”);
delay(2000);
}


#7

Hola, parece que tu dispositivo no puede realizar el enlace al endpoint tcp de nosotros, ¿Puedes intentar con el ejemplo de conexión tcp que te proporciona tu fabricante para descartar problemas de conexión?

Saludos.