O SIM800L V2.0 GSM / GPRS é um módulo GSM / GPRS de banda quádrupla compatível com Arduino. O módulo é usado para implementar as funções de GSM (chamadas e SMS) e GPRS. A vantagem deste módulo é a interface TTL com uma voltagem de 5V, que permite conectá-lo diretamente a um Arduino ou a qualquer outro sistema com uma fonte de alimentação de 5V. A maioria dos módulos GSM / GPRS no mercado requer conexões de reguladores ou conversão de nível, enquanto no SIM800L V.2 GSM / GPRS não é necessário um circuito de conversão de nível de interface adicional.
Aqui está um exemplo de projeto usando o SIM800L V.2 GSM / GPRS. O significado do projeto é controlar os comutadores usando o controlador SMS. Você pode ligar e desligar facilmente a maioria dos eletrodomésticos da casa, como lhama, ventilador e assim por diante.
Características do módulo SIM800L V.2 GSM / GPRS
Abaixo estão todas as especificações técnicas do módulo SIM800L V.2 GSM / GPRS:
- Interface serial TTL compatível com microcontroladores de 3.3V e 5V compatíveis com Arduino.
- O módulo SIM800L possui uma interface serial TTL.
- Plugue de antena
- Suporte de rede: quatro bandas 850/900/1800/1900 MHz, capaz de fazer chamadas, SMS e transferência de dados com consumo de bateria significativamente reduzido.
- Interface VDD TTL UART, para que você possa conectar diretamente um MCU como 51MCU, ARM ou MSP430. Plugue VDD usado para corresponder à tensão TTL.
- Modelo: SIMCOM SIM800L
- Tensão de trabalho: de 3.7V a 5V;
- dimensões: 40mm x 28mm x 3mm
- Classe multislot GPRS 12/10
- Classe B de serviço em lote GPRS
- Corresponde à fase GSM 2/2 +
- Classe 4 (2 Watts a 850/900 MHz)
- Classe 1 (1 Wat @ 1800/1900 MHz)
Materiais Necessários
Você precisará de:
1. .
2. .
3. .
4. .
5. .
(Links ativos para a loja para compra)
Montagem e configuração
Depois de conectar todos os componentes, crie um programa e faça o download no seu Arduino. Mas primeiro, você deve instalar a biblioteca GPRS, que pode ser baixada:
[28.02 Kb] (downloads: 481)
Código de programa para Arduino
Depois de conectar o SIM800L, o módulo de relé de 4 canais e o Arduino ao computador, digite o código abaixo e pronto.
#include
#include
#define TIMEOUT 5000
#define ACTIVE LOW
#define OFF HIGH
byte Relay [] = {A0, A1, A2, A3};
byte StatRelay [4];
char buffNumber [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String replyNumber = "089510863958";
GPRS GPRS;
configuração nula () {
for (int i = 0; i <4; i ++) {
pinMode (Relé [i], SAÍDA);
digitalWrite (relé [i], MATI);
StatRelay [i] = MATI;
}
Serial.begin (9600);
while (! Serial);
Serial.println ("Ativar SIM800L V2 >>> Ler automaticamente o SMS");
gprs.preInit ();
atraso (1000);
while (0! = gprs.init ()) {
atraso (1000);
Serial.print ("init errorrn");
}
// Gerenciar mensagem para o modo ASCII
if (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
ERRO ("ERRO: CNMI");
retornar
}
// Leia SMS recebidos
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
ERRO ("ERRO: CNMI");
retornar
}
int pjg = replyNumber.length () + 1;
buffNumber [pjg];
replyNumber.toCharArray (buffNumber, pjg);
Serial.print ("Enviar resposta ao número =>");
Serial.println (buffNumber);
Serial.println ("Inicialização concluída");
Serial.println ("=============================================== ================= ");
}
loop vazio () {
// Alterar status Relé ON / OFF
for (int i = 0; i <4; i ++) {
digitalWrite (Relé [i], StatRelay [i]);
}
// Se houver dados de entrada do SIM800
if (gprs.serialSIM800.available ()) {
char lastCharRead = gprs.serialSIM800.read ();
// Salve todos os dados no lastCharRead e, se houver r ou n, como um sinal final da mensagem recebida
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String (currentLine);
// Se a última mensagem + CMT indicar a chegada de uma nova mensagem
if (lastLine.startsWith ("+ CMT:")) {
Serial.println (lastLine);
nextLineIsMessage = true;
} else if (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (lastLine);
// =================================================== ================== >> Função do controlador de relé
// Controlador do relé 1
if (lastLine.indexOf ("Relé 1 LIGADO")> = 0) {
StatRelay [0] = AKTIF;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 1 ativo");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}
caso contrário, if (lastLine.indexOf ("Relay 1 OFF")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 1 desativado");
gprs.sendSMS (buffNumber, "Status do relé 1 desativado");
}
// Controlador do relé 2
if (lastLine.indexOf ("Relé 2 LIGADO")> = 0) {
StatRelay [1] = AKTIF;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 2 ativo");
gprs.sendSMS (buffNumber, "Status do relé 2 ativo");
}
caso contrário, if (lastLine.indexOf ("Relay 2 OFF")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 2 desativado");
gprs.sendSMS (buffNumber, "Status do relé 2 desativado");
}
// Controlador do relé 3
if (lastLine.indexOf ("Relé 3 LIGADO")> = 0) {
StatRelay [2] = AKTIF;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 3 ativo");
gprs.sendSMS (buffNumber, "Status do relé 3 ativo");
}
caso contrário, if (lastLine.indexOf ("Relay 3 OFF")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 3 desativado");
gprs.sendSMS (buffNumber, "Status do relé 3 desativado");
}
// Controlador do relé 4
if (lastLine.indexOf ("Relé 4 LIGADO")> = 0) {
StatRelay [3] = AKTIF;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 4 ativo");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}
caso contrário, if (lastLine.indexOf ("Relay 4 OFF")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 4 desativado");
gprs.sendSMS (buffNumber, "Status do relé 4 desativado");
}
nextLineIsMessage = false;
}
// =================================================== ==================== >>
}
// Limpar matriz de caracteres para a próxima linha de leitura
for (int i = 0; i
Verificação de dispositivo
A ferramenta funciona enviando SMS para o SIM800L com uma sequência específica de caracteres. Por exemplo, para ativar o relé 1, use o comando “Relé 1 LIGADO” e, para desativá-lo, use o comando “Relé 1 DESLIGADO”. O restante dos relés possui quase os mesmos comandos, com exceção do número de série de cada relé em que você deseja atuar. Depois de enviar automaticamente uma mensagem, o SIM800 enviará uma resposta na forma de uma mensagem de status para cada cartão SIM.