首页 > 其他分享 >【Proteus仿真】【Arduino单片机】井盖安全检测装置设计

【Proteus仿真】【Arduino单片机】井盖安全检测装置设计

时间:2024-06-22 11:00:01浏览次数:25  
标签:cnt Arduino ctrl UART 井盖 SendString sys 单片机

文章目录


一、功能简介

本项目使用Proteus8仿真Arduino单片机控制器,使用LCD1602液晶显示模块、WIFI模块、蜂鸣器、LED按键、ADC、角度/可燃气检测传感器等。

主要功能:
系统运行后,LCD1602显示井盖切斜角和阈值、可燃气浓度和阈值、井盖和可燃气状态;如果井盖正常,WIFI传输井盖角度、可燃气浓度及状态信息到终端;如果井盖正常,可燃气超限,蜂鸣器报警,指示灯亮,同时WIFI传输报警信息到终端;如果井盖未断裂和丢失,井盖倾斜角大于阈值,蜂鸣器报警,同时WIFI传输报警信息;如果井盖断裂或丢失,蜂鸣器报警,报警指示灯亮,WIFI传输报警信息;可通过按键K1和K2修改井盖角度阈值,K3和K4键修改可燃气浓度阈值;


二、软件设计

/*
作者:嗨小易(QQ技术交流群:570487280)

*/


//系统数据显示
void sys_data_show(void)
{
	while(1)
	{
		//角度显示
		lcd1602_show_nums(3,0,sys_ctrl.angle,3,0);
		//燃气浓度显示
		lcd1602_show_nums(3,1,sys_ctrl.gas,2,0);

		//角度阈值显示
		lcd1602_show_nums(8,0,sys_ctrl.angleh,3,0);
		//燃气浓度阈值显示
		lcd1602_show_nums(7,1,sys_ctrl.gash,2,0);

		//井盖状态显示
		if(sys_ctrl.sta==0)lcd1602_show_string(14,0,"OK");
		else if(sys_ctrl.sta==1)lcd1602_show_string(14,0,"DL");
		else if(sys_ctrl.sta==2)lcd1602_show_string(14,0,"DS");	
		//燃气状态显示
		if(sys_ctrl.gassta==0)lcd1602_show_string(12,1,"    ");
		else lcd1602_show_string(12,1,"Gash");

		break;			
	}
}

//系统数据设置
void sys_data_set(void)
{
	u8 key=0;
	key=key_scan(0);
	//角度+
	if(key==KEY1_PRESS)
	{
		sys_ctrl.angleh++;
		if(sys_ctrl.angleh>180)sys_ctrl.angleh=0;
	}
	//角度-
	else if(key==KEY2_PRESS)
	{	
		sys_ctrl.angleh--;
		if(sys_ctrl.angleh<0)sys_ctrl.angleh=180;			
	}
	//燃气+
	else if(key==KEY3_PRESS)
	{
		sys_ctrl.gash++;
		if(sys_ctrl.gash>99)sys_ctrl.gash=0;
	}
	//燃气-
	else if(key==KEY4_PRESS)
	{	
		sys_ctrl.gash--;
		if(sys_ctrl.gash<0)sys_ctrl.gash=99;			
	}
}

//系统功能控制
void sys_fun_ctrl(void)
{
	static u8 cnt[3];
	u8 buf[4];

	//如果井盖正常
	if(sys_ctrl.sta==0)
	{
		//如果井盖角度倾斜高于阈值和可燃气超限,报警
		if(sys_ctrl.angle>sys_ctrl.angleh || sys_ctrl.gassta==1)
			beep_alarm(1,1000);	
		
		//如果井盖角度倾斜高于阈值,报警
		if(sys_ctrl.angle>sys_ctrl.angleh)
		{
			cnt[0]++;
			if(cnt[0]%SPEED==0)
			{
				UART_SendString("\r\n井盖倾斜\r\n");	
			}
		}
		else
		{
			LED_DL=1;LED_DS=1;
			cnt[0]++;
			if(cnt[0]%SPEED==0)
			{
				UART_SendString("\r\n井盖OK\r\n");	
			}	
		}

		//如果可燃气超限
		if(sys_ctrl.gas>sys_ctrl.gash)sys_ctrl.gassta=1;
		else sys_ctrl.gassta=0;
		if(sys_ctrl.gassta==1)
		{
			LED_KRQ=0;
			cnt[1]++;
			if(cnt[1]%SPEED==0)
			{
				UART_SendString("\r\n可燃气超限...\r\n");	
			}				
		}
		//如果天然气正常
		else
		{
			LED_KRQ=1;
			cnt[1]++;
			if(cnt[1]%SPEED==0)
			{
				UART_SendString("\r\n可燃气OK\r\n");	
			}			
		}

		//WIFI传输数据,角度、可燃气
		cnt[2]++;
		if(cnt[2]%SPEED==0)
		{
			UART_SendString("\r\n井盖角度:");
			buf[0]=sys_ctrl.angle/100+0x30;
			buf[1]=sys_ctrl.angle%100/10+0x30;
			buf[2]=sys_ctrl.angle%100%10+0x30;
			buf[3]='\0';
			UART_SendString(buf);
			UART_SendString("\r\n");
	
			UART_SendString("可燃气浓度:");
			buf[0]=sys_ctrl.gas/10+0x30;
			buf[1]=sys_ctrl.gas%10+0x30;
			buf[2]='\0';
			UART_SendString(buf);
			UART_SendString("\r\n");		
		}
	}
	//如果井盖不正常正常,断裂或丢失
	else
	{
		beep_alarm(1,1000);
		//如果井盖断裂,指示灯报警
		if(sys_ctrl.sta==1)
		{
			LED_DL=0;LED_DS=1;
			cnt[0]++;
			if(cnt[0]%SPEED==0)
			{
				UART_SendString("\r\n井盖断裂...\r\n");	
			}	
		}
		//如果井盖丢失,指示灯报警
		if(sys_ctrl.sta==2)	
		{
			LED_DL=1;LED_DS=0;
			cnt[0]++;
			if(cnt[0]%SPEED==0)
			{
				UART_SendString("\r\n井盖丢失...\r\n");	
			}			
		}
	}	
}



三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

标签:cnt,Arduino,ctrl,UART,井盖,SendString,sys,单片机
From: https://blog.csdn.net/Hello_Muyi/article/details/139808234

相关文章

  • 【单片机毕业设计选题24019】-基于STM32的安防监测灭火系统
    系统功能:1.水泵喷水灭火功能:当火焰传感器监测到火焰时,蜂鸣器报警,水泵工作实现灭火。2.风扇功能:当烟雾传感器检测到CO或温度传感器检测到温度超过阈值时,蜂鸣器报警,启动风扇进行驱散烟雾或降温。3.防盗功能介绍:采用红外传感器,当有人靠近时就会报警。4.通过蓝牙实现在......
  • 【单片机毕业设计选题24018】-基于STM32和阿里云的农业大棚系统
    系统功能:系统分为手动和自动模式,上电默认为自动模式,自动模式下系统根据采集到的传感器值自动控制,温度过低后自动开启加热,湿度过高后自动开启通风,光照过低后自动开启补光,水位过低后自动开启水泵补水。手动模式下可以手动控制加热/除湿/补光/补水。主要功能模块原理图:......
  • 【花雕学编程】Arduino FOC 之结合速度环的FOC算法
    Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用ArduinoIDE(集成开发环境)来编写、......
  • 【雕爷学编程】Arduino BLDC 之简单的四轴无人机姿态控制
    Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用ArduinoIDE(集成开发环境)来编写、......
  • STM32单片机SPI通信详解
    文章目录1.SPI通信概述2.硬件电路3.移位示意图4.SPI时序基本单元5.SPI时序6.Flash操作注意事项7.SPI外设简介8.SPI框图9.SPI基本结构10. 主模式全双工连续传输11. 非连续传输12. 软件/硬件波形对比13.代码示例1.SPI通信概述SPI(SerialPeriphera......
  • Proteus仿真实例_基于STM32单片机的公园长椅系统(仿真文件+程序)24-32f-10
    一.系统概述本次设计的公园座椅是以STM32单片机作为核心控制器,可以控制音乐播放(通过虚拟串口调试助手模拟即可),可以完成对雨滴的采集,当检测到雨滴的时候控制继电器闭合模拟遮雨,可以控制心率传感器完成对心率采集,当心率超过闹值则控制蜂鸣器报警,设计有温度采集功能,当温度低......
  • Arduino平台软硬件原理及使用——电位器模块的使用
    文章目录一、电位器工作原理二、电位器与滑动变阻器的异同三、电位器模块在Arduino中的使用一、电位器工作原理上图为市面上常见的电位器元件实物图,其结构及封装根据不同的应用场景也有着不同,但其原理及本质基本一致。电位器是具有三个引出端、阻值可按某种变化规......
  • 基于单片机的太阳能智能充电器、储能器设计系统
    **单片机设计介绍,基于单片机的太阳能智能充电器、储能器设计系统文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机的太阳能智能充电器、储能器设计系统概要如下:一、系统概述本系统以单片机为核心,结合太阳......
  • 基于单片机 K 型热电偶冷端补偿的温度检测及报警装置设计
    **单片机设计介绍,基于单片机K型热电偶冷端补偿的温度检测及报警装置设计文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机K型热电偶冷端补偿的温度检测及报警装置设计概要如下:一、设计背景与意义随着工......
  • 【单片机毕业设计选题24017】-基于STM32的禽舍环境监测控制系统(蓝牙版)
    系统功能:系统分为主机端和从机端,主机端主动向从机端发送信息和命令,从机端收到主机端的信息后回复温湿度氨气浓度和光照强度等信息。主要功能模块原理图:电源时钟烧录接口:单片机和按键输入电路:主机部分电路:从机部分电路:资料获取地址主从机部分代码:初......