domingo, 24 de novembro de 2013

SIM900 + Labview, fazendo leitura de sinal

Fala pessoal!

Semana passada falamos sobre a implementação do GPS em conjunto com SIM900, podendo ser usado como um rastreador enviando links do Google Maps com latitude e longitude.
Hoje vamos falar de um assunto diferente, e que se encontra poucas informações na internet. Interligar o Arduino ao Labview, podendo tratar as informações de uma maneira diferente e de alto nível.

Vamos começar com um exemplo bem simples, mas primeiro se caso seja seu primeiro contato com SIM900, veja os posts anteriores para garantir que seu modulo esta funcionando perfeitamente:

No exemplo de hoje vamos utilizar o comando AT+CSQ (Signal Quality Report). Esse comando funciona da seguinte maneira, ao se enviar AT+CSQ, seu modem responde os parametros <rssi>, que correspondem da seguinte maneira:

  • 0          -115 dBm ou menos
  • 1          -111 dBm
  • 2...30   -110...-54 dBm
  • 31        -52 dBm ou maior
  • 99         não detectou sinal
Ou pode responder o parâmetro <ber> (em %):




Agora que entendemos como o comando funciona vamos passar para a programação no Arduino, oque fazemos é o seguinte, enviamos o comando AT+CSQ, e iniciamos a leitura da resposta do SIM900, os dados salvos são os compreendidos entre espaço vazio " " e carácter virgula ",". Dessa forma estamos parceando as informações certas para posteriormente enviar pela porta serial no computador. O código esta todo comentado e de fácil entendimento:



  1. #include <SoftwareSerial.h>
  2. SoftwareSerial mySerial(23);
  3.  
  4. // AUX GSM Leitura de dados
  5. String  linhaAtual = "";              
  6. String  db = "";  
  7. boolean lendoDB = false;
  8.  
  9. void setup()
  10. {
  11.   mySerial.begin(19200); // inicia conexao SIM900
  12.   Serial.begin(9600); // inicia conexao PC
  13. }
  14. void loop()
  15. {  
  16.   delay(500); // delay de envio de dados
  17.   mySerial.println("AT+CSQ"); // envia comando ao SIM900
  18.   while(mySerial.available()>0) // se existem dados na porta serial
  19.   {
  20.     char dados = mySerial.read(); // variavel dados recebe informacoes
  21.     linhaAtual += dados; // variavel linha recebe dados
  22.     if (dados == '\n') // se tiver um ENTER em dados
  23.     {
  24.       linhaAtual = ""; // apaga dados da linha
  25.     }
  26.     if (linhaAtual.endsWith(" ")) // se a linha terminar com espaco em branco
  27.     {
  28.       lendoDB = true; // estamos lendo dados
  29.       db = ""; // limpo variavel que vai receber dados em DB
  30.     }
  31.     if (lendoDB) // se estamos lendo os dados
  32.     {
  33.       if (dados != ',') // faz leitura ate encontrar virgula
  34.       {
  35.         db += dados; // adiciona info a variavel db
  36.       }
  37.       else // se nao estamos lendo
  38.       {
  39.         lendoDB = false; // sem leitura
  40.         Serial.println(db); // enviamos os dados para o computador pela porta serial
  41.       }
  42.     }
  43.   }
  44. }


Está é a resposta no Serial Monitor do Arduino:




Ótimo! Já temos os dados no computador pela porta serial, agora vamos incrementar nosso pequeno projeto adicionando esses dados no LabView e processando essas informações de uma maneira visual.

Nosso diagrama em blocos fazendo conexão serial:



Bloco de processo das informações:



As informações processadas são mostradas em forma de gráfico do sinal da antena SIM900:




Programa em funcionamento:



Fica bem legal testar outras antenas e ver o ganho variando no gráfico.

Bom pessoal, é isso ai!
Espero que tenham gostado, deixem qualquer duvida nos comentários e sugestões para os próximos posts.

E mês que vem a loja MicroEmbarcado vai estar online para oferecer os melhores produtos para vocês :-)


Nenhum comentário:

Postar um comentário