Olá pessoal!


Estou com uma dúvida de como ligar o módulo sim800l.

No meu esquema uso a saída de 5v do arduino junto com o regulador te tensão LM2596.
A voltagem está correta, porém, amperagem não ultrapassa 600mA. 
Precisava de no mínimo 1A.

O módulo liga e responde alguns comandos básicos.
Quando tento alguns certos comandos (segundo pesquisei alguns operações demandam mais potência) como AT+CGATT=1, o retorno é um caractere asc igual esse ÿ.

Alguns blogs como o do Arduino relatam que esse retorno refere-se a corrente inadequada.

Então como faço para fornecer a voltagem entre 3.7 e 4.4 volts e a corrente entre 1 e 2 amperes?

Exibições: 6452

Responder esta

Respostas a este tópico

Alexandre,

Para alimentar o SIM 800I utilizar os módulos Step-down Dc/dc Mp1584, eles tem entrada entre 4.5V a 28V e saída ajustável entre 0,8V e 18V com 3A.

Não acredito que o problema seja de corrente. Deve ser a configuração da velocidade da serial usada na comunicação com o SIM800I.

Postar o modulo SIM800I usado, esquema que você montou e o software do arduino.

Sds,

Olá Cinesio.

Primeiro, obrigado por sua ajuda!

Então, reduzi a velocidade da porta serial para 9600. Mesmo assim não consigo registrar o módulo em uma rede.

Estou utilizando a versão 1.6.11 da IDE do Arduino.

Meu programa é bem simples, mas caso alguém ver algo de errado tanto no programa como na execução dos comandos AT ficarei agradecido pela ajuda.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3);


void setup() {
    Serial.begin(9600);
    mySerial.begin(9600);
}

void loop() {
    if (mySerial.available())
        Serial.write(mySerial.read());
    if (Serial.available())
        mySerial.write(Serial.read());
}

Nos anexos tem o esquema e a saída da porta serial.

O esquema é basicamente as portas digitais 2 e 3 do arduino nas portas TX e RX do módulo.

Os outros dois fios do módulo são o GND, e o VCC que está numa voltagem entre 3,7 e 4,4 volts conforme exige o fabricante do módulo.

 

Quando eu tento registrar uma rede, o programa simplesmente não responde.

Tem algo que esteja faltando ou algum comando errado?

Anexos

Alexandre,

Quando utilizar serial por software é de boa pratica não configurar velocidades maiores do que 9600.

O seu código está certo para envio de comandos AT.

Você está conectando com o modulo SIM800I, conforme imagem em anexo.

Somente não entendi quando diz "não consigo registrar o módulo em uma rede".

O que você pretende fazer ?

Você fez teste de envio de SMS ?

Você fez teste de recebimento de SMS ?

Você fez teste de recebimento de chamada ?

Você fez teste de acesso HTTP ?

Esclareça melhor sua duvida, para poder ajuda-lo.

Sds,

Olá, eu utilizo uma bateria de 3,7V 900mah e um carregador de Bateria De Litio (lithium) 1000ma Tp4056,
tem funcionado 100%.

Olá Ray,

Tentarei utilizar esse carregador junto com a bateria.

Obrigado pela dica.


Cinesio,

Estou tentando enviar um SMS com o código abaixo:

#include <SoftwareSerial.h>
SoftwareSerial serialSIM800(2,3);

void setup() {
    Serial.begin(9600);
    while(!Serial);
    serialSIM800.begin(9600);
    delay(1000);
    Serial.println("Setup Complete!");
    Serial.println("Sending SMS...");
    serialSIM800.write("AT+CMGF=1\r\n");
    delay(1000); 
    serialSIM800.write("AT+CMGS=\"+55xxxxxxx0157\"\r\n");
    delay(1000);
    serialSIM800.write("TEST");
    delay(1000);
    serialSIM800.write((char)26);
    delay(1000);
    Serial.println("SMS Sent!");
}

void loop() {
}

Porém, esse código não gera erro, mas também não envia o SMS.
Estava tentando seguir essa dica.

No entanto não consigo passar do passo 1, "Network registration".
Além de não passar do passo 1, ocorre também outro problema.

Quando envio o comando (AT+CPIN?) para verificar o status do meu cartão SIM.
Obtenho o seguinte retorno :
"SIM PIN required, SIM PUK code required."

Ao tentar setar o código PIN, que no meu caso é Vivo, também retorna erro conforme abaixo:
AT+CPIN="8486"
Error

O cartão SIM tem crédito e funciona no telefone, navego na internet tudo normal, só quando
colo no módulo não funciona.

Minha dúvida seria quais as etapas básicas para ativar o módulo, ou de como registrar/ativar uma rede ou como registar/ativar meu chip para que possa executar as funções do módulo.

Agradeço qualquer informação!

Alexandre,

Utilizei o código abaixo para enviar SMS:

na inicialização do arduino:

// reset modulo Sim800L  
 digitalWrite(Sim800LReset,HIGH);
 delay(1000);
 digitalWrite(Sim800LReset,LOW);
 delay(1000);
 digitalWrite(Sim800LReset,HIGH);
 delay(5000); 

PIno 9 do arduino no Pino RST do modulo SIM800I

SerialGSM.println("AT");  

delay(300);
SerialGSM.println("AT+CSQ");  
delay(300);

SerialGSM.println("AT+CPIN?");  
delay(300);

SerialGSM.println("AT+CMGF=1\r");  
delay(300);

SerialGSM.println("AT+CNMI=1,2,0,0\r");  
delay(300);

Para envio de SMS:

SerialGSM.println("AT+CMGS=\"+9xxxxxxxxx\"\r\n");
delay(1000);
 // mensagem do SMS
 SerialGSM.println("Teste SMS ARduino ");
 delay(1000);
 // fim da transmissão
 SerialGSM.println((char)26);
  delay(500);
  SerialGSM.println("AT+CMGD=1,4");
  delay(500);

Envio de dados para thingspeak:

SerialGSM.println("AT+CPIN?");
  delay(1000);

SerialGSM.println("AT+CREG?");
  delay(1000);

  SerialGSM.println("AT+CGATT?");
  delay(1000);

 SerialGSMl.println("AT+CIPSHUT");
  delay(1000);

  SerialGSM.println("AT+CIPSTATUS");
  delay(2000);

  SerialGSM.println("AT+CIPMUX=0");
  delay(2000);
 
 
  SerialGSM.println("AT+CSTT=\"internet\"");//start task and setting the APN,
  delay(1000);
 
  SerialGSM.println("AT+CIICR");//bring up wireless connection
  delay(3000);
 
     SerialGSM.println("AT+CIFSR");//get local IP adress
  delay(2000);
 
  SerialGSM.println("AT+CIPSPRT=0");
  delay(3000);

 
  SerialGSM.println("AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",\"80\"");//start up the connection
  delay(6000);
 
  
  SerialGSM.println("AT+CIPSEND");//begin send data to remote server
  delay(4000);
   
    String str="GET http://api.thingspeak.com/update?api_key=xxxxxxxxxxxxxxxxx&field1="+String(Contador);
  SerialGSM.println(str);//begin send data to remote server
  delay(4000);
 

  SerialGSM.println((char)26);//sending
  delay(5000);//waitting for reply, important! the time is base on the condition of internet
  SerialGSM.println();
 
 SerialGSM.println("AT+CIPSHUT");//close the connection
  delay(100);
 

Minha operadora é OI e não tive que entrar com nenhum código PIN

Sds,

Olá Cinesio,

Realizei os testes 1, 2, 3 e 4 em anexo no pdf.

Nenhum com sucesso.

No teste 1, todos comandos são executados, porém o SMS não chega, é como se não tivesse enviado.

Nos testes 2 e 3 gera erro, e não retorna um erro com descrição do que ocorreu de errado.

No 4, realizei o teste com uma ferramenta para enviar o SMS, e nele retorna o erro:

"SMS Service center entry is empty. Not including this field in the PDU"

Estou pesquisando sobre esse erro mas ainda sem sucesso!

Uma dúvida que tenho. No seu caso que está tudo funcionando.

Qual seria a versão do seu firmware e qual o retorno que você obtêm ao enviar o comando AT+CREG? 

No meu caso fica assim:

AT+CGMR

Revision:1418B02SIM800L24

AT+CREG? 

+CREG: 0,2

"The device is not registered and is currently searching for a new operator to which to register."

Se você puder responder essas minhas dúvidas ficarei grato!

Anexos

Alexandro, estou testando enviar pro thingspeak, porem sem exito, o quq você passa nessa String(Contador) e o que seria esse str que é printado ?

Alexandre,

Segue as respostas dos comandos AT´s:

Os primeiros comandos são os comandos que coloquei na inicialização ( ver post anterior ) e em seguida os ccomandos que você solicitou.

Teste Modulo Sim800l

AT

OKAT+CSQ

+CSQ: 0,0

OKAT+CPIN?

+CPIN: READY

OKAT+CMGF=1


OKAT+CNMI=1,2,0,0


OK

Memoria disponivel: 762 bytes

Call Ready

SMS Ready


AT+CGMR
Revision:1418B02SIM800L24

OK
AT+CREG?
+CREG: 0,1

Sds,

Cinesio,

Obrigado por retornar os comandos.

De fato o problema é com o registro da operadora ou da rede, pois meu retorno para AT+CREG? é sempre 0,2.

Estou tentando descobrir por que o módulo não consegue se registrar em uma rede.

Abraço!

Já sofri bastante com isso. No meu caso era problema com a corrente.
Depois que comecei a usar fonte de bancada nunca mais tive esses problemas.
Testa a biblioteca Adafruit FONA

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço