Sim900 Shield

Página 2 de 2 Anterior  1, 2

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Funcionou

Mensagem  Admin em Qua 27 Jun - 8:12

Acabei de testar e funciona mesmo o dtmf, segui o tutorial do blog acima e tudo ocorreu como descrito, agora quem for tentar é bom usar um baudrate maior no meu caso eu usei 9600 e demorou 1 hora pra fazer

Olha o print screen funcionando

avatar
Admin
Admin

Mensagens : 560
Data de inscrição : 07/04/2009
Idade : 36
Localização : Franca

Ver perfil do usuário http://projetoarduino.forum-livre.com

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  gcysne em Qua 27 Jun - 18:41

Opa!

Valeu pela resposta. Tentei aqui o AT+CLIP e funcionou beleza! A saída na serial agora fica assim quando recebe uma chamada:

Código:

RING

+CLIP: "03198XX695X",161,"",,"",0

Para maiores referências, está no manual de comandos AT da SIMCOM, página 62, seção 3.2.18

Sobre o DTMF, eu vou fazer a atualização do firmware aqui. Era esse mesmo blog que eu estava tentando postar na mensagem anterior hehe. Mas eu gostaria apenas de um auxílio no seguinte:
- Você deixou os jumpers do shield em qual posição (hardware serial ou software serial?
- É necessário ter algum firmware específico rodando no arduino?

Valeu!

gcysne

Mensagens : 3
Data de inscrição : 26/06/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  Admin em Qui 28 Jun - 7:02

Não passei pelo arduino liguei o shield diretamente na serial usando um cabo serial usb, não usei o aruino pq em dado momento é preciso reiniciar o modulo para que ele comece o updade
avatar
Admin
Admin

Mensagens : 560
Data de inscrição : 07/04/2009
Idade : 36
Localização : Franca

Ver perfil do usuário http://projetoarduino.forum-livre.com

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  gcysne em Seg 2 Jul - 19:56

Admin escreveu:Não passei pelo arduino liguei o shield diretamente na serial usando um cabo serial usb, não usei o aruino pq em dado momento é preciso reiniciar o modulo para que ele comece o updade

Hum.. mas como você fez isso se o shield sozinho não tem interface serial? Você ligou pino a pino diretamente? Se sim, poderia detalhar melhor por favor como fazer a montagem?
Obrigado!

gcysne

Mensagens : 3
Data de inscrição : 26/06/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  Admin em Ter 3 Jul - 6:56

Olha detalhar como eu fiz fica difícil pois não tirei fotos e não teria tempo para fazer um tutorial detalhado mas usei um cabo conversor rs232/ttl e o power key eu deixei fora do arduino também para poder ligar e desligar o modulo manualmente(fiz isso com um fio), de resto todos os outros pinos pinos ficaram conectados no arduino
avatar
Admin
Admin

Mensagens : 560
Data de inscrição : 07/04/2009
Idade : 36
Localização : Franca

Ver perfil do usuário http://projetoarduino.forum-livre.com

Voltar ao Topo Ir em baixo

ENVIA SMS

Mensagem  santiago54321 em Ter 17 Jul - 12:02

Pessoal o meu código só esta enviando SMS em branco, o que pode ser ? obriago, segue o código:


#include
#include

SoftwareSerial mySerial(4, 5);

void setup()
{
mySerial.begin(9600); // the GPRS baud rate
Serial.begin(9600);
mySerial.print("\r");
mySerial.println("AT+CSCA=\"+550101102010\"\r"); //numero da central sms da vivo
delay(1000);
mySerial.print("AT+CLIP=1\r");
delay(1000); //Wait for a second while the modem sends an "OK"
mySerial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode
delay(1000);
mySerial.println("AT+CMGS=\"02488014013\"\r"); //Start accepting the text for the message
mySerial.println("TESTE\r"); //The text for the message is the reading of analog 0 in this example
delay(500);
mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
}

void loop()
{
//We just want to send the SMS only once, so there is nothing in this loop.
//If we put the code for SMS here, it will be sent again and again and cost us a lot.
}

santiago54321

Mensagens : 9
Data de inscrição : 14/05/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  janiocavalcanti em Ter 17 Jul - 15:06

Gostaria de saber qual o comando eu utilizo para receber mensagem, entender esta mensagem e comandar o acendimento de um led.


obrigado

janiocavalcanti

Mensagens : 2
Data de inscrição : 03/04/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  santiago54321 em Ter 17 Jul - 15:27


santiago54321

Mensagens : 9
Data de inscrição : 14/05/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  Admin em Qua 18 Jul - 10:24

santiago54321 escreveu:Pessoal o meu código só esta enviando SMS em branco, o que pode ser ? obriago, segue o código:


#include
#include

SoftwareSerial mySerial(4, 5);

void setup()
{
mySerial.begin(9600); // the GPRS baud rate
Serial.begin(9600);
mySerial.print("\r");
mySerial.println("AT+CSCA=\"+550101102010\"\r"); //numero da central sms da vivo
delay(1000);
mySerial.print("AT+CLIP=1\r");
delay(1000); //Wait for a second while the modem sends an "OK"
mySerial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode
delay(1000);
mySerial.println("AT+CMGS=\"02488014013\"\r"); //Start accepting the text for the message
mySerial.println("TESTE\r"); //The text for the message is the reading of analog 0 in this example
delay(500);
mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
}

void loop()
{
//We just want to send the SMS only once, so there is nothing in this loop.
//If we put the code for SMS here, it will be sent again and again and cost us a lot.
}

Código:
mySerial.println("AT+CMGF=1\r");  //    Because we want to send the SMS in text mode
  delay(1000);
  mySerial.println("AT+CMGS=\"92401849\"\r");  // Setting for the SMS Message center number, 
  delay(1000);
  leserial();
  Serial.println(comm_buf);  //mostra retorno real
  limpa_buffer();
  mySerial.println("SIM900 and Arduino say Hi!"); 

Tenta assim o código completo se encontra no inicio do tópico
avatar
Admin
Admin

Mensagens : 560
Data de inscrição : 07/04/2009
Idade : 36
Localização : Franca

Ver perfil do usuário http://projetoarduino.forum-livre.com

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  santiago54321 em Qua 18 Jul - 11:15

Perfeito, código rodou redondo !!!

Outra dúvida, tenho este shield (Editado pq não rola fazer anuncio de produtos concorrentes né)
e este é o código para ligar ou desliga-lo:

void powerUpOrDown()
{
pinMode(9, OUTPUT);
digitalWrite(9,LOW);
delay(1000);
digitalWrite(9,HIGH);
delay(2000);
digitalWrite(9,LOW);
delay(3000);
}

Ao ligar o arduino o shield esta desligado, entao rodo o código e tudo bem ele liga o shield, mas preciso de uma maneira de MONITORAR o shield para saber se ele esta ligado pq seu rodar o codigo com ele ligado o codigo desliga o shield.

Alguma ideia de como faze-lo ?

Obrigado


Já consegui, o pino de controle é o 4, testei um por um, fica a dica para quem usa ICOMSAT, assim o forum fica mais rico de informação !


int statuspin = 4;
int pinState = 0;

void setup() {

pinMode(statuspin, INPUT);
pinMode(9, OUTPUT);
mySerial.begin(9600); // the GPRS baud rate
Serial.begin(9600); // the GPRS baud rate


}

pinState = digitalRead(statuspin);
if(pinState==LOW)
{
Serial.println("estou ligando...");
digitalWrite(9,HIGH);
delay(2000);
digitalWrite(9,LOW);
delay(3000);
}
if(pinState==HIGH)
{
Serial.println("ja estou ligado...");

}

santiago54321

Mensagens : 9
Data de inscrição : 14/05/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

erro leitura

Mensagem  evertondt em Qua 1 Ago - 20:42

Porque não recebe a resposta da leitura de mensagens em alguns códigos que encontrei e algumas vezes aparecem alguns caracteres estranhos?

Uso o sim908 e o arduino uno

Código de exemplo com a ide 0022

Código:


#include <NewSoftSerial.h>
NewSoftSerial mySerial(2, 3);

//#define BUF_LEN  64
#define BUF_LEN  160
int powerkey =  5;
int statuspin = 6;
int pinState = 0;



void setup() {
  pinMode(powerkey, OUTPUT);
  pinMode(statuspin, INPUT);
 
  mySerial.begin(9600);              // the GPRS baud rate
  Serial.begin(9600);                // the GPRS baud rate

}

byte num_of_bytes;
byte retorno;
char comm_buf[BUF_LEN];
byte n;

void loop()
{
 
  pinState = digitalRead(statuspin);
  if(pinState==LOW)
  {
  digitalWrite(powerkey, HIGH);  // set the LED on
  delay(2000);
  digitalWrite(powerkey, LOW);
  }
 
      http://mySerial.println("AT+CMGL=\"ALL\",1");
      mySerial.println("AT+CMGL=\"ALL\"");
      delay(2500);
      leserial(); //processa dados e armazena no buffer
      delay(2500);
      retorno = IsStringReceived("OK");
      Serial.println(comm_buf);
      limpa_buffer();
 
 
}
 

/**********************************************************
Metodo para leitura da softserial
buffer maximo de (num_of_bytes) caracteres
**********************************************************/
void leserial()
{
  num_of_bytes = mySerial.available(); //Pega quantidade de bytes ques estao na serial
  while (mySerial.available() > 0)    //Espera de até Available ser true
  {
      for(n=0; n<num_of_bytes; n++)
      {
          comm_buf[n] = mySerial.read(); //armazena buffer e a cada mySerial.read carry on buffer interno
      }
  }
  mySerial.flush();              //limpa buffer de entrada da serial
}
 
 
 
/**********************************************************
Metodo para limpeza do buffer
**********************************************************/
void limpa_buffer()
{
  memset(comm_buf,'\0',BUF_LEN);
}


/**********************************************************
Method checks received bytes

compare_string - pointer to the string which should be find

return: 0 - string was NOT received
        1 - string was received
**********************************************************/
byte IsStringReceived(char const *compare_string)
{
  http://Serial.println("testando...");
  char *ch;
  byte ret_val = 0;

  if(1) {
    ch = strstr((char *)comm_buf, compare_string);
    if (ch != NULL)
    {
          Serial.println("encontrado Valor");
          ret_val = 1;
    }
  else
  {
      Serial.println(" Valor nao encontrado");
  }
  }
  return (ret_val);
}



A resposta obtida no serial monitor


Código:


+CMGL: 1,"REC READ","01981040000","","12/07/31
 Valor nao encontrado
AT+CMGL="ALL"

+CMGL: 1,"REC READ","01981040000","","12/07/31
 Valor nao encontrado
AT+CMGL="ALL"

+CMGL: 1,"REC READ","01981040000","","12/07/31
 Valor nao encontrado
AT+CMGL="ALL"

+CMGL: 1,"REC READ","01981040000","","12/07/31
 Valor nao encontrado
AT+CMGL="ALL"

+CMGL: 1,"REC READ","01981040000","","12/07/31
 Valor nao encontrado
AT+CMGL="ALL"


Como posso contornar isso? Obrigado


Última edição por evertondt em Qua 1 Ago - 21:58, editado 1 vez(es)

evertondt

Mensagens : 12
Data de inscrição : 13/05/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  santiago54321 em Qua 1 Ago - 21:01

Parece que esta em modo binario, antes de ler a mensagem seta o modo texto com este comando:

mySerial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode

e verfica o resultado.

Abs

santiago54321

Mensagens : 9
Data de inscrição : 14/05/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

resposta a santiago54321

Mensagem  evertondt em Qua 1 Ago - 22:19

obrigado santiago54321 ....

Adicionei este codigo depois do loop :

mySerial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode
delay(1000);
limpa_buffer();


Mas o a resposta do sim908 continua incompleta


O comando Serial.println(comm_buf); deveria mostar:


+CMGL: 1,"REC READ","0198100000","","12/07/31,22:27:46-12"
teste

OK


mas mostra:

AT+CMGF=1

OK
AT+CMGL="ALL"

+CMGL: 1,"REC READ","019810000
encontrado Valor


Não mostra o restante da mensagem, estranho que ele mostra que encontrou o ok (IsStringReceived("OK")Wink depois do limpa_buffer(); pois a resposta Serial.println(comm_buf); não mostra






evertondt

Mensagens : 12
Data de inscrição : 13/05/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  Admin em Qui 2 Ago - 8:32

http://mySerial.println("AT+CMGL=\"ALL\",1");
mySerial.println("AT+CMGL=\"ALL\"");
delay(2500);
leserial(); //processa dados e armazena no buffer
delay(2500);

Eu tirava esse delay de 2500 e tente usar o comando CMGR=1
avatar
Admin
Admin

Mensagens : 560
Data de inscrição : 07/04/2009
Idade : 36
Localização : Franca

Ver perfil do usuário http://projetoarduino.forum-livre.com

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  santiago54321 em Qui 2 Ago - 10:05

Eu sempre leio a mensagem 1, depois a apago e quando recebo uma nova mensagem ela fica armazenada sempre na posição 1.
mySerial.println("AT+CMGR=1"); //Reads the first SMS
mySerial.println("AT+CMGD=1");//Delete the first SMS

Segue meu método para ler a mensagem e armazenar em um char que chamo de data.

Defina antes:

#define BUF_LEN 84
const int MAXDATA = 256;
char data [MAXDATA];


Código:
void lesms()
{
  Serial.println("|");
  Serial.println("|");
  Serial.println("--------------------------  LENDO SMS  --------------------------");
  Serial.println("|");
  Serial.println("|");
 
  Serial.println("AT+CMGF=1\r");//Set SMS the text mode
  limpa_buffer();
  delay(2000);
  mySerial.println("AT+CMGR=1"); //Reads the first SMS
  mySerial.flush();
  for (x=0;x < 255;x++){
    data[x]='\0';
  }
  x=0;
  do{
        while(mySerial.available()==0);
        data[x]=mySerial.read();
        x++;
        if(data[x-1]=='+'&&data[x-2]=='"'){ // remove o cabeçalho +CMGR: "REC READ"
          x=0;
        }
      }
  while(!(data[x-1]=='K'&&data[x-2]=='O')); // enquanto não encontrar o ok não para
  data[x-3]='\0'; //finish the string before the OK
  Serial.println(data); //shows the message
  limpa_buffer();
  delay(2000);

  Serial.println("|");
  Serial.println("|");
  Serial.println("----------------------------  F I M  ----------------------------");
  Serial.println("|");
  Serial.println("|");
  Serial.println("|");
  Serial.println("");
};

santiago54321

Mensagens : 9
Data de inscrição : 14/05/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  laecio em Qui 20 Set - 0:05

Gente exite uma possibilidade de enviar as respostas de determinados comandos AT (exemplo AT+GSN)via conexão TCP/IP para um servidor que ja esta conectado ao módulo?

laecio

Mensagens : 2
Data de inscrição : 01/09/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  user1 em Qui 20 Set - 7:30

Tem

Faz o microcontrolador digitar AT a resposta é OK certo ? vc armazena esse ok numa String e depois envia via GPRS

user1

Mensagens : 1
Data de inscrição : 19/09/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  laecio em Qui 20 Set - 9:11

Ve se eu entendi, antes do at+cipsend eu mando perguntar armazeno nunha string e replico depois?

laecio

Mensagens : 2
Data de inscrição : 01/09/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  Admin em Qui 20 Set - 12:33

sim
avatar
Admin
Admin

Mensagens : 560
Data de inscrição : 07/04/2009
Idade : 36
Localização : Franca

Ver perfil do usuário http://projetoarduino.forum-livre.com

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  Kamarry em Sex 30 Nov - 0:24

Olá pessoal,

Tenho algumas dúvidas, faz pouco tempo que comecei a trabalhar com o arduino. No momento estou tentando fazer a comunicação do arduino utilizando gprs da seguinte forma:
Eu tenho uma máquina que monitora diversas variáveis, eu gostaria de enviar esses dados monitorados para o meu computador através da internet utilizando o módulo gprs. Eu tenho um Arduino UNO e comprei o módulo gboard 1.0 que vem com o SIM900.

Vocês poderiam me ajudar de alguma forma? Me indicar o caminho, para onde devo ir, onde pesquisa, algum código para eu analisar?

Obrigada desde já!!

Kamarry

Mensagens : 1
Data de inscrição : 30/11/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  Admin em Sex 30 Nov - 4:39

não conheço as particularidades da Gboard, vou ficar te devendo amigo
avatar
Admin
Admin

Mensagens : 560
Data de inscrição : 07/04/2009
Idade : 36
Localização : Franca

Ver perfil do usuário http://projetoarduino.forum-livre.com

Voltar ao Topo Ir em baixo

Não entendi como enviar sms

Mensagem  joaovitor117 em Qua 13 Nov - 16:46

Estou tentando enviar sms mas nao consegui montar o código, tem jeito de me ajudar aê galera!

joaovitor117

Mensagens : 1
Data de inscrição : 16/06/2013

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  Admin em Qui 14 Nov - 4:34

avatar
Admin
Admin

Mensagens : 560
Data de inscrição : 07/04/2009
Idade : 36
Localização : Franca

Ver perfil do usuário http://projetoarduino.forum-livre.com

Voltar ao Topo Ir em baixo

Re: Sim900 Shield

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Página 2 de 2 Anterior  1, 2

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum