Arduino库教程-WIfi无线扩展块101-WiFi Web Server
WiFi Web Server
在这个例子中,您将使用WiFi Shield 101 和 Arduino 或者 Genuino Zero, 或者MKR1000开发板,来创建一个简单的Web服务器。使用WiFi的函数库,你的设备将能够回答来自WiFi连接收到一个HTTP请求。打开浏览器并导航到您的WiFi扩展块或MKR1000的IP地址后,你的开发板响应足够的HTML,浏览器会显示所有六个模拟引脚的输入值。
这个例子是为一个使用WPA加密的网络编写。对于WEP或WPA,相应地改变Wifi.begin()调用。
硬件要求
- 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 Web Server
A simple web server that shows the value of the analog input pins.
using a WiFi shield.
This example is written for a network using WPA encryption. For
WEP or WPA, change the Wifi.begin() call accordingly.
Circuit:
* WiFi shield attached
* Analog inputs attached to pins A0 through A5 (optional)
created 13 July 2010
by dlf (Metodo2 srl)
modified 31 May 2012
by Tom Igoe
*/
#include <SPI.h>
#include <WiFi101.h>
char ssid[] = "yourNetwork"; // your network SSID (name)
char pass[] = "secretPassword"; // your network password
int keyIndex = 0; // your network key Index number (needed only for WEP)
int status = WL_IDLE_STATUS;
WiFiServer server(80);
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);
}
server.begin();
// you're connected now, so print out the status:
printWifiStatus();
}
void loop() {
// listen for incoming clients
WiFiClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}
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();
Seria
l.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字符串。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号