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
Tags:
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);
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por