利用STM32F103VET6单片机和SIM900A发送报警短信
时间: 2024-05-13 16:16:29 浏览: 99
STM32F103+SIM900A的短信电话/向服务器发数据
5星 · 资源好评率100%
要利用STM32F103VET6单片机和SIM900A发送报警短信,需要进行以下步骤:
1. 准备材料:STM32F103VET6开发板、SIM900A模块、SIM卡、电源线、串口线等。
2. 将STM32F103VET6开发板与SIM900A模块连接。具体连接方式如下:
- 将STM32F103VET6开发板的GND引脚与SIM900A模块的GND引脚相连。
- 将STM32F103VET6开发板的3.3V引脚与SIM900A模块的VCC引脚相连。
- 将STM32F103VET6开发板的PA2引脚与SIM900A模块的TXD引脚相连。
- 将STM32F103VET6开发板的PA3引脚与SIM900A模块的RXD引脚相连。
- 将SIM卡插入SIM900A模块。
3. 编写程序。在程序中,需要初始化串口和SIM900A模块,然后发送AT指令进行连接。连接成功后,就可以通过AT指令发送短信。以下是一个简单的程序示例:
```
#include "stm32f10x.h"
#include "stdio.h"
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
void delay(u32 count)
{
u32 i=0;
for(i=0;i<count;i++);
}
void USART1_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
void Send_AT_Cmd(char* AT_Cmd)
{
while(*AT_Cmd)
{
USART_SendData(USART1, *AT_Cmd++);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
}
void Send_Msg(char* Phone_Num, char* Msg)
{
char AT_Cmd[100];
Send_AT_Cmd("AT\r\n");
delay(1000);
Send_AT_Cmd("AT+CMGF=1\r\n");
delay(1000);
sprintf(AT_Cmd, "AT+CMGS=\"%s\"\r\n", Phone_Num);
Send_AT_Cmd(AT_Cmd);
delay(1000);
Send_AT_Cmd(Msg);
delay(1000);
USART_SendData(USART1, 0x1A);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
int main(void)
{
USART1_Init();
Send_Msg("Phone_Number", "Alarm Message");
while(1)
{
}
}
```
4. 烧录程序。将编写好的程序烧录到STM32F103VET6单片机中。
5. 连接电源。连接电源线,将STM32F103VET6单片机和SIM900A模块供电。
6. 测试。测试程序是否能正常发送短信。如果成功发送短信,就说明连接和程序都正确。
阅读全文