我们在
这里为房屋制作了一个控制柜,在
这里开发了一个控制器。
可以通过电话打开/关闭灯,有关漏水的通知,浇水的通知都传到电报中,上帝仍然知道。
但是,整个系统远不是一座智能房屋,它只是您胳膊和腿的延伸,唯一的帮助就是您无需下床就关灯。
本文是关于什么可以使您的房屋更靠近智能设备,您猜对了-这就是传感器的发展。 这些是眼睛,耳朵和其他一些东西。 根据传感器提供的信息,已经可以编写自动脚本来使房屋焕发活力,并悄悄地为您提供帮助,让您的生活更舒适。
现在市场上有来自知名制造商和来历不明的各种此类设备。 如果您不打扰,可以使用它们,但是只有一个,甚至几个。 首先,它们中的大多数使用其专有协议,并且只能与它们的集线器一起使用。 而且这些集线器的API随时都可以关闭,并且只能通过制造商的应用程序来控制(记住google nest的故事),因此所有自动化操作都将在某一时刻崩溃。
其次,所有制造商无一例外都在设法从中获利,并且由于这不是一个大现象,因此您需要退出市场,因此每个传感器都在自己单独的外壳中制成,并带有自己的电池。 现在让我们数一下,您每个房间有5个房间,我想要一个温度,运动,光线和CO传感器。 没有复杂的垫子。 计算得出天花板上有20个盒子。 首先,它不是很漂亮,其次,在一两年之内,有必要在半天之内用梯子和螺丝刀更换这些传感器中的电池,很可能会折断几个紧固件,并将螺丝刀几次掉在层压板上。 是的,第三,当其中一个传感器在几年内坏了时,您将无法购买,并且旧集线器很可能不支持新传感器(利润很重要),您将不得不更换所有传感器并将其重新集成到您的传感器中系统。 哪种方法是查看开源中的内容,或者自己做,至少代码将永远伴随着您。 因此,根据上述描述,开发带有传感器的盒子并不是一项过大的任务。
因此,在开发传感器时,我尝试避免上述“但是”:
- 我们将所有传感器整合在一个外壳中
- 我们提供有线电源(从头开始构建)
- 我们根据标准协议制作接口
现在让我们继续介绍这种设备的工作方式。
有两种可能的选择,它们取决于设备在哪种环境中使用,在具有集中控制的系统中,在分布式系统中或通常作为独立设备使用。
第一种选择比较简单,因为 仅需要来自传感器的原始数据,然后询问该设备的中央控制器决定如何处理它们,这种设备的一个示例是办公室烟雾传感器。 例如,来自传感器的数据高于某个阈值,而中央控制器知道现在处于布防模式,因此有必要发出警报。
第二种选择是假设设备本身必须知道它现在处于哪种模式,能够转换来自传感器的原始数据,并做出有关通知用户的决定。 当然,这种设备的开发在编写程序和确定可用性方面都需要更多的努力。
我最初计划根据第二种方法制造设备,并铺设了两个通信通道-mqtt和modbus。 Mqtt通过WIFI进行播放,并通过RS-485进行Modbus连接到家庭控制系统。
通过ESP8266 lua库,通过WIFI进行Mqtt并不难,而且算法相当标准:
- 初次启动或无法连接到WIFI时,您需要从ESP8266建立一个接入点
- 在上面部署带有WIFI参数和mqtt服务器参数的小型Web服务器(例如,可以在Amazon上免费完成)
- 将所有输入的数据保存在ESP8266存储器中
- 重新启动后,尝试通过家庭WIFI连接到mqtt
但是,当出现通过Modbus将设备集成到家庭系统中的问题时,我开始错过了传感器的原始数据,最终我也将所有原始数据也放入了Modbus表中。 例如,在撤防模式下,运动传感器似乎发生了不必要的事件,甚至可以用于各种智能家居功能。
modbus表如下:
N型说明
0。-r-传感器标签的状态(1-空闲模式/ 2-空闲至保护状态/ 3-保护模式)
1. -r-警报的位域原因(位1-气体/ 2-温度/ 3-运动)
2. -r-在空闲和保护状态下的运动检测(0/1-无运动/运动)
3. -r-气体浓度(adc的原始值)
4. -r-温度(摄氏度)
5. -r-预处理后的光值(夜间房间<17 /暗室<50 /暮光<150阳光<250)
6. -r-轻值(adc的原始值)
7. -r-此生命周期中的警报事件数
8. -r-sensortag重新启动的次数
9. -r-未使用
10 -wr-警报激活(0-切换为空闲/ 1-切换为警报)
11. -wr-运动灵敏度(0-100%,表示0-最敏感)
12. -wr-气体浓度极限
而且,与往常一样,这取决于电路板和软件的开发。 在这种情况下,董事会的发展对我来说更加困难,因为 我不太喜欢模拟部分(电源,运动传感器和CO的绑定),关于软件也没什么可写的,因为那里的一切真的很简单。 即 我不仅是普通人,还读了ADC的读数,进行了转换,处理(在所有通道上使用滑动窗口方法)并将它们放在表格中。 对PIR传感器的信号进行温度补偿也不错。 在夏季,当室温高于+30度时,传感器的响应会弱得多。 因此,在本文中,我想描述一下评估板本身的发展,并稍微注意一下可用性。
让我们从董事会开始,这是您需要执行的操作:
- 选择一个微控制器和传感器(Pir传感器,光线,温度,CO)
- 选择RS-485驱动程序进行Modbus通讯
- ESP8266用于mqtt通讯(选择什么)
- 选择RGB LED以可视化设备状态
- 开发电源模块
- 绘制电路图,繁殖并制作电路板
选择微控制器并不困难,您只需要将开发板放到盒子里并得到一块板就可以了。 但是说真的,我不能夸耀许多微控制器家族的知识,所以我熟悉STM32,ATSAM和AVR。 我选择了后者,仅是因为我只有几个Arduino Leonardo躺在附近,错过了过去的MK2。 我不会说AVR会以石英频率起立,这对我很有用,并且它具有广泛的外围设备和相当快的ADC,对我来说,更重要的是它具有TQFP封装,我可以自己焊接,而无需显微镜和铃鼓跳舞。 如果选择微控制器仅需十分钟,那么选择传感器就不是一件小事。 我们必须首先考虑如何连接它们,如何处理它们的信号以及它们将如何相互影响。 如果可以从Arduino装置中获取一些传感器,并且它们花费一分钱,那么与其他传感器相比(更罕见),您可以花更多的时间修改并花费更多。 另外,传感器的选择也受到我的其他标准的限制:
- 传感器可以随意连接,但不能通过I2C连接。 这对在微控制器上可靠地实现I2C的人来说是行不通的,因为该总线的支持是硬件的一半,软件的一半(如AVR)。 碰巧它正常工作了一个月,然后突然中断,并且没有恢复序列的帮助,因此决定使用尽可能多的模拟传感器连接到ADC,并仅将SPI用于温度(顺便说一句,友谊牢固而可靠)。
- 它们足够可靠,并且在使用寿命内(我将其定义为10年)没有改变其特性。
- 它们在我们的市场上都可以买到,以免与毛瑟的订单等产生混乱。
经过所有研究,我们得出了以下结论:
- 被动红外传感器-D203S
- 光线传感器-GL5516
- 温度传感器-LM95071
- 一氧化碳传感器-TGS5141
而且,如果我认为前三个职位没有人会提出疑问,那么尚不清楚为什么需要立即使用TGS5141。 您可能会说-“为什么要这么贵呢,因为有来自MQ-7型arduino系列的一分钱CO传感器。” 确实,我尝试了它们,结果由于一些原因而拒绝了它们。 首先,它是一个催化传感器,并且会发热,这会极大地影响设备外壳中的温度,并且无法对来自PIR传感器的信号进行温度补偿。 其次,MQ-7的灵敏度即使在规格上说达到10至1000ppmm时,仍然有很多需要改进的地方,但实际上,它仍然很糟糕,而且传感器之间的稳定性也不佳。 第三,传感器本身的寿命尚不清楚,我认为由于其具有催化作用,多年来其特性将发生很大变化。 现在谈谈电化学TGS5141的优点-它不会发热,灵敏度为0〜5000ppm(具有线性特性),可保证10年的使用寿命,体积小巧,并具有更多优点。 我认为,如果您真的想做一件有价值的事情,而不是轻浮的工艺,那么选择是显而易见的。
我们选择了微控制器,传感器,现在该注意如何告诉用户我们的意图了。 如我之前所写,我有两个通信通道,分别是通过WIFI的rs-485 modbus和mqtt。 可以将我的sensororteg用作单独的设备,因此,重要的是以某种方式指示设备本身(例如LED)的状态。
决定了概念之后,您可以稍微注意一下元素库的其余部分。 485go驱动程序我使用ADM2587E,该芯片不仅包括驱动程序本身,而且还包括RX,TX和DE上的变压器电流隔离,仅减去价格。 我们将使用ESP-07通过WIFI进行mqtt通信,在这里,我认为不需要评论,因为 只有懒惰的人在ESP8266上没有做任何事情。 我不得不修改视觉显示,为此,我决定使用sk6812 RGBW LED。 事实证明,使用AVR进行管理并不是一件容易的事,它们的时间安排也很艰辛,因此我不得不添加一些最初未计划的汇编代码。 但是结果证明了自己的合理性,结果是内容丰富而精美,尤其是当您在有机玻璃环的末端使用这些LED进行发光时。 一位已经为此吃过狗的雇员向我建议了这种迹象(感谢Sasha)。

在对亮度进行了一些实验之后,很明显,亮度的级别不是我的决定-白天很难看到,而晚上却很明亮。 因此,我必须根据房间的照明情况改变这些LED的发光亮度。 好了,仅此而已,您就想出了指示,但是,不,对我来说,最困难的事情是为它们发明发光模式和计时。
我停在这个选项:
- 蓝色缓慢-空闲,仅通过wifi通讯(缺少modbus)
- 蓝色快速-从空闲模式切换到警报模式,仅通过wifi通讯(缺少modbus)
- 绿色,慢速-空闲(modbus通讯正常)
- 绿色快速亮起-从空闲模式切换到报警模式(modbus通讯正常)
- 红色慢速-警报模式
- 红色快动警报
- 黄色快速-气体警报

我们弄清楚了指示,下一节是电源。
如前所述,我家中有一个24V低压电源,因此模块的电源就足够了。 展望未来,我要说的是,当我登上第一块棋盘之后,我不得不重做很多营养。 然后我确信您需要仔细阅读降压转换器的规格,尤其是那些描述了配线细微差别的地方。 根据研究结果,我停止了降压转换器MCP16311的使用,结果发现它非常挑剔,只有在我完全按照规范编写之后,它才起作用。 但这不是最大的问题,因为后来发现,改变LED的亮度会导致较小的功耗下降,这足以破坏D203S传感器的信号,可以通过在传感器的工作电路和降压转换器电路中增加电容器来解决此问题。 使用mqtt调试所有东西后(通过ESP8266),我连接了rs-485,再次有故障在等待我,在D203S传感器通道的运算放大器的输出上,我再次看到了垃圾,该垃圾显然对应于rs-485上的交换。 总的来说,事实证明,要为整个模拟部分使用一个额外的LDO转换器来克服这个问题,然后就会感到高兴。
如果将所有内容组合在一起,则会得到以下图片:

如果所有这些都被拿走并焊接了,那么它看起来像这样:

他们焊接了电路板,打印了箱子,将所有东西放在一起,将其悬挂在天花板上,数据进入了系统。 因此,让我们想象一下如何在智能家居系统中应用这些数据,当然,您还可以将警报发送到电报中。 除了第一点,我什么都没做,但是我抛出了以下脚本:
- 如果没有打开此灯,是否有任何房间出现运动,楼梯上是否有灯光,加上现在已经昏暗,加上夜间
- 自动关闭第一层百叶窗(如果关闭),如果已经是早晨,并且一天中第一次在客厅中检测到移动
- 如果CO的浓度超过任何水平,则打开通风阀,如果CO的水平下降,则将其关闭(实际上是在有壁炉的房间中)
- 如果温度超过一定极限,则打开通风阀,否则将其关闭
- 如果百叶窗是打开的,并且运动传感器在夜间在街道上工作并且房屋处于夜间警卫状态,则自动关闭第一层百叶窗。
因此,补充,我们将使房子更智能...