使用STM32F103C8和SIM800C GSM模块发送/接收短信
来源:互联网发布者:qoistoochee128 关键词: 微控制器 arm GPS模块 STM32F103C8 更新时间: 2024/05/17
GSM 模块经常用于物联网项目,因为它能够远程发送和接收数据。GSM 模块没有像 Wi-Fi 模块那样的依赖项。虽然其他无线模块如Wi-Fi或Zigbee具有短距离和成本等缺点,但 GSM 模块具有可靠性、长距离,因为有效计划只需要一张 SIM 卡。尽管 GSM 模块无法发送传感器生成的大量数据,但它非常适合需要发送少量合理数据的应用。
在本教程中,此类GSM 模块将与 STM32F103C8 ARM 微控制器连接,以从程序中配置的蜂窝移动号码发送和接收文本消息 (SMS)。为了显示接收和发送的消息,一个16x2 LCD将与两个按钮一起使用,这两个按钮将在按下相关按钮后启动文本消息的发送和接收。
所需组件
STM32F103C8 Cortex-M3微控制器
GSM模块(本教程使用SIM800C)
16x2 液晶显示器
按钮 (2)
10k 电位器
面包板
连接电线
什么是 SIM800C GSM 模块?
SIM800C 是一种广泛使用的 GSM 模块,带有串行接口调制解调器,可在 3.4V-4.4V 电压等级之间运行。SIM800C 是一款四频 GSM/GPRS 模块,用于需要远程数据传输的嵌入式应用。SIM800C 工作在 850/900/1800/1900MHz。它还可以低功耗接收和发送语音电话,短信。模块通过 AT 指令控制。它支持一个 SIM 卡接口,并具有 UART(TX 和 RX)引脚以及一个 RS232 串行协议,可用于与嵌入式应用中的不同微控制器接口。
为 SIM800C GSM 模块供电
SIM800C GSM 模块使用一个 12V 的 DC 电源适配器供电。
将 SIM 卡插入 SIM800C GSM 模块
SIM800C GSM 模块的背面插入了一张 SIM 卡。注意SIM800C不支持4G,所以不要插入4G SIM卡。
GSM SIM800C与STM32F103C8接口
为了将SIM800C 与 STM32F103C8 微控制器连接,将使用 UART 串行端口,它是 STM32F103C8 的硬件串行接口。下图表示 STM32F103C8 中的 UART 引脚,分别是 A9 和 A10。
STM32F103C8 具有三个 UART 接口,用于连接三个外部串行外设。
AT 命令
AT 命令将用于访问 GSM 模块的功能,例如发送和接收语音呼叫、短信。下面给出了一些 AT 命令,它们在本教程中很重要,并且会经常使用。
电路原理图
GSM 与 STM32的连接如下图所示。
STM32F103C8和GSM SIM800C之间的电路连接
STM32F103C8 和 16x2 LCD 之间的电路连接
两个带有 10k 下拉电阻的按钮连接到 STM32 微控制器的引脚 PA0 和 PA1。完整的设置如下所示:
为 GSM 接口编程 STM32F103C8 微控制器
STM32F103C8 微控制器可以使用 ARDUINO IDE 进行编程。在本教程中,无需 FTDI 或 ST-LINK 编程器即可对 STM32 进行编程。要将代码上传到 STM32F103C8,只需将 microUSB 端口插入 STM32,然后使用 USB 电缆将 USB 端口插入 PC,然后开始在ARDUINO IDE中编写代码。如有任何疑问,请按照我们之前关于如何在不使用任何外部 FTDI 或 ST-LINK 编程器的情况下对 STM32 进行编程的教程进行操作。
完整的代码和工作视频可以在本教程的末尾找到。
首先包括本教程中使用的外围设备的必要库。还要定义 LCD 的引脚配置。
#include
接下来,选择函数lcd.begin(16,2) 初始化 LCD;其中(16,2)告诉 LCD 类型,例如 16x2 块 LCD 显示器。只需打印一条消息以调试 LCD 是否提供输出并正确连接。
lcd.开始(16,2); lcd.print("STM32 带 GSM"); lcd.setCurs
将 Push button 数据方向定义为 Input Mode 并定义使用的引脚号。
pinMode(PA0,输入);
pinMode(PA1,输入);
选择用于串行通信的波特率。
Serial1.开始(9600);
代码中有两个函数,一个是发送消息,另一个是接收消息。下面给出详细解释。
发信息
此功能用于向某个号码发送短信。AT命令被发送到GSM模块,指示消息文本模式以及需要发送消息的号码。
以下语句通过发送 AT 命令(AT+CMGF=1)将 GSM 模块设置为文本模式。
Serial1.println("AT+CMGF=1"); //将GSM模块设置为文本模式
之后,指示发送带有手机号码的 SMS 的 AT 指令(AT+CMGS)通过 serial1 端口发送到 GSM 模块。
Serial1.println("AT+CMGS="+91XXXXXXXXXX" "); // 将 x 替换为手机号码
消息每隔一秒使用 AT 命令发送,然后需要发送 CLRL+Z,因此 CTRL+Z 的 ASCII 码通过 Serial1 端口发送到 GSM 模块。
延迟(1000); Serial1.println("来自 GSM 模块的 Hi 电路文摘"); // 要发送的短信 Serial1.println((char)26);// CTRL+Z 的 ASCII 码
然后在 16X2 LCD 显示屏上显示“SMS sent”。
lcd.print("短信发送");
接收消息
在此功能中,信息被接收并打印在 LCD 显示屏上。
Serial1.println("AT+CNMI=2,2,0,0,0");
因此,要接收实时消息,使用上述 AT 命令。
收到 SMS 后,它包含一个在 serial1 端口可用的字符串,其中还包含其他数据,例如时间、日期等。因此,在出现第六个双引号 (“) 后,剩下的就是收到的 SMS。因此,其他信息被省略,接收到的消息的剩余信息显示在16x2 LCD 显示屏上。
while(1) { if(Serial1.av
使用 STM32 发送和接收短信的演示
1. 要发送短信,只需按左按钮。短信将发送到代码中输入的手机号码。
2. 要接收短信,只需按右按钮,短信就会被接收并显示在液晶显示屏上。
这就是将GSM 模块与 STM32F103C8 ARM微控制器连接起来的全部内容。
#include
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- 射频集成电路与系统 497页 67.0M 高清书签版
来源:下载中心
- 脉宽调制DC-DC全桥变换器的软开关技术(第二版)-阮新波
来源:下载中心
- 电子电路基础知识讲座
来源:大学堂
- PLC编程入门视频教程
来源:大学堂
- 基尔霍夫定律:支路、节点、回路和网孔
来源:电路图
- 叠加原理:概念及其求解过程
来源:电路图
推荐帖子 最新更新时间:2024-11-13 06:30
- 【正点原子阿尔法 IMX6ULL Linux开发板】学习使用SDK驱动LED灯
- 官方SDK简介 I.MX6ULL官方提供了裸机SDK包,使得学习上手册很。I.MX6ULL的SDK包在NXP官网下载 https://www.nxp.com/search?keyword=i.MX%25206ULL%2520SDK&start=0&category=soft
- lugl4313820ARM技术
- WinCE BSP中的预编译问题
- 在WinCE的BSP包中有如下预编译: IF BSP_NODISPLAY ! #include $(_TARGETPLATROOT)\\SRC\\DRIVERS\\AT91SAM9263Display\\AT91SAM9263GraphicChip.reg ENDIF BSP_
- Justin.YCWindowsCE
- 一本不错的书:UCOS ARM 移植要点详解
- 黄燕平 364页 主目录 UCOS ARM 移植要点详解............................................................................. 1 前言 ............................
- 冰人实时操作系统RTOS
- 【藏书阁】机床电气设备的维修
- 【藏书阁】机床电气设备的维修
- wzt工控电子
- 求助STM32F103的IrDA问题
- 菜鸟新学STM32,因为做IrDA项目需求,看到STM32F103内嵌IrDA-SIR的编码和解码单元,但是找不到IrDA-IN和IrDA-OUT的端口。是不是哪个复合功能的GPIO需要配置,还是就是USART的TX和RX引脚?是不是所有的USART都具有IrDA功能?请哪位大虾
- syu4498stm32/stm8
- 轿车车门关闭力自动测试评价系统开发
- 摘 要 :应用力与位移传感器和计算机技术,研制了轿车车门关闭力—位移自动测量系统。该系统能够同时采集关门过程中车门的关门力和位移。实测结果表明,该测量系统结构简单、操作方便,测量精度满足实际要求。 关键词 :车门;传感器;关闭力;位移;自动测试系统 随着汽车
- frozenviolet汽车电子
- LM3404恒流芯片
- Agilex M 系列 的消息发布有段时间了,没有看到具体管脚封装等等信息?
- 求quartus11的破解版啊
- LMX2594自动模式下频带是否可以跨越1GHZ
- 浅谈数字信号处理器
- 液晶屏驱动电路
- Wince内存泄漏问题探讨
- 大自然的搬运工-网络转发-电路原理
- 分享:PD快充技术重大更新,USB PD3.1发布,支持48V和240W输出
- CCS需要破解吗??
- stm32flash编程手册
- 嵌入式基础知识硬件篇—字节序
- ADI的GSM/GPRS手机射频芯片减少75%的元件
- 汽车 RF 前端主要设计技巧
- qiuzhu
- DM6446 EVM板 Uboot与内核烧写和启动步骤详细说明
- 怎样选择智能家居产品
- ARM中有UCOSII和没有操作系统两种情况下,性能怎么测试?
- 关于stm32的定时器2的复用问题
- 笔记本都进化成这样了,感觉好炫酷啊
- 使用 Infineon Technologies AG 的 IRPT2064A 的参考设计
- 使用 NXP Semiconductors 的 PC9S08PT60VLH 的参考设计
- Si4113-EVB,Si4113-BT PLL 频率合成器的评估板
- STM32F411RE
- AP2280-1 单通道压摆率控制负载开关的典型应用,适用于无输出放电的应用
- 使用 MCP19114 反激式 LED 驱动器的 DC/DC LED 驱动器系统
- MIC2097-2YMT限流配电开关典型应用
- EVAL-ADN2525-OPZ,用于 ADN2525 的光学评估套件 a 10 Gbps、有源反向端接、差分激光二极管驱动器
- ADA4000-1AUJZ-R7运算放大器建立时间电路的典型应用电路
- LTC1153,用于电机和感性负载的电子断路器