GSM模块(SIM900)详解
GSM模块(SIM900)
- 0. GSM概述
- 1. 常用的GSM模块
- 2. SIM900系列
- 3. STM32使用SIM900系列通信
- 方法
- AT指令
- 示例代码
0. GSM概述
GSM(全球系统移动通信)是一种数字移动通信技术,是世界上最常用的移动通信标准之一。它是由欧洲电信标准协会(ETSI)制定的,于1991年首次发布。GSM的设计目标是提供一种在全球范围内实现移动通信的标准,使用户能够在不同的国家和地区之间使用同一种手机设备。
GSM基于蜂窝网络架构,将地理区域划分为许多小区,每个小区由一个基站负责覆盖,这些基站连接到移动通信网络的核心部分。GSM使用数字信号和时分多址技术,可以同时支持多个用户在同一个频率上进行通信。
GSM的主要特点和优势包括:
全球覆盖:GSM标准在全球范围内广泛应用,使得用户可以在不同国家和地区之间进行无缝通信。
数字通信:GSM使用数字信号进行通信,提供更好的音质和通信质量。
安全性:GSM引入了多种安全机制,包括身份验证、数据加密等,以保护用户的通信隐私和数据安全。
短信服务:GSM支持短信(Short Message Service)功能,允许用户发送和接收文本消息。
数据传输:GSM不仅可以传输语音通话,还可以用于数据传输,例如互联网接入、电子邮件等。
漫游支持:GSM的漫游功能使得用户可以在其他运营商的网络上使用自己的手机,方便用户在不同地区之间切换。
1. 常用的GSM模块
SIM800系列:SIM800是一款广泛使用的GSM/GPRS模块系列,由SIMCom 公司生产。SIM800模块具有小型化尺寸、低功耗和丰富的功能,支持GSM通信和GPRS数据传输。
SIM900系列:SIM900是另一款由SIMCom 公司生产的GSM/GPRS模块系列。SIM900模块具有稳定的性能和广泛的应用,支持GSM通信、GPRS数据传输和短信功能。
Quectel系列:Quectel是一家领先的无线模块供应商,他们提供了多种GSM模块系列,如M66、M95、M66、M10等。这些模块具有高性能、稳定性和丰富的接口选项。
A6系列:A6是由AI-Thinker 公司生产的GSM模块系列,如A6、A6C、A7等。A6系列模块具有紧凑的尺寸、低功耗和较低的成本。
SIM7000系列:SIM7000是一款支持2G、3G和4G网络的GSM模块系列,由SIMCom 公司生产。SIM7000模块具有全球漫游能力和支持LTE Cat-M1、NB-IoT等低功耗广域网(LPWAN)技术。
这些是市场上一些常见的GSM模块,每个模块都具有不同的特性、功能和性能,可根据具体的应用需求选择适合的模块。在选择GSM模块时,应考虑通信要求、功耗、尺寸、接口、价格等因素。
2. SIM900系列
SIM900系列模块的主要特点和功能如下:
GSM/GPRS通信:SIM900系列支持GSM网络通信和GPRS数据传输。它可以在2G网络上进行语音通话和短信传输,还可以通过GPRS实现数据传输,包括互联网接入、远程监控等。
多频段支持:SIM900系列模块支持多个频段,使其能够在不同地区和国家的GSM网络上运行,实现全球范围内的漫游和通信。
小型化尺寸:SIM900系列模块具有紧凑的尺寸,适合嵌入式系统和物联网设备的集成,方便在各种应用场景中使用。
丰富的接口:SIM900系列模块提供了多个接口,包括UART串口、USB接口、GPIO(通用输入输出)等,方便与外部设备进行通信和连接,如传感器、显示屏等。
低功耗设计:SIM900系列模块采用低功耗设计,具有省电特性,适用于需要长时间运行的应用场景。
AT指令控制:SIM900系列模块通过AT指令进行控制和通信。通过发送AT指令,可以实现模块的各种功能,如拨打电话、发送短信、接收数据等。
强大的软件支持:SIMCom为SIM900系列模块提供了丰富的软件支持,包括固件更新、驱动程序和开发工具,以帮助开发者快速集成和开发应用。
SIM900系列模块是一种成熟、可靠且广泛应用的GSM/GPRS解决方案。它的功能和性能使得它适用于各种物联网和远程通信应用,为设备提供了稳定的通信能力和远程控制能力。
3. STM32使用SIM900系列通信
方法
硬件连接:
- 将STM32的串口引脚(TX和RX)连接到SIM900模块的对应引脚(RXD和TXD)。
- 连接STM32和SIM900模块的地线。
- 连接STM32和SIM900模块的电源线,确保电源电压和电流满足模块的要求。
初始化串口:
- 在STM32上初始化串口。使用STM32的相关库函数或底层寄存器设置,配置串口的波特率、数据位、停止位等参数,使其与SIM900模块的串口参数一致。
- 使能STM32串口的发送和接收中断或DMA功能(可选)。
发送AT指令和接收响应:
- 编写发送函数,通过串口发送函数将AT指令字符串发送到SIM900模块。例如,使用库函数
HAL_UART_Transmit()
发送指令字符串。 - 等待一段时间,以确保模块有足够的时间执行指令。
- 使用接收函数,通过串口接收函数从SIM900模块接收响应数据。例如,使用库函数
HAL_UART_Receive()
接收数据。 - 解析响应:根据SIM900模块的响应格式,解析接收到的数据以获取所需的信息。通常,SIM900模块的响应以"OK"或"ERROR"结尾,你可以根据需要解析其他信息。
- 编写发送函数,通过串口发送函数将AT指令字符串发送到SIM900模块。例如,使用库函数
控制和通信:
- 根据需要,发送不同的AT指令来控制SIM900模块进行各种操作,如发送短信、拨打电话、接收数据等。
- 编写相应的函数或代码段,以封装发送指令、接收响应和解析响应的过程。
- 根据AT指令集和SIM900模块的文档,了解每个指令的格式、参数和用法。
- 在发送指令后,等待模块的响应,并根据响应进行相应的处理。
错误处理:
- 在通信过程中,对于发送指令后没有正确响应的情况,进行适当的错误处理。可以设置超时机制,如果在规定的时间内没有收到响应,则认为通信失败,进行相应的处理。
AT指令
SIM900系列模块支持一系列的AT指令,用于控制模块的各种功能和进行通信操作。下面列出了一些常用的SIM900系列模块的AT指令示例:
- 基本功能:
- AT:测试模块是否正常响应。
- AT+CSQ:查询信号强度。
- AT+CCID:查询SIM卡识别号。
- AT+COPS=?:搜索并显示可用的运营商。
- 短信功能:
- AT+CMGF=1:设置短信格式为文本模式。
- AT+CMGS=“手机号码”:发送短信给指定手机号码。
- AT+CMGR=1:读取收件箱中的第一条短信。
- 通话功能:
- ATD手机号码;:拨打指定手机号码。
- ATA:接听来电。
- ATH:挂断通话。
- GPRS数据传输:
- AT+SAPBR=3,1,“Contype”,“GPRS”:设置GPRS连接类型。
- AT+SAPBR=3,1,“APN”,“APN名称”:设置GPRS接入点名称。
- AT+SAPBR=2,1:打开GPRS上下文。
- AT+HTTPINIT:初始化HTTP功能。
- AT+HTTPPARA=“URL”,“网址”:设置HTTP请求的URL。
示例代码
#include "stm32fxxx_hal.h"
#include <string.h>UART_HandleTypeDef huart1;void SIM900_SendCommand(const char* command)
{HAL_UART_Transmit(&huart1, (uint8_t*)command, strlen(command), HAL_MAX_DELAY);
}void SIM900_ReceiveResponse(char* response, uint16_t maxLen)
{HAL_UART_Receive(&huart1, (uint8_t*)response, maxLen, HAL_MAX_DELAY);
}void SIM900_Init()
{// 初始化串口huart1.Instance = USART1;huart1.Init.BaudRate = 9600;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart1.Init.OverSampling = UART_OVERSAMPLING_16;HAL_UART_Init(&huart1);
}void SIM900_CheckModule()
{char response[32];SIM900_SendCommand("AT\r\n"); // 发送AT指令检查模块响应SIM900_ReceiveResponse(response, sizeof(response));if (strstr(response, "OK")){// 模块正常响应// 可以继续发送其他指令或执行其他操作}else{// 模块无响应或响应异常// 进行错误处理}
}int main()
{HAL_Init();SIM900_Init();while (1){// 检查模块状态SIM900_CheckModule();// 其他操作或指令// ...}
}
GSM模块(SIM900)详解相关推荐
- matlab中sinks,MATLAB Simulink模块库详解(二)Sinks篇
MATLAB Simulink模块库详解(二)Sinks篇 Simulink模块库概述 1.Sources模块库,为仿真提供各种信号源 2.Sinks模块库,为仿真提供输出设备元件 3.Continu ...
- STM32开发 -- 惯导模块开发详解
如需转载请注明出处:https://juyou.blog.csdn.net/article/details/93476976 STM32开发 – GPS模块开发详解 这篇文章已经对于GPS模块开发讲得 ...
- 用matlab仿真pwm整流器的方法,MATLAB-PWM整流仿真模块建立详解.pdf
MATLAB-PWM整流仿真模块建立详解 Page System Name 1 psb3levelVSC 2 psb3levelVSC/DC Regulator 3 psb3levelVSC/DC R ...
- python shelve模块_python3 shelve模块的详解
python3 shelve模块的详解 一.简介 在python3中我们使用json或者pickle持久化数据,能dump多次,但只能load一次,因为先前的数据已经被后面dump的数据覆盖掉了.如果 ...
- ngnix的upstream模块配置详解
2019独角兽企业重金招聘Python工程师标准>>> ngnix的upstream模块配置详解 2017年04月04日 13:10:03 阿里-橙鹰-潘民兰 阅读数:15409 标 ...
- python中configparser详解_Python中的ConfigParser模块使用详解
1.基本的读取配置文件 -read(filename) 直接读取ini文件内容 -sections() 得到所有的section,并以列表的形式返回 -options(section) 得到该sect ...
- python中importlib模块安装_Python中标准模块importlib详解
Python中标准模块importlib详解 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外 ...
- python3 json模块_详解python 3.6 安装json 模块(simplejson)
JSON 相关概念: 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON,XML等.反序列化就是从存储区域(JSON,XML)读取反 ...
- python标准库对象导入语句_Python标准库之Sys模块使用详解
sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sy ...
- Spring Boot的每个模块包详解
Spring Boot的每个模块包详解,具体如下: 1.spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. 2.spring-boot-s ...
最新文章
- java获取当月1号 的时间chuo_java 获取昨天,上个星期一,本月开始时间戳,怎么写呢?...
- linux下jdk简单配置记录
- 坑爹的去哪儿网订酒店经历
- centos sudo不能运行_Linux操作系统中sudo的使用和sudoers配置
- iis websocket同时连线人数_【NBA云专访】沈洋连线76人CEO 疫情期间如何管理球队?...
- HALCON示例程序count_fish_sticks.hdev鱼棒完整性检测
- C 语言中,x += 5 == 4 是什么意思?
- 需求说明 用户登陆功能的实现 c#
- 事务处理与事务的隔离级别
- catia保存成stp文件时部件丢失_电脑硬盘恢复教程,简单复原硬盘丢失数据的做法...
- 思杰技术的论坛网址(转)
- acc 蓝牙_蓝牙中的三种音频编码:Apt-X、SBC、AAC,请问分别有什么区别?
- php libiconv close_无法编译PHP undefined reference to `libiconv_open
- 思维导图是如何做会议记录的
- 怎么用8uftp上传网站,利用8Uftp上传自己的网页只需8步
- mysql 事务 库存_库存事务处理临时表
- WIN2000故障修复之故障恢复控制台篇
- guzzlehttp/guzzle使用
- SpringMvc框架及SSM框架整合
- 一种直观理解Galois理论的途径
热门文章
- [AHK]一键摘抄金句到Obsidian
- linux下ls -l命令(即ll命令)查看文件的显示结果分析
- SpringBoot出错:Consider defining a bean of type ‘com.mapper.UserMapper‘
- 解决CoLab上传数据集失败或速度慢的问题
- Hololens低版本不支持多通道或者单眼左眼显示问题
- 爱“搬家”的欧宗洪 抱薪救火的融信中国
- 关于js控制元素的隐藏和显示
- java set复制_Java 集合系列之三:Set基本操作
- 奇幻3D网游《魔咒Online》完整源码
- HashMap解决Hash冲突为什么要使用红黑树