使用ESP8266-NodeMCU搭建网络服务器

1. 为ESP8266搭建Arduino IDE开发环境

方法一:通过开发板管理器安装ESP8266 SDK,具体方法【点击此处】
(此方法在虽然在网站上广为流传,本人亲测并不好用,容易受到网络波动的影响)
在这里插入图片描述
方法二:针对方法一,下载ESP9266 SDK时容易受到网络波动的影响,还有一种方法是删除部分文件来解决,具体方法【点击此处】
(此方法本人亲测,还是不好用)

方法三:上述两种方法可以作为了解,真正实用的方法还是:下载插件,并运行该文件即可完成Arduino IDE配置。
(下方给出了插件的下载链接,文件大小约为60MB)

链接:https://pan.baidu.com/s/18wVRN_9JbNi8CEf3XiAmiw
提取码:sdom
在这里插入图片描述

2. 开启NodeMCU的无线终端模式

下面将介绍如何让NodeMCU通过WiFi连接无线路由器并访问互联网

(该算法能自动连接最强信号WiFi网络)

#include <ESP8266WiFi.h>          // 本程序使用ESP8266WiFi库
#include <ESP8266WiFiMulti.h>   // 本程序使用ESP8266WiFiMulti库
 
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'
 
void setup() {
  Serial.begin(9600);            // 启动串口通讯
 
//通过addAp函数存储  WiFi名称       WiFi密码
  wifiMulti.addAP("Ehang-maker1", "88888888");  // 这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息。
  wifiMulti.addAP("Ehang-maker2", "88888888"); // 这3个WiFi网络名称分别是hang-maker1, Ehang-maker2, Ehang-maker3。
  wifiMulti.addAP("Ehang-maker3", "88888888"); // 这3个网络的密码分别是88888888,88888888,88888888。
                                                // 此处WiFi信息只是示例,请在使用时将需要连接的WiFi信息填入相应位置。
                                                // 另外这里只存储了3个WiFi信息,您可以存储更多的WiFi信息在此处。
                                                
  Serial.println("Connecting ...");         // 通过串口监视器输出信息告知用户NodeMCU正在尝试连接WiFi
  int i = 0;                                 
  while (wifiMulti.run() != WL_CONNECTED) {  // 此处的wifiMulti.run()是重点。通过wifiMulti.run(),NodeMCU将会在当前
    delay(1000);                             // 环境中搜索addAP函数所存储的WiFi。如果搜到多个存储的WiFi那么NodeMCU
    Serial.print('.');                       // 将会连接信号最强的那一个WiFi信号。
  }                                           // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。这也是
                                              // 此处while循环判断是否跳出循环的条件。
                                              
  Serial.println('\n');                     // WiFi连接成功后
  Serial.print("Connected to ");            // NodeMCU将通过串口监视器输出。
  Serial.println(WiFi.SSID());              // 连接的WiFI名称
  Serial.print("IP address:\t");            // 以及
  Serial.println(WiFi.localIP());           // NodeMCU的IP地址
}
 
void loop() 
{ 
  
}

为了验证NodeMCU的确已经联网,我们可以在Windows操作系统的“命令提示符”中输入对应的IP地址。
(IP地址可以从从串口监视器获取)
在这里插入图片描述
从以上截屏可以看到,NodeMCU成功的对我们的ping指令做出应答。到这里就可以确定当前NodeMCU已经成功连接WiFi了。

3.建立基本网络服务器

下面介绍一种算法,可以让ESP8266-NodeMCU实现最基本的网页服务功能。

#include <ESP8266WiFi.h>        // 本程序使用 ESP8266WiFi库
#include <ESP8266WiFiMulti.h>   //  ESP8266WiFiMulti库
#include <ESP8266WebServer.h>   //  ESP8266WebServer库
 
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'
 
ESP8266WebServer esp8266_server(80);// 建立ESP8266WebServer对象,对象名称为esp8266_server
                                    // 括号中的数字是网路服务器响应http请求的端口号
                                    // 网络服务器标准http端口号为80,因此这里使用80为端口号
 
void setup(void){
  Serial.begin(9600);          // 启动串口通讯
 
  //通过addAp函数存储  WiFi名称       WiFi密码
  wifiMulti.addAP("Ehang-maker1", "88888888");  // 这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息。
  wifiMulti.addAP("Ehang-maker2", "88888888"); // 这3个WiFi网络名称分别是Ehang-maker1, Ehang-maker2, Ehang-maker3。
  wifiMulti.addAP("Ehang-maker3", "88888888"); // 这3个网络的密码分别是88888888,88888888,88888888。
                                                // 此处WiFi信息只是示例,请在使用时将需要连接的WiFi信息填入相应位置。
                                                // 另外这里只存储了3个WiFi信息,您可以存储更多的WiFi信息在此处。
 
  int i = 0;                                 
  while (wifiMulti.run() != WL_CONNECTED) {  // 此处的wifiMulti.run()是重点。通过wifiMulti.run(),NodeMCU将会在当前
    delay(1000);                             // 环境中搜索addAP函数所存储的WiFi。如果搜到多个存储的WiFi那么NodeMCU
    Serial.print(i++); Serial.print(' ');    // 将会连接信号最强的那一个WiFi信号。
  }                                          // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。这也是
                                             // 此处while循环判断是否跳出循环的条件。
 
  // WiFi连接成功后将通过串口监视器输出连接成功信息 
  Serial.println('\n');                     // WiFi连接成功后
  Serial.print("Connected to ");            // NodeMCU将通过串口监视器输出。
  Serial.println(WiFi.SSID());              // 连接的WiFI名称
  Serial.print("IP address:\t");            // 以及
  Serial.println(WiFi.localIP());           // NodeMCU的IP地址
  
//--------"启动网络服务功能"程序部分开始-------- 
  esp8266_server.begin();                   
  esp8266_server.on("/", handleRoot);       
  esp8266_server.onNotFound(handleNotFound);        
//--------"启动网络服务功能"程序部分结束--------
  Serial.println("HTTP esp8266_server started");//  告知用户ESP8266网络服务功能已经启动
}
 
void loop(void){
  esp8266_server.handleClient();     // 处理http服务器访问
}
                                                                      
void handleRoot() {   //处理网站根目录“/”的访问请求 
  esp8266_server.send(200, "text/plain", "Hello from ESP8266");   // NodeMCU将调用此函数。
}
 
// 设置处理404情况的函数'handleNotFound'
void handleNotFound(){                                        // 当浏览器请求的网络资源无法在服务器找到时,
  esp8266_server.send(404, "text/plain", "404: Not found");   // NodeMCU将调用此函数。
}

- 此时NodeMCU已建立了一个超级迷你的小网,。这个网站只有一个网页。这个网页只有一行文字“Hello from ESP8266”(如下图所示)。

在这里插入图片描述
下一期将为大家讲解如何建立可以控制NodeMCU开发板的网页,敬请期待!

详情请关注亿航创客官方抖音账号:EhangGroup

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章