使用Node ESP8266通过UDP方法控制ESP8266的LED灯
完整代码
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char *ssid = "ABC666666"; //网络名称
const char *password = "ABC666666"; //网络密码
WiFiUDP Udp;
unsigned int localUdpPort = 8686; // 本地端口号 (0~65535)
char incomingPacket[537]; // 接收缓冲区
void setup()
{
//以下为基本功能初始化,初始化串口和网络和LED
pinMode(2, OUTPUT);
Serial.begin(115200);
Serial.println();
Serial.printf("Connecting to %s ", ssid);
WiFi.mode(WIFI_STA);
WiFi.setAutoConnect(false);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" connected");
//以下开启UDP监听并打印输出信息
Udp.begin(localUdpPort);
Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}
void loop()
{
int packetSize = Udp.parsePacket(); //获取当前队首数据包长度
if (packetSize) // 有数据可用
{
Serial.printf("Received %d bytes from %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
int len = Udp.read(incomingPacket, 536); // 读取数据到incomingPacket
if (len > 0) // 如果正确读取
{
incomingPacket[len] = 0; //末尾补0结束字符串
Serial.printf("UDP packet contents: %s\n", incomingPacket);
if (strcmp(incomingPacket, "Turn off") == 0) // 如果收到Turn off
{
digitalWrite(2, HIGH); // 熄灭LED
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write("LED has been turn off"); // 回复LED has been turn off
Udp.endPacket();
}
else if (strcmp(incomingPacket, "Turn on") == 0) // 如果收到Turn on
{
digitalWrite(2, LOW); // 点亮LED
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write("LED has been turn on"); // 回复LED has been turn on
Udp.endPacket();
}
else // 如果非指定消息
{
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write("Data Error!"); // 回复Data Error!
Udp.endPacket();
}
}
}
}
通过修改上述的代码,为我所用
1.修改需要连接的wifi账号和密码
const char *ssid = "ABC666666"; //网络名称
const char *password = "ABC666666"; //网络密码
2.修改监听的端口,(0~65535)任意选择,
unsigned int localUdpPort = 8686; // 本地端口号 (0~65535)
3Arduino的IDE把程序下载到ESP8266,打开IDE中的串口调试助手,重启ESP8266,正常来说串口助手会打印下面的信息
4.完成上述操作后,下载一个网络调试助手
- 我选择了一款Packet Sender,在下面的官网下载:
5.打开Packet Sender网络调试助手,在步骤3复制IP地址:192.168.1.101,端口8686,选择UDP模式。填写好信息如下
-
注意在ASCII 栏,填写Turn on,点击右上边的Send发送即可以点亮LED灯。在ASCII填写Turn off,点击发送就可以关闭LED灯。
-
本文参考up主:Naisu_kun
-
UDP功能示例:
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/udp-examples.html