1、 1 基于 51 单片机的蓝牙智能光控窗帘 一、 设计思路 系统选用 STC12C5A60S2 作为主控芯片,用以完成对系统执行机构的控制、信息处理和液晶显示。 单片机控制直流减速电机实现窗帘、窗户的控制。 光照强度、温湿度信号均通过无线蓝牙模块传输至单片机,经处理后实现电机对窗户、窗帘的自动控制。 根据设计方案和要求,可将电路分为 5 部分,分别为无线蓝牙遥控,传感器数据采集,电机驱动控制,单片机主控和电源部分。 二、 系统结构 此方案控制采用 51单片机的最小系统来驱动步进电动机控 制窗户和窗帘的拉开和关闭。家居推拉窗及窗帘控制系统可以利用蓝牙无线模块根据室外环境亮度实现环境亮度光控。以及
2、光控状态下环境亮度的控制参数的调整等等。该控制设计可谓是一款多功能的推拉窗及窗帘控制系统设计方案。 系统软件设计框图如下: 51 单片机 光电传感器 温湿度传感器 蓝牙模块 A/D转换器 电源模块 电机驱动 2 1. 光强度传感器 BH1750FVI 不区分光源数字型环境光强度传感器 BH1750FVI 是日本 株式会社近些年推出的一种两线式串行总线接口的集成电路,可以根据收集的光线强度数据来进行环境监测,其具有 165535的高分辨率,可支持 较大范围的光照强度变化。BH1750FVI 结构框图如图所示。 图 1 BH1750FVI 结构框图 从结构框图可容易看出,外部光照被接近人眼反应的
3、高精度光敏二极管探测到后,通过集成运算放大器将 电流转换为 电压,由模数转换器获取 位数字数 据,然后被逻辑和界面进行数据处理与存储。为 内部的振荡器提供内部逻辑时钟,通过相应的指令操作即 可读取出内部存储的光照数据。数据传输使用标准的 总线,按照时序要求操作起来也非常方便。 2. 温湿传感器: 传感器控制 单片机 中央控制程序 电机驱动 3 DHT11数字温湿度传 感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个 NTC测温元件,并与一个高性能 8位单片机相连接。因
4、此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个 DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在 OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距 离可达 20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。3. 电机驱动 L298N 的说明及应用 恒压恒流桥式 2A 驱动芯片 L298NL298 是 SGS 公司的产品,比较常见的是 15 脚 Multiwatt 封装的
5、 L298N,内部同样包含 4 通道逻辑驱动电路。可以方便的驱动两个直 流电机,或一个两相步进电机。 L298N 芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达 50V,可以直接通过电源来调节输出电压;可以 直接用 单片机的 IO 口提供信号;而且电路简单,使用比较方便。 L298N 可接受标准 TTL 逻辑电平信号 VSS, VSS 可接 4 5 7 V 电压。 4 脚 VS 接电源电压, VS 电压范围 VIH 为 2 5 46 V。输出电流可达 2 A,可驱动电感性负载。 1 脚和 15 脚下管的发射极分别单独引出以 便接入电流采样电阻,形成电流传感信号。 L298
6、可驱动 2 个电动机, OUT1,OUT2 和 OUT3, OUT4 之间可分别接电动机,本实验装置我们选用驱动一台电动机。 5, 7, 10, 12 脚接输入控制电平,控制电机的正反 转。 EnA, EnB 接控制使能端,控制电机的停转。表 1 是 L298N 功能逻辑图。 L298N 驱动模块4 的应用 In3, In4 的逻辑图与表 1 相同。由表 1 可知 EnA 为低电平时,输入电平对电机控制起作用,当 EnA 为高电平,输入电平为一高一低,电机 正或反转。同为低电平电机停止,同为高电平电机刹停。 L298N 控制器原理如下: 三、 控制软件流程图(多个) 1. 传感器控制程序 凡是
7、利用一定的物性 (物理、化学、生物 )法则、定理、定律、效应等进行能量转换与信息转换,并且输出与输入严格一一对 应的器件和装置均可称为传感器;传感器又被称为变换器、转换器、检测器、敏感元件、换能器和一次仪表等。传感器一般由敏感元件、转换元件和测量电路三部分组成,有时还加上辅助电源。系统中的传感器是感受被测量的大小并输出相对应的可用输出信号的器件或装置。数 据传输环节用来传输数据。当检测系统的几个功能环节独立地分隔开的时候,则必须由一 个地方向另一个地方传输数据,数据传输环节就是完成这种传输功能。 5 2. 中断控制程序 当传感器模块传来的数据并判断正确时,则中断程序对 T1口进行初始化,进而接
8、收来自两个模块的新数据,比较判断 后传到命令地址进而对电机进行驱动和通过显示器显示出来。 开 始串 口 中 断初 始 化 T1数 据 传 送 到 命 令置 回 归 标 志 位中 断 返 回是 否 有 数 据NY中断控制程序 3. 电机驱动程序 6 步进电机执行来自控制器的命令,判断其命令是否正确,若不正确则返回,若正确则继续执行命令,比较做出相应的动作,当窗帘及推拉窗到达指定的位置时停止,器流程图如下。 开 始 接 入是 否 正 确命 令 执 行窗 帘 推 拉 窗停 止 返 回比 较 判 断NYNY比 较 判 断比 较 判 断正 转 反 转 正 转 反 转YNYN四、 主要程序的指令 : 附录
9、一 :蓝牙无线模块 附录二 :DHT11 数字温湿度传感器 附录三 :光强度传感器 BH1750 7 附录一: 蓝牙无线模块: 修 改 at: #include / 引用程式庫 SoftwareSerial BT(8, 9); / 接收 腳 , 傳送 腳 char val; / 儲存接收資料的變數 void setup() Serial.begin(9600); / 與電腦序列埠連線 Serial.println(“BT is ready!“); / 設定藍牙模組的連線速率 BT.begin(9600); void loop() / 若收到序列埠監 控視窗的資料,則送到藍牙模組 if (Ser
10、ial.available() val = Serial.read(); BT.print(val); / 若收到藍牙模組的資料,則送到序列埠監控視窗 if (BT.available() val = BT.read(); Serial.print(val); 8 从 机: void setup() Serial.begin(9600); void loop() while(Serial.available() char c=Serial.read(); if(c=A) Serial.println(“Hello I am amarino“); 主机: void setup() Serial.
11、begin(9600); void loop() Serial.println(A); / 发 送 A while(1); 9 附录二: DHT11 数字温湿度传感器: U8 code table2=“ wendu shidu “; U8 code table3=“ . . “; sbit RS=P26; sbit RW=P25; sbit E=P27; void write_com(U8 com) E=0; RS=0; RW=0; Delay(5); E=1; P0=com; E=0; void write_date(U8 date) E=0; RS=1; RW=0; Delay(5); E=1; P0=date; E=0; P0=0; void init() U8 num; Delay(15); write_com(0x38); write_com(0x38); write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); for(num=0;num0;x-) for(y=110;y0;y-); void delay_10us()