远程控制:客户端

124 阅读1分钟

以下是一个简单的客户端代码,可以通过手机应用或者网页来控制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灯。您可以根据自己的需求和项目进行修改和扩展。