打印

【零知ESP8266】HTTP WEB 服务器示例

[复制链接]
44|0
跳转到指定楼层
楼主

1、概述

HTTP web server作为ESP8266的一个常用功能,在这里使用零知开源平台进行该示例的演示。

2、软件和硬件

硬件使用零知-ESP8266;

软件使用零知开发工具,自带示例:

3、方法步骤


(1)先在零知开发工具中打开AdvancedWebServer示例,或者复制下面的代码到零知开发工具中:

  1. /**********************************************************
  2. *    文件: x.ino      by 零知实验室
  3. *    -^^- 零知开源,让电子制作变得更简单! -^^-
  4. *    时间: 2019/05/28 12:22
  5. *    说明:
  6. ************************************************************/

  7. #include <ESP8266WiFi.h>
  8. #include <WiFiClient.h>
  9. #include <ESP8266WebServer.h>
  10. #include <ESP8266mDNS.h>

  11. #ifndef STASSID
  12. #define STASSID "ssid"
  13. #define STAPSK  "passwd"
  14. #endif

  15. const char *ssid = STASSID;
  16. const char *password = STAPSK;

  17. ESP8266WebServer server(80);

  18. const int led = 13;

  19. void handleRoot() {
  20.   digitalWrite(led, 1);
  21.   char temp[400];
  22.   int sec = millis() / 1000;
  23.   int min = sec / 60;
  24.   int hr = min / 60;

  25.   snprintf(temp, 400,

  26.            "<html>\
  27.   <head>\
  28.     <meta http-equiv='refresh' content='5'/>\
  29.     <title>ESP8266 Demo</title>\
  30.     <style>\
  31.       body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
  32.     </style>\
  33.   </head>\
  34.   <body>\
  35.     <h1>Hello from ESP8266!</h1>\
  36.     <p>Uptime: %02d:%02d:%02d</p>\
  37.     <img src=\"/test.svg\" />\
  38.   </body>\
  39. </html>",

  40.            hr, min % 60, sec % 60
  41.           );
  42.   server.send(200, "text/html", temp);
  43.   digitalWrite(led, 0);
  44. }

  45. void handleNotFound() {
  46.   digitalWrite(led, 1);
  47.   String message = "File Not Found\n\n";
  48.   message += "URI: ";
  49.   message += server.uri();
  50.   message += "\nMethod: ";
  51.   message += (server.method() == HTTP_GET) ? "GET" : "POST";
  52.   message += "\nArguments: ";
  53.   message += server.args();
  54.   message += "\n";

  55.   for (uint8_t i = 0; i < server.args(); i++) {
  56.     message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  57.   }

  58.   server.send(404, "text/plain", message);
  59.   digitalWrite(led, 0);
  60. }

  61. void setup(void) {
  62.   pinMode(led, OUTPUT);
  63.   digitalWrite(led, 0);
  64.   Serial.begin(115200);
  65.   WiFi.mode(WIFI_STA);
  66.   WiFi.begin(ssid, password);
  67.   Serial.println("");

  68.   // Wait for connection
  69.   while (WiFi.status() != WL_CONNECTED) {
  70.     delay(500);
  71.     Serial.print(".");
  72.   }

  73.   Serial.println("");
  74.   Serial.print("Connected to ");
  75.   Serial.println(ssid);
  76.   Serial.print("IP address: ");
  77.   Serial.println(WiFi.localIP());

  78.   if (MDNS.begin("esp8266")) {
  79.     Serial.println("MDNS responder started");
  80.   }

  81.   server.on("/", handleRoot);
  82.   server.on("/test.svg", drawGraph);
  83.   server.on("/inline", []() {
  84.     server.send(200, "text/plain", "this works as well");
  85.   });
  86.   server.onNotFound(handleNotFound);
  87.   server.begin();
  88.   Serial.println("HTTP server started");
  89. }

  90. void loop(void) {
  91.   server.handleClient();
  92.   MDNS.update();
  93. }

  94. void drawGraph() {
  95.   String out = "";
  96.   char temp[100];
  97.   out += "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"400\" height=\"150\">\n";
  98.   out += "<rect width=\"400\" height=\"150\" fill=\"rgb(250, 230, 210)\" stroke-width=\"1\" stroke=\"rgb(0, 0, 0)\" />\n";
  99.   out += "<g stroke=\"black\">\n";
  100.   int y = rand() % 130;
  101.   for (int x = 10; x < 390; x += 10) {
  102.     int y2 = rand() % 130;
  103.     sprintf(temp, "<line x1=\"%d\" y1=\"%d\" x2=\"%d\" y2=\"%d\" stroke-width=\"1\" />\n", x, 140 - y, x + 10, 140 - y2);
  104.     out += temp;
  105.     y = y2;
  106.   }
  107.   out += "</g>\n</svg>\n";

  108.   server.send(200, "image/svg+xml", out);
  109. }
复制代码

(2)验证上述代码并上传到零知-ESP8266开发板;

(3)我们打开零知开发工具的串口调试窗口,可以看到如下信息:

(4)现在我们用ping工具测试下网络,得到如下信息:

(5)上述步骤成功后,我们现在打开浏览器,打开网址:http://esp8266.local,可以看到如下信息:

更多详细资料可到零知实验室官网免费获取。




使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表
全民彩票