|

楼主 |
发表于 2021-8-4 14:56
|
显示全部楼层
本帖最后由 eagler8 于 2021-8-4 14:58 编辑
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目十一:创建一个服务器实例,在手机浏览器输入1关灯,输入0开灯
实验开源代码
- /*
- 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
- 实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
- 项目十一:创建一个服务器实例,在手机浏览器输入1关灯,输入0开灯
- */
- #include <ESP8266WiFi.h>
- const char* ssid = "zhz";
- const char* password = "567890";
- // 创建一个服务器实例
- // 指定要监听的端口作为参数
- WiFiServer server(80);
- void setup() {
- Serial.begin(115200);
- delay(10);
- // prepare GPIO2
- pinMode(2, OUTPUT);
- digitalWrite(2, 0);
- /* pinMode(3, OUTPUT);
- digitalWrite(3, 0);
- /*pinMode(4, OUTPUT);
- digitalWrite(4, 0);
- pinMode(5, OUTPUT);
- digitalWrite(5, 0);
- pinMode(6, OUTPUT);
- digitalWrite(6, 0);
- pinMode(7, OUTPUT);
- digitalWrite(7, 0);
- pinMode(8, OUTPUT);
- digitalWrite(8, 0);
- pinMode(9, OUTPUT);
- digitalWrite(9, 0);
- pinMode(10, OUTPUT);
- digitalWrite(10, 0);
- pinMode(11, OUTPUT);
- digitalWrite(11, 0);
- pinMode(12, OUTPUT);
- digitalWrite(2, 0);
- pinMode(13, OUTPUT);
- digitalWrite(13, 0);
- pinMode(14, OUTPUT);
- digitalWrite(14, 0);
- pinMode(15, OUTPUT);
- digitalWrite(15, 0);
- pinMode(16, OUTPUT);
- digitalWrite(16, 0);*/
- // 连接到 WiFi 网络
- Serial.println();
- Serial.println();
- Serial.print("Connecting to ");
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- Serial.println("");
- Serial.println("WiFi connected");
- // 启动服务器
- server.begin();
- Serial.println("Server started @ ");
- // 打印 IP 地址和说明
- Serial.println(WiFi.localIP());
- Serial.println("To control GPIO, open your web browser.");
- Serial.println("To set GPIO 0 high, type:");
- Serial.print(WiFi.localIP());
- Serial.println("/gpio/1");
- Serial.println("To set GPIO 0 low, type:");
- Serial.print(WiFi.localIP());
- Serial.println("/gpio/0");
- Serial.println("To toggle GPIO 0, type:");
- Serial.print(WiFi.localIP());
- Serial.println("/gpio/0");
- }
- void loop() {
- // 检查客户端是否已连接
- WiFiClient client = server.available();
- if (!client) {
- delay(100);
- return;
- }
- // Commented out by BB as gets stuck in while loop.
- // Wait until the client sends some data
- //Serial.println("new client");
- //while(!client.available()){
- // delay(1);
- //}
- // 读取请求的第一行
- String req = client.readStringUntil('\r');
- Serial.println(req);
- client.flush();
- // 匹配请求
- int val;
- if (req.indexOf("/gpio/1") != -1)
- val = 1;
- else if (req.indexOf("/gpio/0") != -1)
- val = 0;
- else if (req.indexOf("/gpio/4") != -1)
- val = (!digitalRead(0)); // <<<<< Edit: insert /gpio/3 lines after this line.
- else {
- Serial.println("invalid request");
- client.print("HTTP/1.1 404\r\n");
- client.stop();
- return;
- }
- // Set GPIO2 according to the request
- digitalWrite(2, val);
- /*digitalWrite(3, val);
- /* digitalWrite(4, val);
- digitalWrite(5, val);
- digitalWrite(6, val);
- digitalWrite(7, val);
- digitalWrite(8, val);
- digitalWrite(9, val);
- digitalWrite(10, val);
- digitalWrite(11, val);
- digitalWrite(12, val);
- digitalWrite(13, val);
- digitalWrite(14, val);
- digitalWrite(15, val);
- digitalWrite(16, 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 disonnected");
- // 客户端实际上会断开连接
- // 当函数返回并且 'client' 对象被销毁时
- }
复制代码
|
|