基于STM32的MC20模块GPRS+GPS的C语言驱动程序

article/2025/9/13 1:35:32

 

  MC20 模块是一款集成了高性能GNSS 引擎和四频段GSM/GPRS 引擎的多功能无线模块,本次在项目中使用MC20作为通信网关,开发其与服务器通信的功能以及定位功能,稍微学习了一下。

  1.硬件部分

  GSM/GPRS 部分主要特性:

  

  

 

 

  MC20模块本身集成度较高,如果仅仅是使用的话其实非常简单,只需要了解模块内部的AT指令便可。

  MC20和STM32的接口采用UART,MC20上面有3个串口,分别用不同的功能,但我们项目的硬件设计把GPRS和GPS的串口都设计在了一起,因此只使用一个串口便可以实现通信与定位的功能。

  

    

  硬件不多讲,直接下载官方的手册参照设计即可,如果自己找不到手册,可以联系留下邮箱

  2.驱动部分

   初始化:

  MC20的初始化总体而言分为两个大部分:1.GRRS初始化 2.GPS初始化

  首先解释GPRS初始化:

  GPRS的初始化分为以下6个步骤:

  1.模块硬件检查

  2.SIM状态检查

  3.网络状态检查

  4.GPRS信号强度检查

  5.TCPIP传送模式选择

  6.建立TCP链接

 

  所谓硬件检查,按照手册上描述,其实就是检查一下硬件有没有正常启动,在已经给电,并且通过脉冲激活了MC20的情况下,使用串口向MC20发送一个字符串“AT\r”

  发送字符串以后,会存在3种状态,1.什么也没收到 2.收到“OK” 3.收到其他字符串。

  有且只有在第二种的情况下才代表通信正常,由于STM32与MC20的通信几乎都是这种一问一答的模式,因此特地做一个函数来进行这个工作的处理。

  函数功能:使用串口发送一个字符串:AT_CMD,然后等待,在wait_time_ms时间内如果串口有信息返回,那么就进行判断,判断返回信息中是否包含自己需要的字符串:return_value,如果有返回TRUE,如果没有返回FALSE。

 1 uint8_t MC20_SendAtCmd(char *AT_CMD, char *return_value, uint32_t wait_time_ms)
 2 { 4     uint32_t time;
 5     uint8_t res;
 6 
 7     if(NULL == AT_CMD)
 8     {
 9         return 0;
10     }
11 
12     MC20_ClearFlag();
13     /* 发送命令 */
14     MC20_SendData((uint8_t *)AT_CMD, strlen(AT_CMD));
15     if(NULL == return_value)
16     {
17         return 1;
18     }
19 
20     time = u32SysTime;

http://chatgpt.dhexx.cn/article/bAeqTmUI.shtml

相关文章

2.6 基于ARDUINO UNO+MC20的路径显示功能

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

2.2 使用ARDUINO控制MC20发短信

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

2.4 使用ARDUINO控制MC20进行GPS数据的获取和解析

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

STM32+MC20实现GPS定位及基站LBS,发送到云平台,可以轨迹回放

使用STM32F103单片机+MC20 无线通信模块,MC20集成GPS、蓝牙、LBS基站定位、GPRS等功能是一款非常强的模块。使用它做一个GPS定位及基站定位,在室内或者隧道等没有GPS信号的情况下,自动切换成基站定位。将数据发送到湖畔物联云平台…

MC20 AT指令无反馈

自己做了一个MC20的小模块板子,今天使用的时候,发现无论我发送什么AT指令,他都没反馈。 确认过了如下这些条件: 1. 波特率115200 2. AT回车换行 3. powerkey一直保持高电平,网络led保持闪烁 然并卵,MC…

4.3 使用STM32控制MC20进行GPRS通讯

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

stm32+mc20上传gps信息至onenet 可路径显示

开发环境: 芯片: STM32F103C8T6 GSM模块: 移远MC20 开发软件: Keil5 协议 :多协议接入——TCP透传 手机端显示图像 使用STM32F103C8T6 通过串口AT指令控制MC20模块TCP协议,登录OneNet服务器上传GPS数据 。 核心: 串口解析GP…

计算机的功能mc,1.2使用计算机测试MC20模块的GPS功能

使用SSCOM发送指令 ATQGNSSC1 启用模块的GPS功能,这时PPS指示灯将点亮 2. 发送 ATQGNSSRD? 说明,您可以获得GPS NMEA协议数据 开机时上图所示的数据. 每个数据帧中的逗号和逗号为空. 这是因为尚未获得卫星信号. 卫星定位成功后,将填写所有数…

MC20 OpenCPU开发记录

MC20 OpenCPU开发笔记 OpenCPU软件体系结构 资源 32-bit ARM7EJ-STMRISC 260MHz 4MB flash 4MB RAM 串口 提供两个UART端口:MAIN UART、DEBUG UART。分别命名为UART1和UART2。 UART1是9-pin串行接口。UART2是3-wire接口,具有调试功能,…

STM32+移远MC20模块采用MQTT协议登录OneNet上传GPS数据

一、环境介绍 MCU: STM32F103C8T6 GSM模块: 移远MC20 (MT2503D)(GSMGPS共存)功能很强大 开发软件: Keil5 MQTT协议采用OneNet的旧版协议,登录OneNet控制台创建应用时要选择旧版本。 如果想使用新版本的标准MQTT协议连接OnetNet请参考这…

OpenCV-最大极值稳定区域MSER分析

最大稳定极值区域MSER是一种类似分水岭图像的分割与匹配算法,它具有仿射不变性。极值区域反映的就是集合中的像素灰度值总大于或小于其邻域区域像素的灰度值。对于最大稳定区域,通过局部阈值集操作,区域内的像素数量变化是最小的。 MSER的基…

【转载】项目实战—文档区域MSER检测实战(十)

上次已经讨论过相关的理论,这次我们来进行相关的实战。 OCR相关工作都有一个第一步,那就是检测图像中的文本区域,只有找到了文本区域,才能对其内容进行识别,也只有找到了文本区域,才能更有针对性地判断该文…

opencv 中将 MSER 修改成 Hierarchical MSER 方法

http://code.opencv.org/issues/1577 描述 I attach a patch implementing the Hierarchical MSER. It extends the OpenCV MSER implementation to return the underlying component tree used by the MSER algorithm. The tree is returned in the CvSeq tree fields (h_next…

OpenCV实践之MSER/MSCR极值区域检测算法

MSER/MSCR极值区域检测算法 OpenCV中features2d.hpp中MSER类接口实现了MSER极值区域检测算法,MSER类根据输入参数判断是否为彩色or灰度图像进行不同的算法检测。若输入为灰度图像,那么采取MSER极值区域检测算法,若输入为彩色图像,…

MSER仿射不变特征匹配算法

MSER原理简述 个人博客 OpenCV实践之MSER仿射匹配算法 已更新讲述MSER仿射匹配算法代码      区域检测(Region Detection)方法是根据图像中具有某种同类性质的像元进行分类(例如相同像素值大小的点),然后把具有相同性质的像元合并成区域,实现区域的检测即图像分割。MSER…

OpenCV用MSER 算法提取特征区域

计算图像 MSER 的基础类是 cv::MSER&#xff0c;继承自 cv::Feature2D 类&#xff0c;cv::MSER 类的实例可以通过create 方法创建。我们在初始化时指定被检测区域的最小和最大尺寸&#xff0c;以便限制被检测特征的数量&#xff0c;调用方式如下&#xff1a; cv::Ptr<cv::M…

车牌定位之MSER — 文本检测

最大稳定极值区域&#xff08;MSER-Maximally Stable Extremal Regions&#xff09;可以用于图像的斑点区域检测。它是基于分水岭的概念。 SIFT和SURF算法高效实现了具有尺度和旋转不变性的特征检测&#xff0c;但这些特征不具有仿射不变性。区域检测针对各种不同形状的图像区域…

图像局部特征(十四)--MSER特征

原文: http://blog.csdn.net/zhaocj/article/details/40742191 最大稳定极值区域&#xff08;MSER-Maximally Stable Extremal Regions&#xff09;可以用于图像的斑点区域检测。该算法最早是由Matas等人于2002年提出&#xff0c;它是基于分水岭的概念。 MSER的基本原理是对…

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节&#xff0c;文字检测的主要目标是将图片中的文字区域位置检测出来&#xff0c;以便于进行后面的文字识别&#xff0c;只有找到了文本所在区域&#xff0c;才能对其内容进行识别。 文字检测的场景主要分为两种&#xff0c;一种是…

MSRCR

带色彩恢复的多尺度视网膜增强算法&#xff08;MSRCR&#xff09;的原理、实现及应用。 Retinex这个词是由视网膜(Retina)和大脑皮层(Cortex) 两个词组合构成的。Retinex理论主要包含了两个方面的内容&#xff1a;物体的颜色是由物体对长波、 中波和短波光线的反射能力决定的&a…