在本ESP32(http://www.dfrobot.com.cn/goods-1359.html)教程中,我们将检查如何设置一个异步HTTP web服务器,该设备作为软访问点运行。

本ESP32教程的测试是使用集成在FireBeetle ESP32开发板中的DFRobot的ESP-WROOM-32设备进行的。

引言

在这一篇ESP32教程中,我们将介绍在设备作为软接入点运行时如何设置异步HTTP网络服务器。

这样,为使客户端能够连接到HTTP服务器,我们就不需要连接路由器,而只需连到ESP32上面的Wi-Fi网络即可。

在工作于软接入点模式的ESP32上设置HTTP服务器是非常有用的,因为在实际的应用场景中,IoT设备可能部署在Wi-Fi网络中,而在代码编译时是无从知晓Wi-Fi网络认证信息的。

因此,我们就需要以一定的方式对这些认证信息进行设置,以使ESP32能够连接到Wi-Fi网络。

尽管可以通过串行通讯实现连接Wi-Fi网络的目的,但是在有些商业应用中却并不现实,因为往往需要最终用户对设备进行初始配置以开始运行。

因此,一种解决办法就是在首次连接时,让ESP32作为软接入点运行,并启动一个HTTP服务器作为配置HTML页面,以便用户输入Wi-Fi网络名称和密码,从而使得设备能够连接到因特网运行。

IoT温控器就是一个很好的例子,它会对环境温度进行测量,并将结果发送到网上。在这种情况下,每个用户都需要在家里对该产品进行配置,因此上面提到的初始配置方法就是一种理想的解决方案。

当然,这种接口类型的设计是非常复杂的,因此在这篇入门级的例子中,我们只会让服务器简单地返回一条“hello world”消息。

尽管如此,在运行于软接入点模式的ESP32开发板上,仍然可以对前几篇帖子里介绍的HTTP服务器示例进行测试,而且它们已经包含了关于处理HTML和JavaScript的教程。更多详细信息请参见“相关帖子”一节。

如果你还没有配置设置异步HTTP网络服务器所需要的ESP32 Arduino库,那么请参考[此处](http://techtutorialsx.com/2017/12/01/esp32-arduino-asynchronous-http-webserver/)了解如何进行配置。

本ESP32教程的测试是在ESP32 FireBeetle板中集成的DFRobot ESP-WROOM-32设备上进行的。

如果你更喜欢视频教程,可以看这个:

https://blog.csdn.net/qq_29338243/article/details/92795468

代码

在编写代码方面,本例将以之前有关Arduino环境的两篇教程为基础。第一篇主要介绍了如何设置软接入点:(参见:[ESP32 IDF教程:设置软AP](http://mc.dfrobot.com.cn/thread-280843-1-1.html)),另一篇则介绍了如何在ESP32上配置HTTP网络服务器(请参见:[ESP32 Arduino教程:异步HTTP网络服务器](http://mc.dfrobot.com.cn/thread-280829-1-1.html))。

有一点需要特别注意,HTTP服务器的配置方式跟之前教程中将ESP连接到路由器Wi-Fi网络时是完全一样的。

所以,在实现方面,我们用于配置服务器的接口并不需要知道所使用的是何种Wi-Fi网络。

在编码方面,首先当然是包含相关的头文件。要设置软接入点,我们需要包含Wi-Fi.h和 ESPAsyncWebServer.h库。#include "WiFi.h"

#include "ESPAsyncWebServer.h"

为了使其他设备能够连接到软接入点,我们需要指定其SSID(网络名称)和密码。这些认证信息都将被声明为全局变量。const char *ssid = "MyESP32AP";

const char *password = "testpassword";

在全局声明最后,我们需要AsyncWebServer 类的一个实例,它提供了配置网络服务器所需的高级API。

在之前的教程中讲过,这个类的构造函数需要一个参数,那就是服务器监听HTTP请求的端口。跟往常一样,我们使用默认的HTTP端口(80)。AsyncWebServer server(80);

在设置函数中,首先需要打开一个串行连接,因为我们需要将ESP32的IP输出给客户端,以使其能够正常连接。Serial.begin(115200);

要启动软接入点,我们只需要调用Wi-Fi外部变量的softAP方法即可(这是我们将ESP32连接到Wi-Fi网络时所使用的同一个变量)。

该方法需要两个输入参数,第一个参数是我们要设置的Wi-Fi网络名称,第二个是网络密码。不需要强制设置密码,而且为了实现开放接入点,最好不要设置密码。WiFi.softAP(ssid, password);

如前所述,我们需要知道ESP32的IP,以使客户端能够连接到网络并发送请求。我们可以调用同一个Wi-Fi变量上的softAP方法来获取IP。Serial.print("IP address: ");

Serial.println(WiFi.softAPIP());

这样Wi-Fi网络部分就设置好了,接下来需要对服务器进行设置。只需要将一个路径绑定到相关的处理函数即可,这样当HTTP请求发送到这个路径时,相应的处理函数就会被执行。

我们使用的是“/hello”路径,并让服务器监听该路径上的HTTP GET请求。

路径处理函数仅返回一个HTTP OK代码(200)和一条“Hello World”消息。

相关的配置代码如下所示。如果需要关于配置代码中所有参数和函数的详细说明,请参见这篇帖子:[ESP32 Arduino教程:异步HTTP网络服务器](http://mc.dfrobot.com.cn/thread-280829-1-1.html)。server.on("/hello", HTTP_GET, [](AsyncWebServerRequest *request){

request->send(200, "text/plain", "Hello World");

});

为了启动服务器,我们需要调用服务器对象上的begin方法,这样它就会监听并处理接收到的请求。到此为止,设置函数就完成了,服务器开始异步运行,Arduino循环暂时可以为空。最终的源代码如下所示。

#include "WiFi.h"

#include "ESPAsyncWebServer.h"

const char *ssid = "MyESP32AP";

const char *password = "testpassword";

AsyncWebServer server(80);

void setup(){

Serial.begin(115200);

WiFi.softAP(ssid, password);

Serial.println();

Serial.print("IP address: ");

Serial.println(WiFi.softAPIP());

server.on("/hello", HTTP_GET, [](AsyncWebServerRequest *request){

request->send(200, "text/plain", "Hello World");

});

server.begin();

}

void loop(){}

测试代码

只需将编译好的代码上传到你的ESP设备上,并打开Arduino IDE串口监测器,即可对代码进行测试。软接入点设置好后,ESP32的IP就会在监测器上显示出来,如图1所示。把这个IP地址复制下来。

图1-ESP32的IP。

此时,你的电脑应该能够检测到Wi-Fi网络。在可用的Wi-Fi网络中找到它,并使用代码中定义的密码连接到这个Wi-Fi网络。图2所示是windows 8电脑检测到的网络。

图2 - Windows 8电脑检测到ESP32上的Wi-Fi网络。

最后,在连接到Wi-Fi网络之后,打开你的网络浏览器,并在地址栏输入以下内容,将 #yourEspIp# 改为你从串口监测器上复制的数值。http://#yourEspIp#/hello

输出结果如图3所示,其中显示了服务器所返回的“Hello world”消息。

图3 - ESP32服务器向客户端返回消息。

精华教程:

[ESP32 MicroPython教程:uPyCraft IDE入门](https://blog.csdn.net/qq_29338243/article/details/87931931)

[ESP32 MicroPython教程:解析JSON](https://blog.csdn.net/qq_29338243/article/details/83823436)

[ESP32 MicroPython教程:MicroPython支持](https://blog.csdn.net/qq_29338243/article/details/83617832)

[ESP32 MicroPython教程:连接Wi-Fi网络](https://blog.csdn.net/qq_29338243/article/details/84138874)

[ESP32 / ESP8266 MicroPython教程:自动连接WiFi](https://blog.csdn.net/qq_29338243/article/details/84836082)

[ESP32 / ESP8266 MicroPython教程:从文件系统运行脚本](https://blog.csdn.net/qq_29338243/article/details/85004189)

[ESP32 / ESP8266 MicroPython教程:HTTP GET请求](https://blog.csdn.net/qq_29338243/article/details/84775363)

[ESP32 Arduino教程:用于构建ESP32编译环境的Arduino IDE软件](https://blog.csdn.net/qq_29338243/article/details/83586756)

[ESP32 Arduino教程:FreeRTOS队列性能测试](https://blog.csdn.net/qq_29338243/article/details/88665983)

[ESP32 RFID教程:打印MFRC522固件版本](https://blog.csdn.net/qq_29338243/article/details/89631227)

[ESP32 Picoweb教程:获取请求的HTTP方法](https://blog.csdn.net/qq_29338243/article/details/88694253)

……

还有更多教程: [ESP32教程](http://mc.dfrobot.com.cn/thread-271930-1-1.html) 合集

英文版 :[ESP32 tutorial](https://www.dfrobot.com/blog-964.html)合集

服务器.esp文件,ESP32 Arduino教程:通过软接入点(soft AP)实现HTTP服务器-esp文件相关推荐

  1. arduino消息服务器,在C(Arduino IDE)中将API链接消息解析为服务器(示例代码)

    我正在使用Arduino IDE来编程我的微控制器,它有一个内置的Wi-Fi芯片(ESP8266 NodeMCU),它连接到我的互联网路由器,然后有一个特定的IP(就像192.168.1.5). 所以 ...

  2. linux查找时间文件,Linux基础教程 linux下使用find命令根据系统时间查找文件用法(示例代码)...

    LinuxFind 兄弟连Linux培训总结这些时间戳包括 复制代码代码如下: mtime 文件内容上次修改时间 atime 文件被读取或访问的时间 ctime 文件状态变化时间 mtime 和 at ...

  3. esp32 micropython web服务器_ESP32 Arduino教程:Websocket server(服务器)

    本文主要介绍如何使用Arduino内核作为编程架构在ESP32(上创建Websocket server(服务器).所创建的Websocket server(服务器)将作为回发服务器使用,也就是说它会把 ...

  4. 串口监视软件_ESP32 Arduino教程:软件重置

    简介 该esp32 arduino教程旨在解释如何使用Arduino核心在ESP32开发板上执行软件重置. 本ESP32教程的测试是使用集成在ESP32开发板中的DFRobot的ESP-WROOM-3 ...

  5. 使用Arduino开发ESP32(21):蓝牙基础说明与作为服务器使用

    文章目录 目的 蓝牙基础说明 测试工具 作为服务器使用 创建蓝牙设备并广播 创建Server 创建Service并启动 创建Characteristic 读写Characteristic中的Value ...

  6. mac java 读取到服务器上的文件夹_如何在Mac和Win之间高效共享文件?mac和win文件高效共享教程

    隔空投送,相信是很多使用Mac的小伙伴常用的文件交换方式.但隔空投送需要主动发送文件对方才能够接收,那有没有办法能让你的小伙伴儿直接访问你Mac上的文件呢?本篇文章教你如何使用Mac的共享功能在局域网 ...

  7. win7局域网自建ftp服务器,win7系统搭建FTp服务器局域网内传输文件的解决教程

    win7系统使用久了,好多网友反馈说win7系统搭建FTp服务器局域网内传输文件的问题,非常不方便.有什么办法可以永久解决win7系统搭建FTp服务器局域网内传输文件的问题,面对win7系统搭建FTp ...

  8. aspx文件怎么用服务器打开,高手教你轻松打开ASPX文件【图文教程】

    电脑下载ASPX文件却不知道该如何打开?由于ASPX文件比较少见,所以部分电脑小白看到此文件都不清楚怎么打开?ASPX文件是一种Web文件,它是网站的网页源文件,里面全是代码,一般可以用记事本直接打开 ...

  9. 群晖搭建Blynk服务器 可开外网及改Mixly文件完美支持教程

    最近研究一下群晖系统,发现群会有容器DOCKER然后找到了Blynk服务器,下载安装研究了一番.结果很满意.这么好的功能不敢独享.特拿出来与大家分享.用低功耗(13W)的主机做群晖nas还可以做物联网 ...

最新文章

  1. iOS面试题整理---关键字!!!
  2. 远程连接MySQL慢的原因及解决
  3. svn hook同步更新svn到web服务器
  4. bss,data,text,rodata,堆,栈,常量段
  5. RabbitMQ消息追踪之Firehose
  6. 软件开发了10年,迷茫了
  7. LeetCode 32. Longest Valid Parentheses
  8. 关于java.util.ConcurrentModificationException和remove倒数第二个元素
  9. java 字符串 面试题_Java常用类String的面试题汇总(java面试题)
  10. torch将多个tensor张量合并为一个张量,只提高迷你批次的纬度
  11. gz键盘增强小工具_干货推荐∣6个超有用的在线工具,日常必备
  12. 基于Seajs的可控台球碰撞游戏
  13. 智乃的01串打乱(思维+暴力)
  14. java-JDBC配置驱动程序
  15. python新浪微博爬虫_scrapy实现新浪微博爬虫
  16. CCNA考试题库中英文翻译版及答案5
  17. ubuntu安装无线网卡驱动(Ralink)
  18. html页面实现右下角弹窗提示,JS 实现右下角弹窗
  19. Origin非线性拟合选项
  20. Python爬虫之scrapy分布式爬虫

热门文章

  1. 2017中国国际智慧城市、物联网、大数据博览会会刊(参展商名录)
  2. 程序员写作能赚多少钱,怎么赚?
  3. 区块链融资逼上“币山”
  4. 没有文化积累和深度思考的旅行,你永远到不了远方
  5. 爬取京东上商品的所有详细信息
  6. 台式计算机真的没有摄像头吗,电脑没有摄像头怎么办 电脑没有摄像头解决方法【详解】...
  7. java代码实现根据身份证号获取性别,年龄
  8. 基于CocosCreator的切水果小游戏(一)
  9. 国产手机迈入关键时期,弯道超车指日可待?
  10. 2006年职称计算机考试,2006年度职称计算机考试练习试题