Sim900 Shield
+9
janiocavalcanti
santiago54321
gcysne
evertondt
gilsoe
cristianormoraes
macckk
renanfreitas
Admin
13 participantes
Página 2 de 2
Página 2 de 2 • 1, 2
Funcionou
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
Olha o print screen funcionando
Re: Sim900 Shield
Opa!
Valeu pela resposta. Tentei aqui o AT+CLIP e funcionou beleza! A saída na serial agora fica assim quando recebe uma chamada:
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!
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
Re: Sim900 Shield
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
Re: Sim900 Shield
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
Re: Sim900 Shield
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
evertondt- Mensagens : 12
Data de inscrição : 13/05/2012
ENVIA SMS
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.
}
#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
Re: Sim900 Shield
Gostaria de saber qual o comando eu utilizo para receber mensagem, entender esta mensagem e comandar o acendimento de um led.
obrigado
obrigado
janiocavalcanti- Mensagens : 2
Data de inscrição : 03/04/2012
Re: Sim900 Shield
Isto Janio esta sendo tratado neste topico:
https://projetoarduino.forumeiros.com/t26-receber-uma-mensagem-e-acionar-um-dispositivo-com-o-celular-sim900-908#203
https://projetoarduino.forumeiros.com/t26-receber-uma-mensagem-e-acionar-um-dispositivo-com-o-celular-sim900-908#203
santiago54321- Mensagens : 9
Data de inscrição : 14/05/2012
Re: Sim900 Shield
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
Re: Sim900 Shield
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...");
}
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
erro leitura
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
A resposta obtida no serial monitor
Como posso contornar isso? Obrigado
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
Re: Sim900 Shield
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
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
resposta a santiago54321
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") depois do limpa_buffer(); pois a resposta Serial.println(comm_buf); não mostra
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") depois do limpa_buffer(); pois a resposta Serial.println(comm_buf); não mostra
evertondt- Mensagens : 12
Data de inscrição : 13/05/2012
Re: Sim900 Shield
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
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
Re: Sim900 Shield
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];
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
Re: Sim900 Shield
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
Re: Sim900 Shield
Tem
Faz o microcontrolador digitar AT a resposta é OK certo ? vc armazena esse ok numa String e depois envia via GPRS
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
Re: Sim900 Shield
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
Re: Sim900 Shield
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á!!
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
Não entendi como enviar sms
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
Página 2 de 2 • 1, 2
Tópicos semelhantes
» Sim900 Shield + Arduino MEGA
» Monitoramento de reservatório com envio de dados p/ internet e alertas por SMS - SIM900, HC-SR04
» Teste simples para o sim900
» SIM900 ARDUINO--Armazenar sms em uma variável
» Receber uma mensagem e acionar um dispositivo com o celular ( sim900/908 )
» Monitoramento de reservatório com envio de dados p/ internet e alertas por SMS - SIM900, HC-SR04
» Teste simples para o sim900
» SIM900 ARDUINO--Armazenar sms em uma variável
» Receber uma mensagem e acionar um dispositivo com o celular ( sim900/908 )
Página 2 de 2
Permissões neste sub-fórum
Não podes responder a tópicos
|
|