发作品签到
专业版

窗帘控制扩展板

工程标签

1.4w
0
0
10

简介

随着科学对于家居必需品来讲,窗帘占有着重要的地位。由于手动窗帘需要手动开关,电动窗帘无法根据光照实现自动控制且需要特定遥控器,具有一定的局限性。因此需要一款智能窗帘控制器。

简介:随着科学对于家居必需品来讲,窗帘占有着重要的地位。由于手动窗帘需要手动开关,电动窗帘无法根据光照实现自动控制且需要特定遥控器,具有一定的局限性。因此需要一款智能窗帘控制器。

开源协议

GPL 3.0

创建时间:2023-07-26 06:17:47更新时间:2023-08-17 06:50:12

描述

立创·开发板电子设计训练营报名入口

https://oshwhub.com/activities/LSP-dian-zi-she-ji

image.png

项目与要求

基于梁山派的智能窗帘设备的设计与实现

1.背景

随着科学技术的发展和人们生活水平的提高,智能化家居系统越来越多的出现在人们的生活中,带给人们快捷、舒适的体验。对于家居必需品来讲,窗帘占有着重要的地位。由于手动窗帘需要手动开关,电动窗帘无法根据光照实现自动控制且需要特定遥控器,具有一定的局限性。因此设计了一款基于梁山派微控制器的智能窗帘控制系统。

2.设计要求与指标

技术要求

(1)雨滴传感器模块:用于检测雨滴;
(2)光线强度传感器模块:用于检测光线强度;
(3)红外接收模块,用于遥控控制;
(4)步进电机模块:用于窗户窗帘驱动。

技术指标

(1)可以通过红外遥控与语音设置是否打开自动模式;
(2)在自动模式下,当光照强度很高时,自动展开窗帘;当光照强度很低时,自动关闭窗帘;
(3)在自动模式下,当检测到大量雨滴时,自动展开窗帘,此优先级比光照检测高;
(4)在任何时候,可以通过红外遥控或语音命令展开与关闭窗帘,并关闭自动模式;
(5)主控芯片接收到数据后,驱动电机运转,现实智能窗帘窗户系统。

一、雨滴与光照检测

1.雨滴检测原理

雨滴传感器常见的工作原理是通过检测水滴的导电性来判断是否下雨。它是利用两个电极之间的电导性变化来测量水滴的存在。这两个电极之间会有一个空气间隙,正常状态下是断路状态。当水滴接触到电极上时,水滴的导电性会导致电流通过水滴形成电流回路,从而改变电极之间的电阻值。通过测量电阻值的变化,就可以判断是否有水滴存在。
image.png

2.雨滴传感器接口设计

我们知道了雨滴传感器会根据雨滴进行电阻阻值变化。那我们如何通过梁山派去检测雨滴呢?
我们给雨滴传感器接入电源,当雨滴传感器的电阻发生变化时,其电压也会产生变化。此时我们可以把雨滴传感器看作一个开关。当没有雨滴时,雨滴传感器没有因为雨滴短路,所以处于断路状态。
1280X1280.PNG
当有雨滴时,雨滴传感器因为雨滴导电,导致两个电极短路,相当于按键按下。
1280X1280 (1).PNG
因此我们可以测量雨滴传感器的电压变化就可以知道是否有雨滴。
扩展板雨滴传感器接口如下:
我们需要给雨滴传感器的一极接正,一极接负,才可以产生回路测量电压变化。但是当传感器的雨滴过多时会导致两极彻底短路。为了防止雨滴传感器彻底短路,需要增加一个电阻R1作为负载,防止3.3V直接接入GND,形成电源短路。
8f321eaf-189a-4ae8-bf6b-8914e9d5328d.png

3.光照检测原理

扩展板的光照检测功能是通过光敏电阻进行识别。光敏电阻是一种特殊的电阻器,它随着光照强度的升高,电阻值会迅速降低,其在无光照时,几乎呈高阻状态,因此暗时电阻很大。
市场上最常见的用于检测光照的模块就是以光敏电阻作为主要识别器件。它的原理图见右方,原理图中的U2.1是一个电压比较器。当电压比较器的2脚电压大于3脚电压时,1脚输出低电平;当电压比较器的2脚电压小于3脚电压时,1脚输出高电平;R3为光敏电阻,当光敏电阻周围环境很亮时,其阻值会变小,AO的电压也会变小;当光敏电阻周围环境很暗时,其阻值会变大,AO的电压也会变大;因此通过调整R4滑动电阻的阻值,就可以调整DO输出的灵敏度。
0804e225-e137-40c1-905f-17bcb0d46ed9.png70ed9e03-4037-41e2-bc2f-14bd12e7b52c.png

4.光照传感器接口设计

我们将模块原理图简化,直接使用一个分压电阻加上一个光敏电阻即可。我们扩展板直接检测的是光敏电阻的电压变化,见模块原理图中的AO。
7f0e115a-213a-4ceb-809d-e58c94e643f3.png

二、步进电机驱动

1.步进电机介绍

步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机。步进电机组成最主要的就是转子和定子部分。

  • 定子,就是由电流控制磁场方向,通电时就会产生磁力;

  • 转子,被定子环绕在中间受定子磁场变化产生转动(下方示意图中转动的指针)

通过给定子通电,产生磁力,将转子吸附过来,那转子就会转一小格;通过给定子连续的通电,就可以实现让转子转动。
939c7771-1dec-4a5b-83ba-b3d50d57b925.gif

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数。当步进驱动器接收到一个脉冲信号时,它就可以驱动步进电机按设定的方向转动一个固定的角度。因此:
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;
可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的;
可以通过控制绕组通电顺序,达到控制电机正反转的目的。

 

2.步进电机的转动

我们采购的是二相四线式步进电机,二相指的是有两个线圈,四线指的是每一个线圈有两根线。其中A+与A-为一相,B+与B-为一相。
a9fdd658-713d-4dbf-95c5-4be50aefb367.png
采购链接:原装进口Y15-56 二相四线 微型 步进丝杆电机 带滑块 激光雕刻机

要让它转动起来,需要给线圈连续通电。而转动方式有四拍方式、八拍方式。
四拍方式的转动顺序:【A+】->【B+】->【A-】->【B-】。
686ed6f1-a75f-4b5d-a8ce-e92f04ea0666.png
八拍方式的转动顺序:【A+】->【A+B+】->【B+】->【B+A-】->【A-】->【A-B-】->【B-】->【B-A+】。
7a548d95-0aa7-4066-81d5-96d285c9f05c.png

使用磁性电机,电流越大,磁力越强。虽然直接使用开发板的GPIO去控制步进电机也可以,但是会有损坏开发板引脚的风险。因此我们需要考虑一个合适的步进电机驱动。

3.步进电机硬件驱动设计

案例使用L9110S作为步进电机的驱动,在其数据手册中有应用电路。我们根据数据手册的说明,进行设计即可。
b1be301d-3911-460b-89f9-ab3b78c9827b.png

其中BAK控制X4引脚的电平输出;FOR控制X3引脚的电平输出。图中的电机A,接入步进电机的一相即可。按照思路则需要两个L9110S才可以驱动二相四线步进电机。
e2c4305b-227d-4d37-9cab-86c43c04a5da.png

 

三、红外接收驱动

 

1.红外线协议介绍

 
在光谱中波长自760nm至400um的电磁波称为红外线,它是一种不可见光。红外线通信的例子我们每个人应该都很熟悉,目前常用的家电设备几乎都可以通过红外遥控的方式进行遥控,比如电视机、空调、投影仪等,都可以见到红外遥控的影子。这种技术应用广泛,相应的应用器件都十分廉价,因此红外遥控是我们日常设备控制的理想方式。

2.红外线的通讯原理

 
红外光是以特定的频率脉冲形式发射,接收端收到到信号后,按照约定的协议进行解码,完成数据传输。在消费类电子产品里,脉冲频率普遍采用 30KHz 到 60KHz 这个频段,NEC协议的频率就是38KHZ。 这个以特定的频率发射其实就可以理解为点灯,不要被复杂的词汇难住了,就是控制灯的闪烁频率(亮灭),和刚学单片机完成闪烁灯一样的意思,只不过是灯换了一种类型,都是灯。 接收端的原理: 接收端的芯片对这个红外光比较敏感,可以根据有没有光输出高低电平,如果发送端的闪烁频率是有规律的,接收端收到后输出的高电平和低电平也是有规律对应的,这样发送端和接收端只要约定好,那就可以做数据传输了。
红外线传输协议可以说是所有无线传输协议里成本最低,最方便的传输协议了,但是也有缺点,距离不够长,速度不够快;当然,每个传输协议应用的环境不一样,定位不一样,好坏没法比较,具体要看自己的实际场景选择合适的通信方式。

3.NEC协议介绍

NEC协议是众多红外线协议中的一种(这里说的协议就是他们数据帧格式定义不一样,数据传输原理都是一样的),我们购买的外能遥控器、淘宝买的mini遥控器、电视机、投影仪几乎都是NEC协议。 像格力空调、美的空调这些设备使用的就是其他协议格式,不是NEC协议,但是只要学会一种协议解析方式,明白了红外线传输原理,其他遥控器协议都可以解出来。
NEC协议一次完整的传输包含: 引导码、8位地址码、8位地址反码、8位命令码、8位命令反码。这里我们主要讲解如何接收红外发送端发送的NEC协议内容。
e5a72257-7638-47b2-9a24-174501a3fdac.png

引导码: 由9ms的低电平+4.5ms的高电平组成。
9m s.png4.5ms.png

4个字节的数据: 地址码+地址反码+命令码+命令反码。 这里的反码可以用来校验数据是否传输正确,有没有丢包。
重点: NEC协议传输数据位的时候,0和1的区分是依靠收到的高、低电平的持续时间来进行区分的。这是解码关键。
数据发送0码:0.56m低电平+ 0.56ms的高电平。

数据发送1码:0.56ms低电平+1.68ms的高电平。

所以,收到一个数据位的完整时间表示方法是这样的:
收到数据位0: 0.56m低电平+ 0.56ms的高电平
收到数据位1: 0.56ms低电平+1.68ms的高电平

还有一个重复码,它是由一个 9ms 的低电平和一个 2.5ms 的高电平组成。当一个红外信号连续发送时,可以通过发送重复码的方式快速发送。

 

4.红外接收硬件接口设计

红外线接收头模块输出电平的原理: 红外线接收头感应到有红外光就输出低电平,没有感应到红外光就输出高电平。因此,我们只要检测OUT端,是否输出低电平,就可以知道是否有接收到红外数据。
这里选择接入PF7,没有什么特殊要求,使用普通的GPIO即可。
f11f161d-364e-4f68-998b-e882d494d15e.png

四、语音识别驱动

1.语音模块介绍

HLK-V20是海凌科电子针对大量纯离线控制场景和产品推出的高性能纯离线语音识别模块,可广泛且快速的应用于智能家居、各类智能小家电、86盒、玩具、灯具、工业、 医疗、物联网、汽车、安防与照明等需要语音操控的产品。 HLK-V20支持150条本地指令离线识别,可自由定制唤醒词、命令词与应答播报词,具有丰富的外围接口。离线语音识别指的是只能识别固定命令词条,不需要连接网络。
购买链接:AI智能语音模块V20 海凌科离线语音开关控制 语音识别控制开发板
模块的命令词、播报词等配置,可以通过在线配置平台进行配置,因篇幅过长,另起了一份文档,具体语音产品的配置案例见下方链接。

海凌科语音识别模块的语音固件创建与下载

该案例来自模块移植手册中4.13章节的 HLK-V20语音识模块。
参考案例的配置流程,本案例的语音模块引脚设置同样选择的是B2P3作为串口1。
114e5d35-436c-4fe0-909d-141df11538dc.png
唤醒词设置:
6c55a042-a15b-42c1-9394-bdb8b142dd4f.png
命令词与控制:
b6856159-aad4-4775-a7d3-5407296b9f22.png
设置的控制参数如下。当串口接收到 0XAA 0X01 0X55 时,说明语音模块触发了开窗帘命令。其它同理。为了方便接收并解析多条命令,设置成为了帧头帧尾的格式。当串口接收到0X55说明语音识别模块触发了命令,分析上一个接收的数据,则可以知道是识别的哪一个命令。

if( RX_BUFF[DATA_LEN] == 0X55 )//接收到帧尾
{
    if( RX_BUFF[DATA_LEN-2] == 0XAA)//接收到帧头,确定数据格式正确
    {
        V20_data = cRX_BUFF[DATA_LEN-1];//接收数据
    }
}

例如:语音识别模块发来了命令:0XAA 0X03 0X55,则说明触发了打开自动模式命令。
image.png
其他设置:
550ad153-94d1-4aeb-b8e4-90a7021856a2.png

 

2.语音识别模块硬件设计

 

该语音识别模块是可以由我们自由设计命令词的,可以通过在线配置平台进行配置。配置完成之后会生成一个语音识别固件,我们要将固件下载到模块里,通过模块的B6,B7引脚进行下载。所以下方通过排针的方式引出了B6,B7引脚方便我们下载。还需要注意的是,在下载固件时,要先将模块断电。待下载工具识别到模块之后,再给模块通电,才可以正常下载。这个通断电操作,由原理图中的SW1开关进行控制。
31e97b45-3cd6-4573-9216-7a6cc39c609f.png

整个案例的软件设计方面请参考文档:https://lceda001.feishu.cn/docx/X2z8dgeRSoguQwxBEsjc3p64n5b?from=from_copylink

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
完整案例验证.mp4
713
2
1.窗帘控制扩展板软件资料.zip
1660
3
2.窗帘控制扩展板硬件资料.zip
1106
4
3.窗帘控制扩展板文档教程.zip
314
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航