当前位置:   article > 正文

初识ESP8266(二)————搭建网络服务器实现远程控制_本系统通过采用多个esp8266组成wifi网络,设备通过wifi连接,将状态反馈到远程服务

本系统通过采用多个esp8266组成wifi网络,设备通过wifi连接,将状态反馈到远程服务

一.实验介绍

8266搭建网络服务器,通过同一wifi信号下的终端访问ESP8266IP地址,对开发板进行控制。

二.代码

1.esp8266_server.begin()

作用:启动网络服务,搭建网络服务器

2.esp8266_server.on("/",handleRoot)

作用:如果其他终端请求访问根目录,则执行handleRoot函数

3.esp8266_server.onNotFound(handleNotFound)

作用:如果访问过程中发生404错误,执行handleNotFound函数

4.esp8266_server.handleClient()

作用:检查http服务器访问

5.esp8266_server.send(200,"text/plain","Hello World")

作用:发送200指令,以文本形式显示Hello World

6.esp8266_server.send(404,"text/plain","404:Not found")

作用:发送404指令,以文本形式显示404:Not found

7.esp8266_server.on("/",HTTP_GET,handleRoot)

作用:以HTTP_GET方式访问根目录,执行handleRoot函数,在访问网站时输入网址回车默认就是HTTP_GET方式

8.esp8266_server.on("/LED",HTTP_POST,handleLED)

作用:以HTTP_POST方式访问/LED页面,执行handleLED

三.代码

  1. //搭建服务器并访问
  2. #include <ESP8266WiFi.h>
  3. #include <ESP8266WiFiMulti.h>
  4. #include <ESP8266WebServer.h>
  5. ESP8266WiFiMulti wifiMulti;
  6. ESP8266WebServer esp8266_server(80);
  7. void setup(void)
  8. {
  9. Serial.begin(9600);
  10. //添加wifi信息,自己选择最强信号连接
  11. wifiMulti.addAP("HUAWEI Mate 30","1234567890");
  12. int i=0;
  13. //等待连接
  14. while(wifiMulti.run()!=WL_CONNECTED)
  15. {
  16. delay(1000);
  17. Serial.print(i++);
  18. Serial.print(" ");
  19. }
  20. //连接成功,打印连接wifi的名称和IP地址
  21. Serial.println(" ");
  22. Serial.print("Connect:");
  23. Serial.println(WiFi.SSID());
  24. Serial.print("Address:");
  25. Serial.println(WiFi.localIP());
  26. //搭建网络服务器
  27. esp8266_server.begin();
  28. //其他设备请求访问根目录时,执行handleRoot函数
  29. esp8266_server.on("/",handleRoot);
  30. //访问根目录出现错误时,执行handleNotFound函数
  31. esp8266_server.onNotFound(handleNotFound);
  32. Serial.println("HTTP Started");
  33. }
  34. void loop(void)
  35. {
  36. //处理服务器访问,相当于一直判断有没有设备访问网站,有的话处理对应信息
  37. esp8266_server.handleClient();
  38. }
  39. void handleRoot(void)
  40. {
  41. //开发板发送指令200,将Hello World以文本形式显示
  42. esp8266_server.send(200,"text/plain","Hello World");
  43. }
  44. void handleNotFound(void)
  45. {
  46. //开发板发送指令200,将404:Not found以文本形式显示
  47. esp8266_server.send(404,"text/plain","404:Not found");
  48. }

在串口查看开发板IP地址 

使用同一wifi下的终端访问此IP地址,试验成功

  1. //搭建网络服务器,通过服务器控制开发板板载LED实现亮灭
  2. #include <ESP8266WiFi.h>
  3. #include <ESP8266WiFiMulti.h>
  4. #include <ESP8266WebServer.h>
  5. ESP8266WiFiMulti wifiMulti;
  6. ESP8266WebServer esp8266_server(80);
  7. void setup(void)
  8. {
  9. int i=0;
  10. Serial.begin(9600);
  11. //设置LED引脚为输出
  12. pinMode(LED_BUILTIN,OUTPUT);
  13. //自动连接最强WiFi
  14. wifiMulti.addAP("HUAWEI Mate 30","1234567890");
  15. Serial.println("Connecting...");
  16. //等待连接
  17. while(wifiMulti.run()!=WL_CONNECTED)
  18. {
  19. delay(1000);
  20. Serial.print(i++);
  21. Serial.print(" ");
  22. }
  23. //连接成功,并打印WiFi名称和IP地址
  24. Serial.print("Connect OK:");
  25. Serial.println(WiFi.SSID());
  26. Serial.print("IP Address:");
  27. Serial.println(WiFi.localIP());
  28. //打开服务器
  29. esp8266_server.begin();
  30. //外围设备访问根目录
  31. esp8266_server.on("/",HTTP_GET,handleRoot);
  32. esp8266_server.on("/LED",HTTP_POST,handleLED);
  33. esp8266_server.onNotFound(handleBotFound);
  34. Serial.println("HTTP esp8266_server started");
  35. }
  36. void loop(void)
  37. {
  38. //处理服务器访问
  39. esp8266_server.handleClient();
  40. }
  41. void handleRoot(void)
  42. {
  43. //发送200指令,以html形式,后面为html代码创建一个按钮在/LED页面,以POST形式访问
  44. //按钮的名称为Toggle LED
  45. esp8266_server.send(200,"text/html","<form action=\"/LED\" method=\"POST\"><input type=\"submit\" value=\"Toggle LED\"></form>");
  46. }
  47. void handleLED(void)
  48. {
  49. //读取LED电平并翻转
  50. digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));
  51. //跳转根目录
  52. esp8266_server.sendHeader("Location","/");
  53. esp8266_server.send(303);
  54. }
  55. void handleBotFound(void)
  56. {
  57. esp8266_server.send(404,"text/plain","404 Not Found");
  58. }

wifi连接成功

打开开发板IP地址,点击按钮,开发板LED实现亮灭

  1. #include <ESP8266WiFi.h>
  2. #include <ESP8266WiFiMulti.h>
  3. #include <ESP8266WebServer.h>
  4. ESP8266WiFiMulti WiFiMulti;
  5. ESP8266WebServer esp8266_server(80);
  6. #define buttonPin D3
  7. bool PinState;
  8. void setup(void)
  9. {
  10. int i=0;
  11. Serial.begin(9600);
  12. WiFiMulti.addAP("HUAWEI Mate 30","1234567890");
  13. while(WiFiMulti.run()!=WL_CONNECTED)
  14. {
  15. delay(1000);
  16. Serial.print(i++);
  17. Serial.print(" ");
  18. }
  19. Serial.println(" ");
  20. Serial.print("Connect OK:");
  21. Serial.println(WiFi.SSID());
  22. Serial.print("IP Address:");
  23. Serial.println(WiFi.localIP());
  24. esp8266_server.begin();
  25. esp8266_server.on("/",HTTP_GET,handleRoot);
  26. esp8266_server.onNotFound(handleBotFound);
  27. Serial.println("HTTP esp8266_server started");
  28. }
  29. void loop(void)
  30. {
  31. esp8266_server.handleClient();
  32. //时刻检查D3电平
  33. PinState=digitalRead(buttonPin);
  34. }
  35. void handleBotFound(void)
  36. {
  37. esp8266_server.send(404,"text/plain","404 NOT FOUND");
  38. }
  39. void handleRoot(void)
  40. {
  41. String str;
  42. if(PinState==HIGH)
  43. {
  44. str="Button State: HIGH";
  45. }
  46. else
  47. {
  48. str="Button State: LOW";
  49. }
  50. esp8266_server.send(200,"text/plain",str);
  51. }

 wifi连接成功

 

在FLASH按键没按下时为高电平

FLASH按键按下后为低电平

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/718208
推荐阅读
相关标签
  

闽ICP备14008679号