2877137721 发表于 2019-7-22 15:12:43

【参赛作品】DIY家庭智能家居控制系统(2)51,zigbee,esp8266

本帖最后由 皮皮的Lab 于 2019-8-17 14:44 编辑

接上一篇帖子:https://mc.dfrobot.com.cn/thread-296355-1-1.html

#制作过程之智能墙壁开关篇#
下面是介绍智能墙壁开关的设计,核心就是使得家里墙壁开关智能化,可以联网控制,达到场景联动,智能控制等目的。
我尝试就家中的传统开关进行改造,但是发现拆开之后内部空间实在不够,没法完成改装

于是尝试网购新的开关,寻找空间大些的墙壁开关,后来我找到了专门生产触摸智能开关外壳的厂家,购买了几个触摸墙壁开关的外壳,内部空间较大,适合改造

由于是触摸面板,所以我准备使用触摸模块作为输入,那么这就带来了一个问题,控制方式的转变。传统的墙壁开关,开关的位置(抬起,按下)代表了不同的开关状态,现在变成触摸模块后,每一次触摸,代表的是开关状态的变化,即触摸一次,开关的状态变化一次(开变成关/关变成开),所以在代码的逻辑中,我会注意到这个控制模式的变化。

关于执行机构,也就是一充当原来机械开关的器件,我准备使用继电器来代替。继电器可以让我使用单片机输出的信号去控制220V交流电压的通断,并且提供良好的隔离以及绝缘性能。

1.代码的编写:
选择了继电器以及触摸模块之后,我在面包板上搭建了电路,接下来就是编写代码了

对于 智能开关节点,我将zigbee模块配置成了路由器节点,这样做的好处是,墙壁开关同时扮演了一个路由器的角色,看可以协助一些远距离的终端节点完成多跳数据传输。。例如我想在卧室使用一个无线开关(下一章将会说到)去控制家门口的灯光,直接将数据发送到家门口的智能开关上或许信号强度不够造成通信失败,这时我在客厅增加一个路由器节点之后,无线开关的信号便可以传输到家门口的智能开关上。

同样的,为了响应国家节能减排的号召,我给单片机配置成了空闲模式以节省功耗,但是空闲模式下单片机没法正确及时的检测到触摸按键的按下,所以我使用单片机的外部中断来检测触摸按键,当触摸按键按下时,单片机检测到电平变化,引发中断,唤醒单片机,使得单片机执行相关指令。

当zigbee模块收到来自智能网关的数据时候(例如闭合开关或者断开开关),其输出数据引发的串口中断也会唤醒单片机,这时候单片机会执行收到的指令,随后再次进入空闲模式。

此外,为了更好的检测每个开关的状态,每次开关有动作之后,会将当前的状态上报给智能网关,以便网关检测家中所有的开关状况。


2.开关的测试:
链接zigbee的协调器节点到电脑上,打开智能开关的电源,可以看到每当我触摸开关,对应的继电器都会动作,并且协调器节点串口都会输出一些数据:

下面是一帧数据的解读

测试完毕,智能开关达到了我想要的功能,下面就是针对我购买的外壳设计PCB板了


3.智能开关PCB的设计与制作:
对于购买的外壳,我先找到了一张厂家提供的CAD图纸,上面标有了一些基本尺寸,这样方便我去设计一块合适的PCB板。将之前在面包板上搭建的电路,绘制成原理图之后效果如下:

转换成PCB文件后,经过简单的元件摆放以及布线后,完成的效果如下:

将交流高压部分和直流低压部分开槽隔离,提供了较好的抗干扰特性。而反面则设有zigbee模块以及单片机的位置。

约几天后,我收到了制作好的板子。

同时到来的还有一些元器件。

焊接过程太繁琐无聊,略去。焊接好之后的效果图

安装上触摸模块之后,使用双面胶将触摸模块粘贴在面板玻璃上。

烧录程序,合上外壳
背后使用标签标明出接线口定义,方便安装。

使用智能开关替代家中的传统开关。

4.网关对应程序的编写:
这部分的程序主要是网关接受物联平台发来的控制指令json字符串,然后解码翻译,最后通过zigbee网络告知智能开关引起相应动作。所以其核心在于接受服务器的json字符串,解释其含义。
同样的,还是使用arduino的json库来处理这些信息,查阅物联平台的通讯协议手册,发现采用如下格式:

所以只需要解读say指令后面附带的指令即可,于是很快的,一个使用else if语句的并列结构就写好了,程序对收到的字符串依次判断,如果相同则发送指令给智能开关。

上传程序到ESP8266,开始测试!

5.综合测试
安装智能开关到位,接上网关的电源,触摸触摸开关,电灯可以正常开启关闭

拿出手机,打开物联平台,按下开启电灯按钮,电灯开启。

测试完毕
至此,我实现了智能开关的设计,电路搭建以及使用网络控制。并且支持各种功能扩展(定时开关,和人体传感器联动等等),升级空间十分大,并且可联网控制,给生活带来了很大方便。:
2019/8/17更新:
#制作过程之无线遥控开关篇#

晚上睡觉前,有的墙壁开关距离床上太远,因此不方便关灯,所以我准备设计一款遥控无线开关,可以通过配对的形式完成对家中所有智能设别的控制,类似于随手贴开关。下面是介绍无线遥控开关的设计。
1.电路设计
作为zigbee网络中的终端节点,无线遥控开关需要具有低功耗的运行模式,因此根据我采用的e18zigbee模块的数据手册,将其配置成睡眠模式

拿出之前制作的zigbee最小系统板

无线遥控开关上面共有一个按键用来操作,所以焊接一个按键开关到最小板模块上

另外焊接上电源线,采用纽扣电池供电

用3d打印机打印了盖子

将板子切割一下放进去


组装好后的样子

2.网关对应的配置:
我绘制了一个显示屏的界面

在此界面下,按下墙壁开关的配对按钮

此时显示屏上会显示相关信息,设备编号为1的会显示在第一行,以此类推,超出一页的部分会自动翻页

如果复位按键损坏,还可以使用MAC地址添加方式

点击信息右边的配对按钮,屏幕下方会显示配对中的提示语

此时按下无线遥控开关按钮

即可在显示屏上见到配对成功的提示语

此时使用无线遥控开关即可控制灯的亮灭

实现这个功能的主原理就是无线开关记住了墙壁开关的短地址,这样每次按下按键都会发送一次数据给智能墙壁开关以便控制亮灭。并且由于是电池供电的开关,为了避免在更换电池之后需要重新配对的问题,我使用了单片机内置的eeprom来存储短地址,这样就无需每次上电都要重新配对了。

                                                                                                                                 结尾
在两个帖子的篇幅下,我记录了我制作这个智能家居的整个过程,整个系统可以后续不断开发新的智能设备,加入这个网络。得益于zigbee强大的协议以及网上众多资料的指引,我才初步的设计出这个较不为成熟的系统,本设计虽然比不上其他商业物联网系统的造型美观以及低功耗的要求,但是对于我探索物联网方面的知识起到了很大作用,是学习路上的一个重要节点。最后感谢大家观看我的帖子,感谢~

admin 发表于 2019-7-23 12:31:47

abe520 发表于 2020-3-24 12:36:27

期待有一个红外感应

gray6666 发表于 2020-3-26 15:16:59

很实用的黑科技
页: [1]
查看完整版本: 【参赛作品】DIY家庭智能家居控制系统(2)51,zigbee,esp8266