Materiais necessários:
1x Cartão SIM com crédito
1x Arduino de qualquer tipo
1x Modulo GPRS SIM800
1x jumpers
1x Fonte externa + regulador de tensão 5V
Passos:
1. Inserir o cartão SIM ao módulo
2. Conectar o modulo ao Arduino
3. Fazer o upload do código para o Arduino
4. Testar conexão entre Arduino e SIM800
5. Testar conexão entre SIM800 e rede de telefonia celular
1.Inserir o cartão SIM no módulo
Insira o cartão SIM no módulo como na imagem a seguir:
2. Conectar o modulo ao Arduino usando o seguinte diagrama de pinos
Obs: A alimenção 5V do modulo deve ser preferencialmente externa para evitar que o SIM800 reinicie quando conectar a rede de telefonia celular.
Obs2: Os pinos 10 e 11 serão utilizados pela biblioteca SoftwareSerial para simular os pinos TX e RX. Precisamos disso pois os pinos TX e RX do Arduino serão utilizados para enviar os comandos AT.
![]() |
Diagrama de pinos |
Fazer o upload do seguinte código para o Arduino:
#include < SoftwareSerial.h >
#define TX_PIN 10
#define RX_PIN 11
SoftwareSerial softSerial(TX_PIN, RX_PIN);
void setup(){
//Terminal para debug
Serial.begin(9600);
while (!Serial);
//Comunicacao com o SIM800L
softSerial.begin(4800);
delay(1000);
Serial.println("Debugging SIM800L!");
}
void loop(){
//Print dos dados recebidos pelo modulo
if (softSerial.available()){
Serial.write(softSerial.read());
}
//Envio de comandos AT para o modulo
if (Serial.available()){
softSerial.write(Serial.read());
}
}
4. Testar conexão entre Arduino e SIM800
1. Abra o Terminal Monitor do Arduino IDE
2. Seleciona a velocidade de Baud rate para 9600 e coloque o tipo de sufixo como "Nova linha"
3. Digite AT na entrade de texto na parte superior do terminal e clique em Enviar (ou aperte enter)
4. Se o modulo estiver dividamente conectado e alimentado será retornado a mensagem "OK"
5. Testar conexão entre SIM800 e rede de telefonia celular
Para testar a conexão com a rede de telefonia celular insira os códigos da tabela a seguir e confirme se a resposta coincide com o esperado.
Caso todos os códigos sejam executados sem erro e no final seja possível ver a string lida do servidor então a configuração do SIM800 com conexão com a internet está funcionando perfeitamente.
Código para fazer teste de conexão automatizado (OPCIONAL)
Para executar a inicialização automática digite * e tecle enter no terminal monitor.
Possíveis problemas:
1. O comando AT não retorna nada e os comandos estão se acumulando exemplo de saída: ATatatAT.
Solução: Provavelmente o tipo de sulfixo está selecionado como "Nenhum fim-de-linha". Confirme se o tipo de sulfixo esta em "Nova linha". Os outros tipos também funcionam.
Fontes:
[Manual SIM800]
http://img.filipeflop.com/files/download/SIM800+Series_AT+Command+Manual_V1.09.pdf
[Conexão GPRS com HTML]
http://www.raviyp.com/embedded/194-sim900-gprs-http-at-commands
[APNs do Brasil]
https://www.arduinoecia.com.br/2015/11/acessar-internet-arduino-gsm-shield-sim900.html
[Como ter acesso a internet com módulo GPRSSIM900]
https://www.arduinoecia.com.br/2015/11/acessar-internet-arduino-gsm-shield-sim900.html
1. Abra o Terminal Monitor do Arduino IDE
2. Seleciona a velocidade de Baud rate para 9600 e coloque o tipo de sufixo como "Nova linha"
3. Digite AT na entrade de texto na parte superior do terminal e clique em Enviar (ou aperte enter)
4. Se o modulo estiver dividamente conectado e alimentado será retornado a mensagem "OK"
5. Testar conexão entre SIM800 e rede de telefonia celular
Para testar a conexão com a rede de telefonia celular insira os códigos da tabela a seguir e confirme se a resposta coincide com o esperado.
Caso todos os códigos sejam executados sem erro e no final seja possível ver a string lida do servidor então a configuração do SIM800 com conexão com a internet está funcionando perfeitamente.
Comando AT | Resposta Esperada | Descrição |
AT+SAPBR=3,1,"Contype","GPRS" | OK | Define o tipo de conexão para GPRS |
AT+SAPBR=3,1,"APN","claro.com.br" | OK | Vai conectar com a rede de telefonia celular. O APN depende da operadora. CLARO:claro.com.br TIM:timbrasil.br VIVO:zap.vivo.com.br OI:gprs.oi.com.br |
AT+SAPBR =1,1 | OK | Ativa o GPRS (Só precisa ser executado uma vez) |
AT+SAPBR=2,1 | +SAPBR:1,1,"100.115.10.37" OK | Consulte se a conexão for configurada corretamente, se o retorno for um endereço IP, então podemos prosseguir |
AT+HTTPINIT | OK | Ativa o modo HTTP (Só precisa ser executado uma vez) |
AT+HTTPPARA="CID",1 | OK | Configura o identificador de perfil HTTP |
AT+HTTPPARA="URL","http://api.thingspeak.com/channels/44232/feed/last.json" | OK | Define a URL que iremos acessar |
AT+HTTPACTION=0 | +HTTPACTION: 0,200,98 | Inicia o download de dados via HTTP GET |
AT+HTTPREAD | +HTTPREAD: 98 {"field1":"2380.4797000000","field2":"14072","created_at":"2015-10-08T12:37:08Z","entry_id":55492} | Printa os dados lidos da via HTTP GET |
Código para fazer teste de conexão automatizado (OPCIONAL)
Para executar a inicialização automática digite * e tecle enter no terminal monitor.
#include < SoftwareSerial.h >
#define TX_PIN 11
#define RX_PIN 10
#define TIMEOUT 5000
SoftwareSerial softSerial(TX_PIN, RX_PIN);
int timeout(long _delay){
int flag = 0;//marca se o modulo respondeu antes do timeout Acabar
_delay = _delay/50;
for(int i = 0; i<50 font="" i="">50>
if(!softSerial.available())delay(_delay);
else flag = 1;
Serial.print('.');
}
Serial.print('\n');
return flag;
}
void sendAtCmd(char* str){
int i = 0;
softSerial.println(str);
//aguarda a resposta do modulo
while (!softSerial.available()){
delay(500);
i++;
if(i>=TIMEOUT/500){
Serial.print(str);
Serial.println(" REACHED TIMEOUT!");
break;
}
}
Serial.print(">>");
while (softSerial.available()){
Serial.write(softSerial.read());
}
}
void initSim800(){
Serial.println("Sim800L Auto Test Running...");
sendAtCmd("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
sendAtCmd("AT+SAPBR=3,1,\"APN\",\"claro.com.br\"");
sendAtCmd("AT+SAPBR=1,1");
timeout(2000);
sendAtCmd("AT+SAPBR=2,1");
timeout(2000);
sendAtCmd("AT+HTTPINIT");
sendAtCmd("AT+HTTPPARA=\"CID\",1");
sendAtCmd("AT+HTTPPARA=\"URL\",\"http://date.jsontest.com\"");
sendAtCmd("AT+HTTPACTION=0");
timeout(15000);
sendAtCmd("AT+HTTPREAD");
timeout(2000);
Serial.println("Sim800L Auto Test Done!");
}
void setup(){
//Terminal para debug
Serial.begin(9600);
while (!Serial);
//Comunicacao com o SIM800L
softSerial.begin(4800);
delay(1000);
Serial.println("Debugging SIM800L!");
}
void loop(){
//Print dos dados recebidos pelo modulo
if (softSerial.available()){
Serial.write(softSerial.read());
}
//Envio de comandos AT para o modulo
if (Serial.available()){
char ch = Serial.read();
if(ch == '*'){
initSim800();
}
else softSerial.write(ch);
}
}
#define TX_PIN 11
#define RX_PIN 10
#define TIMEOUT 5000
SoftwareSerial softSerial(TX_PIN, RX_PIN);
int timeout(long _delay){
int flag = 0;//marca se o modulo respondeu antes do timeout Acabar
_delay = _delay/50;
for(int i = 0; i<50 font="" i="">50>
if(!softSerial.available())delay(_delay);
else flag = 1;
Serial.print('.');
}
Serial.print('\n');
return flag;
}
void sendAtCmd(char* str){
int i = 0;
softSerial.println(str);
//aguarda a resposta do modulo
while (!softSerial.available()){
delay(500);
i++;
if(i>=TIMEOUT/500){
Serial.print(str);
Serial.println(" REACHED TIMEOUT!");
break;
}
}
Serial.print(">>");
while (softSerial.available()){
Serial.write(softSerial.read());
}
}
void initSim800(){
Serial.println("Sim800L Auto Test Running...");
sendAtCmd("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
sendAtCmd("AT+SAPBR=3,1,\"APN\",\"claro.com.br\"");
sendAtCmd("AT+SAPBR=1,1");
timeout(2000);
sendAtCmd("AT+SAPBR=2,1");
timeout(2000);
sendAtCmd("AT+HTTPINIT");
sendAtCmd("AT+HTTPPARA=\"CID\",1");
sendAtCmd("AT+HTTPPARA=\"URL\",\"http://date.jsontest.com\"");
sendAtCmd("AT+HTTPACTION=0");
timeout(15000);
sendAtCmd("AT+HTTPREAD");
timeout(2000);
Serial.println("Sim800L Auto Test Done!");
}
void setup(){
//Terminal para debug
Serial.begin(9600);
while (!Serial);
//Comunicacao com o SIM800L
softSerial.begin(4800);
delay(1000);
Serial.println("Debugging SIM800L!");
}
void loop(){
//Print dos dados recebidos pelo modulo
if (softSerial.available()){
Serial.write(softSerial.read());
}
//Envio de comandos AT para o modulo
if (Serial.available()){
char ch = Serial.read();
if(ch == '*'){
initSim800();
}
else softSerial.write(ch);
}
}
Possíveis problemas:
1. O comando AT não retorna nada e os comandos estão se acumulando exemplo de saída: ATatatAT.
Solução: Provavelmente o tipo de sulfixo está selecionado como "Nenhum fim-de-linha". Confirme se o tipo de sulfixo esta em "Nova linha". Os outros tipos também funcionam.
[Manual SIM800]
http://img.filipeflop.com/files/download/SIM800+Series_AT+Command+Manual_V1.09.pdf
[Conexão GPRS com HTML]
http://www.raviyp.com/embedded/194-sim900-gprs-http-at-commands
[APNs do Brasil]
https://www.arduinoecia.com.br/2015/11/acessar-internet-arduino-gsm-shield-sim900.html
[Como ter acesso a internet com módulo GPRSSIM900]
https://www.arduinoecia.com.br/2015/11/acessar-internet-arduino-gsm-shield-sim900.html
ola, vc tem um codigo para que o sim800l conecte com a internet e envie dados pelo metodo get para um index.php?
ResponderExcluirGostaria de saber o mesmo se e possivel
Excluir