【ESP8266 快速入门】示例3:搭建基本网络服务器(基于安信可NodeMCU、C/C++)

本文档介绍了如何使用ArduinoIDE和ESP8266(NodeMCU ESP-12F)开发板创建一个简单的网络服务器。通过添加WiFi配置、连接网络、启动服务器并定义处理根目录请求的函数,实现了当浏览器访问服务器时显示'HelloWorld,Welcome to ESP8266'的网页。实验成功展示了ESP8266作为微型网络服务器的能力。
摘要由CSDN通过智能技术生成

问题描述

使用Arduino IDE开发ESP8266(安信可NodeMCU),搭建一个简单的网络服务器。可以访问网页,打印出hello world

开发环境

IDE
在这里插入图片描述
开发板
我用的NodeMCU ESP8266 安信可 ESP-12F开发板。
在这里插入图片描述

代码

/**********************************************************************
项目名称/Project          : 基本的服务器
程序名称/Program name     : Web_Server
程序目的/Purpose          : 使用ESP8266开发板建立基本服务器。用户可通过浏览器使用8266的IP地址
                           访问8266所建立的基本网页(Hello from ESP8266)
***********************************************************************/
#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为端口号

// 添加几个可用的ap,WiFi重启后,自动连接信号最强的
void add_user_AP(void)
{
    //通过addAp函数存储  WiFi名称       WiFi密码
    wifiMulti.addAP("hh", "12345678");
    wifiMulti.addAP("hh2", "87654321"); // 这3个WiFi网络名称分别是hh, hh2, hh3。
    wifiMulti.addAP("hh3", "13572468"); // 这3个WiFi的密码分别是12345678,87654321,13572468。
                                         // 此处WiFi信息只是示例,请在使用时将需要连接的WiFi信息填入相应位置。
}

// 等待连接成功
void wait_connect_ok(void)
{
    int i = 0;
    // wifiMulti.run()自动搜索addAP函数所存储的WiFi,并连接最强的那一个WiFi信号。
    // 连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。
    while (wifiMulti.run() != WL_CONNECTED)
    {                
        delay(1000); 
        Serial.print(i++);
        Serial.println("Waiting to connect to the network..."); 
    }                                                          
}
// 打印连接信息
void print_connect_info(void)
{
    // WiFi连接成功后将通过串口监视器输出连接成功信息
    Serial.println('\n');           // WiFi连接成功后
    Serial.print("Connected to ");  // ESP8266开发板将通过串口监视器输出。
    Serial.println(WiFi.SSID());    // 连接的WiFI名称
    Serial.print("IP address:\t");  // 以及
    Serial.println(WiFi.localIP()); // ESP8266开发板的IP地址
}
//启动网络服务功能
void start_web_server(void)
{
    esp8266_server.begin();                    // 启动网络服务
    esp8266_server.on("/", handleRoot);        // 网站根目录,回调函数handleRoot
    esp8266_server.onNotFound(handleNotFound); // 找不到,回调函数handleNotFound
    Serial.println("HTTP esp8266_server started"); //  告知用户ESP8266网络服务功能已经启动
}
void setup(void)
{
    Serial.begin(9600); // 启动串口通讯

    // 添加几个可用的ap,WiFi重启后,自动连接信号最强的
    add_user_AP();

    // 等待连接成功
    wait_connect_ok();
    // 打印连接信息
    print_connect_info();
    // 启动网络服务功能
    start_web_server();
}

/* 主循环 */
void loop(void)
{
    esp8266_server.handleClient(); // 处理http服务器访问
}

// 设置网站根目录函数
void handleRoot()
{                                                                 //处理网站根目录“/”的访问请求
    esp8266_server.send(200, "text/plain", "Hello World,Welcome to ESP8266"); // ESP8266开发板将调用此函数。
}

// 设置处理404情况的函数'handleNotFound'
void handleNotFound()
{                                                             // 当浏览器请求的网络资源无法在服务器找到时,
    esp8266_server.send(404, "text/plain", "404: Not found"); // ESP8266开发板将调用此函数。
}

实验现象

打开串口监视器,重启开发板。
在这里插入图片描述

浏览器输入上面标记的ip。浏览器和esp8266处于同一个局域网。
如下图所示,出现了 “Hello World,Welcome to ESP8266”
在这里插入图片描述

简单服务器实验成功!

现象解释

电脑访问192.168.1.111/,即esp8266的ip地址。
esp8266开启了网络服务器,处理电脑访问更目录的请求。
通过send函数发送简单的文本返回给esp2866。

// 设置网站根目录函数
void handleRoot()
{                                                                 //处理网站根目录“/”的访问请求
    esp8266_server.send(200, "text/plain", "Hello World,Welcome to ESP8266"); // ESP8266开发板将调用此函数。
}

在这里插入图片描述

后续将会介绍返回html文本,实现更加丰富的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值