概述
Arduino读取GPS模块
最近要做一个公交车报站器,所以打算用GPS模块来实现定位的功能,于是找朋友借了个GPS模块来试试。
GPS模块
常见的GPS模块的参数都差不多,除了有些个别输出格式不同。
● 接口:RS232 TTL
● 电源:3V至5V
● 默认波特率:9600 bps
● 支持标准的NMEA
接线
GPS模块 | Arduino uno |
---|---|
RXD | 3 |
TXD | 4 |
vcc | 5V |
GND | GND |
NMEA协议
这篇文章讲的很详细 GPS NMEA-0183标准详解(常用的精度以及经纬度坐标),如果只是需要定位和时间,那我们只用读GPGGA语句和GPGLL语句就可以了,不多赘述。
程序
#include<SoftwareSerial.h>
SoftwareSerial gps(4,3);
byte gpsdata = 0;
void setup()
{
Serial.begin(9600); //set the baud rate of serial port to 9600;
gps.begin(9600); //set the GPS baud rate to 9600;
}
void loop()
{
if (ss.available()>0)
gpsdata = gps.read(); //read gps data
Serial.write(gpsdata);
//print gpsdata
}
打开串口,查看数据,GPS模要把天线放到室外,不然看到经纬度信息。
显然,有些数据我用不上,我只需要用到经纬度信息,这里可以用TinyGPS++库来解析GPS模块数据,编写程序
/*
* richowe
*/
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
TinyGPSPlus gps;
SoftwareSerial ss(4, 3);
float latitude;
float longitude;
void setup()
{
Serial.begin(9600); //set the baud rate of serial port to 9600;
ss.begin(9600); //set the GPS baud rate to 9600;
}
void loop()
{
while (ss.available() > 0)
{
gps.encode(ss.read()); //The encode() method encodes the string in the encoding format specified by encoding.
if (gps.location.isUpdated())
{
latitude = gps.location.lat(); //gps.location.lat() can export latitude
longitude = gps.location.lng();//gps.location.lng() can export latitude
Serial.print("Latitude=");
Serial.print(latitude, 6);
//Stable after the fifth position
Serial.print(" Longitude=");
Serial.println(longitude, 6);
delay(500);
}
}
}
打开串口,输出经纬度信息。
总结
GPS模块在室内不能实现定位,但是可以获取的信息很多,如时间,速度。接着在屏幕显示。
最后
以上就是失眠蚂蚁为你收集整理的Arduino读取GPS模块的全部内容,希望文章能够帮你解决Arduino读取GPS模块所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复