如何利用USB获得GPS信息

如何利用USB获得GPS信息

最近在使用GPS做定位,想要在自己电脑上得到GPS位置,然后弄个差分组网,提高局部定位精度。

硬件

我使用的是M8N GPS,之前是用在无人机上面的
自己搞了个接头把TTL转成了USB
如下图所示:
在这里插入图片描述在这里插入图片描述

注意:我的GPS模块使用的是3.3V的电压,不同的GPS模块可能供电电压不同,
以及Tx和Rx线不一定接的对,换着看一下是不是收到数据就知道对不对了

安装软件

如何查看是不是收到数据了呢?

cat /dev/ttyUSB0

我是在Ubuntu系统下进行操作的,所以比较简单,首先安装需要的软件

    sudo apt-get update
    sudo apt-get install gpsd gpsd-clients python-gps

软件还需要进行一些配置,需要disable一些fix

   sudo systemctl stop gpsd.socket
   sudo systemctl disable gpsd.socket

为什么要这样做的呢?参考这篇文章:
https://learn.adafruit.com/adafruit-ultimate-gps-hat-for-raspberry-pi/use-gpsd
接着直接启动就OK了

sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
注意端口可能不同

有两种界面

gpsmon #详细信息,可惜看不懂
cgps -s #简化版,不过也很详细了

在这里插入图片描述
在这里插入图片描述

用一个简单的C++程序读取经纬度坐标

因为我想要将经纬度坐标转化为本地坐标,所有需要能读取GPS数据
先安装一个库

sudo apt-get install libgps-dev

程序如下:

#include <gps.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>

int main() {
int rc;
struct timeval tv;

struct gps_data_t gps_data;
if ((rc = gps_open("localhost", "2947", &gps_data)) == -1) {
    printf("code: %d, reason: %s\n", rc, gps_errstr(rc));
    return EXIT_FAILURE;
}
gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

while (1) {
    /* wait for 2 seconds to receive data */
    if (gps_waiting (&gps_data, 2000000)) {
        /* read data */
        if ((rc = gps_read(&gps_data)) == -1) {
            printf("error occured reading gps data. code: %d, reason: %s\n", rc, gps_errstr(rc));
        } else {
            /* Display data from the GPS receiver. */
            if ((gps_data.status == STATUS_FIX) && 
                (gps_data.fix.mode == MODE_2D || gps_data.fix.mode == MODE_3D) &&
                !isnan(gps_data.fix.latitude) && 
                !isnan(gps_data.fix.longitude)) {
                    //gettimeofday(&tv, NULL); EDIT: tv.tv_sec isn't actually the timestamp!
                    printf("latitude: %f, longitude: %f, speed: %f, timestamp: %lf\n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time); //EDIT: Replaced tv.tv_sec with gps_data.fix.time
            } else {
                printf("no GPS data available\n");
            }
        }
    }

    sleep(3);
}

/* When you are done... */
gps_stream(&gps_data, WATCH_DISABLE, NULL);
gps_close (&gps_data);

return EXIT_SUCCESS;
}

使用

gcc -o gps filename.c -lm -lgps

进行编译
参考连接:https://stackoverflow.com/questions/32000328/libgps-c-code-example

有时间可以写个坐标转换试试

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
USBgps驱动&测试软件 GPS是一种接收天空上的免费GPS卫星进行定位的设备。 只要卫星不掉下来。一直可以免费使用的。 有朋友以为要收费,实际上是GPS地图正版软件的收费,不是GPS服务收费。 如果你使用我们提供的免费软件。就可以一直免费使用。 我们销售的GPS品种比较多。主要的区别是使用的接收模块不一样。 所以在阅读说明时注意和您购买的GPS相对应。不要选择错参数。 GPS和地图软件连接的参数主要有两个。 1.一个是串口的端口号。这个可以在安装好GPS驱动后,在设备管理器的硬件列表的端口下面的 USB GPS COMM PORT设备后面括号里面找到。 (进入设备列表的方法是:在桌面我的电脑图标上按鼠标右键-选择属性菜单-选择硬件菜单栏-设备管理器-点击列表里面的端口项-USB GPS COMM PORT (COM?),那个问号就是您的GPS端口号)。 2,还有一个参数是波特率。我们销售的GPS对应的波特率如下。 台湾三代USB GPS: 9600 丽台二代USB GPS:4800 真正SIRF三代 USB GPS:38400 丽台三代USB GPS: 38400 sirf新版固件:4800 这个波特率在每个导航软件里面都要使用。而且各自的设置方法不一样。 一定要留意软件的安装说明里面波特率的设置方法。 我们在软件设置里面都重点说明了的。 如果端口号和波特率设置不对。就不能和地图软件对应。会出现不能定位或提示设备正在初始化等错误。 关于导航软件: 我们附送的光盘里面主要是USB GPS驱动程序和信号测试程序。WM模拟器主程序。还有领路人的导航软件。同时提供城际通和凯立德的WM模拟器版的导航软件的下载地址。 这样一起就是:驱动程序。测试程序,领路人PC版地图和转换端口软件,灵图9地图,凯立德地图。 实际安装的步骤是:安装好驱动程序。记住端口号和自己GPS的波特率。 1.阅读GPSDIAG测试软件说明。使用测试软件测试GPS正常。 这个是测试GPS是否正常使用的。 测试正常的话就可以不用测试直接开导航软件就可以了。 2.解压光盘里面的领路人软件到您本地硬盘D盘的根目录。 修改导航软件的配置文件适合自己的电脑配置。 可以参看光盘附带的领路人软件安装图示。 然后直接运行使用就可以了。 具体使用方法可以进入软件后在设置里面查看软件的帮助文档。 3,凯立德地图。 安装和设置凯立德地图前一定要注意退出GPSDIAG测试软件,GPSGATE和领路人导航软件。否则系统会出错。 同样城际通和凯立德也不能同时运行。 领路人,凯立德和灵图是三套不同的导航软件。不能同时使用。 您可以试用后选择合适自己的其中一套使用。其他的两种做备用。 先安装光盘里面的XGPS WM模拟器主程序。阅读设置说明进行设置。 主要注意。在XGPS的配置菜单,设置SDMMC目录在硬盘的位置。在映射菜单里面的第一项 选择GPS的端口号。这个端口号是在硬件列表的实际端口号。 因为CE系统不能保存设置。所以以后每次新打开XGPS模拟器,都要设置一下这两项。 XGPS默认的输出端口是COM1.所以在凯立德地图里面的配置文件都要设置端口为COM1。 否则不能正常工作。 (最新提示!可以看光盘里面的关于端口保存的图示,可以省略上面的每次都要设置外部端口的步骤了)。 安装完成后的实际使用步骤:接好GPS-打开X-GPS-设置SDMMC指向和映射的端口-确认后在模拟器的 一机多图界面选择开启凯立德。 GPS驱动安装步骤: 首先把附带的光盘放到电脑的光驱中。 把软件解压到电脑的硬盘里面。 XP系统下把USB GPS插到电脑的USB接口。 电脑会识别出新的硬件设备并要求安装驱动。 把安装目录指向光盘的《xp驱动》文件夹。 按确认就可以安装好驱动了。 win7下直接运行驱动安装的程序。安装完成后插入GPS就会自己安装好驱动。 安装好驱动后在电脑的硬件列表里面检查新安装的硬件。 (在我的电脑图标按右键选属性,然后点击设备管理器) 在端口类别里面可以看到有个USB GPS设备。后面用括号写着COM加数字。 这个数字就是USB GPS的端口号。 请注意。一般情况GPS在室内基本没有办法实现定位的。 一定要在室外定位。最好是比较空旷的地方。 第一次定位时间会比较长一些。属于正常现象。 定位完成后,以后再使用定位速度就快很多。 全球GPS卫星一共有32个。实际正常使用大约是28个。有几个是备用的。 基本最多能搜索到的卫星是8-12个信号。其他的卫星在地球的另外一边。是不能搜索到的。 这就是有的朋友会问我的GPS信道有20个。为什么只能收到10个的原因。 特别注意!!!由于串口信号不能共享,所以不能同时使用多个GPS地图软件或是信号测试软件。 只能单独运行信号测试软件或是导航软件。否则会引起信号检测不正常导致不能定位。 例如在开启了GPSDIAG测试软件后。就不能再同时开启地图。这样会发生无法搜星的问题。 一定要退出GPSDIAG,才能正常使用导航软件。 同样道理。两个不同的导航软件也不能同时运行。只能运行一个。
最近买了一些GPS模块打算用在我们的机器人上,就顺便花了一个下午用一个蓝牙串口模块配合,做了一个可以给带蓝牙的智能机使用的蓝牙GPS。效果不错,就和大家分享下制作过程吧。 上图就是成品的外观,我使用了DVmini磁带壳作为这个GPS的外壳,样子有点山寨,不过平时使用是会放在包里的,问题不大。以下是这个制作所实现的功能和配置情况: 1. 基于SiRF III芯片的GPS模块 2. 蓝牙通讯功能 3. 900mAh锂电池,单次充电可达7小时工作时间 4. Mini-USB口充电 5. 低电压充电提醒 在介绍制作前先给出我的HTC S1连接他的效果吧: 实际测试中,在室外环境下通电(冷启动)到完成3D定位仅需20秒不到的时间。性能很不错。 GPS蓝牙制作原理: 目前GPS通讯协议有相关规范,一般都是通过串口进行数据发送的,市面上可以买到的GPS模块元件也基本都是直接串口输出。所以只要简单的和市面上可以找到的蓝牙转串口模块相连即可实现出一个蓝牙GPS设备了。 需要做的额外工作是如何给GPS和蓝牙供电、充电。一般蓝牙设备需要3.3V的稳压供电,所以要有LDO元件,这里要选择专供电池设备使用的低压差的LDO,我用的是PAM3101系列的LDO。 另外为了防止锂电池过放电导致报废,这里设计了一个低压提醒电路。我使用TL431基准源对当前电池电压比较,如果低于3.3V后,会点亮一个红色LED提醒该给电池充电了,如下图所示: 对于锂电池充电部分,这里仍旧使用了偷懒办法,从USB口取电后经过1N4148二极管的正向压降后大致可以得到4.2V左右的电压给锂电池充电,如果实际电压不幸高于了4.2V,就依靠电池内部的保护电路动作了...这个是比较危险的设计,需要有人看守着进行充电。 我尽可能的使用了贴片元件来制作,这样可以保证较小的尺寸好放进这个磁带盒中,虽然焊的比较费时。 下面是制作过程中拍摄的几张照片给大家参考: 万用版上挖出凹槽部分放置蓝牙模块的天线 成品电路 所有组件连接就绪 原文出处:https://www.csksoft.net/blog/post/270.html
科沃兹GPS驱动CSDN是指科沃兹公司为自己的GPS导航设备开发了一个驱动程序,并在CSDN(中国专业IT社区)上发布了相关信息。科沃兹是一家知名的导航设备制造商,他们开发的GPS设备具备精准的导航功能和可靠的定位系统,广泛应用于汽车、手机等领域。 为了提供更好的用户体验,科沃兹公司研发了一个驱动程序,可以使其GPS设备更好地与计算机系统进行连接和通信。这个驱动程序可以在用户将GPS设备通过USB线连接到计算机后,自动识别设备并建立起稳定的通讯连接。通过这个驱动程序,用户可以利用计算机的资源来管理和操作GPS设备,例如下载地图数据、升级软件等。 为了推广和分享这个驱动程序,科沃兹公司选择了在CSDN这个知名的技术社区进行发布。CSDN是中国最大的IT技术交流平台之一,拥有众多的软件开发者和技术爱好者。通过在CSDN上发布驱动程序的信息,科沃兹公司可以让更多的用户得知并下载这个驱动程序,从而提高用户对他们GPS设备的满意度和使用体验。 科沃兹GPS驱动CSDN的发布也是科沃兹公司对用户需求的回应和关注。通过与CSDN这样的技术社区合作,科沃兹公司可以更好地与用户互动,收集用户的反馈和建议,并及时更新和改进驱动程序,以满足用户的需求。 总之,科沃兹GPS驱动CSDN是科沃兹公司为了提高GPS设备的用户体验而开发的一个驱动程序,并选择在CSDN上发布,以便更多的用户能够得到这个驱动程序,从而提升他们对科沃兹GPS设备的满意度和使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值