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字符串。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号