
开源协议
:GPL 3.0
描述
设计要求
设计一个智能窗帘
要求:能够自动打开或关闭窗帘,解放我们的双手。那么如何实现自动打开窗帘/关闭窗帘?我们需要一个动力装置“电机”,由于电机有很多种类,我们控制窗帘要精确的控制窗帘的位置,所以要采用步进电机,现在我们有了动力装置 该如何来控制这个步进电机实现窗帘的开启/关闭?我分为两种模式 分别是自动模式和手动模式。
自动模式
我们可以通过梁山派来检测光照强度实现对窗帘的自动控制,也可以通过检测是否有下雨来实现对窗帘的自动控制
手动模式
使用遥控器来实现手动控制,采用红外遥控器来控制,遥控器不仅能切换自动/手动模式。也可以手动的打开或者关闭窗帘
原理图设计说明
1.雨滴检测原理
雨滴传感器常见的工作原理是通过检测水滴的导电性来判断是否下雨。它是利用两个电极之间的电导性变化来测量水滴的存在。这两个电极之间会有一个空气间隙,正常状态下是断路状态。当水滴接触到电极上时,水滴的导电性会导致电流通过水滴形成电流回路,从而改变电极之间的电阻值。通过测量电阻值的变化,就可以判断是否有水滴存在。
2.雨滴传感器接口设计
我们需要给雨滴传感器的一极接正,一极接负,才可以产生回路测量电压变化。但是当传感器的雨滴过多时会导致两极彻底短路。为了防止雨滴传感器彻底短路,需要增加一个电阻R1作为负载,防止3.3V直接接入GND,形成电源短路,还可以在电压采集端口并联一颗104电容滤出信号中的高频干扰。
3.光照检测原理
扩展板的光照检测功能是通过光敏电阻进行识别。光敏电阻是一种特殊的电阻器,它随着光照强度的升高,电阻值会迅速降低,其在无光照时,几乎呈高阻状态,因此暗时电阻很大。
4.光照传感器接口设计
我们直接使用一个分压电阻加上一个光敏电阻即可。我们扩展板直接检测的是光敏电阻的电压变化,还可以在电压采集端口并联一颗104电容滤出信号中的高频干扰。
二、步进电机驱动
1.步进电机介绍
步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机。步进电机组成最主要的就是转子和定子部分。
定子,就是由电流控制磁场方向,通电时就会产生磁力;
转子,被定子环绕在中间受定子磁场变化产生转动(下方示意图中转动的指针)
通过给定子通电,产生磁力,将转子吸附过来,那转子就会转一小格;通过给定子连续的通电,就可以实现让转子转动。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数。当步进驱动器接收到一个脉冲信号时,它就可以驱动步进电机按设定的方向转动一个固定的角度。因此:
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;
可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的;
可以通过控制绕组通电顺序,达到控制电机正反转的目的。
2.步进电机的转动
我们采购的是四相五线式步进电机,四相指的是有四个线圈,五线指的是每一个线圈有两根线,那不就要8根线了吗?怎么时五线呢,因为这种电机一个公共端全部连在一起,我们只需要把公共端接到电源正,然后轮流的对A、B、C、D相接到电源负形成回路,步进电机就能转起来了。红线接电源正依次往后数为ABCD相。
要让它转动起来,需要给线圈连续通电。而转动方式有四拍方式、八拍方式。
四拍方式的转动顺序:【A】->【B】->【C】->【D】。
八拍方式的转动顺序:【A】->【AB】->【B】->【BC】->【C】->【CD】->【D】->【DA】。
使用磁性电机,电流越大,磁力越强。虽然直接使用开发板的GPIO去控制步进电机也可以,但是会有损坏开发板引脚的风险。因此我们需要考虑一个合适的步进电机驱动。
使用磁性电机,电流越大,磁力越强。虽然直接使用开发板的GPIO去控制步进电机也可以,但是会有损坏开发板引脚的风险。因此我们需要考虑一个合适的步进电机驱动。
3.步进电机硬件驱动设计
ULN2003是一个达林顿管阵列,里面有7组达林顿管。
从原理图可以看出达林顿管其实就是两个三极管组成的,其放大倍数时两个三极管放大倍数之积,所以特点是放大倍数非常大。我们可以看出只要给B端高电平就能控制C端与E端导通,我们只需要B端接到梁山派的GPIO上,把步进电机的公共电源正端接到VCC,A、B、C、D相分别接到2003的C端口,2003的COM公共端是内部续流二极管的共阴端,因为驱动的是电机是感性期间,断电瞬间会产生很大的反向电动势 所以要把COM接到电源正给电机续流。这里我增加了一颗大容量点解电容是因为电机启动的瞬间会有很大的电流,电容起到过渡平缓的作用,以免对电源造过大冲击。同理保险丝也是保护电源免受冲击的,如果我们电机异常堵转会产生很大的电流。
三、红外接收驱动
1.红外线协议介绍
在光谱中波长自760nm至400um的电磁波称为红外线,它是一种不可见光。红外线通信的例子我们每个人应该都很熟悉,目前常用的家电设备几乎都可以通过红外遥控的方式进行遥控,比如电视机、空调、投影仪等,都可以见到红外遥控的影子。这种技术应用广泛,相应的应用器件都十分廉价,因此红外遥控是我们日常设备控制的理想方式。
2.红外线的通讯原理
红外光是以特定的频率脉冲形式发射,接收端收到到信号后,按照约定的协议进行解码,完成数据传输。在消费类电子产品里,脉冲频率普遍采用 30KHz 到 60KHz 这个频段,NEC协议的频率就是38KHZ。 这个以特定的频率发射其实就可以理解为点灯,不要被复杂的词汇难住了,就是控制灯的闪烁频率(亮灭),和刚学单片机完成闪烁灯一样的意思,只不过是灯换了一种类型,都是灯。 接收端的原理: 接收端的芯片对这个红外光比较敏感,可以根据有没有光输出高低电平,如果发送端的闪烁频率是有规律的,接收端收到后输出的高电平和低电平也是有规律对应的,这样发送端和接收端只要约定好,那就可以做数据传输了。
红外线传输协议可以说是所有无线传输协议里成本最低,最方便的传输协议了,但是也有缺点,距离不够长,速度不够快;当然,每个传输协议应用的环境不一样,定位不一样,好坏没法比较,具体要看自己的实际场景选择合适的通信方式。
3.NEC协议介绍
NEC协议是众多红外线协议中的一种(这里说的协议就是他们数据帧格式定义不一样,数据传输原理都是一样的),我们购买的外能遥控器、淘宝买的mini遥控器、电视机、投影仪几乎都是NEC协议。 像格力空调、美的空调这些设备使用的就是其他协议格式,不是NEC协议,但是只要学会一种协议解析方式,明白了红外线传输原理,其他遥控器协议都可以解出来。
NEC协议一次完整的传输包含: 引导码、8位地址码、8位地址反码、8位命令码、8位命令反码。这里我们主要讲解如何接收红外发送端发送的NEC协议内容。
引导码: 由9ms的低电平+4.5ms的高电平组成。
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即可。
四、语音识别驱动
1.语音模块介绍
HLK-V20是海凌科电子针对大量纯离线控制场景和产品推出的高性能纯离线语音识别模块,可广泛且快速的应用于智能家居、各类智能小家电、86盒、玩具、灯具、工业、 医疗、物联网、汽车、安防与照明等需要语音操控的产品。 HLK-V20支持150条本地指令离线识别,可自由定制唤醒词、命令词与应答播报词,具有丰富的外围接口。离线语音识别指的是只能识别固定命令词条,不需要连接网络。
2.语音识别模块硬件设计
该语音识别模块是可以由我们自由设计命令词的,可以通过在线配置平台进行配置。配置完成之后会生成一个语音识别固件,我们要将固件下载到模块里,通过模块的B6,B7引脚进行下载。所以下方通过排针的方式引出了B6,B7引脚方便我们下载。还需要注意的是,在下载固件时,要先将模块断电。待下载工具识别到模块之后,再给模块通电,才可以正常下载。这个通断电操作,由原理图中的SW1开关进行控制。
我这里喇叭使用的端子接线式的可以在某宝买到。
设计图

BOM


评论