Boa Tarde!

Alguém sabe como eu posso chamar um script php utilizando a conexão GSM do SHIELD SIM5100B?

Estou fazendo meu tcc e consigo fazer o arduino conectar-se à internet, porém não consigo chamar o script php.

Desde já agradeço a atenção, 

Josemar

Exibições: 355

Responder esta

Respostas a este tópico

Galera não sei o que posso estar fazendo de errado, mas não consigo chamar um script php nem a pau! Vejam o código do meu programa abaixo: 

#include <SoftwareSerial.h>   
#include <string.h> 
#define BUFFSIZE 512 

char ATBuff[BUFFSIZE]; 
char SMSBuff[BUFFSIZE]; 
int CELL_REG = 0; 
int CELL_AT = 0; 
int CELL_SMSMODE = 0; 
int nBufPos; 
char incoming_char; 
const int sensor = 12; 

void ATGetResp(void); 

SoftwareSerial cell(2,3); 


void setup(){ 

  Serial.begin(9600); 
  cell.begin(9600); 
  
  Serial.println("Iniciando Módulo"); 
  cell.println("AT"); 
  ATGetResp(); 

  pinMode(sensor,INPUT); 
  digitalWrite(sensor,HIGH); 
  


void loop(){ 
    
  int count = 0; 

  while(CELL_REG == 0 || CELL_AT == 0) // Keep running loop untill cell network is properly established 
  { 
    ATGetResp(); 
    ParseATResp(); 

    if(++count == 10) 
      break; 
  } 

  while(CELL_REG == 0 || CELL_AT == 0) { 
    cell.println("AT+SIND=4"); 
    ATGetResp(); 

    if(strcmp(ATBuff, "OK\n") == 0) 
    { 
      CELL_REG = 1; 
      while(CELL_REG == 0 || CELL_AT == 0) { 
        cell.println("AT+SIND=11"); 
        ATGetResp(); 

        if(strcmp(ATBuff, "OK\n") == 0) { 
          Serial.println("pronto!!\n"); 
          CELL_AT = 1; 
          break; 
        } 
      } 
    } 
  } 
  
/*----------------------------------------------------------------------------------------------------------------------------------*/   
  
  delay(5000); //espera 5 segundos e começa a verificar o sensor 
    
  if (digitalRead(sensor)== LOW){ 
    
    Serial.println("Conectando"); 
    conecta(); 
    delay(2000); 
    enviaDado(); 
    
  } 
  else{ 
  
    Serial.println("SENSOR ABERTO"); 
    delay(1000); 

  } 





/*--------------------------------------------------------------------------------------------------------------------------------*/ 
void conecta(){ 
      Serial.println("Setting up PDP Context"); 
      cell.println("AT+CGDCONT=1,\"IP\",\"tim.br\""); 
      ATGetResp(); 
      Serial.println(ATBuff); 
      delay(1000); 

      Serial.println("Sending password"); 
      cell.println("AT+CGPCO=0,\"tim\",\"tim\", 1"); 
      ATGetResp(); 
      Serial.println(ATBuff); 
      delay(1000); 

      Serial.println("Activating PDP Context"); 
      cell.println("AT+CGACT=1,1"); 
      ATGetResp(); 
      Serial.println(ATBuff); 
      delay(1000); 

      Serial.println("Configuring connection"); 
      cell.println("AT+SDATACONF=1,\"TCP\",\"XXX.XX.XXX.XX\", 80"); 
      ATGetResp(); 
      Serial.println(ATBuff); 
      delay(1000); 

      Serial.println("Start Connection\n"); 
      cell.println("AT+SDATASTART=1,1"); 
      ATGetResp(); 
      Serial.println(ATBuff); 
      delay(1000); 


/*--------------------------------------------------------------------------------------------------------------------------------*/ 

void ParseATResp(void) { 

  if(ATBuff[0]) 
    Serial.println(ATBuff); 

  if (strstr(ATBuff, "+SIND: 11") != 0) { 
    CELL_REG = 1; 
    Serial.println("Almost there..."); 
    return; 
  } 

  if (strstr(ATBuff, "+SIND: 4") != 0) { 
    CELL_AT = 1; 
    Serial.println("Ready to go!"); 
    return; 
  } 

  if (strstr(ATBuff, "+SIND: 7") != 0 ||strstr(ATBuff, "+SIND: 8") != 0) { 
    CELL_AT = 1; 
    Serial.println("Something's wrong."); 
    return; 
  }       


/*------------------------------------------------------------------------------------------------------------------------------*/ 
void ATGetResp(void) { 
  char c; 
  int count = 0; 

  memset(ATBuff, '\0', BUFFSIZE);                // clear array 

  nBufPos = 0;                                   // Reset array counter 
  int nBytes = 0;                                 

  delay(1000); 

  nBytes = cell.available(); 

  if (nBytes > 0) { 
    for (int i = 1; i <= nBytes; i++) {          // Keep running loop till no more bytes in queue 
      if (nBufPos == BUFFSIZE - 3) {             // Stop if array is full 
        nBufPos = 0; 
      }   
      c = cell.read();                           // Set c to current serial character 
      if (c == '\r') {                           // If c is carriage return 
        ATBuff[nBufPos] = c;                   //   add it to the array 
        c = cell.read();                       // Doesnt work without this line, can anyone explain why? 
        if (c == '\n') {                       // If c is newline 
          ATBuff[nBufPos] = c;                 //   add to array 
          ATBuff[nBufPos+1] = '\0';            //   and terminate 
          return;                              //   then return to program 
        } 
      } 
      ATBuff[nBufPos] = c; 
      nBufPos++; 
    } 

  } 
  ATBuff[nBufPos] = '\0'; 
  return; 



/*---------------------------------------------------------------------------------------------------------*/ 
void enviaDado(){ 
  Serial.println("Checking Connection Status\n"); 
      cell.println("AT+SDATASTATUS=1"); 
      ATGetResp(); 
      Serial.println(ATBuff); 
      delay(2000); 


      Serial.println("Sending data\n"); 

      cell.println("AT+SSTRSEND=1,\"/tccjose/monitor/index.php HTTP/1.1\""); 
      cell.println(""); 
      ATGetResp(); 
      Serial.println(ATBuff); 
      delay(60000); 

      Serial.println("Stop Connection\n"); 
      cell.println("AT+SDATASTART=1,0"); 
      ATGetResp(); 
      Serial.println(ATBuff); 
      delay(10000); 
      return; 


Estou fazendo algo errado? Basicamente tenho um sensor que quando é fechado chama a função para conectar e a função para enviar um dado, porém não acontece nada, o script php não é chamado. Alguma luz? 

att, 

Josemar

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço