Arduino,Nodemcu,ESP8266网络连接(局域网),网页控制内部LED状态变化

news2025/1/17 13:52:07

整体思路(无线终端模式)

需要注意:esp8266是 802.11n⽀支持**(2.4GHz ),也就是平常说的wifi4,WiFi5G是连不上的**
配置指定的LED接口配置网络的WiFi,记录ESP8266模块做为服务器的IP(用于浏览器访问),登录浏览器输入服务器ip,读取浏览器中动作,控制LED口电平变化。
在这里插入图片描述

实例程序

基本把程序文件下载到开发板的基础操作,参考https://blog.csdn.net/weixin_43794311/article/details/128666871
直接看程序

#include <ESP8266WiFi.h>        // 调用ESP8266WiFi库
#include <ESP8266WiFiMulti.h>   // 调用ESP8266WiFiMulti库,连接外部WiFi
#include <ESP8266WebServer.h>   //  调用ESP8266WebServer库,建立开发板自己服务器
 
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是 'wifiMulti',用于连接外部wifi
 
ESP8266WebServer esp8266_server(80);// 建立网络服务器对象,该对象用于响应HTTP请求,监听端口(80),用于建立开发板自己的服务器
 
void setup(void){
  Serial.begin(9600);   // 启动串口通讯,为了显示开发板服务器地址
  pinMode(D4, OUTPUT); //设置内置LED引脚为输出模式以便控制LED
  
  //通过addAp函数存储  WiFi名称       WiFi密码
  wifiMulti.addAP("Tenda_2E5100", "88888888");   //设置自己想要连接的网络
  // wifiMulti.addAP("HUAZHU-JiHotel", "");  // 这2条语句通过调用函数addAP来记录2个不同的WiFi网络信息。
  // wifiMulti.addAP("room-8607", "62131498"); //此处WiFi信息只是示例,请在使用时将需要连接的WiFi信息填入相应位置。
                                                // 这里只存储了2个WiFi信息,您可以存储更多的WiFi信息在此处。
  Serial.println("\nMAR It's connectting Wifi...");  //在串口打印字符串
  int i = 0;                                 
  while (wifiMulti.run() != WL_CONNECTED) {  // 此处的wifiMulti.run()是重点。通过wifiMulti.run(),ESP8266将会在当前
    delay(1000);                             // 环境中搜索addAP函数所存储的WiFi。如果搜到多个存储的WiFi那么ESP8266
    Serial.print(i++); Serial.print(' ');    // 将会连接信号最强的那一个WiFi信号。
  }                                          // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。这也是
                                             // 此处while循环判断是否跳出循环的条件。
  
  // WiFi连接成功后将通过串口监视器输出连接成功信息 ,这段是为了和串口通信
  Serial.println('\n');
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              // 通过串口监视器输出连接的WiFi名称
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           // 通过串口监视器输出ESP8266-ESP8266的IP
 
  esp8266_server.begin();                           // 启动网站服务,这部分将开发板做为一个小的服务器
  esp8266_server.on("/", HTTP_GET, handleRoot);     // 设置服务器根目录即'/'的函数'handleRoot'
  esp8266_server.on("/LED", HTTP_POST, handleLED);  // 设置处理LED控制请求的函数'handleLED'
  esp8266_server.onNotFound(handleNotFound);        // 设置处理404情况的函数'handleNotFound'
 
  Serial.println("HTTP esp8266_server started");//  告知用户ESP8266网络服务功能已经启动
}
 
void loop(void){
  esp8266_server.handleClient();                     // 检查http服务器访问
}
 
/*设置服务器根目录即'/'的函数'handleRoot'
  该函数的作用是每当有客户端访问ESP8266服务器根目录时,
  ESP8266都会向访问设备发送 HTTP 状态 200 (Ok) 这是send函数的第一个参数。
  同时ESP8266还会向浏览器发送HTML代码,以下示例中send函数中第三个参数,
  也就是双引号中的内容就是ESP8266发送的HTML代码。该代码可在网页中产生LED控制按钮。 
  当用户按下按钮时,浏览器将会向ESP8266的/LED页面发送HTTP请求,请求方式为POST。
  ESP8266接收到此请求后将会执行handleLED函数内容*/
void handleRoot() {       
  esp8266_server.send(200, "text/html", "<form action=\"/LED\" method=\"POST\"><input type=\"submit\" value=\"LED\"></form>");
}
 
//处理LED控制请求的函数'handleLED'
void handleLED() {                          
  digitalWrite(D4,!digitalRead(D4));// 改变LED的点亮或者熄灭状态
  esp8266_server.sendHeader("Location","/");          // 跳转回页面根目录
  esp8266_server.send(303);                           // 发送Http相应代码303 跳转  
}
 
// 设置处理404情况的函数'handleNotFound'
void handleNotFound(){
  esp8266_server.send(404, "text/plain", "404: Not found"); // 发送 HTTP 状态 404 (未找到页面) 并向浏览器发送文字 "404: Not found"
}

在这里插入图片描述

几个库函数的使用含义

参考:https://blog.csdn.net/qq_41477556/article/details/113032520

esp8266_server.send

http://www.taichi-maker.com/homepage/iot-development/iot-dev-reference/esp8266-c-plus-plus-reference/esp8266webserver/send/
在这里插入图片描述
Content-Type” 指示响应体的内容是什么类型。这里的响应体内容类型是“text/htm”,即网页HTML代码
假设某一个响应头中**“Content-Type” 类型是”image/jpeg”。这就意味着该响应体中的信息是一个jpeg格式的图片**,那么浏览器也就会按照jpeg的解码方式将图片呈现在我们的面前

esp8266_server.sendHeader

http://www.taichi-maker.com/homepage/iot-development/iot-dev-reference/esp8266-c-plus-plus-reference/esp8266webserver/sendheader/
在这里插入图片描述

状态码含义

参考:https://zhuanlan.zhihu.com/p/60669395
在这里插入图片描述
303收到后跳转查看其他路径网页,例如从电脑登录账号,信息正确时,服务器会返回一个欢迎登录的界面

需要注意的地方

1,想要连接的WiFi一定要是2.4GHZ的WiFi,不能是5G的wifi
2,程序上传成功后,开发板做为服务器的IP地址需要通过Arduino的ide的监视窗口查看,
  >1,在上传完成后打开串口监视器,调整波特率和程序中设置的串口波特率一样
  >2,复位开发板,因为连接WiFi成功后只打印一次IP,那时候可能串口监视还未打开,所以没显示
  >3,确认已打开串口,并设置正确波特率,记录开发板设置的服务器IP
3,确认一个设备(电脑或手机)连接到和开发板一个局域网wifi
4,打开设备的浏览器,输入串口打印的IP值,就可看见一个名为LED的按钮,按动可控制ESP8266的内置LED的亮灭

操作图示

连接好开发板,并下载好文件后

打开串口监视器

在这里插入图片描述

按下开发板的rst,也就是复位键

查看开发板建立的服务器IP,并连接同一个2.4Ghz的wifi

在这里插入图片描述

登录设备浏览器输入IP后会出现网页

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/162004.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022某站百大up主公布名单,python如何快速获取up名单

前言 2022年已经过去&#xff0c;各大厂商都在做年度总结。某站在1月13日中午19点30分公布了2022百大UP主名单&#xff0c;那么今年的某站年度UP主都是谁呢&#xff1f;接下来就让我们一起了解一下吧。不过&#xff0c;我们去用python获取名单&#xff0c;是非常有成就的。 环…

Git(1)基础命令

Git基础知识总结 Author&#xff1a;onceday date&#xff1a;2022年8月8日 满满长路有人对你微笑过嘛… Modified date&#xff1a;2022年11月22日&#xff0c;完成第一章部分内容。 windows安装可参考文章&#xff1a;git简易配置_onceday_CSDN博客 參考文档&#xff1a…

腾讯云短信服务——获取验证码

引言 之前介绍过阿里云短信服务&#xff0c;传送门&#xff1a;阿里云短信服务——短信发送验证码&#xff0c;但是由于阿里云现在短信调用门槛较高&#xff0c;申请有很多限制&#xff08;我申请好几次都没有通过&#xff09;&#xff0c;所以只能使用测试账号给固定的手机号…

2023速卖通开店入驻流程及费用,新店运营思路

开店前准备 从卖家开始注册账户起&#xff0c;需速卖通平台的销售政策和全球速卖通平台规则。平台要求卖家在速卖通经营需遵循公平、诚实的行事原则&#xff0c;以确保安全的购买及销售体验。 1.注册账号 注册账户前&#xff0c;以下所有资料都是必须提供的资料。若资料不完…

AtCoder Beginner Contest 044(4/4)

Tak and Hotels (ABC Edit)前k晚花费x&#xff0c;k1晚以后花费yAC代码&#xff1a;import java.util.*; import java.io.*; public class Main {public static void main(String[] args) {InputStream inputStream System.in;OutputStream outputStream System.out;InputRea…

喜报 | 迅镭激光荣获2022年度江苏省科学技术奖

1月6日&#xff0c;江苏省科技厅发布了2022年度江苏省科学技术奖综合评审结果公示名单&#xff0c;迅镭激光与江苏师范大学等单位合作的“高功率2微米激光器关键技术及应用”项目&#xff0c;荣获2022年度江苏省科学技术二等奖。 江苏省科学技术奖是省内科技领域最高级别的奖项…

Java 23种设计模式(1.设计模式概念和UML)

1. 设计模式概念 软件设计模式&#xff08;Software Design Pattern&#xff09;&#xff0c;又称设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结 1.1 设计模式学习必要性理由 设计模式的本质是面向对象设计原则的实际运用&#xff0c;是对类的…

2022边缘计算开源项目

在边缘计算社区&#xff0c;统计边缘计算开源项目发展情况&#xff0c;开源软件生态蓬勃发展&#xff0c;边缘计算开源项目又是开源软件生态中不可忽视的重要力量。 2022 年边缘计算领域较为活跃和热门的十个开源项目&#xff1a;KubeEdge、EdgeXFoundry、Akraino、OpenYurt、B…

【UE4 第一人称射击游戏】47-修改AI为僵尸样貌

上一篇&#xff1a;【UE4 第一人称射击游戏】46-蹲高调整本篇效果&#xff1a;将AI修改成了僵尸的模样步骤&#xff1a;可以先从Mixamo网站下载 僵尸 资源&#xff0c;相关教程可以参考这篇文章&#xff1a;UE4 利用Mixamo自动绑骨并导入虚幻4我下载的是这个僵尸资源下载的时候…

【Qt】富文本处理简单介绍

文章目录Qt富文本处理富文本文档结构文本块QTextBlock表格、列表、图片查找功能语法高亮与HTML参考《Qt Creator快速入门(第三版)》。 Qt富文本处理 富文本Rich Text&#xff0c;简单说就是在文档中可以使用多种格式&#xff0c;比如字体颜色、图片和表格等&#xff0c;是与纯…

给定一个有序数组arr,代表坐落在X轴上的点 给定一个正数K,代表绳子的长度 返回绳子最多压中几个点? 即使绳子边缘处盖住点也算盖住

目录暴力求解贪心二分法滑动窗口对数器测试题目&#xff1a; 给定一个有序数组arr&#xff0c;代表坐落在X轴上的点 给定一个正数K&#xff0c;代表绳子的长度 返回绳子最多压中几个点&#xff1f; 即使绳子边缘处盖住点也算盖住 这道题有三个解决方案 暴力求解 //暴力求解O(N…

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

1.快速启动mysql容器 1&#xff1a;拉取mysql镜像&#xff1a; 根据自己需要&#xff0c;我这个是5.7版本的镜像。 docker pull nanlist/mysql:5.72&#xff1a;宿主机建立挂载目录&#xff1a; mkdir三个文件夹&#xff0c;方便持久化。 /home/mysql/conf /home/mysql/log…

java面试资料(二)

这里写目录标题Spring什么是 Spring Framework&#xff1f;列举 Spring Framework 的优点。Spring Framework 有哪些不同的功能&#xff1f;Spring Framework 中有多少个模块&#xff0c;它们分别是什么&#xff1f;什么是 Spring 配置文件&#xff1f;Spring 应用程序有哪些不…

MySQL数据同步ES的4种方法,你能想到几种?

大家好&#xff0c;我是老三&#xff0c;这期给大家分享一个电商中常见的场景——MySQL数据同步Elasticsearch。 大家应该都在各种电商网站检索过商品&#xff0c;那么检索商品一般都是通过什么实现呢&#xff1f;搜索引擎Elasticsearch。 那么问题来了&#xff0c;商品上架&a…

【布隆过滤器】如何防止缓存穿透、海量邮箱的垃圾邮件过滤等问题?

目录 一、布隆过滤器是什么&#xff1f; 二、布隆过滤器的模拟实现 2.1、模拟实现 2.2、布隆过滤器的优点和缺点 优点&#xff1a; 缺点&#xff1a; 2.3、布隆过滤器的删除功能 2.4、布隆过滤器的使用场景 一、布隆过滤器是什么&#xff1f; 它是一种概率型数据结构&am…

敏捷.概念辨析

第一部分 1. 最小可行产品MVP&#xff08;Minimum Viable Product&#xff09; 在很多同学的脑海里&#xff0c;MVP就是你想传达给用户的功能的最小集合。 错&#xff0c;完全错。 问题不在于“你觉得应该……”&#xff0c;关键是“用户目前感觉……”。我们预设了立场&am…

Android Glide 4.9 常见方法总结

转载请标明出处&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/128665358 本文出自【赵彦军的博客】 文章目录依赖submit 下载图片DrawableImageViewTargetRequestListener 加载圆角图片回调圆形 CircleCrop圆角 RoundedCornersFitCenterCenterCropCenterInsid…

RK3399平台开发系列讲解(中断篇)ARM64异常处理详解

🚀返回专栏总目录 文章目录 一、异常级别二、异常分类三、异常向量表四、异常处理沉淀、分享、成长,让自己和他人都能有所收获!😄 一、异常级别 📢ARM64的处理器支持多个异常等级(exception level),其中EL0是用户模式,EL1是内核模式,也称为特权模式;EL2 是虚拟化…

算力狂热时代的冷静之道:宁畅总裁秦晓宁分享企业的算力最优解

算力是数字化时代的生产力之源&#xff0c;近年来已经成为共识。所以&#xff0c;我们能看到各个层面对算力的追逐&#xff0c;无论是国家层面的政策利好&#xff0c;算力基础设施建设的加速&#xff0c;还是诸多行业和企业积极地增加算力部署&#xff0c;呈现出一片如火如荼的…

958. 二叉树的完全性检验

958. 二叉树的完全性检验 难度中等 给定一个二叉树的 root &#xff0c;确定它是否是一个 完全二叉树 。 在一个 完全二叉树 中&#xff0c;除了最后一个关卡外&#xff0c;所有关卡都是完全被填满的&#xff0c;并且最后一个关卡中的所有节点都是尽可能靠左的。它可以包含 …