Fala pessoal.
Algum tempo não posto nenhum projeto no blog, nesse meio tempo estava fazendo a programação de uma fita de LED's para o natal :-)
É chegado o final de 2013, um ótimo ano de muito aprendizado, novas parcerias. Agradeço a todos que estão seguindo o blog, e ajudando no conhecimento livre e de fácil acesso.
Para 2014, estamos preparando novidades, novos módulos e periféricos. Vamos entrar com tudo no mundo ARM e FPGA. E claro fazer vários projetos com nosso Arduino!!
Um projeto que pretendo desenvolver e postar todo passo a passo aqui no blog é do "Seguidor Solar", agora que tenho todos componentes podemos dar seguimento, vai agregar muito conhecimento.
E logo mais vem ai a loja Microembarcado!! Onde todos produtos aqui do blog vão estar disponiveis para compra, com preço justo e suporte avançado.
Então é isso ai! Que venha 2014.
Um abraço e ótimo final de ano :D
quarta-feira, 11 de dezembro de 2013
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:
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 :-)
quinta-feira, 21 de novembro de 2013
Rastreador Arduino SIM900 + GPS II
Fala pessoal!
Como vimos no post Rastreador Arduino SIM900 + GPS I, aprendemos a fazer a leitura dos dados de latitude e longitude, concatenar tudo em uma String so, e enviar os dados pelo serial monitor do Arduino.
Hoje vamos mostrar como criar um rastreador, que envia esses dados via SMS para um aparelho celular, assim podendo rastrear qualquer objeto.
As modificações são as seguintes, antes a leitura dos dados e processamento era feito, e logo depois mostrado no serial monitor, dessa vez vamos enviar esses dados por SMS, para isso temos antes que configurar nosso modem GSM de acordo com suas características baud rate e pinos de configuração TX/RX que podem variar de modulo para modulo.
O código funciona da seguinte maneira, ao receber a SMS >Local< o programa faz a leitura da latitude e longitude, concatena com o link do google maps, e logo depois envia por SMS para o numero de celular cadastrado.
A SMS chega da seguinte forma no seu celular:
(suprimi alguns dados por segurança)
Então revisando o código, recebe SMS >Local<, dispara leitura do GPS, processa dados e envia por SMS para numero de celular cadastrado.
Código:
Espero que tenha ficado de fácil compreensão, no próximo post vamos fazer modificações de forma enviar SMS regularmente de 2 em 2 minutos.
Até!
Como vimos no post Rastreador Arduino SIM900 + GPS I, aprendemos a fazer a leitura dos dados de latitude e longitude, concatenar tudo em uma String so, e enviar os dados pelo serial monitor do Arduino.
Hoje vamos mostrar como criar um rastreador, que envia esses dados via SMS para um aparelho celular, assim podendo rastrear qualquer objeto.
As modificações são as seguintes, antes a leitura dos dados e processamento era feito, e logo depois mostrado no serial monitor, dessa vez vamos enviar esses dados por SMS, para isso temos antes que configurar nosso modem GSM de acordo com suas características baud rate e pinos de configuração TX/RX que podem variar de modulo para modulo.
O código funciona da seguinte maneira, ao receber a SMS >Local< o programa faz a leitura da latitude e longitude, concatena com o link do google maps, e logo depois envia por SMS para o numero de celular cadastrado.
A SMS chega da seguinte forma no seu celular:
(suprimi alguns dados por segurança)
Então revisando o código, recebe SMS >Local<, dispara leitura do GPS, processa dados e envia por SMS para numero de celular cadastrado.
Código:
- #include <TinyGPS++.h> // Biblioteca do GPS
- #include <SoftwareSerial.h> // inclui biblioteca
- TinyGPSPlus gps; // Inicia GPS
- SoftwareSerial GpS(2,3); // inicia portas soft serial GPS
- SoftwareSerial GsM(4,5); // inicia portas soft serial GPS
- char server[] = "http://maps.google.com.br/maps?q=";
- String data;
- float dado_lat;
- char lat_aux[10];
- String latParaString;
- float dado_lng;
- char lng_aux[10];
- String lngParaString;
- // AUX GSM
- String linhaAtual = "";
- String sms = "";
- String smsAnterior = "";
- boolean lendoSMS = false;
- void setup()
- {
- // Serial PC <-> Arduino
- Serial.begin(9600);
- // GsM Arduino <-> GSM
- GsM.begin(4800);
- // GpS Arduino <-> GPS
- GpS.begin(9600);
- // Chama função que faz start up do modulo GSM
- configGSM();
- }
- void loop()
- {
- // Verifica SMS de controle
- leituraSMS();
- }// end loop
- // Funções Gerais
- // Envia SMS com link google maps de localização e avisa a tentativa de furto
- void envia_sms_gps()
- {
- // Faz leitura do GPS
- while (GpS.available() > 0)
- if (gps.encode(GpS.read()))
- displayGPSInfo();
- // Envia SMS https://maps.google.com.br/maps?q=(LAT),(LON)
- delay(300);
- GsM.print("AT+CMGF=1\r"); //mandando SMS em modo texto
- delay(1000);
- GsM.print("AT+CMGS=\"+NUMERO CELULAR\"\r"); // numero que vamos mandar o SMS
- delay(1000);
- GsM.println(data);
- Serial.println(data);
- delay(1000);
- GsM.write(0x1A);
- data="";
- delay(300);
- }
- // Faz leitura do GPS e pega as coordenadas lat e long, converte os valores float para string e concatena com link do google maps
- void displayGPSInfo()
- {
- if(gps.location.isValid())
- {
- dado_lat=gps.location.lat();
- dado_lng=gps.location.lng();
- dtostrf(dado_lat,4,4,lat_aux);
- latParaString = String(lat_aux);
- dtostrf(dado_lng,4,4,lng_aux);
- lngParaString = String(lng_aux);
- data+=(server);
- data+=(latParaString);
- data+=",";
- data+=(lngParaString);
- }
- delay(300);
- }
- // Faz leitura do 1 campo de SMS, os comandos tem que ser enviados assim >COMANDO<
- void leituraSMS()
- {
- GsM.print("AT+CMGR=1");
- delay(1000);
- while(GsM.available()>0)
- {
- char inChar = GsM.read();
- linhaAtual += inChar;
- if (inChar == '\n')
- {
- linhaAtual = "";
- }
- if (linhaAtual.endsWith(">"))
- {
- lendoSMS = true;
- sms = "";
- }
- if (lendoSMS)
- {
- if (inChar != '<')
- {
- sms += inChar;
- }
- else
- {
- lendoSMS = false;
- if(sms==">Local" && smsAnterior!=sms)
- {
- Serial.println("Enviando localizacao atual");
- envia_sms_gps();
- }
- if(sms == smsAnterior)
- {
- Serial.println(sms);
- GsM.print("AT+CMGD=1,4");
- delay(300);
- sms="";
- }
- smsAnterior=sms;
- }
- }
- }
- }
- void configGSM()
- {
- // Configura modem GSM modo texto, e apaga todas SMS
- delay(3000);
- Serial.println("Configurando SMS modo texto");
- GsM.print("AT+CMGF=1");
- delay(800);
- Serial.println("Apagando todas SMS posteriores");
- GsM.print("AT+CMGD=1,4");
- delay(800);
- Serial.println("");
- }
Espero que tenha ficado de fácil compreensão, no próximo post vamos fazer modificações de forma enviar SMS regularmente de 2 em 2 minutos.
Até!
Assinar:
Postagens (Atom)