设计与开发

51单片机 gps定位 单片机如何利用GPRS模块获取位置信息

小编 2025-07-02 设计与开发 23 0

单片机如何利用GPRS模块获取位置信息

GPRS是如何获取位置的呢?GPRS不同于GPS,我们都知道GPS是通过卫星来定位,而GPRS是通过基站来定位,其定位精度收到通信基站的位置和密度的影响在没有基站的位置上,误差范围会比较大,也许系有人会问既然GPS定位更精准,拿为什么还需要基站定位呢?这是因为GPS定位只能在空旷的地方接收到信号,比如在高楼密集的城市,高架桥下,室内等GPS信号会很差或接收不到信号,同时也会受天气的影响如果天气差GPS信号强度会低很多。但基站定位虽精度虽不及GPS,但只要有基站至室内也可定位,且不会收天气的影响。随着基站的数量越来越多,GPRS的定位也会越来越准确。

基站定位示意图

获取位置流程

流程图

获取到基站的位置信息后我们可以调用LBS的数据仓库API接口进行查询,这里推荐一个比较好用的接口这个网站的查询接口是免费开放的,但是有限制,每5分钟限制查询300次,基站/WIFI/经纬度查询接口每日限制查询1000次如果我们的查询次数不多的话是足够用的,不够使用也有收费的可以用。

基站查询接口可查询全国移动联通电信的2G/3G/4G基站位置信息,收录数据超过两万条。下面是提供查询的API接口:

API接口

有与GPRS模块可以与服务器通讯所以我们在获取到基站的位置信息之后直接将数据通过单片机串口通过GPRS模块发送到服务器进行查询即可。

GPRS通讯示意图

1. 单片机通过AT指令服务器的相关信息配置进模块

(1) 设置工作模式为网络透传模式 AT+WKMOD="UDC"

(2) 使能 socket A AT+SOCKAEN="on"

(3) 设置 socket A 为 TCP 客户端,服务器地址为 api.cellocation.com,服务器端口号为 81。 AT+SOCKA="TCP", api.cellocation.com",81

(4) 使能心跳包 AT+HEARTEN="on"

(5) 设置心跳包发送间隔 AT+HEARTTM=30

(6) 使能注册包 AT+REGEN="ON"

2. 查询基站信息

单片机串口发送 AT+LBS?

返回坐标信息 如: LAC =21269,CID =30321

3. 调用数据接口进行位置查询

GET /cell/?mcc=460&mnc=1&lac=4301&ci=20986&output=csvHTTP/1.1

Host:api.cellocation.com:81

发送数据时这个位置一定要空两行

发送时将lac和ci替换为获取到的坐标信息即可,返回的数据是CSV格式的,我们用","来解析即可获得经纬度和具体的位置信息

单片机实例分享,快递追踪器

如今,快递已经融入了人们的生活,收快递有时候也变成了没空的托词。国内快递品牌繁多,服务水平参差不齐,在给我们消费者带来更低廉价格的同时,也带来了不少的烦恼。快件丢失、损坏变得司空见惯,每次买东西都会习惯性地提醒店家“麻烦包装好,如今快递不靠谱”。

每次拿到快递,看到变形的包装,总会想象它到底经受了怎样了蹂躏。那我们就把自己“打包”起来,作一回快递,感受一下快递一路经受的“风风雨雨”吧!

由于我们人太大,还不经摔,所以打包的当然不是我们自己,我们设计了一个快递追踪器,包含GPS模块、加速度模块等,对快递的路线以及快递运送过程中的磕磕碰碰进行记录。这个追踪器由GPS接收模块、Flash芯片、加速度模块、51开发板以及电池盒组成,如图17.1所示。下面我们仔细了解一下这个追踪器。

图17.1 快递追踪器

各模块介绍

1. GPS 接收模块

这里使用的是一块旧的GPS接收模块,如图17.2所示,市场价在30元左右,用于接收GPS数据。接收模块原本使用的是RJ-11水晶头,为了方便和开发板上的标准9针串口连接,我自己制作了一个接头。焊接好后,把插头放进两个饮料瓶盖(经过美工刀处理后)里,并挤入热熔胶进行填充。由于九针串口没有VCC,所以模块供电就通过外接的一根面包板线完成。完工后的自制插头如图17.3所示。

图17.2 GPS 接收模块

图17.3 自制串口插头

GPS数据中包含经度、纬度信息,时间信息以及GPS卫星的有关信息。其中推荐定位信息(GPRMC)的格式如下:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh

<1> UTC时间,hhmmss(时分秒)格式。

<2> 定位状态,A=有效定位,V=无效定位。

<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)。

<4> 纬度半球,N=北半球,S=南半球。

<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)。

<6> 经度半球,E=东经,W=西经。

<7> 地面速率(000.0~999.9节,前面的0也将被传输)。

<8> 地面航向(000.0°~359.9°,以正北为参考基准,前面的0也将被传输)。

<9> UTC日期,ddmmyy(日月年)格式。

<10>磁偏角(000.0°~180.0°,前面的0也将被传输)。

<11>磁偏角方向,E=东,W=西。

<12>模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)。

例如“$GPRMC,024519.214,A,3315.7712,N,11954.9589,E,0.00,,240812,,*1E”对应翻译后可以得出当前定位信息为北纬33°15.7712′、东经119°54.9589′(不知道是不是谷歌地图的误差,这个坐标离我家实际位置有500m左右的误差),日期为2012年8月24日。

另外,从其他语句中可看出当前可视卫星数为7颗,其微信号分别为03、87、277、29、19、55、206,可见当前信号还是不错的。想了解更多关于GPS数据的内容请自行查找,这里不多介绍。

2. 加速度模块

MMA7361是一款低成本微型电容式加速度传感器,可用于测量加速度及角度,如图17.4和图17.5所示。借助这一模块,可以对快件在运送过程中所受的碰撞以及摆放姿态进行记录。

图17.4 MMA7361 模块

图17.5 转接板(左)及加速度模块(右)

通过单片机AD转换,量化x、y、z三轴电压并进行计算,便可获得加速度以及角度信息。另外,由于这一模块的量程较为有限,从1m高跌落产生的加速度就会超出量程,我们记录超出量程的次数,也就可以计数快件运送过程中发生较大碰撞的次数。

3. Flash 芯片

图17.6 焊接在转接板上的W25Q32

W25Q32为华邦(Winband)开发的一款基于SPI的闪存芯片,如图17.6所示。我们使用的单片机为STC12C5A60S2,不支持SPI接口,需要通过I/O口模拟SPI进行数据读写。另外W25Q32的工作电压为2.7~3.6V,单片机使用5V供电,要注意电压的不同。我们通过加速度模块上自带的5V转3.3V电路为W25Q32芯片供电。W25Q32的其他引脚可与单片机直接连接,数据读写不会受电压的影响。具体引脚定义及读写时序请参考相关数据手册。

4. 51 单片机开发板

XQ_L2A 51是一款很常见的51单片机开发板,如图17.7所示,价格也很低廉。我们使用板载的12864液晶屏插口作为模块接口,连接单片机4个P1引脚,正好用于加速度模块的AD转换。其他引脚连接P0口,用于模拟Flash芯片的SPI接口。

图17.7 XQ_L2A 51 单片机开发板

5. 自制连接板

为了方便连接,我们专门设计制作了一块连接板,如图17.8所示。其正面是加速度模块的连接座,背面为W25Q32贴片位置。

图17.8 转接板(正面、ARES 图纸)

模块装箱

开发板、电池盒、GPS接收模块都通过双面胶粘贴在包装内,固定后包裹上保护膜,如图17.9所示。包装内还放有污损比对卡以及一张记录卡,用于记录快件的一些信息,如图17.10所示。外包装上贴有3个测试标签,用于检查外观污损情况,如图17.11所示。

图17.9 开发板、电池盒、GPS 接收模块都通过双面胶粘贴在包装内

图17.10 包装内还放有污损比对卡以及一张记录卡

图17.11 包装外部

数据提取与处理

1. 数据提取

由于开发板只有一个串口,所以提取数据时必须拔去GPS模块,接上USB转串口模块。为了区分数据提取和数据采集这两种工作模式,我们在编写程序时定义了一个按键用于区分这两个模式。单片机上电时,会自动检测这个按键是否被按下,如果被按下,则打开串口等待数据读取指令。如果未被按下,则进入数据采集模式。

进入读取模式后,将模块连接电脑,打开串口助手,设置波特率后,发送“#READ”指令,单片机会自动从头读取Flsah芯片中的数据,并通过串口发送给计算机,如图17.12所示。另外我们在程序中写入了“#CLEARALL”指令用于芯片清空。

图17.12 计算机通过串口收到的数据

2. 数据处理

串口所收到的原始数据是单片机将各模块所收到的信息进行简单处理后存储到Flash芯片的数据。格式定义如下:

#*GPRMC,024518.214,A,3315.7653,N,11954.9529,E,240812*10,0,1*10&

#:开始标记

*:段落标签

GPRMC:GPS数据标签

024518.214:时间,2点45分18.214秒(UTC时间)

A:定位标记,A=有效定位,V=无效定位

3315.7653:33°15.7653′

N:北半球

11954.9529:119°54.9529′

E:东半球

240812:2012年8月24日

10:x轴瞬时读数

0:y轴瞬时读数

1:z轴瞬时读数

10:加速度取模值

&:结束标记

后期处理

我们总共选取了5家快递公司往返深圳与恩平之间寄送这个快递追踪器。通过保存在Flash芯片中的数据,我们对快递在运送过程中经历的“坎坷”有了一些了解。表17.1是我们整理后的结果,大家可以看看价格和服务是否匹配。(由于我们进行实验的次数较少,不具有普遍性,所以我们未公布快递公司的具体名称,请谅解。)

注:

(1)取件员着装一栏标为“不取件”是由于不上门取件所以无法填写。

(2)超量程记录是指加速度模块超出量程的次数,即有较大碰撞的次数。数据丢失是由于设备损坏而引起数据丢失。

(3)污损标签是贴在包装上的白色贴纸,用于衡量外包装污染情况。数字是与标准色卡比对的结果。

(4)GPS模块在室内和车厢内都无法定位,收集到的数据大部分都是在中转站的数据。但是由于无相关测绘软件,所以数据无太大实用价值,因而没有公布。

(5)结果存在偶然性,请勿对号入座。

相关问答

gps 模块与 单片机 接口原理?

GPS模块与单片机的接口原理如下:1.选择合适的GPS模块:首先需要选择与单片机兼容的GPS模块,通常使用串行通信接口(如UART)进行通信。确保选取的GPS模块支持...

51单片机 的有利作用?

51单片机作为学习单片机的过程中必须要经过的一个过程来讲是非常重要的,原因在于51单片机从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象...

51单片机 有用吗?

51单片机作为学习单片机的过程中必须要经过的一个过程来讲是非常重要的,原因在于51单片机从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象...

rxd 单片机 引脚干什么的?

51单片机的串口工作模式如果选择为模式0时,就是同步移位寄存器的模式。这种模式与其它三种不同:其它三种都是一般意义上的异步串行通讯模式,接收信息使用RXD...

电动车 gps 卫星 定位 追踪器买什么牌子比较好用?

推荐双向报警器的GPS卫星追踪器,例如RF-V12+。GPS定位追踪器是内置了GPS模块和移动通信模块的终端,用于将GPS模块获得的定位数据通过移动通信模块(gsm/gprs网...

python可以 单片机 编程吗,怎么样?

以上就是python可以单片机编程吗的详细内容想了解更多Python相关,百度搜索圈T社区www.aiquanti.com,免费视频教程。纯干货板载重力传感、温湿度、加速度传感...

什么是智能手机中的SoC,SoC的用途是什么?

名词解释——SoCSoC的全称叫做:System-on-a-Chip,中文的的意思就是“片上系统”。高通SnapdragonSoC可以称为传统示例。这些的架构与PC处理器有很大的不同。...

防空导弹的命中率并不是100%,那么打不到飞机的导弹去了哪里,怎么处理?

在目标上空巡飞,确定有无打击价值,若无就回航。当然,这有一个基础前提,要有北斗导航系统和军用数据链的支持。世界只有GPS卫星系统,伽利略卫星系统和我国北...当...

有和 51单片机 链接的蓝牙 模块没有-ZOL问答

TomTom蓝牙GPS模块讨论回答(6)有,用51单片机的串口连接蓝牙,选这种蓝牙模块就可以。蓝牙串口助手软件就是这个意思的当然有,我还用过,连接手机控制单片机...

royaltek rta 1000 gps 天线怎么用

[回答]一、想用D600导航吗?如果想,先做准备:1、买个GPS蓝牙模块,淘宝上大把,400元左右的就是超级实用啦,200多的当然也能解决问题,不过一分价钱一分货嘛。...

猜你喜欢