初识ESP8266(二)————搭建网络服务器实现远程控制

2023-05-16

一.实验介绍

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

三.代码

//搭建服务器并访问
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WebServer.h>
ESP8266WiFiMulti wifiMulti;
ESP8266WebServer esp8266_server(80);
void setup(void)
{
  Serial.begin(9600);
  //添加wifi信息,自己选择最强信号连接
  wifiMulti.addAP("HUAWEI Mate 30","1234567890");
  int i=0;
  //等待连接
  while(wifiMulti.run()!=WL_CONNECTED)
  {
     delay(1000);
     Serial.print(i++);
     Serial.print(" ");
  }
  //连接成功,打印连接wifi的名称和IP地址
  Serial.println(" ");
  Serial.print("Connect:");
  Serial.println(WiFi.SSID());
  Serial.print("Address:");
  Serial.println(WiFi.localIP());
  //搭建网络服务器
  esp8266_server.begin();
  //其他设备请求访问根目录时,执行handleRoot函数
  esp8266_server.on("/",handleRoot);
  //访问根目录出现错误时,执行handleNotFound函数
  esp8266_server.onNotFound(handleNotFound);
  Serial.println("HTTP Started");
}
void loop(void)
{
  //处理服务器访问,相当于一直判断有没有设备访问网站,有的话处理对应信息
  esp8266_server.handleClient();
}
void handleRoot(void)
{
    //开发板发送指令200,将Hello World以文本形式显示
    esp8266_server.send(200,"text/plain","Hello World");
}
void handleNotFound(void)
{
    //开发板发送指令200,将404:Not found以文本形式显示
    esp8266_server.send(404,"text/plain","404:Not found");
}

在串口查看开发板IP地址 

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

//搭建网络服务器,通过服务器控制开发板板载LED实现亮灭
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WebServer.h>
ESP8266WiFiMulti wifiMulti;
ESP8266WebServer esp8266_server(80);
void setup(void)
{
  int i=0;
  Serial.begin(9600);
  //设置LED引脚为输出
  pinMode(LED_BUILTIN,OUTPUT);
  //自动连接最强WiFi
  wifiMulti.addAP("HUAWEI Mate 30","1234567890");
  Serial.println("Connecting...");
  //等待连接
  while(wifiMulti.run()!=WL_CONNECTED)
  {
    delay(1000);
    Serial.print(i++);
    Serial.print(" ");
  }
  //连接成功,并打印WiFi名称和IP地址
  Serial.print("Connect OK:");
  Serial.println(WiFi.SSID());
  Serial.print("IP Address:");
  Serial.println(WiFi.localIP());
  //打开服务器
  esp8266_server.begin();
  //外围设备访问根目录
  esp8266_server.on("/",HTTP_GET,handleRoot);
  esp8266_server.on("/LED",HTTP_POST,handleLED);
  esp8266_server.onNotFound(handleBotFound);
  Serial.println("HTTP esp8266_server started");
}
void loop(void)
{
  //处理服务器访问
  esp8266_server.handleClient();     
  }
void handleRoot(void)
{
  //发送200指令,以html形式,后面为html代码创建一个按钮在/LED页面,以POST形式访问
  //按钮的名称为Toggle LED
  esp8266_server.send(200,"text/html","<form action=\"/LED\" method=\"POST\"><input type=\"submit\" value=\"Toggle LED\"></form>");
  }
void handleLED(void)
{
  //读取LED电平并翻转
  digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));
  //跳转根目录
  esp8266_server.sendHeader("Location","/");
  esp8266_server.send(303);
  }
void handleBotFound(void)
{
  esp8266_server.send(404,"text/plain","404 Not Found");
  }

wifi连接成功

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

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WebServer.h>
ESP8266WiFiMulti WiFiMulti;
ESP8266WebServer esp8266_server(80);
#define buttonPin D3
bool PinState;
void setup(void)
{
  int i=0;
  Serial.begin(9600);
  WiFiMulti.addAP("HUAWEI Mate 30","1234567890");

  while(WiFiMulti.run()!=WL_CONNECTED)
  {
    delay(1000);
    Serial.print(i++);
    Serial.print(" ");
  }
  Serial.println("  ");
  Serial.print("Connect OK:");
  Serial.println(WiFi.SSID());
  Serial.print("IP Address:");
  Serial.println(WiFi.localIP());

  esp8266_server.begin();
  esp8266_server.on("/",HTTP_GET,handleRoot);
  esp8266_server.onNotFound(handleBotFound);
  Serial.println("HTTP esp8266_server started");
}
void loop(void)
{
  esp8266_server.handleClient();
  //时刻检查D3电平
  PinState=digitalRead(buttonPin);
}
void handleBotFound(void)
{
  esp8266_server.send(404,"text/plain","404 NOT FOUND");
}
void handleRoot(void)
{
  String str;
  if(PinState==HIGH)
  {
    str="Button State: HIGH";
  }
  else
  {
    str="Button State: LOW";
  }
  esp8266_server.send(200,"text/plain",str);
}

 wifi连接成功

 

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

FLASH按键按下后为低电平

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识ESP8266(二)————搭建网络服务器实现远程控制 的相关文章

  • 二哈智能图像识别使用I2C导出识别结果到Wemos D1板

    学校比赛 购买了一块智能识别传感器模块huskylens 商家给了使用文档 但是别人用的官方uno板子来连接 我手里面只有ESP8266WiFi板子 只能把I2C驱动程序编译到esp8266上了 这是我的板子 说明文档里面只给了连接UNO
  • ESP8266测试Wi-Fi通讯安全

    创建Arduino Sketch include
  • stm32 esp8266配网-smartConfig和BT串口方式配网

    stm32 esp8266 ota系列文章 stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 ota升级 h
  • ESP8266-01高阶——OTA下载

    ESP8266高阶 OTA下载 OTA简介 OTA怎么用 基本控制原理 烧录代码 高级用法 题外话 工程资料 OTA简介 什么是OTA下载 空中下载 OTA 是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术 之前做
  • ESP8266云端数据加密保护

    启用mosquitto上加密 要在mosquitto上启用加密 您首先需要拥有证书 您可以从发行证书的公司购买它们 也可以将它们自己生成为自签名证书 安装OpenSSL包 首先 确认您已安装openssl软件包 并且它具有较新的版本 1 0
  • 一、利用AT指令配置esp8266——esp8266WIFI模块初探&STM32串口通信再探

    文章目录 一 esp8266初探 1 esp8266简介 2 esp8266使用方式 什么是AT指令 通过何种方式发送AT指令 二 STM32串口通信再探 1 printf 函数与串口中断函数 2 例子 小试牛刀 3 例子 再进一步 三 局
  • 【esp8266】史上最详细的Arduino uno R3接入机智云教程

    原文地址 http club gizwits com thread 6728 1 1 html 本文使用arduino UNO板卡和esp8266无线WIFI模块实现了通过手机APP远程监测单片机系统采集的数据和控制一个LED的亮灭 读者将
  • 【转载】ESP8266 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件

    场景 在写ESP8266 web服务的时候 免不了要将自己设计的网页html和css等文件放入到固件中 在arduino中有fs可以进行上传文件 然后通过文件系统读出 那在ESP IDF中该怎么办呢 有几个思路 通过flash downlo
  • 【ESP8266】关于调试fatal exception/自动重启的一些经验分享

    本人小白一枚 最近在捣鼓ESP8266的NONOS SDK开发 本来已经写好了一个工程测试基本功能也没什么问题了 但是发现了一个很严重的问题 就是每次一跑上40来分钟的时候 就会宕机重启 自动重启 真是奇了个怪了 本来这也没啥 但出于对稳定
  • Anduino+esp8266_relay继电器 开发智能开关,APP可远程控制

    一 准备工作 1 在网上要购买一块ESP8266 01s带relay继电器的 价格10几元 2 网上购买一个USB转TTL的转接头 我自己用是CH340 价格几元 3 找一个服务器 当然免费的最好 我用的是酱菜创客平台 此平台是给创客提供一
  • esp8266-01s介绍与使用

    esp826601s 是个比较常用的wifi模块 体积小 功能强大 说是可以用于工业 下面介绍esp826601s 可用引脚 以及可用功能 esp 01 ESP 01S 在ESP 01的基础上 优化了PCB天线 进行了一小步的升级 带来了一
  • ESP8266EX使用SDK开发串口调试乱码

    目录 问题如图所示 问题分析 问题解决 问题如图所示 问题分析 有输出信号 说明有数据产生 可能原因 波特率不匹配 时钟频率不对 问题解决 不断调整串口调试助手的波特率9600 115200 不管用 把ESP8266的默认波特率改为9600
  • 【STM32F4】STM32F407+ESP8266连接机智云过程详解

    要求 通过手机上的机智云通用APP 点亮开发板载LED0 LED1 摘要 硬件组成 STM32F407ZGT6 esp8266 乐鑫 软件APP 机智云开发都者中心下载的通用APP Demo Xcom串口调试助手 Keil V5 调试过程详
  • 【传感器课程设计——DHT11温湿度数据上传阿里云】课程设计论文大纲

    1 摘要 摘要可以分为中文和英文两部分 2 概述 2 1 课程设计背景 2 2 国内外研究现状 2 3 报告组织形式 3 系统设计 3 1 设计目标 3 2 设计方案 3 3 设计方案分析 3 4 程序结构 4 硬件设计 4 1 ESP82
  • 从零开始的ESP8266探索(04)-连接/建立网络

    文章目录 目的 连接到网络 建立新网络 更多方式 总结 目的 使用ESP8266主要就是为了用它的网络功能 使用网络功能首先的就是需要连接到一个现有的网络 STA模式 或是建立一个网络 soft AP模式 连接到网络 在Arduino fo
  • 解决vscode找不到arduino esp8266头文件

    用Arduino IDE写ESP8266没有代码补全 不能跳转查看头文件 个人觉得这是最难受的 vscode装上Microsoft的arduino扩展后 有时候会找不到头文件 刚开始自己傻傻的一个个往includePath里面添加 后来在引
  • mipi介绍

    文章目录 1 MIPI简介 1 1 DSI layer 2 D PHY 2 1 D PHY介绍 2 2 电平状态 2 3 lane结构 2 4 data lane操作模式 2 4 1 escape mode和space one hot co
  • wifi类物联产品配网前言

    文章目录 1 SmartConfig配网 仅支持2 4G 2 web方式配网 3 一键配网 BLE 传统蓝牙和wifi 3 1 BLE方式 3 2 传统蓝牙方式 3 3 wifi方式 3 4 4G 网口或其他直连设备 3 5 其他配网方式
  • ESP8266 烧录 (关于BearPi扩展Wifi模块的烧录方式)

    简介 ESP 12F 模块是BearPI IOT购买的一个套餐所带的扩展模块 用来接通网络 但是默认电路不支持重新烧录 下面就是可支持重新烧录的方式 ESP 12F 电路原理图 如上图 GPIO15 gt GND gt 高电平 GPIO2
  • 如何在不连续重置的情况下将esp8266从深度睡眠中唤醒

    我正在使用 esp8266 构建 IR 到 wifi 桥接器 基本上 我正在构建一个连接到红外遥控器内的 esp8266 的红外接收器 以通过 wifi 将接收到的红外远程按键转发到服务器 我使用的是 Wemos D1 Mini 我已经让

随机推荐