Tag: at-commands

Palavra-chave
Destaque/Sem destaque
Resolvida/Não Resolvida
Aberta/Encerrada
0 votos
4k visualizações

Olá! Estou fazendo meu TCC com os componentes citados, não tenho muita vivência com microcontroladores, mas achei o Arduino o melhor de todos e mais fácil para mexer.

Estou desenvolvendo um sistema rastreador que faça o seguinte:

1-receba uma mensagem com um código
2-interpreta a mensagem, pega os dados do gps
3-envia os dados do gps para um número cadastrado

Eu estou parado no código abaixo:

#include <SoftwareSerial.h>
#include "TinyGPS.h" 
SoftwareSerial Serial1(3, 4),SerialSIM900(0, 1);

int ledPin = 13; //led no pino 13
int Botao = 2; //botao no pino 2
//Variavel para ler o status do pushbutton
int EstadoBotao = 0;
TinyGPS gps; 
int ano; 
byte mes, dia, hora, minuto, segundo, centesimos;
unsigned long chars;
unsigned short sentences, failed_checksum;
static void print_date(TinyGPS &gps);


void SerialSIM900power()
//software equivalent of pressing the GSM shield 
//"power" button
{
  digitalWrite(9, HIGH);
  delay(1000);
  digitalWrite(9, LOW);
  delay(5000);
}


void setup(){
  SerialSIM900.begin(19200);
  Serial1.begin(9600);
  SerialSIM900power();
  pinMode(ledPin, OUTPUT); //Pino do led será saída
  SerialSIM900.begin(19200);
  delay(2000);
  // set SMS mode to text
  SerialSIM900.print("AT+CMGF=1\r");
  delay(100);
  SerialSIM900.print("AT+CNMI=2,2,0,0,0\r"); 
  // blurt out contents of new SMS upon 
  // receipt to the GSM shield's serial out
  delay(100);
}


void loop(){
 if (SerialSIM900.available()>0)
    {
      char inchar=SerialSIM900.read();
      if(inchar=='#'){
        digitalWrite(ledPin, HIGH);
        delay(4000);

  //Enquanto a serial estiver disponível  
  if(Serial1 .available())
  {
    //Le os dados da Serial1
    int c = Serial1 .read();
    //Faz a tradução dos valores lidos
    if(gps.encode(c))
    {
      float latitude, longitude;
      //Obtem a latitude e longitude
      gps.f_get_position(&latitude, &longitude);
      Serial.print("Lat/Long: "); //Imprime
      Serial.print(latitude,5);
      Serial.print(", ");
      Serial.println(longitude,5);


      enviar(latitude, longitude);
      gps.stats(&chars, &sentences, &failed_checksum);
      digitalWrite(ledPin, LOW);

    }
  }
    }else{ 
  digitalWrite(ledPin, LOW);}

}
}
void enviar(float lat, float longi){
  // AT command to send SMS message
  SerialSIM900.print("AT+CMGF=1\r");
  delay(100);
  // recipient's mobile number, in international format
  SerialSIM900.println("AT + CMGS = \"+5511917****\""); 
  delay(100);
  SerialSIM900.println("Lat/ Long"); // message to send
  SerialSIM900.print(lat,5);
  SerialSIM900.print(",");
  SerialSIM900.print(longi,5);
  delay(100);
  // End AT command with a ^Z, ASCII code 26
  SerialSIM900.println((char)26);
  delay(100); 
  SerialSIM900.println();
  // give module time to send SMS
  delay(5000);
  SerialSIM900power();  


}

Vocês podem me ajudar? quando eu envio o ‘#’ o led chega a acender, mas não recebo a tão esperada mensagem.

Muito Obrigado!

abs

LUCAS TEODORO

Mostrando 1 resultado