Sim800L Serial arduino NANO

Olá pessoal eu estou com grande problema de comunicação com sim800L com o arduino nano
eu programei no arduino NANO assim

#include "SIM900.h"
#include "sms.h"
SMSGSM sms;
#include <SoftwareSerial.h>
#include <AltSoftSerial.h>
#include <TinyGPS.h>
TinyGPS gps;
SoftwareSerial mySerial(2,3);
AltSoftSerial altSerial;
char smsbuffer[160];
char n[20];
boolean started = false;
unsigned long chars;
unsigned short sentences, failed;
float flat, flon;
unsigned long age;
String posi,bloque;

void setup(){

Serial.begin(9600);
Serial.println("Iniciando aguarde...");
pinMode(12,OUTPUT);
digitalWrite(12,LOW);
mySerial.begin(9600);
delay(100);
if(gsm.begin(9600)){
altSerial.begin(9600);
delay(100);
Serial.println("\nstatus=READY");
started = true;
Serial.println("O modulo de GPRS iniciou com sucesso!");
}else{
Serial.println("\nstatus=IDLE");
}

}

void loop(){

}

e liguei ele no arduino nano como essa figura abaixo

no serial do arduino ele me responde umas string doida não sei o que é isso , será que é mal contato?? da solda?

ATT: OK
RIC: $9 ¥ÒAd!$ f
115200
ATT: OK
RIC: $9 %Ò$Dd!D(
ATT: OK
RIC: $9 ¥ÒAt%$0
ATT: OK
RIC: $9 ¥ÒAt%$0
ATT: OK
RIC: $9 ¥Ò$Dd!D(
ATT: OK
RIC: $9 ¥ÒAt%$0
ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp

status=IDLE

Eu gostaria de saber o por que ele não me responde corretamente?? é problema com biblioteca???

Não tenho muita experiência com esse modem nem com as bibliotecas que está utilizando, mas eu diria que isso se deve à baudrate mal configurada. Como ele devolve:

status=IDLE

quer dizer que não está executando este if:

 if(gsm.begin(9600)){

tente alterar este valor para outro valor válido e tente novamente. (os valores válidos são coisas do género 4800, 19200, 38400, 57600, 115200, etc.)

Como não conheço a biblioteca, não sei se é apenas nesta linha que tem que ser alterado se também tem que ser noutras, como por exemplo, nesta:

 mySerial.begin(9600);

Já agora, no local de onde tirou esse código não explica isso?

EDIT: Já agora, já não é novato neste fórum, já tem, neste momento mais de 70 posts. Não acha que vai sendo altura de ler as regras do fórum a aprender (pelo menos) a colocar o código correctamente nos posts. O pior que pode acontecer é que deixe de obter respostas dos outros utilizadores ou que os posts, pura e simplesmente, sejam apagados.

Eu vou testar acredito que se fosse o rotate (9600) ele nao dava erro dizendo que nao responde o serial !

Eu nao copiei codigo eu fiz

sabing:
Eu nao copiei codigo eu fiz

Isso explica muita coisa. Não estava a ver muita lógica nas linhas:

mySerial.begin(9600);

e:

if(gsm.begin(9600)){

e ainda:

    altSerial.begin(9600);

Agora já percebi.

Porque não experimenta os exemplos que vêm com a biblioteca?

Eu vou fazer isso, isso descarta mal contato de solda???

sabing:
(...) isso descarta mal contato de solda???

Não percebi. A que é que se está a referir? Não é às linhas de código, pois não?

rapaz eu estou desconfiando que seja solda hoje eu fiz um teste sem modificar nada na programação olha que me deu a resposta no terminal da ide do arduino

Iniciando aguarde...

ATT: OK
RIC: AT

OK

RDY

+CFUN: 1

DB:ELSE
DB:NO RESP // ele para aqui

sabing:
rapaz eu estou desconfiando que seja solda hoje eu fiz um teste sem modificar nada na programação olha que me deu a resposta no terminal da ide do arduino

Iniciando aguarde...

ATT: OK
RIC: AT

OK

RDY

+CFUN: 1

DB:ELSE
DB:NO RESP // ele para aqui

Sim, sendo assim, também concordo.

Eu faço teste no multímetro parece estar tudo certo cara! que coisa doida ! já fiz a solda de novo e agora mudou para as string doida ! kkkkkkkkk coloquei o rotate como da biblioteca 2400 como padrão mesmo assim não mudou nada

Iniciando aguarde...

ATT: OK
RIC: ˆˆBá
ATT: OK
RIC: ˆˆBá
ATT: OK
RIC: ˆˆBá
ATT: OK
RIC: ˆˆBá
ATT: OK
RIC: ˆˆBá
DB:ELSE
ATT: OK
RIC: ˆˆBá
ATT: OK
RIC: ˆˆBá
ATT: OK
RIC: ˆˆBá
ATT: OK
RIC: ˆˆBá
ATT: OK

è muito ruim para fazer solda ! ! parece que colocaram produto para não segurar solda nos pinos

sabing:
è muito ruim para fazer solda ! ! parece que colocaram produto para não segurar solda nos pinos

Com fluxo, isso não devia ser um problema.

Como assim :o não entendi??

eu fiz de novo a solda olha

ATT: OK
RIC: $9 ¥ÒAt%¤0y
115200
ATT: OK
RIC: $9 ¥Ò,Dd!d &
ATT: OK
RIC: $9 ¥Ò,Dd!d &
ATT: OK
RIC: $9 ¥Ò$Dd!D(&
ATT: OK
RIC: $9 ¥ÒAt%$0f
ATT: OK
RIC: $9 ¥Ò,Dd!d &
ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp

status=IDLE

sabing:
Como assim :o não entendi??

Se a solda tiver fluxo, ao adicionar fluxo antes de soldar, a solda vai agarrar bem, mesmo que haja qualquer coisas nos pinos que não deixe a solda agarrar.

A solda está bem agarrada! tem como eu testar o fluxo de dados no modulo?? usando um multimetro??

veja a imagem como ele fica respondendo o sim800

#include "SIM900.h"
#include "sms.h"
SMSGSM sms;
#include <SoftwareSerial.h>
#include <AltSoftSerial.h>
#include <TinyGPS.h>
TinyGPS gps;
SoftwareSerial mySerial(2,3);
AltSoftSerial altSerial;
char smsbuffer[160];
char n[20];
boolean started = false;
unsigned long chars;
unsigned short sentences, failed;
float flat, flon;
unsigned long age;
String posi,bloque;

void setup(){

Serial.begin(9600);
Serial.println("Iniciando aguarde...");
// pinMode(12,OUTPUT);
// digitalWrite(12,LOW);
mySerial.begin(9600);
delay(100);
if(gsm.begin(4800)){
// altSerial.begin(9600);
// delay(100);
Serial.println("\nstatus=READY");
// started = true;
Serial.println("O modulo de GPRS iniciou com sucesso!");
}else{
Serial.println("\nstatus=IDLE");
}

}

void loop(){

}

Veja a imagem

http://postimg.org/image/kvden6cdj/d4b9370c/

luisilva:
(...)Já agora, já não é novato neste fórum, já tem, neste momento mais de 70 posts. Não acha que vai sendo altura de ler as regras do fórum a aprender (pelo menos) a colocar o código correctamente nos posts. O pior que pode acontecer é que deixe de obter respostas dos outros utilizadores ou que os posts, pura e simplesmente, sejam apagados.

Se não cumpre as regras, mesmo depois de ser avisado, eu também não o quero ajudar. Boa Sorte!

O que eu faria:
Esquecer para já o arduino e ter a certeza do baud rate do modem, ter a certeza da tensao de alimentaçao e verificar se consegues comunicação com ele, desta forma:
Alimentar o modem e usando um conversor FTDI ligar os pinos RX, TX e GND ao FTDI e ao meu pc.

Modem FTDI

Pino RX-----PinoTX
Pino TX-----PinoRX
GND---------GND

Nota que os pinos RX RX devem cruzar!
Depois abrir o putty ou outro qualquer cliente de hyperterminal (terraterm, gtkterm , a própria IDE do arduino ou online usando Download AT Command Tester | M2MSupport.net) na porta COM que o teu FTDI tem atribuida e enviar o comando AT.Se acertares no baud e o modem tiver o ECO ativo ele deve te devolver OK.
Se te devolver "lixo" é sinal que o baud esta errado, fechas e tentas de novo com outro baud rate ate acertares no baud.
O baud por defeito deve estar escrito no datasheet do SIM800L ...
Quando encontrares o baud correcto e receberes o OK do modem então sim estas pronto para agora o colocar no arduino.
Caso não tenhas um interface FTDI podes sempre arrancar o atmega 328 de um arduino Duemilanove e assim usares o ftdi232 que esta onboard .Necessitas de o arrancar para que ele não interfira nos pinos TX e RX já que eles esta diretamente ligados ao 328