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:
- #include <SoftwareSerial.h>
- SoftwareSerial mySerial(2, 3);
- // AUX GSM Leitura de dados
- String linhaAtual = "";
- String db = "";
- boolean lendoDB = false;
- void setup()
- {
- mySerial.begin(19200); // inicia conexao SIM900
- Serial.begin(9600); // inicia conexao PC
- }
- void loop()
- {
- delay(500); // delay de envio de dados
- mySerial.println("AT+CSQ"); // envia comando ao SIM900
- while(mySerial.available()>0) // se existem dados na porta serial
- {
- char dados = mySerial.read(); // variavel dados recebe informacoes
- linhaAtual += dados; // variavel linha recebe dados
- if (dados == '\n') // se tiver um ENTER em dados
- {
- linhaAtual = ""; // apaga dados da linha
- }
- if (linhaAtual.endsWith(" ")) // se a linha terminar com espaco em branco
- {
- lendoDB = true; // estamos lendo dados
- db = ""; // limpo variavel que vai receber dados em DB
- }
- if (lendoDB) // se estamos lendo os dados
- {
- if (dados != ',') // faz leitura ate encontrar virgula
- {
- db += dados; // adiciona info a variavel db
- }
- else // se nao estamos lendo
- {
- lendoDB = false; // sem leitura
- Serial.println(db); // enviamos os dados para o computador pela porta serial
- }
- }
- }
- }
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 :-)