O SIM800L permite experimentar comunicação celular em projetos Arduino. Neste guia, vamos montar um terminal para comandos AT, verificar o registro na rede e enviar um SMS. O exemplo usa Arduino Uno R3 ou Nano clássico com ATmega328P; outras placas podem exigir pinos e bibliotecas diferentes.

Antes de começar: confirme o 2G
O SIM800L trabalha com GSM/GPRS 2G. Ele não se conecta a redes 4G ou 5G. Consulte a operadora sobre cobertura 2G, compatibilidade do chip e disponibilidade do serviço no endereço de uso. Um celular funcionar no local não comprova cobertura 2G. O módulo também não tem GPS integrado.
Materiais
- Arduino Uno R3 ou Nano clássico, cabo USB e Arduino IDE.
- Módulo SIM800L e antena compatível.
- Cartão SIM ativo com SMS habilitado e saldo/plano apropriado.
- Fonte regulada dedicada e conversor de níveis UART adequado para 5 V ↔ 2,8 V.
- Fios curtos, conexões firmes e capacitores de desacoplamento conforme o projeto da placa.
Alimentação: a parte mais importante
Para a versão sem regulador, use 4,0 V regulados, dentro da faixa de 3,4 a 4,4 V, e fonte capaz de atender picos de 2 A. Não ligue o módulo diretamente em 5 V nem o alimente pelo pino 3,3 V do Arduino. Ajuste e meça a fonte antes de conectar. Mantenha GND comum e fios curtos; siga o desacoplamento recomendado no datasheet. Confira se a sua placa possui regulador antes de aplicar qualquer tensão.
Ligações com Arduino
Faça as conexões com tudo desligado. Use conversão de nível nos dois sentidos, conforme o circuito recomendado pela SIMCom ou um conversor próprio para UART. Não aplique o TX de 5 V do Arduino diretamente ao RX do SIM800L.
| Origem | Destino |
|---|---|
| Fonte dedicada: positivo regulado | VCC/VBAT do módulo, conforme a placa |
| Negativo da fonte | GND do módulo e GND do Arduino |
| TXD do SIM800L | D10 (RX) do Arduino, pelo conversor |
| D11 (TX) do Arduino | RXD do SIM800L, pelo conversor |
| Antena compatível | Conexão de antena indicada na placa |
A tabela usa os nomes dos sinais, não a posição física dos pinos. Algumas placas inicializam ao receber energia; outras precisam do acionamento de PWRKEY. Siga a documentação da versão. Insira ou retire o SIM com a alimentação desligada.
Código: terminal de comandos AT
Selecione a placa e a porta na IDE e carregue o sketch abaixo. A biblioteca SoftwareSerial permite usar D10 e D11, deixando a serial USB para o computador.
#include <SoftwareSerial.h>
// RX do Arduino = D10; TX do Arduino = D11
SoftwareSerial modem(10, 11);
void setup() {
Serial.begin(9600);
modem.begin(9600);
Serial.println(F("Terminal SIM800L pronto. Envie AT com CR+LF."));
}
void loop() {
while (modem.available()) {
Serial.write(modem.read());
}
while (Serial.available()) {
char c = Serial.read();
// Digite ~ para enviar Ctrl+Z ao terminar o SMS.
if (c == '~') modem.write((uint8_t)26);
else modem.write(c);
}
}
Abra o Monitor Serial em 9600 baud, com terminação Ambos NL e CR. Energize o SIM800L e aguarde a inicialização. O sketch apenas encaminha dados: ele não verifica respostas nem envia mensagens automaticamente. Não foi validado em bancada com a sua unidade.
Teste a comunicação e a rede
Envie um comando por vez e espere a resposta antes do seguinte.
| Comando | O que verificar |
|---|---|
AT | Deve retornar OK. |
ATE0 | Desativa o eco para facilitar a leitura. |
AT+CPIN? | READY indica SIM pronto. Se pedir PIN, use somente o PIN correto do chip. |
AT+CSQ | Consulta sinal; RSSI 99 indica desconhecido/não detectável. |
AT+CREG? | Status 1 indica registro na rede de origem; 5 indica roaming. |
Se AT não responder, confira TX/RX, GND e velocidade serial. O exemplo tenta 9600 baud; uma unidade configurada para outra taxa precisará do ajuste correspondente. Não altere vários parâmetros ao mesmo tempo.
Envie um SMS de teste
- Com o SIM pronto e a rede registrada, envie
AT+CMGF=1e aguarde OK. - Envie
AT+CMGS="+55DDDNUMERO", substituindo pelo telefone real de teste, com DDI e DDD. - Aguarde o prompt
>. Escreva uma mensagem simples sem acentos, comoTeste do SIM800L com Arduino. - Envie o caractere
~. O sketch o converte no byte 26 (Ctrl+Z), que conclui o envio. - Aguarde
+CMGS:eOK. Isso indica aceitação do envio pelo modem/rede, não uma confirmação de leitura pelo destinatário.
O teste pode consumir créditos. Evite usar ~ dentro do texto, pois ele encerra a mensagem neste sketch.
Problemas comuns
- Reinicia durante o registro: revise fonte, queda de tensão e conexões antes de modificar o código.
- Responde AT, mas não registra: confira SIM, antena, cobertura 2G e habilitação do serviço.
- Caracteres ilegíveis: confira baud rate nos dois lados.
- Falha no SMS: anote o erro completo, confirme saldo/plano e consulte o manual AT; não repita envios em um laço.
Próximos passos e documentação
Após esse teste manual, automatize a sequência com uma máquina de estados, limites de tempo e tratamento de erros. Para dados GPRS, confirme o APN da operadora antes de configurar a conexão.

