




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、一、基于单片机的蓝智能光控窗帘设计思路系统选用STC12C5A60S2作为主控芯片以完成对系统执行机构的控制、信息处理和液晶显示。片机控制直流减速电机实现窗帘、窗户的控制。光照强度、温湿度信号均通过无线蓝牙模块传输至单片机,经处理后实现电机对窗户、窗帘的自动控制。根据设计方案和要求,可将电路分为5部分,分别为无线蓝牙遥控,传感器数据采集,电机驱动控制,单片机主控和电源部分。二、系统构蓝牙模块
电源模块光电传感器
A/D转
51单片机换
电机驱动温湿度传感器
器此方案控制采51单片机的最小系统来驱动步进电动机控制窗户和窗帘的拉开和关闭。家居推拉窗及窗帘控制系统可以利用蓝牙无线模块根据室外环境亮度实现环境亮度光控。以及光控状态下环境亮度的控制参数的调整等等。该控制设计可谓是一款多功能的推拉窗及窗帘控制系统设计方案。系统软件设计框图如下:1传感器控制
中单央片控机制程序
电机驱动不区分光源数字型环境光强度传感器BH1750FVI日本RHOM株式会社近些年推出的一种两线式串行总线接口的集成电路以根据收集的光线强度数据来进行环境监测具有1~65535x的高分辨率支持较大范围的光照强度变化。BH1750FVI结构框图如图1所示。图1BH1750FVI结构框图从结构框图可容易看出部光照被接近人眼反应的高精度光敏二极管PD探测到后,通过集成运算放大器将PD电流转换为PD电压,由模数转换器获取16位数字数据,然后被逻辑和IC界面进行数据处理与存储。OSC为内部的振荡器提供内部逻辑时钟,通过相应的指令操作即读取出内部存储的光照数据。数据传输使用标准的I2总线,按照时序要求操作起来也非常方便。2DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个测温元件,并与一个高性8单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。L298N的说明及应用恒压恒流桥式2A驱动芯片L298NL298是SGS公司的产品较常见的是5脚Multiwatt封装L298N内部同样包4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V压。4脚VS接电源电压,电压范围VIH为+.~V。出电流可2A,可驱动电感性负载1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻形成电流传感信号L298可驱动2个电动机OUT2和OUT3,OUT4间可分别接电动机,本实验装置我们选用驱动一台电动机。,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。表1是298N功能逻辑图L298N<wbr>动模块3的应用n3,In4的逻辑图与1相同。由1可知nA为低电平时,输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低,电机正或反转。同为低电平电机停止,同为高电平电机刹停。L298N控制器原理如下:三、控制件流程图(个)凡是利用一定的物(物理、化学、生)则、定理、定律、效应等进行能量转换与信息转换,并且输出与输入严格一一对应的器件和装置均可称为传感器;传感器又被称为变换器、转换器、检测器、敏感元件、换能器和一次仪表等。传感器一般由敏感元件、转换元件和测量电路三部分组成,有时还加上辅助电源。系统中的传感器是感受被测量的大小并输出相对应的可用输出信号的器件或装置。数据传输环节用来传输数据。当检测系统的几个功能环节独立地分隔开的时候,则必须由一个地方向另一个地方传输数据,数据传输环节就是完成这种传输功能。4当传感器模块传来的数据并判断正确时,则中断程序T1口进行初始化,进而接收来自两个模块的新数据,比较判断后传到命令地址进而对电机进行驱动和通过显示器显示出来。开始是否有数据Y串口中断初始化1数据传送到命令置回归标志位中断返回
N中断控制程序5步进电机执行来自控制器的命令判断其命令是否正确若不正确则返回,若正确则继续执行命令,比较做出相应的动作,当窗帘及推拉窗到达指定的位置时停止,器流程图如下。开接是正Y命执
NY
比判
N窗
推窗Y正
比判
N反
Y正
比判
N反停止返回四、主要序的指令:附录一蓝无线模块附录二DHT11数温湿度传感器附录三光度传感器BH17506附录一:蓝牙无线模块:修改at:#include<SoftwareSerial.h>//引用程式庫SoftwareSerialBT(8,9);//接收腳,傳送腳charval;//儲接收資料的數voidsetup(){Serial.begin(9600);//與電腦序列埠連線Serial.println("BTisready!");//設定藍牙模組的連線速率BT.begin(9600);}voidloop(){//若收到「序列埠監控視窗」的資料,則送到藍牙組if(Serial.available()){val=Serial.read();BT.print(val);}//若收到藍牙模組的資料,則送到「序列埠監控視」if(BT.available()){val=BT.read();Serial.print(val);}}7从:voidsetup(){Serial.begin(9600);}voidloop(){while(Serial.available()){charc=Serial.read();if(c=='A'){Serial.println("HelloIamamarino");}}}主:voidsetup(){Serial.begin(9600);}voidloop(){Serial.println('A');//发Awhile(1);}8附录二:DHT11数字温湿度传感器:U8codetable2[]="wendushidu";U8codetable3[]=".";sbitsbitsbitE=P2^7;voidwrite_com(U8{E=0;RW=0;elay(5);=1;P0=com;E=0;}voidwrite_date(U8date){E=0;RW=0;elay(5);=1;P0=date;E=0;P0=0;}voidinit(){U8num;Delay(15);write_com(0x38);write_com(0x38);write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);for(num=0;num<15;num++)9{write_date(table2[num]);Delay(1);}write_com(0x80+0x40);for(num=0;num<15;num++){write_date(table3[num]);Delay(1);}}voidwrite_dht11(U8add,U8date){U8shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}/***********************dht11.h***************************/typedefunsignedcharU8;typedefunsignedintU16;sbitP1_0=P2^0;U8U8FLAG,k;U8U8temp;U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8U8comdata;voidDelay(U16z){U8x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddelay_10us(){10U8i;i--;i--;i--;i--;i--;i--;}voidCOM(void)//据01确{U8i;for(i=0;i<8;i++){U8FLAG=2;while((!P1_0)&&U8FLAG++);//1bit是结delay_10us();delay_10us();delay_10us();U8temp=0;//26us~28us表为0if(P1_0)U8temp=1;//过依为电表示为1U8FLAG=2;while((P1_0)&&U8FLAG++);if(U8FLAG==1)break;//U8FLAG溢超则跳出for循环//断数据位是0是1//如果电高预0电平则数据位为1U8comdata<<=1;U8comdata|=U8temp;}}voidRH(void)//-----温度读子程序------------{Delay(34);//主机拉低高于//线上拉电阻拉高主机延delay_10us();delay_10us();11delay_10us();delay_10us();P1_0=1;//机为输入判断从机响应信号if(!P1_0)//判断从是否有电响应信号如不响应跳出响应则向下运行{U8FLAG=2;while((!P1_0)&&U8FLAG++);//断从机是否发出80us的电平响应信是否束U8FLAG=2;while((P1_0)&&U8FLAG++);//断从是否发的电,发则进数接收状态COM();//数据接收状态//湿度整数8位U8RH_data_L_temp=U8comdata;//湿度小数8位//度数8位U8T_data_L_temp=U8comdata;//度数8位U8checkdata_temp=U8comdata;//校验位U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_dataif(U8temp==U8checkdata_temp)//数据校验正执行{U8RH_data_H=U8RH_data_H_temp;U8RH_data_L=U8RH_data_L_temp;U8T_data_H=U8T_data_H_temp;U8checkdata=U8checkdata_temp;}}}/***********************main.c***************************/#include<reg52.h>#include<LCD1602.h>12U16a,b,t;U8flag,i;voidmain(){RW=1;t=0;flag=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;init();P2=0xff;Delay(40);while(1){RH();write_dht11(0,U8T_data_H);write_dht11(3,U8T_data_L);write_dht11(9,U8RH_data_H);write_dht11(12,U8RH_data_L);if(flag==2)//100后flag为2,行比{if(a==U8T_data_H&&b==U8RH_data_H)Buzzer=0;while(a==U8T_data_H&&b==U8RH_data_H);flag=0;}test();}}voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;if(t==2000)//100秒测次{t=0;13flag=2;//100秒flag为2}if(flag==0)//开始flag0赋值{=U8T_data_H;flag=1;//flag变}}14附录三:光强度传感器BH1750://用用户只需更改GPIO_Pin_14GPIO_Pin_15两个引并主数里面用此函即可。voidfloat*Zhaodu)#include"stm32f10x_lib.h"#defineucharunsignedchar#defineuintunsignedint#defineDataPortP0//LCD1602数据端口#defineSlaveAddress0x46//定义器件在IIC总线中的从地址,根据ALTADDRESS地引脚不同修改//ALT引接时为0x46,电源地址为0xB8#defineGPIO_Pin_14#defineBH1750_SDA//#defineGPIOB#define#define#defineBH1750_SDA_0()GPIOF->BRR=BH1750_SDA#defineBH1750_SDA_1()GPIOF->BSRR=BH1750_SDA#defineBH1750_SDA_STATE()(GPIOF->IDR&BH1750_SDA)//{return(GPIOB->IDR&PIN_SDA)!=0;}typedefunsignedcharBYTE;typedefunsignedshortWORD;BYTEBUF[8];//收据存区ucharge,shi,bai,qian,wan;//示变量int//量15voidInit_BH1750(void);voidconversion(uinttemp_data);voidSingle_Write_BH1750(uchar//单个入据ucharSingle_Read_BH1750(uchar//单读内部寄存器数voidMultiple_Read_BH1750(void);//连的读取内部寄存器数据//------------------------------------BH1750_Start(void);voidBH1750_Stop(void);BH1750_SendByte(u8Data);BH1750_ReceiveByte(void);voidBH1750_SendACK(void);voidBH1750_SendNACK(void);voidBH1750_Nop(void);voidBH1750_Delay(unsignedintk);//-----------------------------------BH1750_ACK=0;=0;BH1750_NACK=1;=2;BH1750_BUS_ERROR=3;=3;//试次voidBH1750_Nop(void){i=50;16while(i)i--;}voidBH1750_Delay(unsignedintk){unsignedinti,j;for(i=0;i<k;i++){for(j=0;j<121;j++);}}/********************************************************************************函数名称:IIC_START*描述发启动**输入无*输出无*返回无*作者*修改日:2010年68日*******************************************************************************/BH1750_Start(void){BH1750_SDA_1();BH1750_Nop();BH1750_SCL_1();BH1750_Nop();if(!BH1750_SDA_STATE()){////DebugPrint("TWI_START:BUSY\n");returnBH1750_BUS_BUSY;}BH1750_SDA_0();17BH1750_Nop();BH1750_SCL_0();BH1750_Nop();if(BH1750_SDA_STATE()){////DebugPrint("TWI_START:BUSERROR\n");returnBH1750_BUS_ERROR;}returnBH1750_READY;}/*--------------------------------------------------------------------------*//***@Brief:*//*--------------------------------------------------------------------------*/voidBH1750_Stop(void){BH1750_SDA_0();BH1750_Nop();BH1750_SCL_1();BH1750_Nop();BH1750_SDA_1();BH1750_Nop();//////DebugPrint("TWI_STOP\n");}/*--------------------------------------------------------------------------*//***@Brief:18*//*--------------------------------------------------------------------------*/voidBH1750_SendACK(void){BH1750_SDA_0();BH1750_Nop();BH1750_SCL_1();BH1750_Nop();BH1750_SCL_0();BH1750_Nop();BH1750_SDA_1();//////DebugPrint("TWI_SendACK\n");}/*--------------------------------------------------------------------------*//***@Brief:IIC_SendNACK*//*--------------------------------------------------------------------------*/voidBH1750_SendNACK(void){BH1750_SDA_1();BH1750_Nop();BH1750_SCL_1();BH1750_Nop();BH1750_SCL_0();BH1750_Nop();//////DebugPrint("TWI_SendNACK\n");}/*--------------------------------------------------------------------------*//***@Brief:TWI_SendByte***19*@Returns:*//*--------------------------------------------------------------------------*/BH1750_SendByte(u8{i;BH1750_SCL_0();for(i=0;i<8;i++){//---------据建立----------if(Data&0x80){BH1750_SDA_1();}else{BH1750_SDA_0();}Data<<=1;BH1750_Nop();//---据建立保持一定时----//----生一个上沿[脉冲]BH1750_SCL_1();BH1750_Nop();BH1750_SCL_0();BH1750_Nop();//延,防SCL没成低改从而产生START/STOP号//---------------------------}//收从机应答BH1750_SDA_1();BH1750_Nop();BH1750_SCL_1();BH1750_Nop();if(BH1750_SDA_STATE()){BH1750_SCL_0();BH1750_SDA_1();//////DebugPrint("TWI_NACK!\n");returnBH1750_NACK;}else20{BH1750_SCL_0();BH1750_SDA_1();//////DebugPrint("TWI_ACK!\n");returnBH1750_ACK;}}/*--------------------------------------------------------------------------*//***@Brief:IIC_ReceiveByte**@Returns:*//*--------------------------------------------------------------------------*/BH1750_ReceiveByte(void){i,Dat;BH1750_SDA_1();BH1750_SCL_0();Dat=0;for(i=0;i<8;i++){BH1750_SCL_1();//产生时钟升沿[脉冲]让机准备好数据BH1750_Nop();Dat<<=1;if(BH1750_SDA_STATE())//读引脚态{Dat|=0x01;}BH1750_SCL_0();//准备好再次接数BH1750_Nop();//等数据准好}//////DebugPrint("TWI_Dat:%x\n",Dat);returnDat;}21//*********************************************************//voidconversion(uinttemp_data)//数据转出个,十,百,千,万//{//wan=temp_data/10000+0x30;//temp_data=temp_data%10000;//余算//qian=temp_data/1000+0x30;//temp_data=temp_data%1000;//余运算//bai=temp_data/100+0x30;//temp_data=temp_data%100;//余运算//shi=temp_data/10+0x30;////余运算//ge=temp_data+0x30;//}//*********************************voidSingle_Write_BH1750(uchar{BH1750_Start();//起始号BH1750_SendByte(SlaveAddress);//送备地址+号//部寄存器地址,////部存数据,BH1750_Stop();//送停止号}//********字读*****************************************/*ucharSingle_Read_BH1750(uchar{ucharREG_data;BH1750_Start();//起始信号BH1750_SendByte(SlaveAddress);//送备址+信//送存储单元地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论