
开源协议
:Public Domain
描述
基于梁山派的智能窗帘系统的设计与实现
1.题目的背景
2.设计要求与指标
一、雨滴与光照检测
-
雨滴检测原理

2.雨滴传感器接口设计

3.光照检测原理

-
光照传感器接口设计

-
ADC介绍

-
ADC配置
-
ADC采集
在bsp_ad文件里有相应代码
-
功能验证
https://www.bilibili.com/video/BV1c8411q7Uz?vd_source=d4e94aac002e58de1319250ead055386
方案验证文件见附件
二、步进电机驱动
-
步进电机介绍
-
定子,就是由电流控制磁场方向,通电时就会产生磁力;
-
转子,被定子环绕在中间受定子磁场变化产生转动(下方示意图中转动的指针)

-
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;
-
可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的;
-
可以通过控制绕组通电顺序,达到控制电机正反转的目的。
-
步进电机的转动



-
步进电机硬件驱动设计


-
步进电机软件驱动设计
三、红外接收驱动
1.红外线协议介绍
在光谱中波长自760nm至400um的电磁波称为红外线,它是一种不可见光。红外线通信的例子我们每个人应该都很熟悉,
目前常用的家电设备几乎都可以通过红外遥控的方式进行遥控,比如电视机、空调、投影仪等,都可以见到红外遥控的影子。
这种技术应用广泛,相应的应用器件都十分廉价,因此红外遥控是我们日常设备控制的理想方式。
2.红外线的通讯原理
红外光是以特定的频率脉冲形式发射,接收端收到到信号后,按照约定的协议进行解码,完成数据传输。在消费类电子产品里,
脉冲频率普遍采用 30KHz 到 60KHz 这个频段,NEC协议的频率就是38KHZ。 这个以特定的频率发射其实就可以理解为点灯,
不要被复杂的词汇难住了,就是控制灯的闪烁频率(亮灭),和刚学单片机完成闪烁灯一样的意思,只不过是灯换了一种类型,都是灯。
接收端的原理: 接收端的芯片对这个红外光比较敏感,可以根据有没有光输出高低电平,如果发送端的闪烁频率是有规律的,
接收端收到后输出的高电平和低电平也是有规律对应的,这样发送端和接收端只要约定好,那就可以做数据传输了。
红外线传输协议可以说是所有无线传输协议里成本最低,最方便的传输协议了,但是也有缺点,距离不够长,速度不够快;当然
,每个传输协议应用的环境不一样,定位不一样,好坏没法比较,具体要看自己的实际场景选择合适的通信方式。
3.NEC协议介绍
NEC协议是众多红外线协议中的一种(这里说的协议就是他们数据帧格式定义不一样,数据传输原理都是一样的),我们购买的外能遥控器
、淘宝买的mini遥控器、电视机、投影仪几乎都是NEC协议。 像格力空调、美的空调这些设备使用的就是其他协议格式,不是NEC协议,
但是只要学会一种协议解析方式,明白了红外线传输原理,其他遥控器协议都可以解出来。
NEC协议一次完整的传输包含: 引导码、8位地址码、8位地址反码、8位命令码、8位命令反码。这里我们主要讲解如何接收红外发送端发送的NEC协议内容。

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条本地指令离线识别,
可自由定制唤醒词、命令词与应答播报词,具有丰富的外围接口。离线语音识别指的是只能识别固定命令词条,不需要连接网络。
购买链接:AI智能语音模块V20 海凌科离线语音开关控制 语音识别控制开发板

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


-
语音识别模块硬件设计



-
语音识别模块软件设计
语音识别模块我们配置为了串口通信方式,在原理图中我们接入的是PA2和PA3,它们是串口1的复用引脚。复用通道是AF7。其中PA2是串口1的TX,PA3是串口1的RX

语音模块宏定义见
智能窗帘控制.zip
里harddware->bsp_hlkv20->BSP_hlkv20 .h
模块代码见附件
智能窗帘控制.zip
里harddware->bsp_hlkv20->BSP_hlkv20 .c
-
功能验证
#include "gd32f4xx.h"
#include "systick.h"
#include <stdio.h>
#include "bsp_usart.h"
#include "bsp_adc.h"
#include "bsp_stepper_motor.h"
#include "bsp_ir_receiver.h"
#include "bsp_ir_receiver.h"
#include "bsp_voice.h"
int main(void)
{
nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2); // 优先级分组
//滴答定时器初始化 1us
systick_config();
//串口0初始化 调试
usart_gpio_config(9600U);
//语音识别模块引脚初始化
hlk_usart_init(9600U);
while(1)
{
//语音识别操作
voice_anakysis_data();
}
}
五、完整案例设计
窗帘控制部分
自动模式部分
红外接收部分
char mode_flag=0;
//自动模式
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论