具有ESP-NOW协议的智能扩展盒

228

3.

2

简介:具有ESP-NOW协议的智能扩展盒

About: Electrical Engineer and a programming hobbyist! I love to build exciting stuff!

在上一个指导我们了解如何为基于ESP8266的健身手表实施手势检测算法,我们能够检测不同的手势并在OLED屏幕上显示它们。在这种说明中,我们将采用该手势检测功能前进,并制作一个名为“智能扩展盒”的互补硬件,这将让我们控制与我们的手表连接的多个家用电器设备。获取以下用品,让我们成为建立!

Supplies:

这些是可以帮助您轻松完成此项目的产品列表
(联盟链接)

Step 1: ESP NOW

It’s a proprietary protocol by Espressif. It’s a very clever little protocol where data is transferred from one to another without actually making a connection between each other. It sounds confusing but here me out.

与蓝牙或WiFi不同,它不需要任何配对或握手来建立设备之间的连接。相反,它使用称为供应商动作帧的东西来传输数据。您可以查看他们的官方文档以了解更多有关它的工作原理。

Because I’m more interested in the advantages and limitations of this ESP NOW protocol, so we’ll have a better understanding why we are using this in our project.

第2步:为什么esp现在

限制

该协议的一个大缺陷将是,它可以立即传输250字节,因此与WiFi,蓝牙或Lora相比,转移数据非常有限。由于它没有像WiFi这样的任何类型的连接,因此它无法访问Internet以获得任何其他信息,最后只有20个设备可以连接到一个主设备。

好处

即使数据和设备有限。在我们的情况下,只需转移和关闭信号应该是有益的。由于协议具有其他upsides,因此它不需要任何路由器或DHCP服务器,因此可以使用2个ESP设备在任何地方使用,并且它不需要花费大量时间或连接到另一个设备,因此数据可以是在更短的时间内转移,并且设备可以睡眠以在传输数据后节省电量。

第3步:现在的不同模式

ESP-NOW协议中有三种模式,控制器模式只能发送数据,从模式,该从模式可以仅接收数据和最终组合模式,可以发送和接收数据。为我们的目的,我们只需要从手表发送数据,因此我们可以使用手表的控制器模式以及我们将使用从模式的家用电器设备。因为我们不会将任何数据从家用电器发送到手表中。

第4步:查找ESP8266的MAC地址

但在实现ESP-Now协议之前,我们需要一个名为MAC地址的东西,这是制造商分配的特殊地址。在我们的情况下,所有基于ESP8266 / ESP32的开发板都将具有唯一的地址,以便我们可以将其中一个人识别在他们沟通的网络中。

通常这些MAC地址[example : 00:0a:95:9d:68:16]是六组两个十六进制数字,用连字符,冒号或仅通过空间分开。从esp8266获得这一点很容易。您需要的只是esp8266wifi库,然后使用wifi.macaddress()函数在串行监视器上打印MAC地址。

//重置Nodemcu / esp8266打开串行监视器#include  #include  void setup(){serial.begin(115200);serial.println();serial.print(“esp8266板MAC地址:”);serial.println(wifi.macaddress());void循环(){}

只需编译并上传Geachic ESP8266的草图。完成上载后,打开串行监视器并重置Nodemcu。在这里,您可以获得MAC地址的十六进制值。确保您注意到这一点,因为我们将在实现ESP-Now协议时需要这一点。

第5步:如何查看ESP现在数据

Now Let’s see how to implement a simple version of ESP-NOW using two NodeMCU boards. Make sure to use the NodeMCU with a known MAC address as the slave device because the controller needs the slave MAC address to send the data.

如果我们只使用2个Nodemcu而没有任何额外的电路来测试ESP现在的协议,难以单独使用Arduino IDE监控数据传输和它的状态。因此,如果要同时查看两个控制器和从站的数据,可以使用2种不同的计算机,或具有软件的单个计算机油灰要查看一个设备的串行数据并使用Arduino IDE来查看另一个设备的串行数据。由此,您可以同时监控从站和主机。

第6步:构建从设备

To remove the complication from last step and make it more understandable we’ll build a simple circuit with LED’s, so instead of seeing the serial data we can see the lights turn on and turn off depending on the type of data it’s receiving from the controller.

电路非常简单,将Nodemcu放在面包板上,并使用470欧姆电阻将不同的颜色LED连接到Nodemcu的引脚D1,D2,D6和D5,并确保LED的所有阴极连接到地面。

现在在Arduino IDE中打开ESP_NOW_RECIEVER.INO文件。(所有必要的文件都需要与电路图一起使用的代码文件以及电路图。可以从我的情况下下载Github repository

在此代码中,我们将从控制器收到数据并更改PIN状态,以便根据传入数据驱动PIN高低。

(这里我提到了RelayStatus,因为后来我们将使用相同的代码来驱动继电器)

在t relayStatus_1 = 0;
int relayStatus_2 = 0; int relayStatus_3 = 0; int relayStatus_4 = 0;

如果您正在进行任何修改或编写自己的代码,则需要注意的事情很少。确保控制器和从站中的结构与所使用的数据类型和它具有的数据数量完全相同。

typedef struct消息{
int relay1;int relay2;int relay3;int relay4;} 信息;

更重要的点是确保您在设置功能中断开与WiFi的连接,因为ESP-Now协议与连接到接入点的WiFi不起作用。

WiFi.disconnect();

除了这2分之外,代码的其余部分应该像往常一样。测试我们只需编译和上传代码ESP_NOW_Reciever代码。

Also don't forget to add a additional breadboard power supply to this circuit so it can work independently without connecting to a PC.

第7步:构建控制器设备

对于控制器设备,我们只需要一个Nodemcu,就是这样!在Arduino IDE中打开eSp_now_sender.ino文件。您在此处看到我匹配了结构以及在设置功能中与WiFi断开连接。

[注意:结构内的数据名称可以不同,但​​数据的数量和数据类型应与eSp_now_receiver相同]

typedef struct struct_message {
int relay1;int relay2;int relay3;int relay4;} struct_message;

与从站不同,对于控制器我们需要一个附加信息,发送数据I.E MAC地址。用从设备MAC地址替换MAC地址,应该是它!

UINT8_T ReceiveRaddress [] = {0x84,0xcc,0xa8,0x83,0x76,0xbe};//替换为MAC地址

然后编译并上传代码。现在要测试,从Arduino IDE中启动串行监视器并开始发送字符A,B,C,D和相应的LED应切换高低!

如果您已经进入了这个项目,可能会考虑订阅我的YouTube Channel.指导page并投票到这个项目以及查看我的其他项目/视频,这绝对会让我鼓励让我更有趣的项目!

第8步:智能扩展盒

由于我们熟悉ESP现在的协议,我们现在可以在硬件上运行来控制家用电器。您可以看到一段非常高的机会,可以看到类似的项目,解释了使用Nodemcu进行家庭自动化。但有时它没有实际使用,或者它只是为了使用。

But in this instructable we'll see how to make a very good looking and highly useable device, where you can directly connect your high voltage appliance (up to 5A) and use them, and if you’re done with the device you can simply switch the device like you always do with regular sockets!

第9步:扩展框硬件

我买了这个项目的这些扩展盒套管,我不确定它是否在线提供。但如果我发现类似的东西,我将确保将链接放在描述中,但我很幸运能够在离线商店中获得大约1美元 - 1.5 $。如果找不到此,您可以使用任何现有的扩展框并修改它。

我不确定四个5V继电器是否适合在壳体内,所以我买了这些案例2变型,其中每个插座具有单独的开关,另一个套接字有一个用于所有套接字的公共开关。然后在试验和错误后发现,没有许多交换机的那个在我可以放置中继的内部有更多空间。这些继电器将稍后将由ESP8266控制,以控制对插座的交流电源。

I just tried to visualize how we can place the components inside the case, then roughly mark the dimensions on a perf board for the circuit. The case which I'm using have an additional space for a fuse (it's highly recommended to use the fuse) I'm going to get rid of this so I can place the circuit and for the fuse I will drill an additional hole where I can add a new 5A fuse through a external fuse holder.

步骤10:扩展盒电路

电源电路I选择了一个高链路模块,该模块输出为5V,5W,使用此Hi-Link而不是定制内置整流电路的原因是因为Hi-Link具有100V - 240V的非常宽的输入电压范围AC还具有低噪声输出等功能,短路保护,过流保护,可靠性非常高。

Then we’ll use a multiple relay to turn on each socket, and esp12E for the microcontroller and finally terminal blocks for connecting AC supplies. Since the esp12E works with 3.3V, we’ll be using this ASM1117 regulator to step down the 5v from Hi-link to 3.3V. Along with that a few components like diodes and resistors are used, and that should be pretty much components required for this circuit. For more detailed connection, you can download the circuit diagram from the link in the description.

Once the slave device is done and it can control one socket, but we have 4 sockets in the casing, So we’ll build 3 modular custom built relay circuits to control these sockets.

该电路应非常简单,基本,您需要的是PERF板,继电器,接线盒,RMC​​连接器,电阻器,二极管和晶体管。这里晶体管将充当将由我们的ESP8266控制的开关,这将打开继电器并打开插座的电源。

此时,我们将再次复制这2次,并且应该为硬件部件进行,看看您是否可以在案例内放置这些电路,并查看所有内容是否完全坐在位置。

第11步:扩展框编程

确保电路是否按预期工作,仅用于将跳线切换到电路中的编程模式,并通过FTDI模块将代码Testing_Relay.ino上传到ESP12E。一旦编程完成,将跳线返回到它的旧位置。

此代码将测试继电器并检查所有继电器是否正常工作。由于我们没有任何用于继电器切换的可视反馈,您可以将食指放在继电器上以感受继电器切换动作。如果一切正常工作,我们可以上传我们在学习ESP时使用的相同代码(eSp_now_reciever.ino)。这里代替LED,ESP12E将通过晶体管触发继电器。这将又将打开和关闭各个插座的电源。

步骤12:延长箱接线

Caution :从这一步,您需要非常小心,因为接线涉及高电压和电源功率(110V / 240V),因此任何错误或短路可能会危险。所以继续谨慎。

现在,我们可以在壳体内进行接线。首先从将Live,中性和接地线连接到插座销。您可以在图像中看到中性导线通常也连接到插座/接地线。通过继电器连接现场电线,因此我们可以控制套接字的电源。您可以检查电路图,以便更好地了解如何进行接线。同时接线确保您将一切正常隔离,也可以使用热收缩,或绝缘胶带,以防止电路内部具有短路。一旦放置并有线,就可以使用一点热胶,以确保一切顺利。这完成了扩展框的硬件构建!

Step 13: Extension Box Testing

要触发扩展框中的继电器,我们需要一个控制器设备以发送数据。我们可以使用先前使用的相同的控制器设备,并将其连接到PC并振除串行显示器。现在,当您发送串行监视器中的字符时,继电器应打开并向任何连接的设备提供交流电源。在这里,您可以看到我的移动适配器已连接,也可以在充电时看到我手机绘制的当前。同样,所有套接字都应提供交流电压以驱动AC设备。

步骤14:扩展盒的手势控制

由于延期框是优秀的,我们所要做的就是改变我们手表中的一些代码,所以我们可以用手姿态打开并关闭家用电器!检查我的上一个指导关于如何更详细地做到这一点。

转到手势检测手表文件夹并使用vscode打开它。然后将MAC地址用Receive MAC地址替换,然后在前一个视频中将代码上传到手表。而已!

Now, you test the watch and the extension box! They both should work together, when you do different action with the watch, the corresponding sockets will turn on and turn off.

第15步:最后的想法!

3次长期以来,我们终于完成了!即使您不打算使用所有这些功能,也可以将它们作为一个独立的项目建立它们,这将肯定是值得的。喜欢建立手表在微控制器上实施mL并制作家庭自动化系统。

请注意最终设备看起来并运行良好,但在案例内的继电器中痉挛,我必须牺牲几个组件,如光耦合器,LED指示器等。

也许在下一个指导我将实施那些,并我们希望如何使用ESP Home与家庭助理。所以,如果您对此感兴趣,请在评论部分中告诉我。

直到下一个可指示,您可以从这些链接中读取或观看我的其他项目YouTube/指导。下次在新的和令人兴奋的话题见。

自动化比赛

这是一个条目
自动化比赛

是第一个分享

    建议书

    • 微控制器比赛

      微控制器比赛
    • 自动化比赛

      自动化比赛
    • 让它发光比赛

      让它发光比赛

    2评论

    0.
    中微子-1

    15小时前回复

    谢谢!