
一切始于他。 这是我在Aliexpress上首次购买该国的第一套自动化设备-我想在温室中进行自动浇水。 计时器装在一个弄皱的盒子里,上面有一个破裂的保护盖,但是可以用。 在整个夏季,他都为黄瓜浇水做得很好,冬天被移走并藏在温暖干燥的地方。 但是下个赛季,我在等待一个令人不愉快的惊喜-计时器开始挂起,停止响应控制按钮并打开水面。 起初,我用便宜的电池犯了罪,然后用金霸王品牌的电池代替了它们。 我认为问题出在电源和浪涌电流。 它没有帮助。 然后,我取出烙铁,焊接了所有可能的东西,甚至还添加了一些缺少的电容器。 但是他强地继续上吊。 不幸的是,该产品的维护性不是很好-因为我使用了开路微电路跌落装置,而且显然在微电路的化合物下正好卸下了某些东西。 这样一个混乱的计时器使赛季结束了,我开始思考应该用什么代替它。
我的第一个想法是采用Arduino Mini模块,时钟模块,指示器,并以某种方式将其全部塞入定时器损坏的情况下,并使用其本地电机和球阀。 但是不知何故,它实际上并没有到那里去,它消耗的能量显然要比原始填充物多(这意味着您可以忘记电池盒中的电池),而且它很无聊且无法扩展-我不仅要给温室浇水,而且要给一个破烂的计时器浇水。
然后在Ali上,我遇到了一个普通的电动球阀。 这是一个英俊的男人:

是的,它花了可观的钱,但是将其与夏季供水连接并让它无人看管一周也不为过。 尽管配备了塑料变速箱,但总体上还是相当坚固的-现在,在我的主要供水系统上,有两个这样的水龙头可以工作,压力为5大气压。
这个想法很简单。 带有ESP8266 WiFi模块的手帕在桌子的抽屉中等待。 决定放弃节电措施,转而使用废旧汽车电池,根据计算,该废旧汽车电池至少可以使用一个月,为了避免错过电池放电时刻,该电路提供了一个分压器,内置ESP8266 ADC通过该分压器连续测量电源电压。 带电池的DS3231模块应作为电路中的时钟,每m / s MP1584EN的手帕应将电压从12V降低到3.3V。
这是一个原型框图:

这是其实施的照片
已经有些拆卸的实现-DC-DC模块进入起重机,面包板背面的时钟模块 吊车电机控制在这里简单地完成-在表的抽屉中找到了哪些晶体管,它们已安装。 实际上,可以通过m / s ULN2003来控制电动机,方法是与具有逻辑控制的场效应晶体管并联,或者通常通过具有光电隔离的继电器模块,并行接通几个通道。 仅需考虑工作电流约为70 mA的电动机的涌入电流(以及堵转时的电流)约为300-350 mA。
用一个简单的Web界面在Arduino中编写一个快速草图:

原型处于测试任务。 我通过路由器转发了起重机的Web界面,该设备一直在线可用。
和想法继续。 一个原型是好的,但是我想要几个这样的水龙头,而在面包板上做所有这些事情不是一个选择。 起重机已打开。 很明显,一个密封的盖子下面有很多空间,甚至还有固定的地方:

在原型中使用的那个水龙头中,盖子下面是一个带有继电器的小电路板,该继电器提供了控制逻辑。 照片中有一台起重机的索引号为CR05。 这些分接头中没有逻辑或电路板。 只需将电动机控制线和限位开关线拔出即可。 而且您需要通过更改电动机电压的极性来控制此类起重机。 同时,强烈建议在TC的端点上控制闭合/断开结束时刻,我们记住这些时刻的电流已经为300-350mA。
框图开始如下所示:

现在,我们将卡尺(一张纸)拿在手中,开始进行测量,绘制印刷电路板的轮廓,然后尝试在其上放置组件。 放弃了一个大的CR2032电池,并使用了一个小的CR1220(或1225)。 长期以来,一直选择H桥芯片来控制电动机。 选择似乎很大,但是这些微电路中的很多要么不能在12V的电源电压下工作,要么它们使用压降很大的双极晶体管,或者这种情况不成功。 TB6612芯片起初很长一段时间都没有引起我的注意,然后显得非常多余且不方便焊接。 但最后,我把重点放在了她身上-在Ali上,这是负担得起的,而且价格便宜。 那里的H桥建立在场效应晶体管上,可以在高达15伏的电压下工作。 DC-DC转换器模块(MP1584EN)留在模块中-事实证明,它的价格便宜得多,而且易于焊接。 为了可靠性,主要的事情是用一个恒定的电阻(27kOhm-它将提供3.4V的输出电压)代替它。时钟的微电路可以在更紧凑的情况下使用,但是有一个警告-我要为Ali订购所有组件,所以有被损坏的风险。虚假或断路。 因此,在最初阶段,计划购买所有的微电路作为成品模块的一部分,并焊接到开发板上。 在模块中,时钟仅在SO16情况下。 实际上,只有一个手表微电路被证明是有缺陷的或伪劣的-其石英频率为32727,设置为32768 kHz。
完成所有准备工作后,我们请KiKad,Google稍作寻找缺少的席位,自己绘制一些组件并开始培育董事会:

我们以1:1的比例打印进行检查。 我们附上零件和模块,如果所有匹配,我们也会准备Gerber文件进行生产并发送给EasyEda。 3周后,我们将获得10张可爱的手帕并收集它们。
照片中还剩5个,其余全部工作
模块组装当然,紧固件的孔一点也不重合,有些座位没有按他们的意愿摆放,但总的来说,产品在组装和固件后马上就可以工作了。 在Ali上购买了密封电源尾巴,通过了建筑物中的标准压力密封,WiFi起重机计时器的出厂外观为:

以下是在该国执行战斗任务的几台起重机:
但是后来这个念头又继续了。 我希望在该国实现更多自动化,并且该模块非常紧凑且通用。 通过H桥,您可以轻松控制常规继电器。 对于DIY自动化,很多人都选择Sonoff,但事实证明,我本人可以做得更好。
从这里开始,将简单的Wi-Fi分接头转换为代号
SHAPEsp-基于
Esp 8266的智能家庭自动化平台的简称。 按照计划,这应该成为用于家庭自动化的廉价通用模块。 所有这些都应该是可靠的,并且在价格合理的情况下组装后看起来像成品。
令人惊讶的是,事实证明,在带有2DIN的Aliexpress的中文情况下,该单元很好,身体在体内,广受欢迎的AC / DC 220V / 12V HiLink转换器(及其克隆),继电器和电源连接器,当然还有我稍微转换的模块ESP8266,时钟和H桥。
做三个
该模块既可以安装在起重机主体中,也可以安装在DIN机架中 我们得到:

稍微改变了模块的形状。 我添加了边缘连接器,以便它可以直立在2DIN封装中。 我在板上端放置了指示灯LED,这些指示灯在塑料盒中的灯光下可见。 好吧,我散布了用于继电器和电源的介质板。 为了使其更便宜,所有这些都通过一个板发送到生产环境:

我组装了两个这样的原型,并将它们放在平房中,以控制冬季到来时对流器的包含:
在另一篇文章中
面板中的一个模块,与包含对流器的一对接触器相邻 但是后来他决定进一步改进它,使其更具通用性。 为了获得更可靠,更方便的固件,我将NodeMcu的固件方案放在模块上。 他推导了所有可能的引脚并增加了接触垫,以方便连接不同的传感器。 所有边缘销均以2.54 mm的增量放置,因此可以将模块插入面包板面包板。 自然,我在比较器上测试了ds1820温度计,组合的BME280传感器和湿度传感器的连接。 事实证明,除了带有继电器或起重机的简单计时器之外,您还可以轻松地建立气象站或aquastop系统。 好吧,各种各样的其他通知和控制系统...
搬走了,为弗里辛画了他的模块模型。 因此,您可以虚拟地评估和轮换各种应用程序选项:

到GitHub模型的链接在本文的底部。
好了,然后最困难的部分开始了-模块的软件支持。 最初,我使用相当简单的Arduino草图测试并测试了所有内容。 简单的HTML,一些Java脚本,各种简单的数据传输方式,只有计时器的功能和一些我需要的传感器。 但是很快就很清楚,掌握物联网和智能住宅建设现代世界中的所有内容并非易事。 而且也只是懒惰(这是一个微笑的笑脸)。 有时我不想重新发明轮子。
因此,决定查看现有的固件,可以在其中添加对模块的支持。 首先,我们采用了Sonoff产品的替代固件:Sonoff-Tasmota,ESPurna,ESPEasy。 搜索可以找到这些固件的比较评论。
例如:
https://lobradov.imtqy.com/FOSS-Firmware-comparison-overview/
https://lobradov.imtqy.com/FOSS-Firmware-comparison-developers/
实际上,我以某种方式亲自浏览了这些固件存储库中的源代码,我意识到对我而言,最简单的方法是将模块添加到ESPurna固件中。 固件代码的结构相当合理,最初假定添加了新模块和功能。 在固件中是我需要的计时器功能,即独立的Sheduler。 此外,可以说是开箱即用的,只是在hardware.h文件中用一个简单的继电器描述了我的配置,我得到了WiFi继电器固件的有效版本。
但是,我的模块具有更丰富,更复杂的功能。 并决定为固件做出贡献。 一方面,这很简单-我们编写功能并执行请求请求,但实际上这是一个枯燥而漫长的过程,并不总是会产生积极或快速的结果。 这些都是以下事实的代价:基本上我和我未知的董事会仅需要所建议的功能。
我从手表的支持开始。 在ESPurna固件中,一切都通过NTP和arduino的时间库工作-从历史上来说,您需要知道时间,但是Sonoff产品没有独立的时钟,并且假定它们始终可以访问Internet。 为了支持RTC时钟,我编写了一个简单的模块,如果需要,可以将时间提供程序功能从纯NTP替换为NTP + RTC。 原理很简单-如果无法使用NTP同步,则我们尝试从本地RTC时钟中读取时间。 当出现对NTP服务器的访问时,我们将恢复同步,并在需要时同步本地时钟。 因此,我模块上的时钟开始工作了。 拉取请求很快就被接受了,但是它转到了一个单独的espurna-rtc分支。
接下来是一个简单的请求。 由于我测量了DC-DC转换器的电源电压以跟踪电池放电,因此我不需要监视ESP8266模块的电源电压,而是监视一些用户定义的电压。 我将其设计为请求请求“添加了对自定义VCC监视的支持”。 但是这种要求悬而未决……贡献的欲望消退了。
此外,很明显,将模块添加到受支持的成品设备列表中并不是一件容易的事-它具有许多不同的配置。 因此,决定简单地开发其固件分支。 如果可能并希望保持同步,请在主固件存储库中发出拉取请求或提供选择。
经过这样的决定,一切变得简单了。 在固件中,继电器控制系统被部分重写。 添加了H桥控制模式,在添加自定义继电器操作模式方面变得更加方便。
对固件代码的进一步研究表明,不可能对其进行重构。 对于微控制器,在某些地方编写和使用资源的样式非常残酷(尽管它是相当聪明的32位)。 例如,用于发布调试消息的系统以极快的速度吞噬了堆栈,但与此同时,为了不掉落整个系统,当堆栈大小小于10kB时,它就被阻塞了。 我在线程中重新编写了一些代码,以便现在控制台中的所有调试消息和提示都完整显示。
好吧,目前,计算子系统已添加到固件中
日出/日落和虚拟的SunriseSensor,因此您可以从SHAPEsp模块构建一个简单的天文继电器。 需要勇气并致力于主存储库。 我认为这是有用的功能。
这是一个关于DIY创意从原型到几乎成品的转变的故事。 也许是需求产品。 最令人惊奇的是,我还没有尝试过任何智能家居系统-所有模块彼此完全独立地为我工作,并且可以通过Internet上的Web界面轻松访问。 购买后,OrangePi PC板位于抽屉中,正在等待成为智能家居控制器。
链接列表:
- Fritzing模型以及如何聚会我认为Kikad中将有电路和模块布局
- 模块的简单测试固件
- 具有模块支持的ESPurna固件分支
- ESPurna主固件库