一.本文目标:
通过esp8285 创建wifi热点,esp8285同时作为web服务器,对外提供页面访问。
用手机或电脑找到对应的wifi用户名和密码,连接esp8285提供的wifi之后,通过esp8285提供的ip地址,访问到页面,完成独立的wifi热点下的web服务器的搭建
二.开发环境搭建
硬件:esp8285
开发工具:arduino ide
开发环境:windows
测试终端:安卓手机
三.详细步骤
首先搭建 开发环境搭建。具体请参考本专栏上一篇文章:
Esp8285开发环境搭建
1.打开开发工具 arduino ide,并选择开发板 DOIT ESP-Mx xxxx
选择详细步骤不清楚的话,可以参考上一篇文章,这里不再详述。能够选择成功,会在界面上有上图的显示,即可继续按照本文往下进行。如果选择没成功,想先按照上文的步骤操作成功后再试。
2.找到WIFIAP的示例代码
文件-->示例-->ESP8266WiFi-->WiFiAccessPoint
打开新的窗口之后
3.修改示例代码
/*
Copyright (c) 2015, Majenko Technologies
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* * Neither the name of Majenko Technologies nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* Create a WiFi access point and provide a web server on it. */
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#ifndef APSSID
#define APSSID "ESP8285-1ap"
#define APPSK "Aaa123456"
#endif
/* Set these to your desired credentials. */
const char *ssid = APSSID;
const char *password = APPSK;
ESP8266WebServer server(80);
/* Just a little test message. Go to http://192.168.4.1 in a web browser
connected to this access point to see it.
*/
void handleRoot() {
server.send(200, "text/html", "<h1>You are connected</h1>");
}
void setup() {
delay(1000);
Serial.begin(115200);
Serial.println();
Serial.print("Configuring access point...");
/* You can remove the password parameter if you want the AP to be open. */
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
}
这里需要非常注意一点:我们创建的wifi用户名和密码的格式要正确,否则会生成esp-xxx为格式的用户名,开放登录的热点。
具体格式:wifi用户名密码尽量使用ESP-xxxx,格式,其中xxxx是要数字和大小写字母的混合
密码:不低于6位,大小写字母混合
4.烧录代码(部署)到esp8285
这里要特别注意一下,当修改过wifi名和密码的时候,一定要进行保存,而且保存之后实际上是会重新开启一个开发界面的,所以修改之后的编译和代码上传都是在保存后的界面上进行的,否则会按照默认的用户名密码进行设置
部署成功,效果如下:
五.验证:
1.打开手机或者开发电脑,找到wifi连接的界面,就是浏览wifi列表的地方,找到我们设置的wifi名称,这里是ESP8285-1ap
会提示没有internet,不需要管。这里的原因是我们只是用esp8285作为一个wifi热点,但是esp8285还没有接入到运营商提供的外网中。这里连接上之后,只能访问esp8285所在的局域网下的内容,不能实际联网。如果需要实际联网,可以给esp8285连外部网络,后续章节会进行讲解
2.按照正常连接wifi的方式点
连接 按钮,输入密码(代码中配置的Aaa123456),连接之后如下,到开发工具的串口监视器下,查看下日志,看下esp8285对外提供的web访问地址是多少:
这里看到是 192.168.4.1.这个ip也是默认的,因为代码中我们未进行设置,如果需要设置可以修改代码后部署一下。
看到页面如下:
六.总结
至此,我们使用esp8285创建了一个ap,并通过浏览器的wifi连接到该热点,并且通过页面访问到了 esp8285提供的web页面。虽然页面简单只有一行字,如果我们需要扩展页面,可以在此基础上编写html代码。
如果我们需要实现交互功能,那么可以通过html代码里调用http接口或者mqtt方法,实现复杂的功能。当然,如果接口在外网,还需要给esp8285设置连接外网的能力,也就是连接一个对外的路由器。
我们通过上面的例子,已经可以实现一个简答的wifi热点了。在实际场景中,我们可能会需要从wifi热点提供的界面里,开放 用户名和密码的输入框,通过动态 输入框输入路由器提供的wifi用户名和密码来实现动态配置路由的功能。
其实我们的esp8285功能很强大,上述的功能是可以实现的,实现上述功能之后,esp8285就可以通过连接路由器提供的wifi,来访问外网或者调用http接口,或者mqtt接口了。当然,如果实现联网之后,可就可以通过http协议,通过透传的方式
提供对外的web服务器能力,这也是一种很强大的功能。esp8285还具备一种功能,是可以同时连接多个wifi实现多连接,这也是一种很强大的能力。后续章节会继续扩展讲解esp8285的这些能力。
至于可以应用的实际场景,我想是有很多的,我们可以自己去挖掘一下,我这里给出来一个我自己的例子:通过esp8285的rx,tx针脚,连接硬件设备,然后通过esp8285将硬件设备的控制功能放在针脚上,然后提供html页面,通过页面上的按钮,来控制具体的设备,实现设备的无线控制能力