以下是一个简单的客户端代码,可以通过手机应用或者网页来控制Arduino的灯光开关:
#include <ESP8266WiFi.h>
// WiFi网络信息
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
// 服务器信息
const char* serverIP = "your_ARDUINO_IP";
const int serverPort = 80;
// LED灯状态
bool ledState = false;
void setup() {
// 初始化串口
Serial.begin(115200);
// 连接WiFi网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// 打印IP地址
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// 通过串口读取用户输入
if (Serial.available()) {
char c = Serial.read();
if (c == '1') {
ledState = true;
controlLED(true);
} else if (c == '0') {
ledState = false;
controlLED(false);
}
}
}
void controlLED(bool state) {
// 创建TCP客户端
WiFiClient client;
if (!client.connect(serverIP, serverPort)) {
Serial.println("Failed to connect to server");
return;
}
// 发送请求
String request;
if (state) {
request = "GET /LED=ON HTTP/1.1\r\n";
} else {
request = "GET /LED=OFF HTTP/1.1\r\n";
}
request += "Host: ";
request += serverIP;
request += "\r\n\r\n";
client.print(request);
// 等待响应
while (!client.available()) {
delay(10);
}
// 读取响应
while (client.connected() && client.available()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
break;
}
}
// 断开连接
client.stop();
}
在这个例子中,用户可以通过串口输入'1'来打开LED灯,输入'0'来关闭LED灯。您可以根据自己的需求和项目进行修改和扩展。