【毕业设计】_基于STM32的定时智能插座开关(原理图+源码)

一.系统简述

本系统采用STM32微控制器作为核心控制单元,集成了温度监测与超限报警的功能。用户可以通过按键直接控制插座的开关,亦可通过蓝牙连接进行远程操作。此外,系统支持定时功能,能够根据预设时间自动切断插座电源,以避免潜在的安全隐患。通过按键,用户可以方便地设置定时参数、温度阈值,并立即开关插座。

在这里插入图片描述

二.仿真介绍

  1. 在仿真模式下,OLED显示屏上将实时展示当前数据。此时系统尚未启动定时功能,且温度处于安全范围内。

在这里插入图片描述

  1. 通过虚拟串口助手模拟蓝牙应用的数据传输,当仿真启动成功后,蓝牙设备将收到连接确认信息。以下是虚拟串口助手的连接状态界面:

在这里插入图片描述

  1. 按下设置键后,系统会逐步切换到下一个可以调整的选项,这些选项包括温度阈值、定时器的小时、分钟和秒,及插座的开关状态。此时,如果调整到插座开关并确认,则插座会被打开。此外,发送字符"A"和"B"到蓝牙端也可以直接控制插座状态。

在这里插入图片描述

在这里插入图片描述

  1. 通过调节DS18B20的红色按钮,可以实时更新检测到的温度。如果温度值超出预设的安全阈值,系统将发出报警提示。

在这里插入图片描述

  1. 按下设置键并选择定时时间参数,设定合适的时间后再次按下确认键以启动定时功能。在定时期间,插座正常工作;一旦定时时间到达,插座会自动关闭,并通过声音提醒用户。

在这里插入图片描述

三.程序设计

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "DS18B20.h"
#include "Timer.h"
#include "Serial.h"
#include "EXTERN-Key.h"
#include "Key.h"
uint16_t TimeNum;
int16_t limittemp;
uint8_t bian;
uint16_t shi;
uint16_t fen;
uint16_t miao;
uint16_t time;
uint8_t RxData;	
char  switchkey;
int main(void)
{
	OLED_Init();
	DS18B20_Init();
	Serial_Init();
	Externkey_Init();
	Key_Init();
	
	uint16_t Temp ;
	OLED_ShowString(1, 1, "Temp=");
	OLED_ShowString(3, 1, "time:00.00.00");
	OLED_ShowString(2, 1, "limittemp=");
	OLED_ShowString(4, 1, "switchkey=");
	Serial_SendString("ready!");
	
	while (1)
	{
		//Serial_SendString("ready!");
		if(Temp/10%100>=limittemp)
		{
			GPIO_SetBits(GPIOA, GPIO_Pin_5);
			GPIO_ResetBits(GPIOA, GPIO_Pin_4);
		}
		if(Temp/10%100<limittemp)
		{
			GPIO_SetBits(GPIOA, GPIO_Pin_4);
		}
		if (Serial_GetRxFlag() == 1)			//检查串口接收数据的标志位
		{
			RxData = Serial_GetRxData();		//获取串口接收的数据
			Serial_SendByte(RxData);			//串口将收到的数据回传回去,用于测试
					if (RxData =='A')			
				{
					GPIO_SetBits(GPIOA, GPIO_Pin_5);
				}
			
			if (RxData == 'B')			
				{
					 GPIO_ResetBits(GPIOA, GPIO_Pin_5);
				}
		}	
		if(TimeNum == 1)
		{
			GPIO_SetBits(GPIOA, GPIO_Pin_5);
			GPIO_ResetBits(GPIOA, GPIO_Pin_4);
			Delay_ms(100);
			GPIO_SetBits(GPIOA, GPIO_Pin_4);
		}
		if(bian == 0)
		{
				OLED_ShowNum(3, 12, (TimeNum % 3600) % 60, 2);
				OLED_ShowNum(3, 9,  (TimeNum  % 3600) / 60, 2);
				OLED_ShowNum(3, 6, TimeNum / 3600, 2);
				OLED_ShowNum(2, 11, limittemp, 2);
				OLED_ShowChar(4,11,switchkey);

				if(DS18B20_Reset()==0)
				{
						Temp = DS18B20_ReadTemp();
						if(flag==1)
						{
							OLED_ShowString(1, 1, "Temp=-");
							OLED_ShowString(1, 10, ".");
							OLED_ShowNum(1,7,Temp/10%100,3);
							OLED_ShowNum(1,11,Temp%10,1);
						}
						else
						{
							OLED_ShowString(1, 1, "Temp=+");
							OLED_ShowString(1, 10, ".");
							OLED_ShowNum(1,7,Temp/10%100,3);
							OLED_ShowNum(1,11,Temp%10,1);
						}
					}
				else
					{
						OLED_ShowString(1,1,"No   sensor  ");
					Delay_ms(5);
					}
				
		}
		if(bian == 1)
		{
		OLED_ShowString(2, 11, "  ");	
		Delay_ms(500);
		OLED_ShowNum(2, 11, limittemp, 2);
		Delay_ms(500);
		}
			
		if(bian == 2)
		{
			OLED_ShowString(3, 12, "  ");	
			Delay_ms(500);
			OLED_ShowNum(3, 12, miao, 2);
			Delay_ms(500);
		}
		if(bian == 3)
		{
			OLED_ShowString(3, 9, "  ");
			Delay_ms(500);			
			OLED_ShowNum(3, 9,fen, 2);
			Delay_ms(500);
		}
		if(bian == 4)
		{
			OLED_ShowString(3, 6, "  ");
			Delay_ms(500);
			OLED_ShowNum(3, 6, shi, 2);
			Delay_ms(500);
		}
		if(bian == 5)
		{
			OLED_ShowChar(4,11,switchkey);
			Delay_ms(500);
			OLED_ShowString(4, 11, " ");
			Delay_ms(500);
		}
		if(bian == 6)
		{
		if(switchkey =='k')
		GPIO_SetBits(GPIOA, GPIO_Pin_5);
		if(switchkey =='g')
		GPIO_ResetBits(GPIOA, GPIO_Pin_5);
			TimeNum =time ;
			shi = 0;
			fen = 0;
			miao = 0;
			bian = 0;
		}
	}
}


24-32f-61

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于STM32的智能蓝牙电子秤设计源码原理图等是一个将传统电子秤与蓝牙技术相结合的项目。该项目主要包括硬件设计和软件开发两个方面。 在硬件设计方面,项目采用STM32微控制器作为主控芯片,配合其它硬件模块,如称重传感器、LCD屏幕、蓝牙模块等,构成了完整的电子秤设备。在原理图设计上,需要根据硬件模块的特性和接口要求进行布线和连接,同时考虑到电源管理和保护等关键问题。在PCB设计中,需要根据原理图进行布板,使得各个模块可以良好地连接并协同工作。 在软件开发方面,项目主要涉及到嵌入式软件的编写和调试。首先,需要根据硬件设计的接口要求,编写STM32的驱动代码,使得其可以正确地控制和处理各个硬件模块。其次,需要编写相应的算法和逻辑,将传感器采集到的数据转化为实际的重量值,并通过LCD屏幕进行显示。最后,需要编写蓝牙通信的相关代码,将电子秤的数据通过蓝牙无线传输给其他设备。 总结起来,基于STM32的智能蓝牙电子秤设计涉及到硬件设计和软件开发两个方面。在硬件设计中,需要考虑模块的连接和布线,保证各个硬件模块的正常工作。在软件开发中,需要编写嵌入式软件的驱动代码、算法以及蓝牙通信代码。这样才能实现电子秤的功能,使其能够通过蓝牙无线传输数据给其他设备,实现智能化的功能。 ### 回答2: 基于STM32的智能蓝牙电子秤是一种集蓝牙功能和电子称功能于一体的智能设备。该设备基于STM32单片机进行设计和开发,结合了电子秤的重量测量功能和蓝牙通信功能,能够通过蓝牙将测得的重量数据传输到智能手机、平板电脑等移动设备上进行显示和存储。 在硬件设计方面,智能蓝牙电子秤采用了STM32系列单片机作为主控芯片,并使用AD模数转换器来进行重量数据的采集。设计中需要考虑到秤台的材质和结构,选用合适的传感器来实现重量的测量,同时还需要一个合适的显示模块来显示测量结果。蓝牙模块负责与外部设备进行无线通信,并传输测量数据。 在软件开发方面,首先需要编写固件程序来控制STM32的各个模块和进行重量数据的采集和处理。可以利用STM32提供的开发工具和库函数进行开发,编写相应的驱动程序和算法。同时,需要编写蓝牙通信相关的代码,实现与移动设备的连接和数据传输。在移动设备上,可以开发相应的应用程序,接收和解析蓝牙传输的数据,并进行显示和存储。 整个设计过程中,需要进行电路设计、PCB布局及焊接、固件编程、调试等多个环节。同时,也需要进行严格的测试和验证,确保设备的准确和可靠性。最终,设计完成后,还可以根据需求进行功能扩展,如添加温湿度传感器、数据存储等功能模块,实现更加智能化的应用。 总的来说,基于STM32的智能蓝牙电子秤设计需要一定的硬件和软件开发能力,同时需要充分考虑到电子秤和蓝牙通信的特性和要求,以确保设计的稳定性和可用性。 ### 回答3: 基于STM32的智能蓝牙电子秤设计是一种使用STM32微控制器开发的电子秤产品。该设计通过集成蓝牙模块,可以方便地将测量结果传输到移动设备,实现了智能化的功能。 在这个设计中,首先需要进行硬件的设计和连接。设计采用STM32微控制器作为处理器,利用其丰富的接口和功能,可以实现测量传感器的数据采集、数据处理和控制功能。除此之外,还需要添加蓝牙模块以实现与移动设备的通信。根据具体需求,还可以添加LCD显示屏、按键、背光等外设。 其次,需要编写嵌入式软件程序。在程序中,需要使用相应的编程语言,如C语言,来编写各种功能的代码。核心代码包括测量传感器的数据采集和处理、蓝牙模块的通信和数据传输等等。此外,还需要为用户提供界面友好的操作界面,使用户可以方便地操作和查看测量结果。 最后,整个设计需要进行测试和调试。测试应包括硬件和软件的功能测试,确保电子秤的测量结果准确可靠,并且蓝牙通信功能正常。同时,还需要进行性能测试,以确保电子秤在长时间使用和不同环境下的稳定性和可靠性。 总结而言,基于STM32的智能蓝牙电子秤设计是一种通过利用STM32微控制器和蓝牙模块实现的电子秤产品。通过硬件设计、嵌入式软件编程和测试调试等过程,可以实现测量结果的即时传输和智能化操作,为用户提供更加便捷和智能的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值