首页 > 其他分享 >基于STM32单片机智能家居声音人体防盗GSM短信报警系统设计

基于STM32单片机智能家居声音人体防盗GSM短信报警系统设计

时间:2024-09-18 18:51:37浏览次数:3  
标签:NVIC USART 智能家居 STM32 单片机 InitStructure Mode GPIO GSM

基于STM32单片机智能家居声音人体防盗GSM短信报警系统设计

1、系统功能介绍

  • 系统构成:

    • 本系统由STM32F103C8T6单片机核心板、蜂鸣器报警、声音检测传感器、红外避障传感器、GSM短信模块及电源组成。
  • 系统功能:

    • 1、如果检测到有声音,则系统通过GSM模块给手机发送报警信息。
    • 2、如果红外避障传感器检测到有人,则系统通过GSM模块给手机发送报警信息。
    • 3、报警信息发送间隔约35s,在间隔时间内任何报警触发都会被记录下来,35s后根据触发情况再次上报。
    • 4、在触发异常情况时,蜂鸣器会报警。传感器可以通过传感器上的电位器调节检测的灵敏度。
  • 可根据本篇文章完成毕业设计的开题报告、设计等

2、资料下载

3、系统电路介绍

3.1、STM32单片机最小系统设计

  • STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。

STM32的主要优点:

  • (1)使用ARM最新的、先进架构的Cortex-M3内核
  • (2) 优异的实时性能
  • (3) 杰出的功耗控制
  • (4) 出众及创新的外设
  • (5) 最大程度的集成整合
  • (6) 易于开发,可使产品快速将进入市场

单片机最小系统电路图如下图所示

实物图:

3.2、声音传感器模块电路设计

声音传感器说明

  • (1)可以检测周围环境的声音强度,使用注意:此传感器只能识别声音的有无(根据震动原理)不能识别声音的大小或者特定频率的声音。
  • (2)灵敏度可调(图中蓝色数字电位器调节)。
  • (3)工作电压3.3V-5V。
  • (4)输出形式 数字开关量输出(0和1高低电平)。

电路原理图:


  • 实物图:

3.3、LED信号指示灯电路设计

  • LED灯即发光二极管,它是半导体二极管的一种,可以把电能转化成光能。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。在电路中,电阻的作用是限流,保护LED灯。只要单片机的控制引脚拉低,则LED灯亮,否则,LED灯不亮。其具体电路原理图如下图所示。注意灯的颜色或者数量可变。

电路原理图

实物图

3.4、GSM短信 SIM800A模块电路设计

  • GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块具有发送SMS短信,语音通话,GPRS数据传输等基于GSM网络进行通信的所有基本功能。简单来讲,GSM模块加上键盘、显示屏和电池,就是一部手机。
  • SIM800A是一款两频GSM/GPRS模块,为SMT封装。其性能稳定,外观小巧,性价比高,能满足客户的多种需求。SIM800A工作频率为GSM/GPRS 900/1800MHz,可以低功耗实现语音、SMS和数据信息的传输。SIM800A尺寸为24243mm,能适用于各种紧凑型产品设计需求。

电路原理图:

  • 在这里插入图片描述

实物图:

3.5、蜂鸣器报警电路电路设计

  • 有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。本系统所采用的报警模块为5V有源蜂鸣器模块,电路中采用三极管9012来驱动,只要单片机控制引脚为高电平,蜂鸣器就会鸣叫报警,反之则不鸣叫,可以通过控制单片机引脚方波输出形式控制蜂鸣器的鸣叫方式。电阻为限流电阻,保护作用。

电路原理图:

实物图:

4、程序设计

4.1、LED指示灯初始化

void LED_Init(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);	 //使能PA,PD端口时钟
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 //端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 //根据设定参数初始化

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;				 //端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOC, &GPIO_InitStructure);					 //根据设定参数初始化
}

4.2、串口初始化

void uart_init(u32 bound){
  //GPIO端口设置
  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);	//使能USART1,GPIOA时钟
  USART_DeInit(USART1);  //复位串口1
  //USART1_TX   PA.9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9

  //USART1_RX	  PA.10
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA10

  //Usart1 NVIC 配置

  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;//抢占优先级3
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
  NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器

  //USART 初始化设置

  USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
  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_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断
  USART_Cmd(USART1, ENABLE);                    //使能串口 

}

标签:NVIC,USART,智能家居,STM32,单片机,InitStructure,Mode,GPIO,GSM
From: https://blog.csdn.net/qq_39020934/article/details/142287788

相关文章

  • STM32H723+DMA+ADC多通道 问题记录
    出现的问题1:ADC当开启扫描模式、DMA开始连续模式的时候,依然只能读出第一个通道的ADC的值,后面通道的AD值不更新。尝试过将buf固定在RAM_D3中也没有用。实际最后问题在于,用STM32CubeMX配置工具生成代码的时候,ADC初始化的函数放在了DMA初始化的前面导致的问题。出现的问题2:当开......
  • STM32 芯片启动过程
    目录一、前言二、STM32的启动模式三、STM32启动文件分析1、栈Stack2、堆Heap3、中断向量表Vectors3.1中断响应流程4、复位程序Reset_Handler5、中断服务函数6、用户堆栈初始化四、STM32启动流程分析1、初始化SP、PC及中断向量表2、设置系统时钟3、初始化堆栈......
  • SD NAND在STM32平台的存储性能提升
    在当今快速发展的嵌入式系统领域,STM32在嵌入式领域的地位市场非常显著,而MK米客方德的SDNAND闪存技术,以其卓越的耐用性、小巧的体积和高速的数据传输性能,在STM32平台上也展现出良好的适配性。 一、MK米客方德SDNAND技术亮点MK米客方德SDNAND是一种采用NAND闪存技术的贴片式存储......
  • 【Proteus仿真】基于51单片机的宠物喂食系统设计
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,两个按键调整重量阈值的大小,如果mpx4117压力传感器测重没超过阈值,则电机转动,表示投喂,蜂鸣器发出滴滴声,如果超过阈值,则全部停止;同时,再加三个按键,一个按键按下切换到闹钟设置模式,一个......
  • 【Proteus仿真】基于51单片机的L298N电机电速调节
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,L298N电机驱动连接电机,采用调节PWM占空比来控制电机速度转动。仿真图:编辑二、硬件资源基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。1、51单片机2、L298N......
  • 使用STM32实现按键控制LED
    以下是一个使用STM32实现按键控制LED的代码示例,详细说明了每个步骤和代码的功能。#include"stm32f4xx.h"voidGPIO_Configuration(void);voidEXTI_Configuration(void);voidLED_On(void);voidLED_Off(void);intmain(void){GPIO_Configuration();EXTI_C......
  • STM32智能小车--测距模块(舵机+HC_SR04超声波)
    大家好哇!我是湫湫,一个正在摸索嵌入式的普通大学生。进入正题,最近在做智能小车,想通过文章记录学习过程。本次文章主要使用 stm32F1C8T6实现小车测距。非常感谢大家的阅读,如果有不对的地方欢迎指正。目录一.实物图1.舵机2.HC_SR04:二.基本工作原理1.舵机工作原理2.......
  • STM32F407单片机编程入门(三)ADC详解及实战含源码
    文章目录一.概要二.STM32F407VET6单片机ADC外设特点三.STM32单片机ADC内部结构图1.ADC相关引脚说明2.ADC通道分类3.触发源4.转换周期5.电压转换计算6.更精确电压转换计算四.规则通道ADC采集信号流向1.单次转换模式2.连续转换模式五.CubeMX配置一个ADC采集例程六.CubeMX......
  • 蓝桥杯-STM32G431RBT6(串口)
    前言一、配置二、使用步骤1.串口发送代码逻辑效果展示2.串口接收单个字符代码逻辑中断回调函数3.串口接受字符串代码逻辑字符串函数中断回调函数声明代码开源前言一、配置二、使用步骤1.串口发送代码逻辑sprintf(tx_buf,"jinke\r\n"):这行代码使用......
  • 蓝桥杯—STM32G431RBT6按键的多方式使用(包含软件消抖方法精讲)从原理层面到实际应用(一)
    新建工程教程见http://t.csdnimg.cn/JySLg点亮LED教程见http://t.csdnimg.cn/Urlj5末尾含所有代码目录按键原理图一、按键使用需要解决的问题1.抖动   1.什么是抖动   2.抖动类型   3.如何去消除抖动FIRST.延时函数消抖(缺点:浪费CPU资源)SECOND.中......