节能型智能化教室状态实时显示系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作品名称:节能型智能化教室状态实时显示系统
C.当前国内外同类课题研究水平概述
说明:1.申报者可根据作品类别和情况填写;
2.填写此栏有助于评审。

D.推荐者情况及对作品的说明
说明: 1.由推荐者本人填写;
2.推荐者必须具有高级专业技术职称,并是与申报作品相同或相关领域的专家学者或专业技术人员(教研组集体)推荐亦可;
3.推荐者填写此部分,即视为同意推荐;
4.推荐者所在单位盖章仅被视为对推荐者身份的确认。

E.省评审委员会评审意见
节能型智能化教室状态实时显示系统说明书及原理介绍
作品整体模型图片
目录
一、主要功能 (17)
二、功能详细说明 (17)
三、实际应用价值 (18)
四、作品原理介绍 (19)
1.光控模块 (19)
2.红外灯控模块 (21)
3.人数检测模块 (26)
五、制作作品所用软件 (32)
六、参考文献 (32)
附录Ⅰ: (33)
作品说明书及原理介绍
一、主要功能
1.检测教室人数及状态并实时进行数据共享,方便学生及时寻找合适的自习教室。

2.通过室内光照强度控制室内灯的开与关,用人体红外感应来检测室内是否有人,从而来控制教室内总电源的开关。

3. 通过红外遥控器控制多媒体上方灯。

二、功能详细说明
1.自习教室查询:
随着学校学习氛围的提高,自习的同学越来越多,但是可供自习的教室却是有限的,本作品其中一大功能就是为自习的同学提供方便。

我们将教室内的人数及教室是否有课的状态通过相应的检测之后,把检测的数据信息保存并通过无线蓝牙设备上传至相应服务器将数据进行储存,学生一方面可以通过教学楼电子屏,另一方面可以通过微信公共平台或超级课程表等手机客户端,实时查询可上自习的教室以及该教室剩余的座位数目,从而可以快速找到合适的自习教室;
2.节能:
(1)、教室灯光智能控制节能:我们发现,由于学生环保意识薄弱,导致
现在教室的灯大部分都是从早上打开之后一直到晚上都是开着的,其实白天大部分时间室内光照强度是完全够的,由于大学教室众多,这样带来的损失是巨大的。

所以我们设计了一个光强度控制的灯,当室内光照强度达到一定值(该值通过取样调查获得最佳舒适值)的时候自动关闭灯;
(2)、自动断电节能:调查发现,很多时候教室没有人而里边的灯或风扇却是开着的,这是和我们的的节能环保思想格格不入的。

为了解决这个问题,我们的的作品中设计加入了了智能断电模块,当检测到室内没人时,通过继电器关断教室电源,同时给人数清零减少误差积累,并达到节能的目的。

3.方便老师控制灯的开关:
许多教室灯光控制的按钮只在进门的地方有。

而且好多传统的教室的黑板和多媒体上方的灯是由同一个开关控制,而很多情况下由于黑板的反光和多媒体显示的清晰度问题老师需要随时转换控制黑板和多媒体上方的灯,为了节约上课时间,减少因为总是来回走动而造成的很多不必要的麻烦,方便老师对灯的控制,我们设计红外遥控来控制灯。

三、实际应用价值
1.随着物联网技术的的发展,智能化的推进是必然的趋势,本作品通过简单的设计,使得学生查询自习教室更加智能化,老师使用教室更加智能化。

其潜在价值和实际简直显而易见。

2.节能一直是社会的热门话题,由于学校教学区众多,教室基数大,该产品在节能上能带来巨大的经济利益。

经粗略计算,该产品平均一天每个教室能
省下3到4度电。

我们以1000个教室来计算,每度电0.55元,那么一天就能带来1650-2200元的收益。

可见该产品带来的经济效益之高,有很好的市场价值与实际价值.
3、该作品的成本比较低,带来收益高,属于低成本的科技发明制作,可大量生产用于实际,拥有广阔的市场前景。

四、作品原理介绍
1.光控模块
本作品采用GY-30光控模块(如下图3-1),该模块是通过测量教室内部的光强进而智能的控制教室的灯光的开关的一个模块。

他是利用一个光强度感应模块检测室内光照强度,在程序上设置一个临界值,当室内光照强度达到这个值的时候通过程序控制让室内的灯自动熄灭。

从而达到方便省电的目的。

图3-1(光控模块实物图)
其技术原理如下:
(1)理论设计计算
光强度计算和I2C总线接口,包括下列寄存器:数据寄存器→光强度数据寄存。

初始值是:“0000_0000_0000_0000”。

测量时间寄存器→时间测量数据寄存。

初始值是:“0100_0101”。

OSC 内部振荡器(时钟频率典型值:320kHz)。

该时钟为内部逻辑时钟,光强度计算理论技术流程图(如下图3-2)。

图3-2(流程图)
(2)工作原理及性能分析
用一个光强度感应模块如图一所示,检测室内光照强度,然后再在程序上设置一个临界值,当室内光照强度达到这个值的时候让室内的灯自动熄灭,当光强低于某个值时灯继续通电工作,其工作原理图如下3-3。

图3-3(工作原理图)
PD :接近人眼反应的光敏二极管。

(Photo diode with approximately human eye response.)
AMP :集成运算放大器:将PD电流转换为PD电压。

ADC :模数转换获取16位数字数据。

Logic + IC Interface(逻辑+ IC界面)
2.红外灯控模块
该模块主要是通过红外遥控(用vs1838红外接收头)控制黑板和多媒体上方灯(如模拟教室多媒体实物图3-4),这样可以方便解决老师在上课时候来回走动关灯以及灯1、灯2不能单独控制的麻烦。

图3-4(实物图)
红外遥控系统主要有发射和接收两大部分组成:
红外接收部分(vs1838)
图3-5(红外接收头实物图)
红外接收头控制原理:
红外接收头一般是接收、放大、解调一体头,一般红外信号经接收头解调
后,数据“0”和“1”的区别通常体现在高低电平的时间长短或信号周期上,单片机解码时,通常将接收头输出脚连接到单片机的外部中断,结合定时器判断外部中断间隔的时间从而获取数据。

红外接收电路原理图如下。

图3-6(电路原理框图)
图3-7(红外测试波形图)
图3-8(红外应用电路图)
图3-9(红外遥控器实物图)
工作原理:
通用的遥控器主要包括键盘矩阵、编码调制、红外发射管;接收部分包括光、电信号的转换以及放大、解调、解码电路。

我们采用的MP3红外遥控器的发射,就是将相应按键所对应的控制指令和系统码(由0 和1 组成的序列),调制在32~56kHz 范围内的载波上,然后经放大、驱动红外发射管将信号发射出去。

我们采用的是WD6122 芯片,WD6122 所发射的一帧码含有一个引导码,16
位的用户编码和8位的键数据码、键数据码的反码也同。

码型结构如下(图3-10):
图3-10(红外工作原理图)
引导码由一个9ms的载波波形和4.5ms的关断时间构成,它作为随后发射的码的引导,这样当接收系统是由微处理器构成的时候,能更有效地处理码的接收与检测及其它各项控制之间的时序关系。

编码采用脉冲位置调制方式(PWM)。

利用脉冲之间的时间间隔来区分“0”和“1”。

每次8位的码被传送之后,它们的反码也被传送,减少了系统的误码率。

WD6122 的主要输出波形:
图3-11(红外输出波形图)
主要控制步骤:
图3-12(红外接收流程图)
3.人数检测模块
我们设计四个红外对管电路,分别安装在四个座位进出口,每个电路有两对红外对管,通过两对红外对管被遮光的先后检测进或者出 (如图3-13) 。

将四个红外对管电路检测的值之和及多媒体开关状态显示到液晶屏幕上(如图3-14)。

图3-13(红外对管实物图) 图3-14(显示屏实物图) 之所以把对管安装到座位进出口而不在教室大门入口,是因为门比较宽而红外对管计数在多人并排进入时误差较大。

我们把对管安装到相对窄的座位进出口可减少多人并排进入造成的误差。

红外对管工作原理
红外线接收管是将红外线光信号变成电信号的半导体器件,它的核心部件是一个特殊材料的PN 结,和普通二极管相比,在结构上采取了大的改变,红外线接收管为了更多更大面积的接受入射光线,PN 结面积尽量做的比较大,电极面积尽量减小,而且PN 结的结深很浅,一般小于1微米。

红外线接收二极管是在反向电压作用之下工作的。

没有光照时,反向电流很小(一般小于0.1微安),称为暗电流。

当有红外线光照时,携带能量的红外线光子进入PN 结后,把能量传给共价键上的束缚电子,使部分电子挣脱共价键,从而产生电子---空穴对(简称:光生载流子)。

它们在反向电压作用下参加漂移运动,使反向电流明显变大,光的强度越大,反向电流也越大。

这种特性称为“光电导”。

红外线接收二极管
在一般照度的光线照射下,所产生的电流叫光电流。

如果在外电路上接上负载,负载上就获得了电信号,而且这个电信号随着光的变化而相应变化。

红外对管电路
图3-15(红外对管电路图)
4.教室状态显示模块
上面提到多人并排进入时对管检测误差问题,本模块出发点是为方便上自习的人快速找到教室,出现多人并排进入的教室通常是上课的教室,所以我们设计一个检测按键(实物图如图3-16所示),用以检测多媒体的开关状态,如果多媒体被打开,让液晶显示“教室上课中”,否则显示“教室可自习”并显示出教室人数。

这样即使这个教室的人数检测不是很精确却不会影响学生快速找到教室。

并通过无线蓝牙的数据传输功能,把检测出来的数据传输到电脑保存到数据库里(如校园网数据库)并显示到大厅的显示屏上,该作品以5110显示屏模拟大厅显示屏。

同时学生可以通过校园网相关模块、校园小微或者是超级课程表等相关软件进行查询,了解教室的实时状态。

此模块包含的硬件模块主要有诺基亚型5110显示屏(如图3-17),无线蓝牙模块,当然到后期运用于实际的时候会根据成本及节能和精确度的要求来选择使用led点阵显示或是oled显示屏或是其它显示屏等。

诺基亚型5110显示屏的原理图如图3-4-2,根据其原理图找到控制它的引脚,然后利用杜邦线(在此有导线的作用)将其与AT89C52主控芯片一相连,并通过对5110显示屏的初始化及数据传输,显示等程序设计来控制5110显示屏的显示。

从而将其它数据采集模块(如红外对管人数采集模块,人体红外感应模块等)采集的数据进行一一的显示在5110的显示屏上,其实物图如图3-18。

无线蓝牙模块采用的是一种扩展窄带信号频谱的数字编码技术,通过编码运算增加了发送比特的数量,扩大了使用的带宽。

蓝牙使用跳频方式来扩展频谱。

跳频扩频使得带宽上信号的功率谱密度降低,从而大大提高了系统抗电磁干扰、抗串话干扰的能力,使得蓝牙的无线数据传输更加可靠。

图3-16
图3-17
图3-18
5.人体检测模块
在人数检测模块中教室会使检测不那么精确,而这种误差还会积累,所以为了减少这种误差积累,我们设计了人体红外传感器用来检测室内是否有人,如果没人就把人数清零。

同时通过继电器关闭教室电源开关,既达到节能的目的又能减少红外对管计数导致的误差积累。

HC-SR501人体红外感应模块
图3-19(人体红外感应模块实物图)
工作原理:
人体都有恒定的体温,一般在37度,所以会发出特定波长10UM左右的红外线,被动式红外探头就是靠探测人体发射的10UM左右的红外线而进行工作的。

人体发射的10UM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。

红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。

6.控制程序
参考附录Ⅰ
五、制作作品所用软件
MATLAB、kile4、Protuse等。

六、参考文献
1、李泉溪《单片机原理与应用技术实例仿真》
------------------------------------------北京航空航天大学出版社
2、谭浩强《C语言程序设计(第三版)》
--------------------------------------------------清华大学出版社
3、谭晖《nRF24AP2单片ANT超低功耗无线网络原理及高级应用》
------------------------------------------北京航空航天大学出版社
4、周润景,张丽敏,王伟《Altium Designer原理图与PCB设计》
--------------------------------------------------电子工业出版社
附录Ⅰ:
66.h文件代码
#ifndef _66_H
#define _66_H
//以下是函数声明
#define uchar unsigned char
#define uint unsigned int
extern unsigned char ly_lhj[4]; //保存NEC的四个字节数据
extern void find(uchar a,uchar b);
extern uchar a,b,x;
extern void display();
extern void init();
#endif
66.c文件代码
#include "reg51.h"
#include "function.h"
sbit hwx=P3^2; //红外接收数据引脚
sbit SMG_q = P1^0; //定义数码管阳级控制脚(千位)
sbit SMG_b = P1^1; //定义数码管阳级控制脚(百位)
sbit SMG_s = P1^2; //定义数码管阳级控制脚(十位)
sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)
/********数据定义*************************************************************/
code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x8c,0xc6,0xa1,0x86,0x8e}; //共阳数码管段值表 0-9 a-f unsigned char l_posit=0; //显示位置
extern unsigned char ly_disdate[4]={0,0,0,0}; //显示缓冲
unsigned char ly_lhj[4]; //保存NEC的四个字节数据
extern bit ly_flag=1; //成功接收标志
#define uchar unsigned char
uchar a,b,x;
void find(uchar a,uchar b);
//函数声明:
void display();//定义显示函数,直接显示缓冲区数值
int jiaohuan(int numc);
void init(void)
{
EA=1; //首先开启总中断
EX0=1; //开启外部中断1,红外接收数据引脚
00000000000000000000
IT0=1; //设置成下降沿触发方式
00000000000000000000
TMOD=0X10;
}
/***********外中断1入口函数,P33引脚,红外线接收IC数据脚**************************/
void hongwai(void) interrupt 0
{
unsigned char i,ia;
/**************开始判断是否为NEC波形引导码的前9MS和后4.5MS******************************/
TL1=0;
TH1=0; //定时/计数器1初始值
TR1=1; //定时器以12M晶振12分频计数,即1us计数
while(!hwx);
TR1=0; //信号翻转停止计数
if(TH1<30||TH1>40) //NEC引导码前9MS,计数约9000,TH1约等于35,给个误差值,用30-40之间来判断
return;
TH1=0; //定时/计数器1初始值
TR1=1;
while(hwx){
delay(1);
if(TH1>22) //NEC引导码引导码的后4。

5MS,计数约4500,TH1约等于17
return;
}
TR1=0;
if(TH1<12) //NEC引导码引导码的后4。

5MS,计数约4500,TH1约等于17
return;
/***********开始接收四个字节内容**************************************/
for(i=0;i<4;i++){
for(ia=0;ia<8;ia++){
while(!hwx); //低电平开始,不处理只等待高电平
TH1=0;
TR1=1; //高电平开始,启动计数
while(hwx){
delay(1);
if(TH1>15)
return;
}
TR1=0;
//高电平结束,判断数据1或0向变量移入
ly_lhj[i]>>=1; //数据由高位移入低位
if(TH1>4) //时间量TH1高于4,即高于1MS判断为1
ly_lhj[i]|=0x80;
}
}
ly_flag=1; //接收成功
TF1=0;
}
//显示函数,参数为显示内容
void display()
{
if(ly_flag)
{ //接收成功处理显示缓冲,以16进制显示
ly_flag=0;
ly_disdate[0]=ly_lhj[0]/16;
ly_disdate[1]=ly_lhj[0]%16;
ly_disdate[2]=ly_lhj[2]/16;
ly_disdate[3]=ly_lhj[2]%16;
}
find(ly_disdate[2],ly_disdate[3]);
l_posit++; //每调用一次将轮流显示一位
if(l_posit>3)
l_posit=0;
}
jiaohuan(int numc)
{
if(ly_disdate[2]==0&&x==0xf9)
{P2=0;
numc++;
}
return numc;
}
void find(uchar a,uchar b)
{
switch(a)
{
case 0:switch(b)
{
case 12:x=table[1];break;
case 8:x=table[4];break;
default:break;
}break;
case 1:switch(b)
{
case 6:x=table[0];break;
case 8:x=table[2];break;
case 12:x=table[5];break;
default:break;
}break;
case 5:switch(b)
{
case 14:x=table[3];break;
case 10:x=table[6];break;
case 2:x=table[8];break;
default:break;
}break;
case 4:switch(b)
{
case 2:x=table[7];break;
case 10:x=table[9];break;
default:break;
}break;
default:break;
}
}
Hw.h文件代码
#ifndef _HW_H
#define _HW_H
extern int mains();
#endif
Hw.c文件代码
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit input2=P0^0;
sbit output2=P0^1;
sbit input3=P0^2;
sbit output3=P0^3;
sbit input5=P0^4;
sbit output5=P0^5;
sbit input6=P0^6;
sbit output6=P0^7;
sbit ji=P3^6;
sbit dat1=P2^6;
sbit dat2=P2^7;
sbit led=P1^5;
sbit led1=P1^6;
uchar
in2=0,in3=0,in5=0,in6=0,flag2=0,flag3=0,flag5=0,flag6=0,out2=0,out3=0,out5=0,out6=0,k2=0,k3 =0,k5=0,k6=0,h2,h3,h5,h6,z,z1,z2;
uchar hw2();
uchar hw3();
uchar hw5();
uchar hw6();
uchar hw2() //红外对管1(前侧)
{
if(flag2==0&&input2==1&&output2==0)
{
flag2=1;
}
if(flag2==1&&output2==1)
{
flag2=2;
}
if(flag2==2&&output2==0)
{
in2++;
flag2=0;
}
if(flag2==0&&output2==1&&input2==0)
{
flag2=3;
}
if(flag2==3&&input2==1)
{
flag2=4;
}
if(flag2==4&&input2==0)
{
out2++;
flag2=0;
}
k2=in2-out2;
return k2;
}
uchar hw3() //红外对管2(前侧)
{
if(flag3==0&&input3==1&&output3==0)
{
flag3=1;
}
if(flag3==1&&output3==1)
{
flag3=2;
}
if(flag3==2&&output3==0)
{
in3++;
flag3=0;
}
if(flag3==0&&output3==1&&input3==0)
{
flag3=3;
}
if(flag3==3&&input3==1)
{
flag3=4;
}
if(flag3==4&&input3==0)
{
out3++;
flag3=0;
}
k3=in3-out3;
return k3;
}
uchar hw5() //红外对管3(后侧)
{
if(flag5==0&&input5==1&&output5==0)
{
flag5=1;
}
if(flag5==1&&output5==1)
{
flag5=2;
}
if(flag5==2&&output5==0)
{
in5++;
flag5=0;
}
if(flag5==0&&output5==1&&input5==0)
{
flag5=3;
}
if(flag5==3&&input5==1)
{
flag5=4;
}
if(flag5==4&&input5==0)
{
out5++;
flag5=0;
}
k5=in5-out5;
return k5;
}
uchar hw6() //红外对管4(后侧)
{
if(flag6==0&&input6==1&&output6==0)
{
flag6=1;
}
if(flag6==1&&output6==1)
{
flag6=2;
}
if(flag6==2&&output6==0)
{
in6++;
flag6=0;
}
if(flag6==0&&output6==1&&input6==0)
{
flag6=3;
}
if(flag6==3&&input6==1)
{
flag6=4;
}
if(flag6==4&&input6==0)
{
out6++;
flag6=0;
}
k6=in6-out6;
return k6;
}
int mains()
{
dat1=1;
dat2=1;
led=0;
led1=0;
h2=hw2();
h3=hw3();
z1=h2+h3;//前侧人数
h5=hw5();
h6=hw6();
z2=h5+h6;//后侧人数
z=z1+z2;//总人数
if(z>250)
{
in2=0;
in3=0;
in5=0;
in6=0;
out2=0;
out3=0;
out5=0;
out6=0;
z=0;
}
// else ;
if(dat1==1&&dat2==1) //人体红外检测
{
ji=0;
in2=0;
in3=0;
in5=0;
in6=0;
out2=0;
out3=0;
out5=0;
out6=0;
z=0;
}
else ji=1;
if(dat1==1)
led=1;
else
led=0;
if(dat2==1)
led1=1;
else
led1=0;
return z;
}
41。

相关文档
最新文档