手机APP远程控制灯光代码
时间: 2024-05-07 13:23:42 浏览: 12
这里提供一个简单的手机APP远程控制灯光的示例代码,使用的是Arduino开发板和ESP8266模块。
首先,你需要在Arduino IDE中安装ESP8266开发板支持。接着,将ESP8266模块连接到Arduino开发板上,然后使用以下代码进行编程:
```c++
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
// WiFi网络信息
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
// 创建ESP8266WebServer实例
ESP8266WebServer server(80);
// 灯光状态变量
int lightState = 0;
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");
// 配置路由
server.on("/", handleRoot);
server.on("/on", handleOn);
server.on("/off", handleOff);
// 启动Web服务器
server.begin();
Serial.println("HTTP server started");
}
void loop() {
// 处理HTTP请求
server.handleClient();
}
// 处理根目录请求
void handleRoot() {
server.send(200, "text/html", "<html><body><h1>Hello World!</h1></body></html>");
}
// 处理打开灯光请求
void handleOn() {
lightState = 1;
digitalWrite(LED_BUILTIN, HIGH);
server.send(200, "text/html", "<html><body><h1>Light is now on!</h1></body></html>");
}
// 处理关闭灯光请求
void handleOff() {
lightState = 0;
digitalWrite(LED_BUILTIN, LOW);
server.send(200, "text/html", "<html><body><h1>Light is now off!</h1></body></html>");
}
```
然后,你需要使用一个手机APP来发送HTTP请求,从而控制灯光的开关。以下是一个简单的Android APP示例代码:
```java
import android.os.AsyncTask;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private static final String SERVER_IP = "192.168.1.100"; // 替换成你的ESP8266模块的IP地址
private Button mButtonOn;
private Button mButtonOff;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonOn = findViewById(R.id.button_on);
mButtonOff = findViewById(R.id.button_off);
mButtonOn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new HttpRequestTask().execute("http://" + SERVER_IP + "/on");
}
});
mButtonOff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new HttpRequestTask().execute("http://" + SERVER_IP + "/off");
}
});
}
private class HttpRequestTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
try {
URL url = new URL(urls[0]);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
return sb.toString();
} catch (Exception e) {
Log.e(TAG, "HTTP request failed", e);
return null;
}
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
Log.d(TAG, "HTTP request succeeded: " + result);
} else {
Log.d(TAG, "HTTP request failed");
}
}
}
}
```
这个APP中有两个按钮,分别用于打开和关闭灯光。当你点击其中一个按钮时,它将向ESP8266模块发送一个HTTP请求,从而控制灯光的开关。
最后,将Arduino代码上传到开发板上,打开APP并连接到同一个WiFi网络。现在,你可以通过APP远程控制灯光的开关了。