一、项目思路
窗帘是每家每户都会用到的东西,智能家居慢慢融入大众的生活,我目前研究的是一款加入了传感器控制,可实现进出门的同时让窗帘联动,用ESP32主控来控制电机转动,然后通过进出门时给的信号,判断高低电平。
二、方案框图介绍
本次使用得捷的Scheme-it来设计ESP32控制窗帘的框架图,ESP32是使用了FastBond2大赛中要求的厂商的芯片乐鑫科技(Espressif)。
本项目的主要框图,得捷网站链接如下:
https://www.digikey.cn/schemeit/project/detail/bc70696ad67240e79ac6429c3333a291
三、原理图和PCB介绍
使用Scheme-it设计了流程图后,使用了KiCad绘制原理图和PCB
本次原理图绘制都是本人绘制,其中的元件也都是在KiCad中找到的,每个板块都已经归类,也是很好辨认的。
本次PCB绘制中各个元件的封装大多数是在其中找到,也有没有找到元件封装,自己画的封装也有可能与实际的元件不匹配,也是遇到的一些问题,后面查找每个元件的参数,设置尺寸,把引脚的距离设置好,也是解决了问题;板子的排版相对比较美观,但后期还是得继续努力。
四、成品展示:
最开始组装的样子,犹豫工具有限,表面看上有点简陋
进门时,用仿制密码锁的样子,录入指纹表示主人回家,打开窗帘
离开家,触发门口的红外,关闭窗帘。
以上是产品的展示
五、代码展示:
这段代码表示步进电机初始化
void setup() {
const int motor_pin[4]={motor1_A, motor1_B, motor1_C, motor1_D};
for(int i=0;i<4;i++)
{
pinMode(motor_pin[i],OUTPUT);
}
pinMode(serson_in,INPUT);
pinMode(serson_out,INPUT);
}
读取传感器状态,正转,窗帘打开;
读取传感器状态,反转,窗帘关闭;
void loop() {
volatile bool serson_instate=digitalRead(serson_in);
volatile bool serson_outstate=digitalRead(serson_out);
if(!(serson_outstate)){
delay(2000);
stepmotor(false,4000,motor1_A,motor1_B,motor1_C,motor1_D);
}
else if(!(serson_instate)){
delay(2000);
stepmotor(true,4000,motor1_A,motor1_B,motor1_C,motor1_D);
}
}
以上部分介绍就是代码的核心内容。
六、心得体会:
通过本次参与 FastBond2 阶段2 活动,开发出智能窗帘的过程中有了一些心得体会。
制作这样的一个小东西,让我知道了ESP32的强大功能,众多引脚的分配,让我对电子产品越来越有兴趣
在参与活动的过程中,我学习到了很多关于智能窗帘的知识。接触到电子森林也体会到了电子森林为我们带来的资源如此丰富,在KiCad里面我也感受到了制作原理图的一些便捷,使我们更能节省时间,完成更多的产品。