Web 服务器远程控制硬件(Arduino)


程序流程
  1. 定义热点名和密码
  2. 设置IP地址
    IPAddress sip(192,168,1,29)
  3. 设置模式
    WiFiServer server(80)
  4. 串口初始化
  5. GPIO初始化
    pinMode(LED,OUTPUT)
    digitalWrite(LED,LOW)
  6. 打开WiFi,连接到设置的IP
    WiFi.begin(ssid,password)
    WiFi.config(sip,sip1,sip2);
  7. 连接热点
    while(WiFi.status()!=WL_CONNECTED)
    等待
    跳出循环,则连接成功
  8. 打开服务器
    server.begin()
  9. 打印IP地址
    WiFi.localIP()
  10. 检查是否有客户端连接
    WiFiClient client=server.available();
    client=1;则有
  11. 等待客户端发送数据
    while(!client.available())
    delay(1);
  12. 读取请求
    String rep=client.readStringUntil(’\r’);
    Serial.println(rep)
    client.flush()
程序

#define LED 16
#define KEY 0
#include <ESP8266WiFi.h>
const char* ssid="STM32L476";
const char* password="284122348";
IPAddress sip(192,168,1,29);
IPAddress sip1(192,168,1,1);
IPAddress sip2(255,255,255,0);
WiFiServer server(80); //设置服务器端口为80
void setup() {
Serial.begin(115200);
delay(10);
pinMode(LED,OUTPUT);
digitalWrite(LED,LOW);
//连接网络
Serial.println();
Serial.println();
Serial.print("connexting to");
Serial.println(ssid);
WiFi.begin(ssid,password);
WiFi.config(sip,sip1,sip2);
while(WiFi.status()!=WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
//开始服务
server.begin();
Serial.println("Server started");
Serial.println(WiFi.localIP());//IP地址
}
void loop() {
WiFiClient client=server.available();
if(!client){
return;
}
Serial.println("new client");
while(!client.available())
{
delay(1);
}
String rep=client.readStringUntil('\r');
Serial.println(rep);
client.flush();
//请求匹配
int val;
if(rep.indexOf("/gpio/0")!=-1)
val=0;
else if(rep.indexOf("/gpio/1")!=-1)
val=1;
else
{
Serial.println("invalid request");
client.stop();
return ;
}
digitalWrite(LED,val);
client.flush();
String s="HTTP/1.1 200 OK\r\nContent - Type:text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now";
s+=(val)? "high":"low";
s+="</html>\n";
client.print(s);
delay(1);
Serial.println("Client disconnected");
}

后续

如果想了解更多物联网、智能家居项目知识,可以关注我的​​项目实战​​专栏。

或者关注公众号。

Web 服务器远程控制硬件(Arduino)_物联网

编写不易,感谢支持。