Alarme por SMS usando SIM800L e Arduino
Com o módulo GSM GPRS SIM800L você pode efetuar ligações, enviar SMS e até mesmo conectar-se à internet. Neste post, vamos usar o SIM800L para montar um sistema de alarme por SMS juntamente com um sensor magnético reed switch.
O projeto que vamos mostrar efetua a leitura contínua do estado de um sensor magnético conectado ao Arduino. Caso o sensor seja acionado, um SMS é enviado para o número de celular cadastrado na memória do microcontrolador.
Material para o projeto
Para montar esse projeto você vai precisar do seguinte material:
- Arduino Uno
- Sensor magnético Reed Switch
- Módulo GSM GPRS SIM800L com antena SMA
- Fonte ajustável protoboard
- Fonte de alimentação (com corrente mínima de 1A)
Aqui no Arduino e Cia postamos recentemente um tutorial mostrando como você pode controlar o Arduino atráves do recebimento de mensagens SMS usando o SIM800L (clique aqui para ler).
Já o sensor magnético reed switch é um componente que funciona como uma chave magnética: aproxime um ímã do sensor e os contatos são fechados, permitindo a passagem da corrente elétrica.
A fonte para protoboard é um item importante (eu diria até indispensável neste caso), pois vai fornecer corrente suficiente para o correto funcionamento do módulo SIM800L. Sem ele, você pode enfrentar desde travamentos do módulo até um reset inesperado.
Circuito com Arduino Uno
O circuito abaixo mostra o sensor magnético ligado na porta analógica A1 do Arduino. Junto ao sensor temos um resistor de 330ohms servindo como pull-down. O módulo SIM800L está conectado nas portas 10 e 11, que funcionarão como uma porta serial graças à biblioteca SoftwareSerial.
No plug P4 da fonte da protoboard eu liguei uma fonte de alimentação 9V/2A. No nosso circuito ela vai servir exclusivamente para alimentação do SIM800L. Na fonte da protoboard, não esqueça de selecionar a tensão de 5V por meio dos jumpers.
Programa alarme por SMS com reed switch e SIM800L
O programa abaixo usa a biblioteca SIM800L (download). Descompacte a biblioteca e coloque-a na pasta LIBRARIES da IDE do Arduino. Vamos usar também a biblioteca SoftwareSerial, que já está embutida na IDE.
Coloque no slot do módulo um cartão SIM válido, desbloqueado e com créditos suficientes para realizar chamadas e enviar SMS.
No programa, configure na linha 8 o texto que será enviado via SMS quando o sensor magnético reed-switch for acionado. Na linha 9, coloque o número do celular que receberá a mensagem de texto, enviada na linha 29 pelo comando Sim800l.sendSms().
//Programa: Envio de SMS com SIM800L //Autor: Arduino e Cia #include <Sim800l.h> #include <SoftwareSerial.h> Sim800l Sim800l; char* texto = "Sensor acionado!"; char* numero = "04111987654321"; #define pino_sensor A1 int valor; void setup() { Serial.begin(9600); pinMode(pino_sensor, INPUT); Sim800l.begin(); // initializate the library. Serial.println("Aguardando acionamento do sensor..."); } void loop() { valor = digitalRead(pino_sensor); if (valor != 0) { Serial.println("Sensor acionado! Enviando SMS..."); Sim800l.sendSms(numero, texto); Serial.println("SMS Enviado..."); while (digitalRead(pino_sensor) != 0) { delay(100); } Serial.println("Aguardando novo acionamento"); } }
Aproxime um ímã do sensor magnético reed switch e aguarde o recebimento do SMS no seu telefone celular/smartphone. Verifique o funcionamento do programa por meio do serial monitor:
Você pode adaptar facilmente este circuito para utilização com outros sensores como sensores ultrassônicos, infravermelho, indutivo e sensor de presença, entre outros.
muito legal isso! parabéns aos que disponibilizaram esse tutorial! nota dez!
Valeu Fernades!
Abraço!
Adilson
Muito bom!!!!
Fiz um desse mas para alarme de carro! Qdo abria o vidro ou a porta enviava o sms! Só o módulo gprs usei um Shield! Saudades do curso de eletrônica.
Olá.. Tenho que fazer uma maquete de esteira transportadora( isso tranquilo),só que ela tem que executar a medição da peça transportada, sei que terei que aprender programação arduino e tudo mais, mas gostaria de saber se tu me indica qual sensor melhor realizaria essa medida?
Grata
Oi Milena,
Tudo bem? Olha, vai depender do tipo de medição que vc vai fazer. É de tamanho, peso ou alguma outra coisa?
Abraço!
Adilson
Bom dia Senhores,
Tudo bem?
No meu TCC, eu e o grupo estaremos fazendo um sistema de detecção e alarme de incêndio.
O SIM800L é o caminho, para incluir uma sirene, um detector de incêndio e uma botoeira e possível utilizando o SIM800L?
Desde já agradeço pela atenção.
Plínio Nunes.
Oi Plinio!
Tudo bem? Dependendo do projeto de vocês, não vejo problema. Já que é um protótipo eu faria com Arduino para não complicar muito a coisa. 🙂
Abraço!
Adilson
Boa tarde Edilson,
Obrigado pelo retorno, referente ao TCC utilizando o Arduino e o SIM800L o projeto seria pequeno iremos fazer uma maquete (Edifício), nosso dúvida é como fazer essa programação? É possível colocar no lugar do sensor magnético Reed Switch um detector de fumaça e um acionador manual para acionar o mesmo?
Desde já agradeço pela atenção.
Plínio Nunes
Oi Plinio,
Entendi. Bom, você terá que juntar vários programas e bibliotecas em um programa só para fazer isso. É possível sim colocar um botão e trocar o reed switch pelo sensor de fumaça.
Abraço!
Adilson
Tamanho da peça
Oi Milena,
Pode ser com sensor infravermelho, ou com sensor ultrasonico… ou até mesmo com chaves de fim de curso, dependendo de como essa peça vai na esteira.
Abraço!
Adilson
Parabéns pelo projeto, ficou excepcional. Tenho uma dúvida com respeito ao módulo GSM, pelo que pesquisei ele aceita redes 2G, porém as operadoras só estão fornecendo chips para redes 4G, você saberia me dizer se for colocado um chip 4G ele vai aceitar e funcionar corretamente? Obrigado
Boa tarde,
Muito obrigado. Sim, eu utilizei um chip 4G da TIM para fazer os testes. Não cheguei a testar a conexão de internet ainda, mas já mexi com outros módulos que funcionaram sem problemas, mesmo sendo 2G, então creio que não terá problemas.
Abraço!
Adilson
Parabéns pelo post, muito sucinto e didático.
Estou Fazendo meu projeto integrador para finalizar o curso Técnico em Eletrônica aqui no IFSP de Tupã, e através de seu post que pude encontrar a solução dos meus problemas, porém ao invés de usar um sensor magnético reed switch, estarei usando um Sensor de Movimento Presença PIR , pois preciso detectar a presença de pessoas, porém a lógica é a mesma, mais uma vez parabéns pelo post, assim que finalizar o projeto eu posto os resultados.
Oi Paulo!
Obrigado e parabéns pela iniciativa. Depois compartilhe os resultados aqui com a gente. 😉
Abraço!
Adilson
Bom dia.
No projeto é informado que precisa de 1A para alimentação, mas a FONTE AJUSTÁVEL me fornece 0,7A. Como proceder?
Boa noite,
Realmente existe essa diferença de corrente (o módulo exige pelo menos 1A e a fonte fornece até 700mA), mas nos meus testes funcionou direitinho. Creio que essa exigência de 1A seja em momentos de pico (conexão com a rede, por exemplo), e a fonte consiga absorver isso tranquilamente.
Abraço!
Adilson
muito bom o post, mas como exibir sms que o modulo receba?
Boa tarde!
Gostaria de saber como faço para enviar a mensagem para mais de um número.
Obrigado.
Oi Argel,
Replique as linhas 9 e 29, mudando o nome da variável de numero para numero2, e coloque o nessa nova variável o número do outro telefone que vai receber a mensagem.
Abraço!
Adilson
Parabéns pelo tutorial!!!
Uma dúvida, seria possível portar esse código para o ESP32 ou o ESP8266??? Se sim, como ficariam as bibliotecas??
Parabéns novamente e obrigado!
Seria possível portar esse tutorial para o ESP32 ou ESP8266?
Oi Cristian,
Seria possível sim. Qual a sua ideia?
Abraço!
Adilson
Bom dia, posso montar esse projeto em cima do arduino uno que ja tem o modulo ethernet integrado? e au compraria apenas o moculo gsm e algum tipo de sensor, como por ex um de movimento.
Oi Calebe,
Talvez precise de algumas adaptações, precisa verificar se o seu Uno+Ethernet não usa os mesmos pinos do shield GSM. Mas tirando isso, é possível sim.
Abraço!
Adilson
Queria saber se é possível utilizar esse projeto em uma geladeira pra estar monitorando a temperatura programada e enviar SMS cause falte energia ou temperatura sai fora da faixa programada
Bom dia,
Perfeitamente. 🙂
Abraço!
Adilson
esse codigo ae teria como adicionar mais 3 sensores ai seria so replicar a linha 8 lá e colocar exp: text1 text2 text3 e a linha 17 ao 20 e a 25 ao 31 ?
como fica o codigo se eu for utilizar 3 sensores no qual 2 mandariam msg pra um numero e o outro para outro numero ? seria possivel faze isso?
oi bom dia amigo copiei este programa acima e na hora de compilar da erro me ajuda ai porfavor
Oi Jeremias,
Que erro aparece?
Abraço!
Adilson
Oi, boa tarde!
Estou fazendo um projeto que detecta gás butano e incêndio e gostaria que ao detectar envia-se mensagem sms, se eu pegar esse seu esquema de projeto vai da certo?
Oi Wilker,
Com algumas adaptações, dá sim.
Abraço!
Adilson
Olá Arduino e Cia,
minha execução não passa do "Enviando SMS…"
Meu módulo é do módulo é do vermelho com a antena em espiral.
Tem alguma dica para me dar?
Agradecido,
Vitor Hugo
Boa noite Vitor,
Conseguiu fazer funcionar?
Abraço!
Adilson
Alguém teria alguma placa funcionando, enviando SMS? Tenho tentado fazer mas não consigo e preciso apresentar um TCC. Estou no desespero
Ola a todos, tudo bem?
Entao, eu estou fazendo tcc e estou utilizando esp32, tem como realizar esse envio de mensagem utilizando o esp32, ou so funciona com o arduino?
Se tiver tem como me dar uma ajuda, um direcionamento…srsr… desde ja agradeço.
olá! como eu faço se trocar o reed switch por um sensor de corrente de energia?
como enviar o sms quando a energia estiver 0?
como seria o código se o sensor fosse de corrente elétrica
?
obrigado desde já
bom dia parabéns pelo projeto , teria como trocar este sensor por que avise a falta de energia se a resposta for sim qual vc me indicaria desde já agradeço pela atenção meu e-mail [email protected]
Bom dia,
É possível sim, dê uma olhada nesses sensores de corrente: https://www.makerhero.com/?s=sensor+de+corrente&post_type=product
Abraço!
Adilson
Bom dia,
Será que esse chip terá bloqueio da anatel?
Oi Barduzzi,
Fiz um teste, funcionando normalmente.
Abraço!
Adilson
Boa tarde,
Esse modulo está funcionando? Após o bloqueio da Anatel?
Oi Willian,
Fiz um teste, funcionando normalmente.
Abraço!
Adilson
É possível efetuar uma ligação com esse mesmo módulo e biblioteca ? Estou tentando fazer um sistema de segurança relacionado com um sensor de presença, um relé e uma sirene.
Oi Rik,
Perfeitamente. Esse módulo realiza ligações normalmente.
Abraço!
Adilson
Não vou usar arduino, vou usar um PIC, então, queria saber se a programação muda e se esse módulo GSM GPRS SIM800L funciona no PIC
Olá, muito bom esse sistema de alarme. Se eu substituir o reed switch pelo Sensor de presença PIR, seria necessário alguma outra programação ? Grato.
Oi Luís!
O princípio é o mesmo, mas você tem que fazer alguns ajustes na programação sim. Dá uma olhada nesse outro post aqui, por favor:
https://www.arduinoecia.com.br/sensor-presenca-arduino-modulo-pir-dyp-me003/
Abraço!
Adilson
Muito Obrigado Adildon, abraços.
OLA, Gostei muito do proeto.
Sou iniciante na área e gostaria de fazer um projeto indentico, mais para detectar falta de fase e mandar sms.
Como faria isso?
Funciona com qualquer chip 2G? Ou tem que ser do tipo M2M?
Oi Maurício,
Chip comum, já testei esse módulo com chips 2G, 3G e 4G, e todos eles se conectaram.
Abraço!
Adilson
Olá, parabéns pelo projeto, ficou muito didático. Segui o passo a passo de vocês mas tive um problema, quando aro o monitor serial aparece corretamente a mensagem de aguardar o acionamento, ao fazer o acionamento ele me mostra a mensagem que está enviando SMS, mas não sai disso, ele não confirma o envio. O chip está desbloqueado e funcionando normalmente no celular, com créditos suficientes. Fiz a alimentação externa com uma fonte 5V, e as conexões foram feitas corretamente. A biblioteca eu baixei aque vocês indicaram e instalei na IDE do Arduino. Não consigo achar o que está errado.
Olá… que programa maravilhoso e didático parabéns pelo projecto.
Eu gostaria de usar mais de um reed switch “3”, para isso será que eu devo adicionar mais duas variaveis do tipo_char?
EX: Char texto_2 =”CONTEUDO” ;
Char texto_3 =”CONTEUDO” ;
Declarar os outros dois sensores e as variaveis que armazenarão as leituras feitas por eles; e na condição como fica?
Eu boto um If(re2!=0){
Sim800l.sendSms(numero, texto_2);
}
Não vai dar conflito?