Teste simples para o sim900
2 participantes
Página 1 de 1
Teste simples para o sim900
Pessoal esse é um teste simples para o sim900 mas pode ser bastante util pois mostra como fazer o básico no arduino
ATENÇÃO VC que não gosta de LER
O Código só funciona na IDE 1.0 não funciona eu Disse não funciona na 1.01, na 1.01 ele não consegue enviar SMS pelo fato de eu não ter conseguido fazer ele dar o comando CTRL+Z
O codigo funciona da seguinte forma se vc escreve dispara no terminal ele manda um sms para o numero que vc configurou no codigo, se vc escreve disca ele disca, cancela ele cancela a chamada em curso e conecta ele conecta na rede GPRS
Só pra mostra mesmo com funciona.
ATENÇÃO VC que não gosta de LER
O terminal do arduino deve estar em NO LINE ENDING
ATENÇÃO VC que não gosta de LER
O Código só funciona na IDE 1.0 não funciona eu Disse não funciona na 1.01, na 1.01 ele não consegue enviar SMS pelo fato de eu não ter conseguido fazer ele dar o comando CTRL+Z
O codigo funciona da seguinte forma se vc escreve dispara no terminal ele manda um sms para o numero que vc configurou no codigo, se vc escreve disca ele disca, cancela ele cancela a chamada em curso e conecta ele conecta na rede GPRS
Só pra mostra mesmo com funciona.
ATENÇÃO VC que não gosta de LER
O terminal do arduino deve estar em NO LINE ENDING
- Código:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); //RX, TX
//ligar pino 1 (placa GSM) no pino 3 ARDUINO
int powerkey = 5;
int statuspin = 6;
int pinState = 0;
String readString = String(128);
char serIn;
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(powerkey, OUTPUT);
pinMode(statuspin, INPUT);
}
void loop () {
pinState = digitalRead(statuspin);
if(pinState==LOW){
digitalWrite(powerkey, HIGH); // set the LED on
delay(2000);
digitalWrite(powerkey, LOW);
}
leserial();
if(readString == "dispara")//replaces if(readString.contains("L=1"))
{
mySerial.println("AT+CMGF=1"); // Because we want to send the SMS in text mode
Serial.println("Enviando SMS");
delay(1000);
mySerial.println("AT+CMGS=\"924018xx\""); // Aqui vc coloca o numero para o qual quer enviar SMS
delay(2000);
mySerial.print("O alarme disparou");
delay(2000);
mySerial.write(26); //CTRL+Z
}
if(readString == "Conecta"){
Serial.println("conectando");
mySerial.println("AT+CSTT=\"claro.com.br\",\"claro\",\"claro\""); // Aqui vc configura o seu Chip
delay(2000);
Serial.println("Carregando Pilha TCP");
mySerial.println("AT+CIICR");
delay(2000);
Serial.println("Buscando IP");
mySerial.println("AT+CIFSR");
}
if(readString == "disca"){
Serial.println("Discando");
mySerial.println("ATD924018;"); //Aqui vc troca o numero do telefone
}
if(readString == "cancela"){
Serial.println("cancelando");
mySerial.println("ATH");
}
readString="";
}
void leserial(){
// only if there are bytes in the serial buffer execute the following code
if(Serial.available()) {
//inform that Arduino heard you saying something
Serial.print("Comando: ");
//keep reading and printing from serial untill there are bytes in the serial buffer
while (Serial.available()>0){
serIn = Serial.read(); //read Serial
readString += serIn; //prints the character just read
delay(1);
}
//the serial buffer is over just go to the line (or pass your favorite stop char)
Serial.print(readString);
Serial.println();
}
}
duvida sobre serial monitor
Olá, eu testei o codigo deste topico e funcionou no meu shield SIM900d + Arduino Leonardo.
Agora minha dúvida é a seguinte: como faço para eu mesmo digitar no serial monitor um comando, por exemplo comando AT e ler a resposta?
Gostaria de fazer uns testes com alguns comandos AT
Que codigo devo enviar pro arduino? Como devo configurar os jumpers do shield?
obrigado
Agora minha dúvida é a seguinte: como faço para eu mesmo digitar no serial monitor um comando, por exemplo comando AT e ler a resposta?
Gostaria de fazer uns testes com alguns comandos AT
Que codigo devo enviar pro arduino? Como devo configurar os jumpers do shield?
obrigado
hi1975- Mensagens : 16
Data de inscrição : 30/01/2014
Re: Teste simples para o sim900
oSerial monitor tem que estar em carriege return
- Código:
#include <SoftwareSerial.h>
//Serial Relay - Arduino will patch a
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART
SoftwareSerial mySerial(2, 3); //RX, TX
//ligar pino 1 (placa GSM) no pino 3 ARDUINO
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
}
void loop()
{
pinState = digitalRead(statuspin);
if(pinState==LOW){
digitalWrite(powerkey, HIGH); // set the LED on
delay(2000);
digitalWrite(powerkey, LOW);
}
if(Serial.available())
{
mySerial.write(Serial.read());
}
else if(mySerial.available())
{
Serial.write(mySerial.read());
}
http://mySerial.println("AT");
//delay(500);
http://mySerial.println("AT+IPR=9600");
//delay(100);
http://mySerial.println("AT&W0");
//delay(100);
}
Re: Teste simples para o sim900
Amigo, eu tentei rodar o codigo sugerido por vc e o upload não vai, pois ocorre erro por causa dessas linhas abaixo:
(ao invés de h t t p eu coloquei agá te te pe pois eu não estava conseguindo postar aqui no forum, mas no codigo que tentei enviar pro arduino, eu coloquei corretamente de acordo com o codigo postado pelo Tiago)
O erro que aparece aqui:
sketch_feb03a.ino: In function 'void loop()':
sketch_feb03a:43: error: duplicate label 'agá te te pe'
sketch_feb03a:45: error: duplicate label 'agá te te pe'
sketch_feb03a:47: error: expected primary-expression before '}' token
sketch_feb03a:47: error: expected `;' before '}' token
Estou usando arduino leonardo + GSM Shield SIM900d (ambos comprados aqui no projetoarduino). A IDE que estou usando é a 1.0.5
Alguma luz?
- Código:
agá te te pe: http://mySerial.println("AT");
//delay(500);
agá te te pe: http://mySerial.println("AT+IPR=9600");
//delay(100);
agá te te pe: http://mySerial.println("AT&W0");
//delay(100);
(ao invés de h t t p eu coloquei agá te te pe pois eu não estava conseguindo postar aqui no forum, mas no codigo que tentei enviar pro arduino, eu coloquei corretamente de acordo com o codigo postado pelo Tiago)
O erro que aparece aqui:
sketch_feb03a.ino: In function 'void loop()':
sketch_feb03a:43: error: duplicate label 'agá te te pe'
sketch_feb03a:45: error: duplicate label 'agá te te pe'
sketch_feb03a:47: error: expected primary-expression before '}' token
sketch_feb03a:47: error: expected `;' before '}' token
Estou usando arduino leonardo + GSM Shield SIM900d (ambos comprados aqui no projetoarduino). A IDE que estou usando é a 1.0.5
Alguma luz?
hi1975- Mensagens : 16
Data de inscrição : 30/01/2014
Re: Teste simples para o sim900
O forum tenta completar oq está com // comentado, com http://
Apague essas linha que estão dando erro ou simplesmente comente
Apague essas linha que estão dando erro ou simplesmente comente
Re: Teste simples para o sim900
Olá, não estou conseguindo. Comentei / Retirei aqueles agá te te pê e nada.
Eu enviei o codigo sugerido pela IDE 1.0.5 do arduino Leonardo. O upload ocorreu com sucesso.
Abro o serial monitor em 9600 baud e carriage return
Digito ali no campo de texto o comando AT e envio. Não vejo nada de retorno.
Tento digitar outros comandos AT+alguma outra coisa e não vejo nada de retorno também
Os jumpers do shield SIM900d estão em 0~1 jumpeado e 4~5 jumpeado.
O led azul fica piscando a cada 4 segundos.
O que eu preciso é digitar eu mesmo o comando AT e ler na tela qual resposta retornou do shield. Será que meu shield veio com defeito?
Como faço isso que pretendo?
Eu enviei o codigo sugerido pela IDE 1.0.5 do arduino Leonardo. O upload ocorreu com sucesso.
Abro o serial monitor em 9600 baud e carriage return
Digito ali no campo de texto o comando AT e envio. Não vejo nada de retorno.
Tento digitar outros comandos AT+alguma outra coisa e não vejo nada de retorno também
Os jumpers do shield SIM900d estão em 0~1 jumpeado e 4~5 jumpeado.
O led azul fica piscando a cada 4 segundos.
O que eu preciso é digitar eu mesmo o comando AT e ler na tela qual resposta retornou do shield. Será que meu shield veio com defeito?
Como faço isso que pretendo?
hi1975- Mensagens : 16
Data de inscrição : 30/01/2014
Re: Teste simples para o sim900
teste esse daqui
- Código:
#include <SoftwareSerial.h>
//Serial Relay - Arduino will patch a
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART
SoftwareSerial mySerial(2, 3); //RX, TX
//ligar pino 1 (placa GSM) no pino 3 ARDUINO
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
}
void loop()
{
pinState = digitalRead(statuspin);
if(pinState==LOW){
digitalWrite(powerkey, HIGH); // set the LED on
delay(2000);
digitalWrite(powerkey, LOW);
}
if(Serial.available())
{
mySerial.write(Serial.read());
}
else if(mySerial.available())
{
Serial.write(mySerial.read());
}
}
Re: Teste simples para o sim900
Também não funcionou com esse codigo.
O serial monitor continua não retornando nenhuma resposta após eu digitar algum comando AT
Vou tentar esclarecer minha necessidade (por que eu preciso que seja retornado pra mim o resultado dos envios de comando): ao fazer upload do primeiro codigo desse topico, após eu digitar por exemplo "dispara", um SMS é enviado. Portanto, o chip SIM funciona, a fonte que uso é de 12V (2amp). Tentei usar também com 12v (5amp) e continua do mesmo jeito. Então não creio ser problema de alimentação, pois senão acho que nem enviaria um sms através do código postado no inicio do topico.
No entanto, eu vi que no codigo original é usada a função delay entre os comandos AT e julgo não ser correto dessa maneira, pois não teremos como saber se em algum momento o comando AT falhou. Poderá ocorrer também daquele delay ser insuficiente para o shield retornar um OK, talvez tenha que esperar mais para o proximo comando AT. Por outro lado, não convém elevar demais o delay "para garantir" que se dê tempo e minimizar o problema de erro. Isso é especialmente ruim caso porque num cenário onde esse sistema fosse utilizado para enviar SMS em massa o tempo seria fator crucial para o bom desempenho. Entende? Não pode ser nem muito rápido a ponto de abortar o envio do SMS por causa da rapidez no envio de comandos, nem muito lento a ponto de prejudicar a velocidade de envio de vários SMS em sequencia.
O melhor seria enviar um comando AT e, de acordo com o retorno, dar o devido tratamento (repetir o comando no caso de insucesso, ou prosseguir no caso de sucesso, por exemplo).
Porém, já que não estou sendo capaz de obter o retorno do comando AT, fico impossibilitado de de dar o devido tratamento de acordo com o retorno obtido após o comando AT,
O serial monitor continua não retornando nenhuma resposta após eu digitar algum comando AT
Vou tentar esclarecer minha necessidade (por que eu preciso que seja retornado pra mim o resultado dos envios de comando): ao fazer upload do primeiro codigo desse topico, após eu digitar por exemplo "dispara", um SMS é enviado. Portanto, o chip SIM funciona, a fonte que uso é de 12V (2amp). Tentei usar também com 12v (5amp) e continua do mesmo jeito. Então não creio ser problema de alimentação, pois senão acho que nem enviaria um sms através do código postado no inicio do topico.
No entanto, eu vi que no codigo original é usada a função delay entre os comandos AT e julgo não ser correto dessa maneira, pois não teremos como saber se em algum momento o comando AT falhou. Poderá ocorrer também daquele delay ser insuficiente para o shield retornar um OK, talvez tenha que esperar mais para o proximo comando AT. Por outro lado, não convém elevar demais o delay "para garantir" que se dê tempo e minimizar o problema de erro. Isso é especialmente ruim caso porque num cenário onde esse sistema fosse utilizado para enviar SMS em massa o tempo seria fator crucial para o bom desempenho. Entende? Não pode ser nem muito rápido a ponto de abortar o envio do SMS por causa da rapidez no envio de comandos, nem muito lento a ponto de prejudicar a velocidade de envio de vários SMS em sequencia.
O melhor seria enviar um comando AT e, de acordo com o retorno, dar o devido tratamento (repetir o comando no caso de insucesso, ou prosseguir no caso de sucesso, por exemplo).
Porém, já que não estou sendo capaz de obter o retorno do comando AT, fico impossibilitado de de dar o devido tratamento de acordo com o retorno obtido após o comando AT,
hi1975- Mensagens : 16
Data de inscrição : 30/01/2014
Re: Teste simples para o sim900
pode ser que a softserial se comporte diferente no leonardo teste em um arduino uno comum
Re: Teste simples para o sim900
vc poderia testar aí no seu laboratório usando um leonardo?
Aqui eu só comprei o seu kit que contém leonardo. Se funcionar num uno, compro de vc um.
Aqui eu só comprei o seu kit que contém leonardo. Se funcionar num uno, compro de vc um.
hi1975- Mensagens : 16
Data de inscrição : 30/01/2014
Re: Teste simples para o sim900
Amigo, vc me deu uma luz ao dizer que desconfiava que o leonardo talvez se comportasse diferentemente.
Entrei no site oficial do arduino e fui na pagina do gsm shield oficial deles. Ali ele indica um link para quem tem o leonardo ou o mega.
veja: arduino.cc/en/Guide/GSMShieldLeonardoMega
No leonardo e mega, o pino 2 digital não possui capacidade de interrupção. E como o softserial na programação tenta usar o pino 2 para RX, fica impossível do leonardo receber a resposta dos comandos.
Lá na pagina oficial fala pra jumpear os pinos 2 e 8 do shield. Fiz isso no meu shield SIM900d
e no programa, eu alterei a linha: SoftwareSerial mySerial(2, 3); //RX, TX
para: SoftwareSerial mySerial(8, 3); //RX, TX
E dessa forma, tudo se resolveu. Agora consigo obter respostas ao enviar comandos AT via serial monitor
Existe alguma forma de "jumpear via software" os pinos 2 e 8 do shield sim900d ou do arduino? Isto é, há alguma maneira de fazer isso via codigo?
Entrei no site oficial do arduino e fui na pagina do gsm shield oficial deles. Ali ele indica um link para quem tem o leonardo ou o mega.
veja: arduino.cc/en/Guide/GSMShieldLeonardoMega
No leonardo e mega, o pino 2 digital não possui capacidade de interrupção. E como o softserial na programação tenta usar o pino 2 para RX, fica impossível do leonardo receber a resposta dos comandos.
Lá na pagina oficial fala pra jumpear os pinos 2 e 8 do shield. Fiz isso no meu shield SIM900d
e no programa, eu alterei a linha: SoftwareSerial mySerial(2, 3); //RX, TX
para: SoftwareSerial mySerial(8, 3); //RX, TX
E dessa forma, tudo se resolveu. Agora consigo obter respostas ao enviar comandos AT via serial monitor
Existe alguma forma de "jumpear via software" os pinos 2 e 8 do shield sim900d ou do arduino? Isto é, há alguma maneira de fazer isso via codigo?
hi1975- Mensagens : 16
Data de inscrição : 30/01/2014
Re: Teste simples para o sim900
Amigo o leonardo tem 2 seriais o certo serial jumpear o shield para hardserial e usa-la para comunicar o arduino com o shield, pois a usb do leonardo é nativa e a comunicação com o pc se daria por ela.
Logico que também implicaria na mudança do código
Logico que também implicaria na mudança do código
Re: Teste simples para o sim900
Meu nível de conhecimento ainda não me permite fazer isso. Estou mexendo nisso a apenas uma semana. Por hora, vou deixar o fiozinho interligando os pinos D2 e D8 porque assim posso aproveitar a grande maioria dos códigos exemplos disponíveis aqui no fórum ou por aí na internet. Eu mesmo ainda não vi nenhum exemplo de código que usasse a hardserial. Meu projeto prevê o uso de vários componentes e agora que já desembaracei o shield SIM900d, vou pra próxima etapa. Quando tudo estiver rodando como o projeto foi concebido, voltarei ao shield e tentarei lapidar aquilo que ficou mais ou menos. Aí sim vou tratar de ver como se faz pela hardserial. Obrigado amigo!
hi1975- Mensagens : 16
Data de inscrição : 30/01/2014
Tópicos semelhantes
» Sim900 Shield + Arduino MEGA
» Código simples SIM908
» TESTE SEU DEVICE
» Sim900 Shield
» Receber uma mensagem e acionar um dispositivo com o celular ( sim900/908 )
» Código simples SIM908
» TESTE SEU DEVICE
» Sim900 Shield
» Receber uma mensagem e acionar um dispositivo com o celular ( sim900/908 )
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|