使用 W5100S-EVB-Pico 和 Arduino IDE 创建 UDP 接收器

了解使用 W5100S-EVB-Pico 和 Arduino IDE 创建 UDP 接收器。 有效处理数据包详细信息。 确保发件人设置成功!

转发: Creating a UDP Receiver Using W5100S-EVB-Pico and Arduino IDE

项目介绍

了解使用 W5100S-EVB-Pico 板和 Arduino IDE 设置 UDP(用户数据报协议)接收器的简单性和速度。 UDP 是一种无连接协议,以其最小的资源消耗和速度而脱颖而出,因为它允许通过网络发送数据包,而无需在发送者和接收者之间建立正式连接。 尽管它不能保证数据包的传送或顺序,但它的好处在特定的网络场景中无疑是有价值的。

收集必需品

确保您拥有以下组件来启动该项目:

  1. W5100S-EVB-Pico板
  2. Arduino集成开发环境
  3. 适用于 W5100S-EVB-Pico 的 WIZnet 以太网库
  4. 配置为 UDP 发送方的设备或应用程序,准备将数据包发送到 W5100S-EVB-Pico 板的指定 IP 地址和端口

搭建舞台

请按照以下步骤准备您的设置:

  1. 将 W5100S-EVB-Pico 的 WIZnet 以太网库集成到您的 Arduino IDE 中。
  2. 在 W5100S-EVB-Pico 板和计算机之间建立连接。
  3. 在 Arduino IDE 中打开给定的示例。
  4. 使用您计划接收传入 UDP 数据包的端口号指定 localPort 变量。
  5. 将草图部署到 W5100S-EVB-Pico 板上。

代码

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

// Enter a MAC address for your controller below.
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};

const int csPin = 17; // Chip Select (CS) pin for W5100S on W5100S-EVB-Pico
const int localPort = 9999; // Local port to listen on

char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; // Buffer to hold incoming packets

EthernetUDP Udp;

void setup() {
  // Open the serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // Initialize Ethernet with the CS pin:
  Ethernet.init(csPin);

  // Start the Ethernet connection using DHCP:
  Serial.println("Attempting to obtain IP address using DHCP...");
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to obtain IP address using DHCP");
  } else {
    // Print the obtained IP address:
    Serial.print("Successfully obtained IP address: ");
    Serial.println(Ethernet.localIP());
  }

  // Initialize the UDP instance and start listening on the local port
  Udp.begin(localPort);
}

void loop() {
  // Check if there are any incoming UDP packets
  int packetSize = Udp.parsePacket();
  if (packetSize) {
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
    Serial.print("From ");
    IPAddress remoteIP = Udp.remoteIP();
    Serial.print(remoteIP);
    Serial.print(", port ");
    Serial.println(Udp.remotePort());

    // Read the packet into the buffer
    Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);

    // Print the received message
    Serial.print("Contents: ");
    Serial.println(packetBuffer);

    // Clear the packet buffer
    memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
  }
}

执行

设置完成后,就可以将 UDP 接收器投入使用:

  1. 在 Arduino IDE 中启动串行监视器。
  2. 该草图启动通过 DHCP 保护 IP 地址的过程。 完成后,获得的 IP 地址将显示在串行监视器中。
  3. 该草图现在将在指定的本地端口主动侦听传入的 UDP 数据包。 当数据包到达时,相关详细信息(例如数据包大小、发送者的 IP 地址、发送者端口和数据包的内容)将在串行监视器中显示。

预期结果

您的串行监视器将反映以下内容:

Attempting to obtain IP address using DHCP...
Successfully obtained IP address: 192.168.1.100
Received packet of size 20
From 192.168.1.150, port 8888
Contents: Hello, UDP Receiver!

监视器将显示获得的 IP 地址以及有关传入 UDP 数据包的信息,包括数据包大小、发送者的 IP 地址和端口以及数据包的内容。

注意事项

在继续之前,请确保:

  • 充当 UDP 发送方的远程设备或应用程序已正确配置为将数据包发送到 W5100S-EVB-Pico 板的 IP 地址和端口。
  • 虽然此示例主要演示如何接收 UDP 数据包,但如果您希望将数据包传输到其他设备或应用程序,则需要合并 UDP 发送器。
  • 通过 W5100S-EVB-Pico 板、Arduino IDE 和 UDP 功能的无缝组合,创建简化的网络通信设置不仅是可能的,而且是高效的。 充分利用 UDP 的优势并彻底改变您的网络协议。

文件

  • UDP Receiver Example for W5100S-EVB-Pico