Web 服务器远程控制硬件(Arduino)
- 定义热点名和密码
- 设置IP地址
IPAddress sip(192,168,1,29) - 设置模式
WiFiServer server(80) - 串口初始化
- GPIO初始化
pinMode(LED,OUTPUT)
digitalWrite(LED,LOW) - 打开WiFi,连接到设置的IP
WiFi.begin(ssid,password)
WiFi.config(sip,sip1,sip2); - 连接热点
while(WiFi.status()!=WL_CONNECTED)
等待
跳出循环,则连接成功 - 打开服务器
server.begin() - 打印IP地址
WiFi.localIP() - 检查是否有客户端连接
WiFiClient client=server.available();
client=1;则有 - 等待客户端发送数据
while(!client.available())
delay(1); - 读取请求
String rep=client.readStringUntil(’\r’);
Serial.println(rep)
client.flush()
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");
}
后续
如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。
或者关注公众号。
编写不易,感谢支持。