使用Node ESP8266通过UDP方法控制ESP8266的LED灯 完整代码

本文介绍如何使用NodeESP8266通过UDP协议远程控制LED灯。包括代码配置、网络设置、调试助手使用等关键步骤,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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,在下面的官网下载:

https://packetsender.com/

5.打开Packet Sender网络调试助手,在步骤3复制IP地址:192.168.1.101,端口8686,选择UDP模式。填写好信息如下

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值