Arduino Uno WiFi 网页服务器:通过浏览器控制 LED 开关
组件与物料
| 组件 | 数量 |
|---|---|
| Arduino UNO WiFi | 1 |
| LED (可用板载 L LED) | 1 |
| 220Ω 电阻 | 1 |
| 面包板与杜邦线 | 若干 |
电路连接
使用板载 LED (D13) 或外接 LED:阳极串联 220Ω 电阻接 D13,阴极接 GND。
项目介绍
演示如何利用 Arduino UNO WiFi 内置网页服务器功能,通过浏览器控制 LED 开关。
代码结构
setup():初始化 D13 为输出,启动 WiFi,打印服务器就绪信息loop():轮询 WiFi 客户端连接,调用process()解析请求process():读取 URL 路径第一段,分发到WebServer()或digitalCommand()WebServer():返回 HTML 页面,包含两个按钮 (ON/OFF),点击跳转至/arduino/digital/13/1或/arduino/digital/13/0digitalCommand():解析引脚号与数值,执行digitalWrite(),返回纯文本状态
访问方式
浏览器输入:https://<IP>/arduino/webserver/ 或 https://<hostname>.local/arduino/webserver/
页面显示两个按钮,点击即可控制 D13 LED。同时也可通过 Arduino Web Panel 面板操作。
完整代码
#include <Wire.h>
#include <ArduinoWiFi.h>
void setup() {
pinMode(13, OUTPUT);
Wifi.begin();
Wifi.println("WebServer Server is up");
}
void loop() {
while (Wifi.available()) {
process(Wifi);
}
delay(50);
}
void process(WifiData client) {
String command = client.readStringUntil('/');
if (command == "webserver") WebServer(client);
if (command == "digital") digitalCommand(client);
}
void WebServer(WifiData client) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("");
client.println("Click<input type=button onClick=\"var w=window.open('/arduino/digital/13/1','_parent');w.close();\" value='ON'>pin13 ON<br>");
client.println("Click<input type=button onClick=\"var w=window.open('/arduino/digital/13/0','_parent');w.close();\" value='OFF'>pin13 OFF<br>");
client.println("");
client.print(DELIMITER);
}
void digitalCommand(WifiData client) {
int pin = client.parseInt();
if (client.read() == '/') {
int value = client.parseInt();
digitalWrite(pin, value);
}
client.println("Status: 200 OK");
client.print(F("Pin D")); client.print(pin);
client.print(F(" set to ")); client.print(value);
client.print(EOL);
}
原理图
简单接线图:D13 → 220Ω → LED阳极,LED阴极 → GND。
制造工艺
- 用 Python 构建 Wi-Fi 控制的树莓派机器人:分步指南
- 自制《鱿鱼游戏》主题互动娃娃——Arduino UNO DIY项目
- 用 Arduino 打造绚丽显示器 Ambilight 系统
- 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
- Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
- 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
- Arduino 串口简易计算器:两数四则运算演示
- 自制便携式视觉暂留显示器:Arduino UNO 与 ATtiny85
- Arduino 自动化 Chrome 恐龙游戏 - LDR 光敏电阻 + Python 实现全自动跳跃
- 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机
- 无线Arduino编程盾:HC-05蓝牙模块实现免USB线烧录
- 基于 Arduino 与 ESP8266 的 WiFi 智能门锁:手机扫码解锁