数码之家

 找回密码
 立即注册
搜索
查看: 2275|回复: 0

[Arduino] 零知ESP8266:HTTP WEB 服务器示例

[复制链接]
发表于 2019-6-20 15:17:04 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1、概述

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

2、软件和硬件

硬件使用零知-ESP8266;

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

示例.jpg

3、方法步骤

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

  1. /**********************************************************
  2. *    文件: x.ino      by 零知实验室(www.lingzhilab.com)
  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)我们打开零知开发工具的串口调试窗口,可以看到如下信息:

调试窗口.jpg

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

ping.jpg

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

结果.jpg

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


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-16 21:16 , Processed in 0.234000 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表