STM32设计的儿童老人GPS防丢定位手环

发布时间:2023-07-03  

一、环境介绍

MCU:STM32F103C8T6

GSM模块:GA6--果云

开发软件:Keil5


二、GA6-GSM模块介绍与调试

说明: GA6-B模块供电必须5V,采用电脑USB供电可能不稳定(没有5V,只有4.8V左右),导致模块使用不稳定,发送AT指令没有反应,调试阶段,可将开发板的USB线连接充电宝或者手机充电插头取电。


2.1 GA6-B模块概述

GA6-B 模组:
1. GA6 尺寸 22.8mm x 16.8mm x 2.2 mm;
2. 正常工作温度:-30°C ~ +80°C,
3. 受限工作温度:-40°C ~ -30°C 及+80°C ~+85°C*
4. 工作电压 3.5V-4.2V;
5. 开机电压>3.5V;
6. SLEEP 模式下的耗流为 0.9mA;
7. 四频:GSM850, EGSM 900 和 DCS 1800,PCS1900 可以自动的搜寻 四个频段。 l 符合 GSM Phase 2 / 2+ l GPRS Class 10;
8. 灵敏度9. 支持语音通话;
10. 支持 SMS 短信;
11. 支持移动和联通2G,以及全球的GSM网络
12. GPRS 数据特性,最大数据速率,下载 85.6Kbps,上传 42.8Kbps;
13. 支持符合 GSM 07.10 协议的串口复用功能
14. 支持 2 个串口,一个下载串口,一个 AT 命令口;
15. AT 命令支持标准 AT 和 TCP/IP 命令接口;
16. 支持数字音频和模拟音频,支持 HR,FR,EFR,AMR 语音编码;
17. 支持FCC,CE认证;
18. SMT 42PIN 封装;


GA6模块的优势
广域覆盖:GPRS在全国34个省均有良好覆盖,更是全球通行的2G通讯标准。基本上在手机可以打电话的地方都可以通过GPRS无线上网;
永远在线:只要激活GPRS应用后,将一直保持在线,类似于无线专线网络服务。
按量计费:GPRS服务虽然保持一直在线,但您不必担心费用问题;因为只有产生通信流量时才计费。


高速传输:目前GPRS可支持85.6Kbps的峰值传输速率,理论峰值传输可达100余Kbps。
价格便宜 :相对于 SIM 系列的模块 价格只有其的一半。大大降低了物联网设备的入门门槛凭借超小的尺寸,超低功耗和宽工作温度范围,GA6是M2M应用的理想解决方案,适用于车载、工业及PDA、个人跟踪、电力环境检测、无线POS、智能计量以及其它M2M的应用,为其提供完善的GSM/GPRS短信、数据传输及语音服务。

https://img.alicdn.com/imgextra/i3/672934643/TB2nDNjXD3myKJjSZFCXXbXxXXa_!!672934643.jpg


https://img.alicdn.com/imgextra/i2/672934643/TB2GaXjXt3nyKJjSZFEXXXTTFXa_!!672934643.jpg


poYBAGDYdXCAWkKMAAAAK8RNs4s030.pnghttps://img.alicdn.com/imgextra/i2/672934643/TB2FmdiXtMnyKJjSZPhXXaeZVXa_!!672934643.jpg

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png



poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


物联网卡:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


2.2 GA6模块调试

模块默认波特率: 115200
电压: 5V
TX---URX(GA6模块)
RX---UTX(GA6模块)


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

  1. 模块上电串口助手收到的消息:


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

注意: 电压必须5V否则,给模块发送AT指令没有用。

  1. 正常情况下,模块插上SIM电话卡,供电达到5V时,模块上电会返回以下提示信息。


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

当模块出现 “SMS Ready”字符串提示时,说明模块已经可以正常的接收“AT”指令了。


2.3 基础常用的指令介绍使用

(指令结尾发送都需要加rn)

1. 检测模块是否正常

给模块发送指令: AT


模块正常返回,这个指令可以检测模块是否正常:

OK


2. 查询SIM卡是否在卡槽内

给模块发送指令: AT+CPIN?


如果卡在卡槽内,模块正常返回值:

+CPIN:READY


OK


3. 查询模块是否注册到网络

给模块发送指令: AT+CREG?


如果模块已经正常注册到网络的返回值:

AT+CREG?


+CREG: 1,1


OK


4. 关闭指令回显

给模块发送指令: ATE0


指令执行成功返回值: (关闭AT指令回显,方便调试,提高程序效率)

OK


2.4GPRS网络通信相关指令介绍

1. 查询网络连接状态

给模块发送指令: AT+CIPSTATUS


指令执行成功返回值如下(多种):

"IP INITIAL" 初始化

"IP START" 启动任务

"IP CONFIG" 配置场景

"IP IND" 激活 GPRS/CSD 场景中

"IP GPRSACT" 接收场景配置

"IP STATUS" 获得本地 IP 地址(参考 AT+CIFSR 命令)

"TCP CONNECTING" TCP 连接中

"UDP CONNECTING" UDP 连接中

"IP CLOSE" TCP/UDP 连接关闭

"CONNECT OK" TCP/UDP 连接成功 ,连接成功之后才可进行网络数据通信


2. 附着GPRS网络 (进行网络通信前,需要先附着GPRS网络才可进行正常通信)

给模块发送指令: AT+CGATT=1


模块正常附着了GPRS网络,返回值: (注意该指令第一次附着网络需要点时间,需等待一段时间)

OK


3. 激活GPRS网络

给模块发送指令: AT+CGACT=1,1


模块正常激活了GPRS网络返回值:

OK


4. 建立TCP连接: 连接TCP服务器

模块发送指令: AT+CIPSTART="TCP","183.230.40.33",80


如果服务器正常连接成功的返回值:

OK


CONNECT OK

说明: 上面的指令是采用TCP协议连接,183.230.40.33服务器,端口号是80。


5. 发送数据

给模块发送指令: AT+CIPSEND


如果收到指令后会返回 > 符号。,接下来就可以发送 实际要发送的数据,在发送实际数据时,不需要加回车符(rn)。


实际数据发送之后,紧接着发送一个0x1A,即可启动数据发送。

注意: 0x1A是十六进制格式数据,不是字符串。


如果数据发送成功,会返回 “SEND OK” 字符串。


发送数据示例:

POST /devices/517704007/datapoints HTTP/1.1

api-key:vvQAUiBG=HwKzqGicH=RxBvFCDw=

Host:api.heclouds.com

Connection:close

Content-Length:65


{"datastreams":[{"id":"ds18b20","datapoints":[{"value":66.66}]}]}




poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png



三、STM32代码调试GA6模块

3.1 通过STM32串口代码测试GA6模块

直接接在STM32F103C8T6最小系统板上面:



注意: 如果是使用USB给开发板供电,为了防止电压不够,USB线不要接分线器,直接接电脑的USB口。

因为GA6模块的电压必须5V才可驱动,4.8V都不行。



poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

STM32F103C8T6最小系统板使用串口3与GA6-B模块连接:

5V-----5V

GND---G

PB10—URX

PB11---UTX


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

出现以上提示之后,发送AT能返回OK就说明模块已经正常工作了。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


模块上电会返回以下信息: (注意: 电压一定要保证是5V)

AT Ready


AST_POWERON


+NITZ:19/03/20,01:57:46,32


Call Ready


+CREG: 1


SMS Ready


3.2 通过STM32封装标准函数(使用HTTP协议连接OneNet服务器)

GA6_GPRS.c文件代码:

#include "ga6_gprs.h"


#define GS6_GSM_CHECK_CNT 10


/*

函数功能:向GA6_GPRS发送指令

函数参数:

        char *cmd     :发送的指令

        char *check   :检查返回的字符串

        u32 wait_time :等待的时间(100ms)为单位

        

说明:该函数只是适用于成功后返回OK的指令

返回值: 0表示成功 1表示失败

*/

u8 GA6_GSM_SendCmd(char *cmd,char *check,u32 wait_time)

{

   u32 i,j;

   for(i=0;i",50))return 1;


/*2.2 发送实际要发送的数据*/

USART_X_SendData(USART3,data,len);


/*2.3 结束数据发送*/

  if(GA6_GSM_SendCmd(end_char,"SEND OK",100))return 2;

  

return 0;

}

;i++)>

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

GA6_GPRS.h文件代码:

#ifndef GA6_GPRS

#define GA6_GPRS

#include "stm32f10x.h"

#include "usart.h"

#include "delay.h"

u8 GA6_GSM_StateCheck(void);

u8 GA6_GSM_SendDataToServer(u8 *data,u32 len);

u8 GA6_GSM_ConnectServer(char *server_ip,u32 port);

u8 GA6_GSM_SendCmd(char *cmd,char *check,u32 wait_time);

#endif

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

Main.c代码

#include "stm32f10x.h"

#include 

#include 

#include "ga6_gprs.h"

#include "usart.h"

#include "timer.h"

#include "led.h"

#include "key.h"


//u8 onenet_http_cmd[]=

//{

// "POST /devices/517704007/datapoints HTTP/1.1rn"

// "api-key:vvQAUiBG=HwKzqGicH=RxBvFCDw=rn"

// "Host:api.heclouds.comrn"

// "Connection:closern"

// "Content-Length:65rn"

// "rn"

// "{"datastreams":[{"id":"ds18b20","datapoints":[{"value":88.88}]}]}"

//};


u8 onenet_http_cmd[]=

{

"POST /devices/517620924/datapoints HTTP/1.1rn"

"api-key:OCZ6ghYPdky3=FJQCOEVZbByHRM=rn"

"Host:api.heclouds.comrn"

"Connection:closern"

"Content-Length:62rn"

"rn"

"{"datastreams":[{"id":"temp","datapoints":[{"value":88.88}]}]}"

};

//应用发布地址: https://open.iot.10086.cn/iotbox/appsquare/appview?openid=905ef1b56ba526fdeee0c69a0787f176


/*

以下程序正确运行返回的数据:


+NITZ:19/03/20,14:45:27,32


Call Ready


+CREG: 1


SMS Ready

发送一次数据!

GA6_GSM_StateCheck=0

GA6_GSM_ConnectServer=0

GA6_GSM_SendDataToServer=0


SEND OK


HTTP/1.1 200 OK

Date: Wed, 20 Mar 2019 14:45:40 GMT

Content-Type: application/json

Content-Length: 26

Connection: close

Server: Apache-Coyote/1.1

Pragma: no-cache


{"errno":0,"error":"succ"}


CLOSED

*/



int main()

{   

  u8 key,state;

  LED_Init();

  KEY_Init();

  BEEP_Init();

  TIM1_Init(72,20000); //辅助串口1接收,超时时间为20ms

  USART_X_Init(USART1,72,115200);

  TIM2_Init(72,20000);//辅助串口2接收,超时时间为20ms

  USART_X_Init(USART2,36,9600);

  TIM3_Init(72,20000);//辅助串口3接收,超时时间为20ms

  USART_X_Init(USART3,36,115200);

  printf("UART1 OK.....n");

  

  while(1)

  {     

     if(USART3_RX_FLAG)

     {

         USART3_RX_BUFF[USART3_RX_CNT]='

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>