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()
#define LED 16
#define KEY 0
#include
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\r\n\r\nGPIO is now";
s+=(val)? "high":"low";
s+="\n";
client.print(s);
delay(1);
Serial.println("Client disconnected");
}
后续
如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。 或者关注公众号。
编写不易,感谢支持。