基于NB-IoT的GPS定位系统(STM32、WH-NB73、U-BLOX NEO-7N )

  • 前期准备
    • GPS模块测试
    • NB73模块测试
    • NB73模块与云平台数据交互测试
    • GPS数据处理
  • NB73模块与云平台通信
  • 演示

本系统采用的是STM32控制U-BLOX NEO-7N GPS模块获取位置信息,通过有人物联网系列的WH-NB73 NB模块传输数据,最终在谷雨云平台可视化显示。

前期准备

GPS模块测试

将GPS模块接上串口,通过串口调试工具可以看到多种格式的定位信息,本系统使用的是推荐定位信息,因此要将改信息提取出来,主要代码如下:

void USART1_IRQHandler(void)                 //串口1中断服务程序
{u8 Res;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) {Res =USART_ReceiveData(USART1);//(USART1->DR);  //读取接收到的数据if(Res == '$'){point1 = 0;   }   USART_RX_BUF[point1++] = Res;if(USART_RX_BUF[0] == '$' && USART_RX_BUF[4] == 'M' && USART_RX_BUF[5] == 'C')          //确定是否收到"GPRMC/GNRMC"这一帧数据{if(Res == '\n')                                       {memset(Save_Data.GPS_Buffer, 0, GPS_Buffer_Length);      //清空Save_Data.GPS_Buffermemcpy(Save_Data.GPS_Buffer, USART_RX_BUF, point1);    //保存数据Save_Data.isGetData = true;point1 = 0;memset(USART_RX_BUF, 0, USART_REC_LEN);      //清空 USART_RX_BUF    }   }

通过串口调试工具可以看到编码后获取的获这样获取到的数据格式如下图所示:

NB73模块测试

主要是测试NB-IoT模块能否与云平台正常通信。将NB-IoT模块通过USB TO TTL与电脑相连。通过稳恒科技的串口软件可以对NB-IoT模块的各种信息进行一键自动检测,可以快速的查看到模块的是否出现异常。下图为通过检测示意图。

NB73模块与云平台数据交互测试

按照有人物联网提供的CoAP透传配置方案,配置方案参考以下链接:https://www.usr.cn/Faq/371.html,主要参考前部分配置,数据交互部分在谷雨云完成。
将NB-IoT模块配置成CoAP透传模式后,可以通过串口工具与谷雨云平台进行数据交互,在串口工具中上报数据云平台可以接收,云平台将数据下发串口工具中也可以查看到。我们在配置成功后,使用串口工具发送ceshi给NB-IoT模块,云平台可以接收到;在云平台发送ceshi给NB-IoT模块,可以在串口工具中接收。因此可以表明该模块可正常配置为CoAP透传模式并与云平台通信。测试数据交互成功如下图所示。

GPS数据处理

在前面获取到了GPS的经纬度原始数据了,但是原始数据不是百度地图可以识别的经纬度坐标,因此需要将GPS的原始坐标线转换为度分格式,再转换为火星坐标,最后才能转换成百度坐标。(转换的代码网上有很多可以参考就不贴了,如果调用百度API就可以不用自己转换)转换完成百度坐标后再转换成为谷雨云规定的上报GPS数据格式,这样才能在谷雨云的图形化调试模式中的地图内定位。下图为转换后上报到谷雨云的数据格式,通过在串口中显示出来,实时查看上报的数据,便于找出问题。

NB73模块与云平台通信

NB73模块要与谷雨云平台交互数据,需要将NB73模块在指令模式中配置成CoAP透传模式,NB73模块进入指令模式和退出指令模式的操作步骤如下:
1)串口给模块连续发送“+++”,NB 模块收到“+++”后,会给设备发送一个‘a’。
2) 串口接收‘a’后,必须在 3 秒内给 NB 模块发送一个‘a’。
3) NB 模块在接收到‘a’后,给设备返回“+ok”,并进入“临时指令模式”。
4)当用户设备接收到“+ok”后,可以向 NB 模块发送 AT 指令。

NB的配置代码过程过程就不过多叙述,参考了其他博主的一些配置方式,然后做出了一些改进,主要参考代码的链接如下:https://blog.csdn.net/he__yuan/article/details/101625458。下面贴部分代码简述一下做出的改进。
由于NB73模块收到数据的反应时间的不确定性,可能会导致配置错误,因此加入一行代码判断串口是否接收到数据再进行后续判断,这样就可以保证NB73模块发送给单片机的数据不会丢失。

u8 NB_IoT_ack_chack(u8 *str)  //检查NB模块应答是否符合预期
{// Delay_Ms(10);while (!USART2_RX_STA);if(USART2_RX_STA!=0){USART2_RX_STA=0;if(strstr((const char*)USART2_RX_BUF,(const char*)str))//符合预期{ memset(USART2_RX_BUF,0, sizeof USART2_RX_BUF);    return 0;}else //不符合预期  { memset(USART2_RX_BUF,0, sizeof USART2_RX_BUF);    return 1;}                              } else { memset(USART2_RX_BUF,0, sizeof USART2_RX_BUF);  //清空数组          return  1;}
}

下面首先是修改成先发送AT+ENTM\r\n命令退出指令模式,然后再发送一系列AT指令配置NB73模块进入指令模式,这样就可以保证模块每次都重新进行配置,而不会因为上一次配置错误而停留在指令模式内。

u8 NB_IotConect() //进入命令模式
{u8 x=1;send_NB_IoT("AT+ENTM\r\n");Delay_Ms (2000);send_NB_IoT("+++");  if(!NB_IoT_ack_chack("a")){  send_NB_IoT("a");if(!NB_IoT_ack_chack("+ok")){ x=0;}else {    x = 1;}}else   {x = 1;}return x;
}

演示

对单片机上电后,进入谷雨云平台的控制台中心,进入设备的图形化调试界面,可以发现在地图中对上报的数据进行了定位。效果图如下所示。

由于谷雨云图形化界面的下发命令正在完善,因此对下发命令停止和开启上报数据需要在数据调试模式中进行。
现在数据调试模式对设备下发STOP,设备将停止上传位置信息,系统停止定位。下发STOP命令停止定位如下图。

由于NB-IoT的在PSM模式下低功耗特性,需要在数据上报的20S内下发数据设备才能接收到,因此在20S内下发BEGIN,设备才会重新开始上报数据继续定位。(小白也是后面才知道为什么是20S,不懂的可以百度百度,大神们写的很完善了)下发命令继续定位如下图。

基于NB-IoT的GPS定位系统(STM32、WH-NB73、U-BLOX NEO-7N )相关推荐

  1. 51、基于51单片机的GPS定位系统(GSM短信)

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.程序 六.资料包括 摘要 1978年2月22日第一颗GPS试验卫星的入轨运行,开创了以 ...

  2. 产品 电信nb接口调用_艾礼安NB—IoT产品通过中国电信物联网开放平台接入认证...

    原标题:艾礼安NB-IoT产品通过中国电信物联网开放平台接入认证 近日,从电信部门传来好消息,艾礼安NB-IoT系列产品成功通过了中国电信物联网开放平台接入认证. 艾礼安NB-IoT产品通过电信认证 ...

  3. 技术分享 | 基于室外RTK/GPS定位系统下的无人机集群协同

    在自然界中,为弥补个体能力的不足,诸多生物种群能通过个体相互之间的交流与合作呈现出某种群体行为,比如鱼群结群游弋.鸟群聚集迁徙以及蚂蚁协同搬运等.受此激励,人们希望开发像鸟群.鱼群一样自由集结可以执行 ...

  4. iPhone地图 实战iPhone GPS定位系统

    原文摘自:成长的路上(Moonlight) 如今,配备GPS功能的移动设备越来越普遍了,使用GPS定位系统,可以精确地定位你当前所在的地理位置,但由于GPS接收机需要对准天空才能工作,因此在室内环境基 ...

  5. 基于嵌入式linux 的车载定位系统设计,基于嵌入式Linux的GPS车载定位导航系统设计...

    摘要: 随着汽车产业的迅速发展,GPS车载导航系统得到了越来越广泛的应用,已成为汽车上的重要配置,为用户提供便利.另一方面随着计算机技术.通信技术的迅猛发展,微型化和专业化成为发展的新趋势,嵌入式系统 ...

  6. NB IoT LWM2M Object or/and Resource Identifier: (Object ID) or (ResourceID)

    NB IoT LWM2M Object or/and Resource Identifier: (Object ID) or (ResourceID)      LWM2M协议中Object ID-对 ...

  7. nb信号和4g信号_三大运营商NB—IoT技术对比

    龙源期刊网 http://www.qikan.com.cn 三大运营商 NB - IoT 技术对比 作者:通信世界网 来源:<物联网技术> 2018 年第 02 期 摘 要: NB-IoT ...

  8. 从零开始,打造基于阿里IoT云平台的LoRa解决方案(3)_配置产品功能,将上传数据解析为阿里云平台数据格式

    本篇是 <从零开始,打造基于阿里IoT云平台的LoRa解决方案>系列教程的第3 篇,将为大家讲解:1-如何配置产品功能?2-如何将产品的上传数据解析为阿里云平台数据格式? 查看阿里物联网平 ...

  9. android的gps函数accuracy参数,基于Android平台的GPS林地面积测量-计算机工程与应用.PDF...

    基于Android平台的GPS林地面积测量-计算机工程与应用 Computer Engineering and Applications 计算机工程与应用 2014 ,50(23 ) 261 基于An ...

最新文章

  1. 初学Java——选择
  2. 杭电1019 Least Common Multiple(已解决)
  3. Hyper-V 内存管理必须知道的
  4. JavaScript:动态选中CheckBox
  5. 身边的设计模式(一):单例 与 RedisCacheManager
  6. 数据挖掘--分类思维导图
  7. 授人以鱼不如授人以渔
  8. linux gfs文件系统,Linux环境下使用GFS文件系统
  9. 20050611:超级伙伴?
  10. 轻松搞懂Linux中程序、进程、服务的区别及操作命令
  11. Spring实战第五章idea复现
  12. 遇见逆水寒服务器维护时间,《遇见逆水寒》7月23日更新公告
  13. Spring IOC(一):概述
  14. 可复制的领导力前两章总结
  15. layui——下拉框监听
  16. 地图裁剪器,可以将图片裁剪成瓦片数据,主要用途是将高清卫星图像裁剪成瓦片图,可以做离线地图的开发,基于墨卡托坐标
  17. matlab从csv文件中读取时间转换异常
  18. Docker学习之路(三)Docker网络详解
  19. 计算机丢失CH375DLL怎么办,修复ch375dll.dll
  20. 基于macd、kdj、ma技术指标分析股票多空方向——应用开发6 导出到EXCEL表格

热门文章

  1. python中使用保留字引用当前程序以外的功能库_Python中使用_______保留字引用当前程序以外的功能库...
  2. 怎么免费恢复手机里删除的照片呢?
  3. C++STL 顺序容器操作总结(超级详细)
  4. AndroidStudio报错:Could not install Gradle distribution from ‘https://services.gradle.org/distribution
  5. 中国(EV)电动汽车的“影子”(下)
  6. 毕业设计论文-基于android平台的手机订餐系统设计,毕业论文基于android的手机订餐系统的设计与实现.doc...
  7. 使用STM32内部ADC资源读取环境光传感器
  8. 基于python的AD-census立体匹配算法实现
  9. linux报错CMake Error at CMakeLists.txt:3 (project): No CMAKE_CXX_COMPILER could be found.
  10. 浏览器兼容性测试——测试要点