domingo, 13 de outubro de 2013

WR Bridge - Enviando SMS de temperatura

English version.

Bom pessoal, como eu disse no review dessa placa, vamos começar uma serie de posts, falando mais sobre Arduino+GSM e alguns outros fatores.

Nesse primeiro projeto aplicado vamos fazer a leitura de um sensor de temperatura LM35, e enviar esses dados de tempos em tempos a um numero especifico de celular.

A primeira parte é a montagem, o sensor LM35 varia 10mV a cana grau na sua saída. O WS Bridge tem disponível em sua placa entradas analógicas, onde G= GND, V=VCC e S=entrada. Então para fazer essa conexão com o LM35 com sua face para frente temos VCC - OUT - GND como na imagem a seguir:


Assim é feita as conexões no WS Bridge:


Conexões feitas:


Agora vamos para programações, temos que fazer o seguinte, configurar a comunicação serial Arduino-GSM, para isso vamos usar a biblioteca softwareserial. Logo depois temos que iniciar o modem e configurar a leitura como modo texto, para isso enviamos o comando AT+CMGF=1.

Com modem configurado vamos ao laço loop, fazemos a leitura da temperatura, e convertemos essa valor float para uma String, logo depois concatenamos na String a frase que queremos enviar ex: 
Temperatura atual: X.
Dessa forma podemos enviar apenas a String que já tem todos dados completos, se não ficou facil de entender aqui vai o programa para WS Bridge.

Lembrando que temos que colocar o numero de celular onde esta indicado no código:

  1. #include <SoftwareSerial.h>
  2. SoftwareSerial mySerial(3,2);
  3. float temperatura;
  4. String data;
  5. void setup()
  6. {
  7. mySerial.begin(19200);
  8. mySerial.println("\r");
  9. delay(1000);
  10. mySerial.println("AT+CMGF=1\r");
  11. delay(1000);
  12. }
  13. void loop()
  14. {
  15.   if (mySerial.available())
  16.     {
  17.       temperatura = (5.0 * analogRead(A0) * 100.0) / 1024;
  18.       int tempC1 = temperatura;
  19.       int tempC2 = (temperatura - tempC1) * 100;
  20.       char msg[24];
  21.       sprintf(msg, "%i.%i", tempC1,tempC2);
  22.      
  23.       data+="Temperatura atual: ";
  24.       data+=(msg);
  25.       mySerial.println("AT+CMGS=\"+NUMERO CELULAR\"\r");
  26.       delay(1000);
  27.       mySerial.println(data);
  28.       delay(1000);
  29.       mySerial.println((char)26);
  30.       data="";
  31.     }
  32.     delay(60000);
  33. }

Dessa forma de 1 em 1 minuto vamos receber no celular a temperatura atual lida pelo Arduino usando sensor LM35:



É isso ai pessoal, qualquer duvida so deixar nos comentários, logo mais teremos outro projeto aplicado para essa placa!!

2 comentários:

  1. OLA... estou trabalhando com o sim908 e gostaria de pegar as coordenadas GPS e enviar para um celular..
    para solicitar a coordenada eu utilizo o comando AT+CGPSINF=32, com isso ele me retorna algo desse tipo:

    32,200421.000,A,2323.891622,S,5158.630559,W,0.00,0.00,270813,,E,A
    OK

    então gostaria de pegar os valores que vão de 2323 até ..559, antes do W e enviar esses valores para o celular....
    Você poderia me explicar como faço para pegar esse valor para depois enviar???

    mt obrigado

    ResponderExcluir
    Respostas
    1. Fala guilherme, para filtrar esses dados pesquise sobre a biblioteca TextFinder, nela voce pode criar delimitadores e filtrar essa string. Ou então da pra fazer manualmente lendo a scring inteira e quebrar por exemplo nas virgulas para separar os dados, nos posts anteriores sobre SIM900 eu uso essa tecnica nos codigos, de uma olhada.

      Abs!

      Excluir