ShIoTiny:小型自动化,物联网或“假期前六个月”




要点或本文的主题


由于人们的利益不同,人们的时间很少,因此简要介绍一下本文的内容。


本文以最低的价格概述了控制器项目,并提供了通过WEB浏览器进行可视化编程的可能性。


由于这是一篇旨在显示“您可以从一分钱的控制器中榨取什么”的评论文章,因此您不应在其中寻找深层的真相和详细的算法。


考虑了基于ESP8266 WiFI芯片构建控制器动机,想法和结果。


警告


我不想写这篇文章。 我根本不喜欢写文章。 此外,还有很多思考的必要。 思考如何写作,以使被误解的次数减至最少。 思考如何不走极端。 还有更多需要考虑的问题。
但是朋友们说,由于我在物联网和其他小型自动化领域的努力对他们来说很有趣,因此对于其他人来说,它们对于普通大众可能也很有趣。 那么,观众将对谁感兴趣? 当然,哈伯。 我在这里。 老读者和新作家。

对于读者可能不喜欢的错误,不准确,错别字,非现代的呈现风格等,我不承担任何责任。 阅读风险自负。

我还立即警告我,不会解释与该主题没有直接关系的MQTT,WiFi和UDP多播。 一些链接在文章末尾。


一个想法或一些歌词的诞生


好吧,生活不是一件容易的事,Ch下机会在其中起着重要作用。 因此,我想分享一下随机事件乘以规则的懒惰如何导致基于ESP8266的相当有趣的控制器设计。


一切始于偶然:我想建立一个控制系统,用于供水系统和给该国的花园床浇水。


但是大约,因为我只能在假期里完全从事管道罐起重机的工作,在此之前,他们甚至有六个月以上的时间-一切都仅限于在非正式场合下与同事和朋友同志进行讨论。


长期以来,“小型自动化”或“这些您的学校-黑客-黑客-学童”中惯用的说法是物联网(物联网)。 诸如此类的互联网早在广泛出现之前就已出现。


即使在童年时代,我也希望事情能够“自我完成”。 我希望可以从远处控制它们。 但是那时(上世纪八十年代的80年代初),这很困难。 互联网在世界上任何地方都没有广泛使用,因为那里没有手机,平板电脑甚至LCD显示器和USB闪存驱动器。 因此,我不得不将自己局限于“拍手上的电灯开关”和最简单的无线电遥控器。 但是对于那个时代和那个时代,这很有趣。


但这是过去。 在二十一世纪院子里的农舍。 每个人的口袋里都有一部智能手机,互联网几乎到处都是必要的和不必要的,而可用的电子组件的数据库现在已经到了15年前,地球上的普通居民甚至都没有想到过它。


因此,在决定打造该国的水务控制器之后,我将目光投向了ESP8266芯片。
首先,这种芯片很便宜。 如果一个控制器不够用-您可以放两个,三个或五个。 其次,它带有WiFi。 也就是说,您可以通过Internet观看发生的事情,甚至可以从任何智能手机控制过程。 当然,您需要具有Internet访问权限的访问点,但这不是问题。 无论如何,在我的乡间别墅中,它几乎无处不在,或将要包括。


投入到ESP8266精彩的项目世界后,我惊讶地发现,尽管该芯片具有出色的功能,但除极少数例外,其上的项目分为两种类型:这是极其原始的程序,例如“单击智能手机上的转盘并查看状态”。通过互联网的温度传感器”; 或JavaScript或Lua的良好而可靠的解释器,但不幸的是,它们消耗了几乎所有的内存,并且不允许您做严肃的事情。


我的第一个想法就像做一个煎饼一样简单-根据传感器的状态编写一个简单的泵控制程序,仅此而已。 但是,就像在引入不同系统的耙子上切碎的kalach一样,我意识到我绝对无法预见在供水灌溉系统构建过程中我希望或需要理顺的算法的所有弯道。


D在一个黑暗的谷仓里在乡下制定程序,不是很方便。 而且你必须。
出路是什么? 当然,我想到的第一件事就是使算法可定制。 我的一位同事给了很多建议-什么配置以及如何配置。 有了这个,他砍掉了我的第一个想法。 多亏了他 如果在我眼前他还没有部署我需要配置的参数数量,那么我可能不会拒绝该选项:创建一个算法设置页面。


但是 ,关于调整参数数量的一幅令人恐惧的图片,甚至相互影响,使我感到震惊。 再一次,我意识到没有什么可以预见的...


我将立即预订:我很懒。 很懒! 坦率地说,我懒于每次都重写程序。 因此,出现了任务-如何快速轻松地设置算法,最好不进行编程? 而且,该算法将非常复杂。 将有很多参数; 对于我而言,这将是个人情况,而对其他人则不适合。 我真的很想使该设备或多或少具有通用性...


由于假期前还有大约六个月的时间和所有的管道工程,我决定花点时间思考:如何使它方便又美观? 没有编程如何编程? 设置时没有一万亿个可以更改的参数怎么办?


像往常一样,一切都已经摆在我们面前:我意识到我想以动作正方形的形式绘制一种算法,并将它们与通信线路连接起来,以显示数据从何处飞来。 好吧,在方框中戳一下,我希望能够配置其一些单独的参数。


设置算法,用正方形绘制算法行为并不新鲜。 这种系统可以追溯到80年代。 已经有一个超级流行的NodeRed系统,对于已经加入小型自动化/ IoT世界的人们来说是众所周知的。


但这真是倒霉:此类系统是为“大型PC”设计的。 最糟糕的是,在Raspberry PI上。 但是在ESP8266上根本没有,它只有几十KB的RAM并且没有操作系统!


怎么样 只有两种方法:在“大型PC”或笔记本电脑上编写程序,然后以某种形式将其传输到ESP8266或尝试将不受欢迎的内容“塞入” ESP8266控制器本身。


因此,我拥有的最大程序是:对控制器进行编程,除了带有Web浏览器的笔记本电脑之外,不需要任何其他东西! 也就是说,一台带有WEB浏览器和我的控制器的笔记本电脑-这应该足以完全配置和编写控制程序。


而且 ,事实证明,这很有可能实现!
我不会为您带来项目开发的所有细节。 我只能说,根据在开发过程中想到的单词和语言,有可能编写单独的“ 电子工作者亵渎字典 ”。 但是一切都落后了。 更确切地说,不是全部,而是尚不清楚的第一个也是最困难的阶段-您的想法是生活还是在月光下的夜晚变成灰色的胡说八道。


我将分享被称为“ ShIoTiny Controller”的结果


发生了什么事?


ShIoTiny控制器的硬件是标准且简单的:三个用于干触点传感器的输入(按钮,簧片开关,它们也是水箱中的水位传感器),一个ADC输入,一个用于连接温度和湿度传感器(如DHT22或类似产品)的输入。 最后,三个输出为220V,1 Amp的开关继电器形式。 继电器显示10A,但我是现实主义者,我不会让他们通过10A放大器板。 并且控制泵的启动器和1 Amp就足够了。 所有这些均由5到9伏电压的电源供电。


当然,我像“ Schaub was”一样添加了温度传感器,但是在ADC上希望能够测量电源电压。 还不够吗?


当然,除用于连接DHT22的输入外,所有输入都具有电阻和二极管保护:我不想烧掉ESP8266,二极管和电阻仅花费几美分。


文章的开头可以看到成品的照片 。 我订购了这些板中的几块-如果我将其烧毁,或者必须削减路径和支腿该怎么办?
但是,幸运的是-不必。


产品当然是美丽和伟大。 但为方便起见,以下是与传感器和执行器的板模拟器的连接图。





代替液位传感器-按钮Input1..3代替启动器-与继电器Relay1..3连接的LED。 好吧,ADC上的一个可变电阻器可以模拟输入电压。
继电器关闭时,红色LED点亮。 并在打开时-绿色。 所以我在桌子上调试了。


除此之外,板子的左侧还有一个电源连接器,右侧有两个服务按钮:Reset和AP。 好吧,一个DIP开关将设备置于编程模式。 通过USB-UART适配器的编程连接器ESP8266也可用。


有关按钮的一些说明。 什么是重置 -显而易见。 但是需要AP按钮才能将ShIoTiny置于开放访问点模式(配置模式或Config模式)。 为什么需要这个? 好吧,例如,您搞砸了网络设置并想更改它们。 按下AP按钮几秒钟(直到美丽的蓝色LED点亮)。 然后,拿起您的智能手机或笔记本电脑,打开WiFi,然后看到一个名为esp_8266_xxxx的开放访问点并连接到它。 然后转到智能手机或笔记本电脑的浏览器,然后输入地址栏:192.168.4.1。 如果一切正常,那么您将被带到ShIoTiny控制器页面,并且可以以新的方式对其进行配置。


我们所见,硬件并不复杂。 因此,关于软件部分


所有的实现跃点中,我将进行描述,但是随后。 有一天 今天,我将软件仅视为“外部”,也就是说,从冒着使用我的手艺风险的用户(本人或其他人)的角度考虑(有这样的特技演员)。


用户的角度来看,该设备是可通过WiFi访问的HTTP服务器。 所有设置,编程等-都是使用WEB浏览器完成的。


因此,我们转到了控制器页面。 我们看到了什么? 我们看到“控制和状态”选项卡,其中显示了所用设备的当前状态:输入,输出,ADC,DHT22。 另外,还显示了到接入点的连接参数(如果我们在WiFi站模式下工作); 接入点设置(如果我们在WiFi接入点模式下工作)或两者兼而有之。 好吧,此外,如果使用了MQTT协议,那么还会显示与MQTT代理的连接参数。





看,没什么特别和有趣的。 没什么可按的! 虽然...还有两个选项卡! 配置网络设置网络和编辑器图解方案ElDraw


您猜对了, 网络正在建立一个网络,但不仅如此。 它有几个有趣的参数。 在“ 网络”选项卡上单击“戳”,大约可以看到图中所示的内容。
配置每种模式的访问点名称和密码-WiFi站和WiFi访问点。 一切似乎都很清楚。 以及“扫描WiFi”按钮的用途它是完全透明的。
但是下拉列表“ ShIoTiny模式”需要澄清。 事实是我无法决定使用哪种模式对我来说更方便。 因此,提供了设备的5种操作模式。





我们简要列出了这些操作模式。


配置模式 -配置模式。 这是具有固定地址192.168.4.1和名称esp_8266_xxxx的开放访问点模式。


站点模式 -连接到接入点的WiFi站点的模式。


AP模式 -封闭式接入点模式。 您可以自行设置名称和密码。


AP + Station模式是同时包含AP模式+ Station模式的。


单模式 -完全不连接网络即可工作。 担负重任的孤独控制器...


“配置模式”以外的任何模式 ,都可以通过选中“在站点模式下锁定Web”复选框来阻止WEB页面。 出于安全原因,这是一种类型。


这些设置是MQTT显而易见的:服务器,端口,密码,开放连接或SSL 。 我不会在这里详细介绍。


除其他所有功能外,ShIoTiny控制器还可以发送和接收特殊格式的数据包以进行多播。 其设置也很明显:组地址和端口。
当然,如果您描述了设置的所有细微差别,您将获得另一篇文章,但这不包括在我的计划中。


因此,通过“ 网络”选项卡,一切都变得清晰。 让我们继续进行控制器的主要功能-ElDraw程序编辑器


通过点击ElDraw选项卡,我们看到类似以下的内容。 当然,如果设备没有负载电路,则电路字段将为空。





左侧是元素或节点(节点)的调色板。
右侧,为图字段或简称为“图表”。
顶部开始-用于加载和卸载到磁盘和设备的按钮,以及用于编辑的按钮。


对于那些与编辑一起工作的人,管理通常是显而易见的。 我们需要向图中添加一个元素-用鼠标将其从面板拖到图中。 必须从图中删除元素或链接-用鼠标在其上戳一下,然后按DEL键。 我们需要连接元素-我们将一个元素的输入连接到另一个元素的输出。


仍然有缩放比例(SHIFT +鼠标滚轮)。 不幸的是,没有办法复制元素和元素组。 但这并没有太大影响。


另外,出于逻辑原因,一个节点的输入只能连接到另一节点的一个输出。 但是节点输出带有其他节点的多个输入。 输入始终在节点的左侧。 输出始终在右侧。


我们具有实现算法的哪些功能?
机会-相当广泛。 该选板包含代表ShIoTiny控制器的所有硬件的节点:输入,继电器,ADC,DHT11 / 22。


有用于数据处理的逻辑和算术节点。


为了使我们可以通过Internet使用该设备,有一些节点可以将参数订阅和发布到MQTT代理。


如果我们希望多个ShIoTiny控制器相互交换信息,则可以使用UDP多播协议使用节点来发送和接收参数。


对此,有计时器节点。 事件管理控制节点。


我会举几个例子。 例如,您是否希望每30分钟在MQTT服务器上发布一次温度和湿度数据? 没有什么比这更容易了。 这样画。





好吧,模因按钮“上传”。 仅此而已!
如果您已在“网络”选项卡上正确配置了与MQTT代理的连接,仅此而已!
每半小时,温度将在主题/ T下在代理上发布,温度-在主题/ H下在湿度下。 或者,如果您询问主题名称,则在其下。
问题:为什么18,000 30分钟? 因为所有时间都以十分之一秒为单位。


现在,您想在此电路中添加通过Internet甚至在一定时间内打开Relay1中继的功能吗? 没问题 这样画。





大约五个,单击按钮“上传”。 仅此而已! 现在,除了将在MQTT代理上每隔半小时发布温度和湿度的事实之外,还可以打开Relay1继电器。 是的,不仅要打开它,还需要十分钟。 您可以通过发布主题/ r1cmd(设置为1)来启用中继。中继的真实状态将在主题/ r1status中发布。


我不仅要打开继电器,还要提前关闭继电器吗? 是的,正如您所说。 下图显示了操作方法!





原理清楚吗? 您只需用鼠标绘制算法! 并编写一些设置:时间,主题名称等。 这比编写一堆代码要清楚得多。


顺便说一句 ,突出显示不同颜色的链接不是“ photoshop”,这是编辑器的功能之一。 您可以根据需要给链接着色,以免混淆它们。


但是 ,那还不是全部! 为了调试算法,有一个“ Monitor start”按钮。 看起来很奇怪,它打开了“监控”模式。 在此模式下,会定期从ShIoTiny控制器读取所有节点的所有输出状态,并将其显示在电路上。 大致如下图。





也就是说,我们可以“几乎实时”地看到每个节点的输入和输出。 当有不清楚的地方时,它会很有帮助。


仍然要描述许多“芯片和功能”,我的良心不允许您在一篇文章中花时间在它们上面。 实现的主要思想已经很清楚:最小的可配置参数-最大的可视性。


美中不足


当然,我希望美中不足,但是这个世界并不完美。 我的编辑器和控制器都不完美。 我发现了两个尚无法消除的主要功能。


首先,有时在元素的组移动期间会出现毛刺。 但这不会极大地干扰工作。 一个功能比一个错误更有可能。


其次,在某些情况下,使用“上传”按钮将电路加载到设备中后,它会重新启动。 这不会影响生活,但是需要更新编辑器页面。


结论


希望您喜欢绘制算法而不是编写程序的想法。 这就是随机的思想,观念和论点有时会如何为自己带来可行的发展。


但是 ,我认为这篇文章的数量已经超过了所有合理的限制。 所以我今天做完了。
, « ».
— : shiotiny@yandex.ru


, , , .


, .


,


ShIoTiny


ESP8266
WiFi
MQTT
UDP Multicast



().


https://github.com/shiotiny/ShIoTinyBin


: https://github.com/shiotiny/ShIoTinyBin/blob/master/bin/esp-07-shiotiny.bin


: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/esp-07-shiotiny.png


: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/ShIoT-esp8266-01_obzor.pdf


" " .

Source: https://habr.com/ru/post/zh-CN463107/


All Articles