Controlador SMS baseado em SIM800L
SIM800L V2.0 GSM/GPRS é um módulo GSM/GPRS de banda quádrupla compatível com Arduino. O módulo é utilizado para implementar funções GSM (chamadas e SMS) e GPRS. A vantagem deste módulo é a interface TTL, que possui tensão de 5V, o que permite conectá-lo diretamente ao Arduino ou qualquer outro sistema com tensão de alimentação de 5V. A maioria dos módulos GSM/GPRS no mercado requer conexões reguladoras ou conversão de nível, enquanto no SIM800L V.2 GSM/GPRS não requer circuitos adicionais de conversão de nível de interface.
Vamos dar um exemplo de projeto utilizando SIM800L V.2 GSM/GPRS. O objetivo do projeto é controlar interruptores usando um controlador SMS. Você pode ligar e desligar facilmente a maioria dos eletrodomésticos da casa, como uma lhama, um ventilador e assim por diante.
Características do módulo SIM800L V.2 GSM/GPRS
Abaixo estão todas as características técnicas do módulo SIM800L V.2 GSM/GPRS:
- Interface serial TTL compatível com microcontroladores compatíveis com Arduino de 3,3 V e 5 V.
- O módulo SIM800L possui uma interface serial TTL.
- Plugue de conexão da antena.
- Suporte de rede: quatro bandas 850/900/1800/1900 MHz, capazes de realizar chamadas, SMS e transferências de dados com consumo de bateria significativamente reduzido.
- Interface VDD TTL UART, para que você possa conectar diretamente MCU como 51MCU, ARM ou MSP430.O plugue VDD é usado para corresponder à tensão TTL.
- Modelo: SIMCOM SIM800L
- Tensão de operação: de 3,7V a 5V;
- dimensões: 40 mm x 28 mm x 3 mm
- Classe multislot GPRS 12/10
- Classe B de serviço de pacotes GPRS
- Compatível com GSM fase 2/2+
- Classe 4 (2 Watts a 850/900 MHz)
- Classe 1 (1 Watt @ 1800/1900 MHz)
Materiais necessários
Você precisará:
1. Módulo SIM800L V.2 GSM/GPRS.
2. Arduino Uno.
3. Módulo de relé de 4 canais 5V.
4. Fios - jumpers.
5. Fonte de alimentação 5V.
(Links ativos para a loja para compra)
Montagem e configuração
Depois de conectar todos os componentes, crie um programa e carregue-o no seu Arduino. Mas primeiro você deve instalar a biblioteca GPRS, que pode ser baixada:
gprs.zip
[28,02 Kb] (downloads: 887)
Código do programa para Arduino
Depois de conectar seu SIM800L, módulo de relé de 4 canais e Arduino ao computador, insira o código abaixo e pronto.
#incluir
#incluir
#define TEMPO LIMITE 5000
#define ATIVO BAIXO
#define FORA ALTA
byte Relé[] = {A0,A1,A2,A3};
byte StatRelay[4];
char númerobuff[20];
charLinhaAtual[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = falso;
String respondNumber = "089510863958";
GPRS;
configuração vazia() {
for(int i=0; i < 4; i++) {
pinMode(Relé[i], SAÍDA);
digitalWrite(Relé[i], MATI);
StatRelay[i] = MATI;
}
Serial.begin(9600);
enquanto(!Serial);
Serial.println("Ativar SIM800L V2 >>> Ler SMS automaticamente");
gprs.preInit();
atraso(1000);
enquanto (0! = gprs.init()) {
atraso(1000);
Serial.print("erro de inicialização");
}
//Gerencia mensagem para modo ASCII
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
ERRO("ERRO:CNMI");
retornar;
}
// Ler SMS recebidos
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
ERRO("ERRO:CNMI");
retornar;
}
int pjg = respostaNumber.length() + 1;
númerobuff[pjg];
respondNumber.toCharArray(buffNumber,pjg);
Serial.print("Enviar resposta para número => ");
Serial.println(buffNumber);
Serial.println("Inicialização concluída");
Serial.println("============================================= =============== ================");
}
loop vazio() {
// Altera o status do Relé LIGADO/DESLIGADO
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();
// Salva todos os dados em lastCharRead, então se houver r ou n, como sinal final de mensagem recebida
if (lastCharRead == 'r' || lastCharRead == 'n') {
String últimaLinha = String(LinhaAtual);
//Se a última mensagem +CMT indica chegada de nova mensagem
if (lastLine.startsWith("+CMT:")) {
Serial.println(últimaLinha);
nextLineIsMessage = true;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println(últimaLinha);
// ============================================== ==== ================>> Função do Controlador de Relé
//Relé 1 Controlador
if (lastLine.indexOf("Relé 1 LIGADO") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Responder====>>>> ");
Serial.println("Status do Relé 1 Ativo");
gprs.sendSMS(buffNumber, "Status do Relé 1 Ativo");
}
senão if (lastLine.indexOf("Relé 1 DESLIGADO") >= 0) {
StatRelay[0] = MATI;
Serial.print("Responder====>>>> ");
Serial.println("Status do Relé 1 desligado");
gprs.sendSMS(buffNumber, "Status do Relé 1 desligado");
}
//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");
}
senão if (lastLine.indexOf("Relé 2 DESLIGADO") >= 0) {
StatRelay[1] = MATI;
Serial.print("Responder====>>>> ");
Serial.println("Status do Relé 2 desligado");
gprs.sendSMS(buffNumber, "Status do Relé 2 desligado");
}
//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");
}
senão if (lastLine.indexOf("Relé 3 DESLIGADO") >= 0) {
StatRelay[2] = MATI;
Serial.print("Responder====>>>> ");
Serial.println("Status do Relé 3 desligado");
gprs.sendSMS(buffNumber, "Status do Relé 3 desligado");
}
//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, "Status do Relé 1 Ativo");
}
senão if (lastLine.indexOf("Relé 4 DESLIGADO") >= 0) {
StatRelay[3] = MATI;
Serial.print("Responder====>>>> ");
Serial.println("Status do Relé 4 desligado");
gprs.sendSMS(buffNumber, "Status do Relé 4 desligado");
}
nextLineIsMessage = falso;
}
// ============================================== ==== ===================>>
}
//Limpa o array char para a próxima linha de leitura
for (int i = 0; i < sizeof(LinhaAtual); ++i ) {
LinhaAtual[i] = (char)0;
}
currentLineIndex = 0;
}
outro {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Verificação do dispositivo
A ferramenta funciona enviando um SMS para o SIM800L com uma sequência específica de caracteres. Por exemplo, para ligar o relé 1, use o comando “Relé 1 ON”, e para desligá-lo, use o comando “Relé 1 OFF”. Para os restantes relés, os comandos são quase os mesmos, exceto pelo número de sequência de cada relé que se deseja influenciar. Após o envio automático da mensagem, o SIM800 enviará uma resposta em forma de mensagem sobre o status de cada cartão SIM.
Vídeo de montagem, configuração e teste do dispositivo
Artigo original em inglês
Master classes semelhantes
Particularmente interessante
Atualizando um antigo centro de música para um novo com suas próprias mãos
Como restaurar a bateria de uma chave de fenda
Como instalar você mesmo o Bluetooth em qualquer rádio de carro
A bicicleta elétrica DIY mais simples
Não jogue fora seu cartucho antigo – transforme-o em um banco de energia
Substituindo as baterias da chave de fenda
Comentários (4)