Ler e enviar SMS com Arduino SIM900

Boa noite!

Segue uma implementação de envio e leitura de SMS usando arduino e modem GSM SIM900 usando comandos AT.

veja aqui qual a shield usada
https://www.youtube.com/watch?v=2muH0Uc0tYU

//Programador: Marcos J O Nielsen
//Data: 19/11/2017
//editar o SoftwareSerial.h em arquivos de programas e modificar _SS_MAX_RX_BUFF 64 // RX buffer size
//para _SS_MAX_RX_BUFF 256:
//exemplo
//#ifndef _SS_MAX_RX_BUFF
//#define _SS_MAX_RX_BUFF 256 // RX buffer size
//#endif

//adaptei o codigo assisitindo o video https://www.youtube.com/watch?v=2muH0Uc0tYU
//e os codigos desse site
//https://arduino.stackexchange.com/questions/9483/how-to-communicate-the-arduino-board-with-sim900
#include <SoftwareSerial.h>
SoftwareSerial GPRS(7, 8); //7 = TX, 8 = RX
unsigned char buffer[64]; //port
int count=0;
int i = 1; //if i = 0, send SMS.
bool benviar_sms = false;
//*****************************************************************************
void limparBufferArray(){ //Limpa o buffer do sms
for (int i=0; i<count;i++){
buffer[i]=NULL;
}
}
void deve_reset_equipamento(){
String aux;
for (int i=0; i<count;i++){
aux =(aux + (char)buffer[i]);
}
int inicio = aux.indexOf(‘(‘) ;
int fim = aux.indexOf(‘)’);
aux = aux.substring(inicio+1,fim);
if (aux == “RESET”){
Serial.print(“\r\nRecebi o comando RESET”);
delay(1000);
}
}

void ler_sms()
{
if (GPRS.available())
{
while(GPRS.available()){
buffer[count++]=GPRS.read();
if(count == 64)break;
}
Serial.write(buffer,count);
delay(1000);
if (count>1)
{
deve_reset_equipamento();
limparBufferArray();
count = 0;
}
}
}

void enviar_sms()
{
Serial.println(“Iniciando o envio sms with AT”);
GPRS.print(“AT+CMGF=1\r”); //sending SMS in text mode
delay(100);
GPRS.print(“AT+CMGS=\”+5542912345678\”\r”); // phone number
delay(1000);
GPRS.print(“Teste muito legal agora consigo enviar muito texto \r\n”); // message
delay(100);
GPRS.print(“cabem muitas letras aqui \r\n”); // message
delay(100);
GPRS.write(0x1A); //send a Ctrl+Z(end of the message)
delay(1000);
GPRS.println(“SMS sent successfully”);
}

//*************************************************************************************
void setup()
{
Serial.begin(19200);
Serial.println(“SETUP INICIADO, AGUARDE 3 SEGUNDOS”);
GPRS.begin(19200);
while (i++ <= 3)
{
delay(1000);
Serial.print(“.”);
}
enviar_sms();
}

void loop()
{
ler_sms();
}

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

WordPress.com.

Acima ↑

%d blogueiros gostam disto: