创建一个ESP8266网站,以控制我们的XC4418 8频道继电器控制器的8个接力赛

使用此简单的两部分设置轻松使用继电器!只需将要测试或激活的任何设备连接到继电器模块即可;然后使用内部构建的电话应用程序可以随时控制它们。将继电器设置为切换,计时器或瞬时激活;甚至让他们在一天中的某些时间去。非常适合自动植物浇水套件,测试设备,控制灯或最多10安培的任何其他负载。
| 数量 | 代码 | 描述 |
|---|---|---|
| 1 | XC4418 | 8通道继电器控制器 |
| 1 | XC4411 | uno与wifi |
与往常一样,您应该在Arduino IDE工具中安装ESP8266库以及ESP8266 Data-Upload插件。如果没有,您可以从下面得到任何一个:
该系统是一个非常简单的设置。如我们所知,XC4411是一个UNO,ESP合并为单板设置。 ESP部分将处理运行简单的“ Web应用程序”程序类型的程序,然后将与UNO通信。

代码的UNO部分将一旦接收命令,就将仅负责激活和控制继电器。
XC4411通过串行端口将UNO和ESP一起连接在一起, Serial.write()意味着我们只需执行一些Serial.read() 。为了保持简单,我们将保持数据流以一条方式,因此ESP将永远不会知道继电器的外观,这意味着Web应用程序将无法显示实际继电器的外观,但是我们可以做出简单的猜测。
由于XC4411板的简单性,这是一个简单的一体调制构建。

只需将5V和GND连接到继电器板的前两个引脚(您应该发现它们被标记为VCC和GND )。然后将IN#引脚的所有其他所有内容连接到UNO的数字引脚。为了使事情变得简单,我们从Pin 2开始,然后向上移动到Pin 9这将与继电器板上的内容保持一致,从底部开始。
在继电器板上也将COM和GND引脚之间的绿色选项卡保持在接力板上是一个合理的主意。
在XC4411上,您应该找到一行倾斜开关。这用于设置设备所在的模式。

(由于我们的频率使用一次,我们的人有点脏)。
对于本节,我们将要编程事物的侧面,因此请使用笔或以其他方式设置倾斜开关:
| 别针 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 状态 | 离开 | 离开 | 在 | 在 | 离开 | 离开 | 离开 | 离开 |
然后在Arduino IDE编辑器中打开代码的uno/uno.ino部分,并按照往常上传。
您应该能够通过打开Serial Monitor并将选项设置为:
115200波特然后输入命令,例如:
>4a
如果您真的想调试代码,则应在UNO代码的第10行和11行上找到一些定义。第10行上的一个将输出类似于下面的文本。

另一个定义(第11行)将无能为力,只需打开继电器即可。确定项目时要定义第11行。
将倾斜开关设置为下面。
| 别针 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 状态 | 离开 | 离开 | 离开 | 离开 | 在 | 在 | 在 | 离开 |
对于此部分,您需要在Arduino IDE中打开ESP/ESP.INO代码,并将板类型更改为Generic ESP8266板。
将程序的“闪存大小”更改为4M (3M SPIFFS) - 这将使某些代码份量,以便我们可以放入data/文件夹中。您将在数据文件夹中找到我们的网站代码,我们希望将其全部放在ESP上。以下是我们设置的屏幕截图。

首先,正常上传代码。如果您按上传,并且发现IDE无法上传,或者您会得到这样的输出:

这只是意味着IDE正在等待ESP重新启动。当您看到IDE显示此消息时,按板上的RESET按钮。它应该在不搭便车的情况下上传。
代码完成后,使用ESP Data Upload Tool (如上图中突出显示)将我们的网站上传到ESP。您必须按类似于以前的重置按钮。编程后,您可以关闭DIP -SWitch 7并打开串行显示器,以查看ESP连接到“继电器控制器”热点时的输出,并导航到http://192.168.4.1-或继续继续。
与UNO代码类似,我们还有另一堆用于调试的定义。您可以通过这种方式启用或禁用调试消息。
更改代码时要记住的一些重要事情:
Flash size相同。如果更改它,则必须重新上传代码和网站。一旦对两个半进行编程,最终将DIP开关切换到下面。
| 别针 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 状态 | 在 | 在 | 离开 | 离开 | 离开 | 离开 | 离开 | 离开 |
这将把ESP的序列连接到UNO的序列。现在,它仅由USB提供动力,并且串行监视器不会连接到任何内容。
打开手机的wifi并重新启动XC4411-您应该发现有一个新的无线网络,称为“中继控制器”。连接到它,然后打开浏览器,然后转到:http://192.168.4.1

该网站并不多,但是可以使用。您应该能够按下按钮并找到接力线打开和关闭。如果您知道如何使网站看起来不错,并且想拍摄使它看起来更好的镜头,请开发新的data/文件夹,然后在GitHub问题选项卡上提交,或者将其提交回购并提交拉动请求。
如果发现某些内容不起作用,请将计算机连接到网络(或者将ESP连接到家庭网络)并在计算机上打开网站。您应该能够打开“ Chrome Inspector工具”并找到将输出消息的控制台。
但是,测试正在发生的事情的确定方法是将串行监视器连接到设备(带有与您要测试的部分相对应的倾角开关)并根据需要测试代码的每个部分。
>3a转换,然后>3d关闭中继3。>1a命令输出。 显然,该网站需要工作,但是该项目可能会发生任何更改。您仍然应该免费提供一些销钉,而您要做的就是添加一些销钉是:
以下是一些可以解释的代码段。
在网站上是我们用来打开继电器的按钮,它是一个简单的<button id='3' class='relay'></button>元素,该元素具有它的iD(不是完全,但在此示例中足够接近)。
然后,我们有一些JavaScript代码(简化):
$ ( "button.relay" ) . on ( "click" , function ( ) {
//do this when a button with the class 'relay' is clicked
} ) ;在此功能中,我们fetch()一个新的网页指向/relay ,如果返回状态可以,我们将类“ ISON”添加到按钮:
fetch ( "relay?relay=3&mode=activate" ) . then ( response => {
if ( response . status == 200 ) {
button . addClass ( "isOn" ) ;
}
} ) ;这意味着该网站将尝试使用http://192.168.4.1/relay访问新的网页,并带有?relay=3&mode=activate的参数。让我们查看ESP代码:
// firstly, set the handler function in the setup():
server.on( " /relay " , handleRelayCommand);
// ... later ...
void handleRelayCommand (){
String relayNumber = server. arg ( " relay " );
String mode = server. arg ( " mode " );
// ...
}命令server.arg("relay");只需设置“继电器”的任何论点。在我们的原始请求中: ?relay=3&mode=activate这将是字符串"3" 。同样,模式参数设置为字符串"activate"
然后,我们只是进行一些检查,找到"3"对应的中继以及"activate"是否意味着我们正在打开继电器,然后将其作为命令发送到UNO:
Serial.write( ' > ' ); // start of command
Serial.write( ' 3 ' ); // relay 3
Serial.write( ' a ' ); // activate, or turn onUNO将解释这一点,然后实际上将打开中继:
在uno.ino(再次简化)中:
while (Serial.read() != ' > ' ) // do nothing until we get '>'
continue ;
char relay = Serial.read(); // next character is relay;
char mode = Serial.read(); // next character is mode;
// ... do some checks, turn char into int, see if it's valid, etc.
digitalWrite (theRelay, theMode);要注意的一件事是,数据流只是此代码中的一个方向,ESP上没有Serial.write()为Serial.read() 。