基于stm32单片机的手机app智能遥控展示柜系统设计
  • 0、毕业设计选题原则说明(重点)
  • 1、项目简介
  • 1.1 系统构成
  • 1.2 系统功能
  • 1.3 演示视频
  • 2、部分电路设计
  • 2.1 STM32单片机核心板电路设计
  • 2.2 RC522 RFID门禁电路设计
  • 2.3 ESP8266 WIFI电路设计
  • 3.4、WS2812 RGB灯控制电路设计
  • 3、部分代码展示
  • 3.1 DHT11温湿度传感器初始化
  • 3.2 RC522模块初始化
  • 3.3 WS2812颜色控制代码
  • 4、资料下载


0、毕业设计选题原则说明(重点)

  • 选题之前,同学们要弄明白一件事情,做毕业设计是干什么用的!
  • 这里我告诉大家,毕业设计对于你来说,不是让你去搞研究,掌握运用所学知识的,也不是让你去比谁做的毕业设计多么牛逼,多么厉害。
  • 说白点,它的作用就是一个,让你顺利毕业,能够拿到学位证,毕业证而已!!!
  • 当你明白这一点后,作毕业设计的要求就是在满足老师的要求后,越简单越好,这样不但容易去做,而且你自己也容易去理解,掌握,同样也能花最少的钱!!!
  • 满足老师的要求,这个没办法,毕竟他是决定你是否能通过答辩的人。
  • 每年都有很多同学找到我的时候,后悔当初为什么要把功能写的那么复杂,后悔没有提前找我咨询一下!所以在这里提醒同学们,提交开题报告之前一定要多想想,咨询下以往的学长学姐,不要自己随便写一堆提交上去!!!
  • 大家找不到学长学姐的话,也可以找我咨询,我可以给大家一些建议
  • 点击此处即可咨询

1、项目简介

1.1 系统构成

  • 该系统以Stm32f103c8t6为核心模块,采用手机APP(使用WIFI)端实现对展品柜的远程监控,可以实现展品柜内灯光和环境温湿度的采集和调节,同时展品柜具有旋转和语音播报功能,使参观者更好的了解产品和厂家的信息;展品柜使用基于RFID的门禁技术,实现刷卡开门,确保展品安全。

1.2 系统功能

  • 功能介绍:
  • 1.展会管理员通过 RFID刷卡开门,确保展品安全;
  • 2.通过温湿度传感器对展品柜内部的环境进行检测,当温度过高打开风扇,当湿度过低时,开启雾化块进行调节;(风扇,雾化使用继电器,用户可以自行外接设备)
  • 3.根据用户需求选择是否开启氛围(RGB灯)灯或开启旋转展台,并且可以通过手机APP端对氛围灯的颜色进行调节;
  • 4.当有人靠近参观时(人体感应开关),加强光的亮度,打开旋转展台,当没有人参观时,降低光的亮度和停止旋转,节约能源;
  • 5.使用语音播报模块播报展品的相关信息;
  • 6.手机端可以实时查看展品柜的相关数据,包括温湿度,光的颜色和展柜的关闭情况,并可以远程调节;

1.3 演示视频

2、部分电路设计

2.1 STM32单片机核心板电路设计

  • 51单片机最小系统是确保51系列单片机能够正常工作的最基本电路配置,通常包括电源电路、晶振电路、复位电路。这些组件共同为单片机提供稳定的工作环境和必要的时钟信号,确保单片机能够准确地执行程序指令。
  • 电源电路:为单片机提供稳定的工作电压,通常采用5V电源供电。电源电路的设计要保证单片机在不同工作条件下都能获得稳定的电压输出,以确保单片机的正常工作。
  • 晶振电路:提供单片机工作所需的时钟信号。晶振电路通过晶振和电容组成,为单片机提供稳定的工作脉冲,确保单片机的定时和同步需求。
  • 复位电路:实现单片机的复位功能,类似于电脑的重启。复位电路通过电容和电阻的配合,实现单片机在上电启动时的自动复位,以及通过手动按键实现复位功能,保证单片机在程序跑飞或异常情况下能够重新开始执行程序。
  • 单片机最小系统原理图如下图所示:
  • 基于stm32单片机的手机app智能遥控展示柜系统设计_课程设计

2.2 RC522 RFID门禁电路设计

  • RFID-RC522模块是一种低成本、高性价比的RFID读写模块。它具有高精度、快速读取等特点,广泛应用于门禁系统、智能卡管理、物流追踪等领域。
  • 特点如下:
  • 高精度:RFID-RC522模块采用射频感应技术进行信号传输和读写,具有高精度、稳定性强等优点。
  • 快速读取:RFID-RC522模块读取速度快,一般只需0.1秒左右就可以完成读取操作。
  • 支持多种协议:RFID-RC522模块支持ISO14443A/B、FeliCa等多种RFID协议,可满足不同应用场合的需求。
  • 低功耗:RFID-RC522模块功耗低,工作电流为13-26mA,待机电流为10A。
  • 接口简单:RFID-RC522模块采用SPI接口进行通信,模块上的引脚有7个,具有很好的兼容性。
  • 支持多种开发语言:RFID-RC522模块支持多种开发语言,如C++、Python等,方便开发者进行二次开发。
  • 其具体电路原理图如下图所示:
  • 实物图:

2.3 ESP8266 WIFI电路设计

  • ESP-01是一种流行的低成本、小型的Wi-Fi模块,由Espressif Systems开发和制造。它是ESP8266系列的一部分,内置了WiFi芯片和一个可编程的微控制器。ESP-01模块提供了连接到互联网的能力,可以用于物联网、智能家居、传感器网络等项目。
  • 其具体电路原理图如下图所示:
  • 基于stm32单片机的手机app智能遥控展示柜系统设计_手机app_02

  • 实物图如下:
  • 基于stm32单片机的手机app智能遥控展示柜系统设计_stm32_03

3.4、WS2812 RGB灯控制电路设计

  • WS2812是一种智能控制LED灯源,集成了控制电路和RGB芯片在一个5050封装组件中。
  • WS2812是一款集控制电路与发光电路于一体的智能外控LED光源,每个元件即为一个像素点,内部包含了智能数字接口数据锁存信号整形放大驱动电路,以及高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。它支持256级亮度显示和16777216种颜色的显示,采用单线通信方式,刷新速率为30帧/秒,级联数不小于1024,工作温度范围为-20°C~85°C。
  • 电路图
  • 基于stm32单片机的手机app智能遥控展示柜系统设计_课程设计_04

  • 实物图
  • 基于stm32单片机的手机app智能遥控展示柜系统设计_单片机_05

3、部分代码展示

3.1 DHT11温湿度传感器初始化

u8 DHT11_Init(void)
{	 
 	GPIO_InitTypeDef  GPIO_InitStructure;
 	
 	RCC_APB2PeriphClockCmd(DHT11_GPIO_RCC, ENABLE);	 //使能PG端口时钟
	
 	GPIO_InitStructure.GPIO_Pin = DHT11_GPIO_PIN;				 
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 	GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStructure);				 //初始化IO口
 	GPIO_SetBits(DHT11_GPIO_PORT,DHT11_GPIO_PIN);						 
			    
	DHT11_Rst();  //复位DHT11
	return DHT11_Check();//等待DHT11的回应
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

3.2 RC522模块初始化

static void Rc522IoInit(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //使能PA端口时钟

  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);					 //根据设定参数初始化

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //使能PB端口时钟

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

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PORTB时钟

  GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_12;//
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOA15
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

3.3 WS2812颜色控制代码

void WS2812SetColor(WS2812Color color, WS2812Light WS2812Light)
{
  switch(color)
	{
		case WS2812ColorBlack: WS2812_send(rgb0,7); WS2812_CTRL_PIN = 0; break;
		case WS2812ColorRed: WS2812_send(&rgb_Red[WS2812Light],7); break;
		case WS2812ColorOrange: WS2812_send(&rgb_Orange[WS2812Light],7); break;
		case WS2812ColorYellow: WS2812_send(&rgb_Yellow[WS2812Light],7); break;
		case WS2812ColorGreen: WS2812_send(&rgb_Green[WS2812Light],7); break;
		case WS2812ColorChing: WS2812_send(&rgb_Ching[WS2812Light],7); break;
		case WS2812ColorBlue: WS2812_send(&rgb_Blue[WS2812Light],7); break;
		case WS2812ColorPurple: WS2812_send(&rgb_Purple[WS2812Light],7); break;
	}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.