< >
Home » Arduino库教程 » Arduino库教程-WIfi无线扩展块101-WiFi Send Receive UDP String

Arduino库教程-WIfi无线扩展块101-WiFi Send Receive UDP String

Send and Receive UDP String

  • 本教程等待一个在本地端口的UDP数据包。当收到一个有效的数据包时,就发送一个应答包返回到在一个指定的输出端口上的客户端。它使用 Arduino 或者 Genuino Wifi 101 Shield 和 Zero 开发板 or the MKR1000 开发板,依赖于一个连接到您的局域网的WiFi。

硬件要求

  • Arduino WiFi Shield 101
  • Arduino or Genuino Zero board
    或者
  • MKR1000

电路

  • 数字引脚7被用来作为WiFi Shield 101 和 开发板的握手引脚使用,而不应该被占用。

  • 这个例子里你应该进入一个连接到互联网的802.11b/g无线网络。你需要改变程序里的网络设置来符合您的特定网络SSID。

  • 对于使用WPA/WPA2个人加密的网络,你需要的SSID和密码。扩展块将无法通过WPA2企业加密连接到网络。

  • WEP网络密码进制字符串作为键。一个WEP网络可以有4种不同的钥匙;每个按键都分配了一个“关键指标”的价值。WEP加密的网络,你需要SSID,key,和key number。

请输入图片描述
图由 Fritzing 绘制
在上图,Arduino 或 Genuino Zero 开发板应该在堆叠在 WiFi shield上面。

样例代码

/*
  WiFi UDP Send and Receive String

 This sketch wait an UDP packet on localPort using a WiFi shield.
 When a packet is received an Acknowledge packet is sent to the client on port remotePort

 Circuit:
 * WiFi shield attached

 created 30 December 2012
 by dlf (Metodo2 srl)

 */


#include <SPI.h>
#include <WiFi101.h>
#include <WiFiUdp.h>

int status = WL_IDLE_STATUS;
char ssid[] = "yourNetwork"; //  your network SSID (name)
char pass[] = "secretPassword";    // your network password (use for WPA, or use as key for WEP)
int keyIndex = 0;            // your network key Index number (needed only for WEP)

unsigned int localPort = 2390;      // local port to listen on

char packetBuffer[255]; //buffer to hold incoming packet
char  ReplyBuffer[] = "acknowledged";       // a string to send back

WiFiUDP Udp;

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

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while (true);
  }

  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }
  Serial.println("Connected to wifi");
  printWifiStatus();

  Serial.println("\nStarting connection to server...");
  // if you get a connection, report back via serial:
  Udp.begin(localPort);
}

void loop() {

  // if there's data available, read a packet
  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 packetBufffer
    int len = Udp.read(packetBuffer, 255);
    if (len > 0) packetBuffer[len] = 0;
    Serial.println("Contents:");
    Serial.println(packetBuffer);

    // send a reply, to the IP address and port that sent us the packet we received
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    Udp.write(ReplyBuffer);
    Udp.endPacket();
  }
}


void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

[Get Code]
更多

  • WiFi library – WiFi101 库的参考网页

  • WiFi Shield – WiFi 扩展板 101 的产品细节

  • MKR1000 – MKR1000 板的产品细节

  • Connect No Encryption: 演示如何连接到一个开放的网络。

  • Connect With WEP: 演示如何连接到用WEP加密的网络。

  • Connect With WPA: 演示如何连接到一个用WPA2个人加密网络。

  • Scan Networks:显示出所有在范围内的无线网络。

  • Simple Web Server WiFi: 通过打开和关闭一个LED来访问这个简单的Web服务器

  • UDP NTP Client: 通过UDP查询网络时间协议(NTP)服务器。

  • WiFi Chat Server: 建立一个简单的聊天服务器。

  • WiFi Web Client: 连接到一个远程服务器。

  • WiFi Web Client Repeating: 反复做HTTP请求到服务器。

  • WiFi Web Server: 通过模拟输入值来服务一个来自WIfi无线扩展块的网页。

  • WiFi Send Receive UDP String: 发送和接收UDP字符串。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: arduino库教程, arduino wifi无线扩展块101, arduino wifi send receive udp string