一分钱的物联网:实用指南。第2部分,软件

我们将继续一系列指南文章,其中我们将考虑如何实现一种简单而廉价的基于云的物联网设备,该设备具有从无到有的巨大潜力,而无需焊接和不必要的困难。拿一块干净的ESP8266芯片,从DeviceHive安装固件,配置和编写用于访问云服务器的简单Web应用程序。我们组装并连接一个简单的设备到微芯片,可以通过在浏览器中单击两次来控制它。这是周期的第二部分,描述了需要哪个软件,如何启动,如何刷新ESP8266并与服务器建立联系。


本文的作者演示了今天将要讨论的内容。

该系列的第一篇文章:
一分钱的物联网,或DeviceHive可以做什么。
一分钱的物联网:实用指南。第1部分,硬件。

创建一个服务器

让我们按照最简单的方法使用免费的DeviceHive游乐场。为此,请在此处注册。之后,登录并访问此页面:



恭喜你!现在,您在DeviceHive上拥有自己的游乐场。要从外部连接到播放组,请使用Url API链接。这是我们用于从ESP8266和客户端应用程序访问服务器的地址。要访问管理面板(位于管理网址),请使用指定的登录名(Initial Login)和密码(Initial Password)。

题外话:服务器可以部署在本地或云服务上。在此处查找安装说明您可以更轻松地使用它- 在一行中使用Docker启动服务器在此处 查看完整说明 DeviceHive是一个完全开源的项目。这意味着服务器既可以部署在家庭中,也可以部署在云服务中,例如,Azure

docker run -d --name=devicehive -p 8080:80 -p 9001:9001 devicehive/devicehive-standalone





固件

现在该做固件了。为此,我们需要将ESP8266连接到计算机,然后连接USB-> UART适配器,电源和ESP8266模块。

安装适配器的驱动程序。 Linux用户在这里比较容易,因为内核已经包含了大多数这些驱动程序。但是Windows和OS X用户将必须自己安装适配器驱动程序。

链接至最受欢迎芯片的官方下载页面:

CP210x:www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspx
PL230x:www.prolific.com.tw/US/ShowProduct.aspx? pcid= 41
FTDI:www。 ftdichip.com/Drivers/VCP.htm
CH341:www.wch.cn/index.php?s = / page-search_content-keyword-CH341SER.html

连接适配器,并确保驱动程序正常工作。在Linux上,设备应出现在/ dev / ttyUSB *文件系统上,在OS X-/dev/tty.*上,在Windows上-设备管理器上应出现一个附加的COM端口。如果一切正常,请从计算机上断开适配器的连接。

接下来,用两根线将电源(3.3伏)的输出连接到ESP8266。为了打开模块,在打开电源时,必须通过为CH_PD的输出提供高电平来使其工作。有必要告知模块我们将使用内部存储器,因此在打开GPIO15时应保持低电平。进入编程模式,我们需要对GPIO0施加低电平。我们仅在固件期间需要后者。听起来令人毛骨悚然,但实际上我们只需要将CH_PD的三根线连接到电源的正极,并将GPIO0和GPIO15连接到电源的地(负极)。最后,我们使用另外三根线连接USB-> UART适配器:将端子减去源(GND)连接到适配器接地,RX适配器的输出连接到ESP8266的TX模块的输出,而TX适配器的输出连接到RX模块的输出。我们获得了三个不同标准模块的最终连接图。如果缺少某些输出,则很可能已经将其连接到模块内部,紫色线是进入编程模式的最临时的连接。







执行此连接的示例:


如您所见,不需要焊接,所有连接都可以使用普通连接器进行。

接下来,打开电源,将适配器连接到计算机,然后下载重新编译的ESP8266 DeviceHive固件。在发布时,可以在此处获得第一个和最新版本

新的预编译版本始终可以在GitHub找到您也可以在此处获取整个存储库,自行编译固件并根据需要进行修改。存储库中的所有代码均根据MIT许可。
从上面的链接下载的压缩文件解压缩到一个单独的目录中,从控制台运行esp-flasher- <您的操作系统名称>(Windows用户只需双击esp-flasher-win.exe)。因此,您应该具有以下内容:



除了随附的固件ESP8266实用程序外,您还可以使用其他任何工具,例如esptool

恭喜-固件已安装并且已经可以使用!现在,断开接地与GPIO0引脚的连接(不再需要),以使模块不再再次进入编程模式。要连接到ESP8266终端,请运行esp-terminal- <您的操作系统名称>或任何其他支持转义字符的串行端口终端,例如PuTTY或GNU实用程序“ screen”。端口参数:速度115200、8N1。

随附的两个实用程序都能够自动检测ESP8266连接到的端口,即启动时不需要任何参数。
启动终端,我们将看到邀请:



实际上,这是一个常规的unix类终端,支持自动完成(Tab键)和历史记录(上,下键)。但实际上,那里没有文件或操作系统。可用命令的列表位于“帮助”中:



我们对“配置”命令感兴趣。运行它来配置设备。

该实用程序将问五个简单的问题:
  1. Wi-Fi网络的名称。
  2. 您的Wi-Fi网络的密码。
  3. 服务器的API地址。
  4. 设备的设备ID。
  5. 设备的DeviceKey。


在“ DeviceHive服务器URL”中,输入服务器的“ API Url”。在“ DeviceID”中-服务器的某些唯一设备标识符,正是以此名称来区分服务器上的设备。“ DeviceID”可以是纯文本。特别是,您可以通过单击Tab来生成文本GUID。然后在最后一次请求DeviceKey时,输入选定的密码。可以通过按Tab键来生成。

在这里值得做些小题外话。ESP8266通过DeviceID使用服务器认证。一旦在服务器上注册了DeviceID和DeviceKey,就无法再连接具有相同DeviceID但具有不同密码的其他设备。将来,仅当您想用具有相同DeviceID的另一台设备替换物理设备时,才可能需要DeviceKey密码。

设置如下所示:



如果我们正确执行了所有操作,则可以查看调试输出,并确保设备已成功连接到服务器。这是成功连接的设备的调试输出:



现在可以禁用USB-> UART适配器。如果您希望能够查看调试输出或网络状态,则可以保留它。

现在,在管理面板的“设备”标签中,将显示第一个设备。

让我们尝试将第一个命令发送到设备。为此,请按以下方式进入管理面板:“设备”->“ ESP”->“详细信息”->“命令”->“输入新命令”。在“名称”字段中,指定“ gpio / read”,然后按“推”。团队已发送!

答案很快就会出现,但是管理面板中命令的结果不会自动更新。为此,在命令对面有一个刷新按钮。发送后一两秒钟单击它,您将看到此屏幕:



发生了什么?通过按下按钮,您从管理面板(在本例中为服务器客户端)向服务器命令发送了命令。 ESP8266将其拾取,执行并将结果传递给服务器。通过单击刷新按钮,您向服务器询问了命令的结果: 可用命令列表位于固件随附的PDF文件中。也可以在此处使用,但可能与固件版本不匹配。

{"0":"1","1":"0","2":"1","3":"0","4":"1","5":"1","12":"0","13":"0","14":"0","15":"0"}




按照传统,我们将点亮板上的LED。在大多数ESP8266模块中,LED处于TX类型的输出上,我们将对其进行处理。当芯片的输出上出现低电平时,它点亮。在该文档中,我们将看到GPIO1只是相同的TX输出,因此我们将其设置为逻辑零。在这种情况下,LED会亮起而没有任何问题。之后,模块上的终端将停止工作,直到重新启动。

现在,我们还设置了文档中指示的命令。在“名称”字段中设置,在“参数”字段中设置- 。执行命令后,电路板上的LED应点亮,如下图所示。"gpio/write"
"gpio/write"
{"1":"0"}




石英下方的蓝色LED指示灯,红色指示灯仍在其旁边发光,表示电路板已通电。

从照片中可以看到,只有两条带电的电线和两条跳线连接到模块,才能以正确的模式打开模块。要关闭,请发送带有参数的命令命令参数的格式为普通JSON。PDF文件中描述了可以填充的字段及其可能的值。 今天,我们弄清楚了如何将最简单的命令从管理面板发送到设备。在下一篇文章中,我们将告诉您如何为服务器编写一个简单的客户端应用程序,该应用程序允许您访问该设备,并实现一个性能稍强的设备(还记得第一篇文章中的“激光”吗?)。 请继续关注,这将很有趣!{"1":"1"}






由高级嵌入式开发人员Nikolai Khabarov发布。

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


All Articles