Boas a todos!
Desta vez venho mostrar como é que ponho o meu Arduino a saber onde está! É verdade o meu Arduino agora sabe onde anda ehhehe
"Como?"
É tão simples que vocês vao ficar todos :O boquiabertos, eheheh.
Eu tenho um GPS Holux M1000,
Este GPS externo comunica por Bluetooth com tudo que nós quisermos, Telemovel, PC, Rádio, etc. Se pensam "ah é um GPS externo Nluetooth vamos precisar de um módulo Bluetooth para o Arduino", não podiam estar mais enganados. Este amigo tem ali uma pequena USB right? Pois é, tudo o que ele envia por Seral no bluetooth também mete ali
4 pinos (USB) Vcc, RX, TX, GND! Não é só este GPS que faz isto, por exepriência própria sei que o seu antecessor Holux GPSlim 236,
Também o faz. haverá outros que fazem o mesmo mas não tenho experiência com mais nenhum.
Vantagens de usar estes GPS no meu Arduino:
- Uma vez que ja tinha o Holux M1000, para quê gastar 50 euros ou mais num módulo para ligar no Arduino?
- Ainda teria de fazer a placa, adicionar componentes, etc.
Bem este já faz tudo, ja tem tudo calibrado, funciona bem, tem uma sensibilidade tão boa que apanho sinal dentro de casa, é rápido a adquirir satélites, posso usá-lo com qualquer coisa (no telemovel da imaenso jeito) e
só custa 43 euros! Sim na
www.navegadoresgps.com (Espanha) custa 43 euros e enviam de um dia para ao outro! Eu só paguei 3 euros de portes numa promoção (o normal é 6 ou 7 euros).
Continuando...
Peguei num cabo mini-usb que tinha para ali abandonado e meti-lhe os 4 fios à solta!
No meu cabo o preto é o GND e o verde é o TX,. Soldei-lhe dois pinos para ser mais fácil de ligar na breadboard. O resultado foi este:
De seguida liguei o cabo no GPS e liguei-o.
Peguei no manual do GPS,
aqui li tudo para perceber que sinais o GPS me dava e cheguei à pagina 11 onde diz la as funções dos pinos da USB. Perfeito o GPS tem TXD e o RXD entre os 3v3 e os 5V (Voltage Level)!
Liguei o cabo à breadboard, o pino preto vai a GND e o TX directamente para o RX do Arduino (pino 0):
Ainda no manual li que o BaudRate da ligação é de 38400 bps.
No Arduino IDE fiz então um simples programa de teste que lia os dados do GPS e mostrava-os na consola:
byte incomingByte = 0;
void setup() {
Serial.begin(38400);
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
Serial.print(incomingByte);
}
}
Agora façam o upload deste código para o vosso Arduino e liguem a consola,
Não se esqueçam de seleccionar o Baudrate 38400 na dropdown list!Pronto, se seguiram tudo com rigor até agora, têm o vosso Arduino a enviar os dados todos do GPS (Mensagens NMEA) para a consola.
Nestas mensagens conseguem extrair tudo o que quiserem, posiçao (Latitude e Longitude duh), horas, data, orientação, velocidade, altitude, etc, há mesmo muita niformação nestas mensagens!
Para mais informações sobre as mensagens NMEA visitem estes links:
http://aprs.gids.nl/nmea/#rmchttp://www.codepedia.com/1/The+GPRMC+SentenceCom um pouco mais de código, algum conhecimento de javaScript e/ou Ajax e consultando a API do Google Maps podem fazer algo como o que eu fiz:
Fiz um log com o Arduino onde gravava a minha posição de minuto a minuto numa EEPROM, desde o trabalho até casa. Quando cheguei a casa descarreguei tudo para o computador que abriu um site que criei usando a API do Google Maps e onde me mostra o percurso que fiz, as horas a que passei em cada ponto e a velocidade a que ia nesse momento!
API Google Maps:
http://code.google.com/apis/maps/documentation/introduction.htmlEspero que gostem e alguma dúvida é só perguntar!
Abraços,
Daniel Gonçalves, Tr3s.
P.S.: Pessoalemente, a mensagem que uso para fazer tudo o que preciso é a $GPRMC, dá praticamente tudo o que se quer!