udp协议esp8266服务器,UDP协议通讯控制ESP8266开发板的板载LED

在开始本教程以前,请先完成以下准备工作。

1. 将ESP8266-NodeMCU开发板与电脑通过数据线连接好

2. 确保您已经安装好Arduino IDE的ESP8266开发插件,(如您不确定如何实现此项工作,请点击这里进入本操作说明教程页面。)

3. 本教程需要使用“TCP_UDP测试工具软件”,请点击这里下载该软件并确保您的电脑可以运行使用该软件。

完成了以上操作后,请继续以下各步操作。

第0步

请将以下示例程序下载并使用Arduino IDE打开。

Arduino

/**********************************************************************

项目名称/Project : 零基础入门学用物联网

程序名称/Program name : ESP8266WiFiUdp

团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)

作者/Author : 小凯

日期/Date(YYYYMMDD) : 20200402

程序目的/Purpose :

用于演示使用ESP8266WiFiUdp控制LED

-----------------------------------------------------------------------

本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。

该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页:

http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/

***********************************************************************/

#include

#include

#define ssid "xiaokai" //这里改成你的设备当前环境下WIFI名字

#define password "12345678k" //这里改成你的设备当前环境下WIFI密码

WiFiUDP Udp;//实例化WiFiUDP对象

unsigned int localUdpPort = 1234; // 自定义本地监听端口

unsigned int remoteUdpPort = 4321; // 自定义远程监听端口

char incomingPacket[255]; // 保存Udp工具发过来的消息

void setup()

{

pinMode(LED_BUILTIN,OUTPUT);

digitalWrite(LED_BUILTIN, HIGH); // 熄灭LED

Serial.begin(115200);//打开串口

Serial.println();

Serial.printf("正在连接 %s ", ssid);

WiFi.begin(ssid, password);//连接到wifi

while (WiFi.status() != WL_CONNECTED)//等待连接

{

delay(500);

Serial.print(".");

}

Serial.println("连接成功");

if(Udp.begin(localUdpPort)){//启动Udp监听服务

Serial.println("监听成功");

//打印本地的ip地址,在UDP工具中会使用到

//WiFi.localIP().toString().c_str()用于将获取的本地IP地址转化为字符串

Serial.printf("现在收听IP:%s, UDP端口:%d\n", WiFi.localIP().toString().c_str(), localUdpPort);

}else{

Serial.println("监听失败");

}

}

void loop()

{

//解析Udp数据包

int packetSize = Udp.parsePacket();//获得解析包

if (packetSize)//解析包不为空

{

//收到Udp数据包

//Udp.remoteIP().toString().c_str()用于将获取的远端IP地址转化为字符串

Serial.printf("收到来自远程IP:%s(远程端口:%d)的数据包字节数:%d\n", Udp.remoteIP().toString().c_str(), Udp.remotePort(), packetSize);

// 读取Udp数据包并存放在incomingPacket

int len = Udp.read(incomingPacket, 255);//返回数据包字节数

if (len > 0)

{

incomingPacket[len] = 0;//清空缓存

Serial.printf("UDP数据包内容为: %s\n", incomingPacket);//向串口打印信息

//strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。

//基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1str2,则返回正数。

if (strcmp(incomingPacket, "LED_OFF") == 0) // 命令LED_OFF

{

digitalWrite(LED_BUILTIN, HIGH); // 熄灭LED

sendCallBack("LED has been turn off\n");

}

else if (strcmp(incomingPacket, "LED_ON") == 0) //如果收到LED_ON

{

digitalWrite(LED_BUILTIN, LOW); // 点亮LED

sendCallBack("LED has been turn on\n");

}

else // 如果指令错误,调用sendCallBack

{

sendCallBack("Command Error!");

}

}

}

}

//向udp工具发送消息

void sendCallBack(const char *buffer)

{

Udp.beginPacket(Udp.remoteIP(), remoteUdpPort);//配置远端ip地址和端口

Udp.write(buffer); //把数据写入发送缓冲区

Udp.endPacket(); //发送数据

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

/**********************************************************************

项目名称/Project          : 零基础入门学用物联网

程序名称/Program name     : ESP8266WiFiUdp

团队/Team                : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)

作者/Author              : 小凯

日期/Date(YYYYMMDD)     : 20200402

程序目的/Purpose          :

用于演示使用ESP8266WiFiUdp控制LED

-----------------------------------------------------------------------

本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。

该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页:

http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/

***********************************************************************/

#include

#include

#define ssid      "xiaokai"       //这里改成你的设备当前环境下WIFI名字

#define password  "12345678k"     //这里改成你的设备当前环境下WIFI密码

WiFiUDPUdp;//实例化WiFiUDP对象

unsignedintlocalUdpPort=1234;// 自定义本地监听端口

unsignedintremoteUdpPort=4321;// 自定义远程监听端口

charincomingPacket[255];// 保存Udp工具发过来的消息

voidsetup()

{

pinMode(LED_BUILTIN,OUTPUT);

digitalWrite(LED_BUILTIN,HIGH);// 熄灭LED

Serial.begin(115200);//打开串口

Serial.println();

Serial.printf("正在连接 %s ",ssid);

WiFi.begin(ssid,password);//连接到wifi

while(WiFi.status()!=WL_CONNECTED)//等待连接

{

delay(500);

Serial.print(".");

}

Serial.println("连接成功");

if(Udp.begin(localUdpPort)){//启动Udp监听服务

Serial.println("监听成功");

//打印本地的ip地址,在UDP工具中会使用到

//WiFi.localIP().toString().c_str()用于将获取的本地IP地址转化为字符串

Serial.printf("现在收听IP:%s, UDP端口:%d\n",WiFi.localIP().toString().c_str(),localUdpPort);

}else{

Serial.println("监听失败");

}

}

voidloop()

{

//解析Udp数据包

intpacketSize=Udp.parsePacket();//获得解析包

if(packetSize)//解析包不为空

{

//收到Udp数据包

//Udp.remoteIP().toString().c_str()用于将获取的远端IP地址转化为字符串

Serial.printf("收到来自远程IP:%s(远程端口:%d)的数据包字节数:%d\n",Udp.remoteIP().toString().c_str(),Udp.remotePort(),packetSize);

// 读取Udp数据包并存放在incomingPacket

intlen=Udp.read(incomingPacket,255);//返回数据包字节数

if(len>0)

{

incomingPacket[len]=0;//清空缓存

Serial.printf("UDP数据包内容为: %s\n",incomingPacket);//向串口打印信息

//strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。

//基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1str2,则返回正数。

if(strcmp(incomingPacket,"LED_OFF")==0)// 命令LED_OFF

{

digitalWrite(LED_BUILTIN,HIGH);// 熄灭LED

sendCallBack("LED has been turn off\n");

}

elseif(strcmp(incomingPacket,"LED_ON")==0)//如果收到LED_ON

{

digitalWrite(LED_BUILTIN,LOW);// 点亮LED

sendCallBack("LED has been turn on\n");

}

else// 如果指令错误,调用sendCallBack

{

sendCallBack("Command Error!");

}

}

}

}

//向udp工具发送消息

voidsendCallBack(constchar*buffer)

{

Udp.beginPacket(Udp.remoteIP(),remoteUdpPort);//配置远端ip地址和端口

Udp.write(buffer);//把数据写入发送缓冲区

Udp.endPacket();//发送数据

}

第一步

如下图所示,我们需要修改程序中接入的WiFi名称、密码。如有必要,也可以修改本地、远程端口号以适应您设备需要。(如不确定设备端口号,可保持程序内容不做修改)

udp协议esp8266服务器,UDP协议通讯控制ESP8266开发板的板载LED_第1张图片ESP8266-UDP-LED-Control-1

完成之后上传程序到ESP8266开发板。

第二步

程序上传成功后,打开串口监视器,等待ESP8266开发板联网成功后,复制串口监视器显示的IP地址。(如下图所示)

udp协议esp8266服务器,UDP协议通讯控制ESP8266开发板的板载LED_第2张图片ESP8266-UDP-LED-Control-2

第三步

如下图所示,打开UDP测试工具,点击UDP测试。

udp协议esp8266服务器,UDP协议通讯控制ESP8266开发板的板载LED_第3张图片ESP8266-UDP-LED-Control-3

将之前复制的IP地址、端口号粘贴到对应位置

udp协议esp8266服务器,UDP协议通讯控制ESP8266开发板的板载LED_第4张图片ESP8266-UDP-LED-Control-3-2

然后点击监听,再点击连接。

udp协议esp8266服务器,UDP协议通讯控制ESP8266开发板的板载LED_第5张图片ESP8266-UDP-LED-Control-3-4

第四步

在发送区输入LED_ON,点击发送,可以看到接收区出现LED has been turn on

这说明ESP8266已经接收到消息,点亮了板载LED。

udp协议esp8266服务器,UDP协议通讯控制ESP8266开发板的板载LED_第6张图片ESP8266-UDP-LED-Control-4

接下来您可以确认ESP8266开发板上的LED是否被点亮。同样,我们也可以发送LED_OFF,来熄灭板载LED

你可能感兴趣的:(udp协议esp8266服务器)