-
arduinoIDE,环境介绍;优点:界面简洁,各种库的安装便捷,同时网络上有较多问题解决方式 相较于 PlatformIo IDE esp-idf的安装更加简单,实用与新手小白;缺点:编译速度慢,不能查看底层库函数,代码冗余影响运行速度,阅读性差;其他两个PlatformIo IDE 和esp-idf安装时都需要梯子和Python环境依赖,安装时会出现各种奇怪问题,ESP-IDF的教程大多都是Linux系统,资源较少。
- 本人观点,其实过分最求运行速度其实是不太正确的,有时更快的做出项目;更好的解决问题才是开发的关键,在整个物联网系统中底层的时延其实是微乎其微的。
- 在学习过程中我们下载一些库函数较慢时则需要**上网,我一直用的是 便宜 稳定
- 安装开发版驱动程序:
- NODEMCU/ESP8266驱动 (CP210X)下载
- Windows 系统驱动程序
- 驱动芯片制造商官网下载 | 百度网盘下载提取码: hyb3 选择电脑对应操作系统的驱动软件 这里建议去官网下载
- 安装好之后 就用数据线将开发版与电脑连接在一起 找到端口 没有端口先查线,然后驱动程序与版本问题
- 安装arduino IDE 进行c ,c++编程 配置编程环境
- 第一步 :在首选项中贴入在下网址Arduino
- https://dl.espressif.com/dl/package_esp32_index.json
- http://arduino.esp8266.com/stable/package_esp8266com_index.json
- http://arduino.esp8266.com/stable/package_esp8266com_index.json
- 第二步 安装开发版管理器 打开开发板管理器 输入 esp8266安装
- 第三步 配置开发版
- 第四步 就可以验证是否配置成功 选用内置实例进行 编译 上传 板子蓝色灯闪烁即配置成功
- 联网功能 接入点模式AP (建立一个热点 供其他设备使用)复制以下代码进入 编译 上传 连接成功之后
- 打开命令面板 输入cmd 然后 ping 192.168.4.1 (这个是node MCU的本机地址) 可以看见成功建立连接 ping指令就是对建立连接时的请求与恢复判断的抓取进行显示
- 用arduino IDE的串口监视器 按下rest 也可以看见 AP节点的信息 需要注意一点我们知道用arduino 开发版时打开串口监视器之后会自动显示一些信息这是因为arduino 开发版打开串口监视器时,程序默认被复位了一次;但是esp8266不具有该功能所以需要手动复位 同时有数据为乱码就是波特率不对 或者是时序
- 无线终端模式 就是开发版可以联网,其他的设备也可以向开发版进行通讯 特别注意esp8266所连接的热点频段是在2.4GHZ的部分连接不上的原因就在于此
- 补充:2.4GHZ与5GHZ的知识
- 2.4 GHz 频段
- 2.4 GHz 的Wi-Fi频段共分为14个信道,工作频率范围是2.402GHz - 2.483Ghz。
- 每个信道的带宽为22MHz,各信道中心频点以5MHz的倍数增加,有效带宽为20MHz,剩余2MHz属于隔离保护带宽。
- 整个2.4GHz的频段中,只有1, 6,11三个信道不会相互覆盖。
- 2.4 GHz Wi-Fi 工作频率低,速度较慢,但是穿墙能力强,覆盖范围广。
- 5 GHz 频段
- 5 GHz信道的带宽以20MHz的倍数增加,信道的标号以4的倍数增加,
- 5 GHz频段中,各个信道都不会相互覆盖。
- 5 GHz Wi-Fi 工作频率高,带宽大,传输GHz频段的信号穿墙后常大,所以它适合近距离的、在同一个房间内的覆盖。
- 2.4 GHz 频段
- 为了确保我们成功连上网络 我们可以ping 一下串口监视器里面的IP地址 如图二成功建立连接 简述ping语句的含义就是当我们的开发版建立链接之后在改局域网中的IP地址就是192.168.0.102 ping语句是电脑向开发版所在的IP地址发送数据,当开发版接收到之后也会相应的返回数据包,这样一问一答的判定就可以知道是不是成功建立了连接
- 来一个实用的 自动选择信号最强的WiFi进行连接v :如果NodeMCU需要在多个地方使用,这时候就需要它能存储多个地点的WiFi信息。通过以下示例程序,NodeMCU可以在它所处的网络环境里搜索预先存储好的WiFi。一旦找到预存的WiFi名称,NodeMCU将会使用预存的密码信息尝试连接该WiFi。如果同时找到多个预存WiFi,NodeMCU将会尝试连接信号最强的WiFi。 如下可以知道我家三个WiFi信号最强的是他 成功建立连接
- 补充:2.4GHZ与5GHZ的知识
- 网络服务器 实用 esp8266提供网页服务 用网页对开发版进行控制
- 1,建立基本网络服务器
- 我们的ESP866-NodeMCU虽然也能实现网络服务器的一些功能,但是毕竟它的运算能力是无法与那些昂贵的服务器电脑相媲美的,因此ESP8266-NodeMCU只能实现一些基本的网络服务功能。在此特别要注意的是该网络服务是指网页服务功能,对此我们再来回忆一下这个典例 1:首先,要想访问太极创客网站就要在浏览器地址栏输入太极创客的网站地址: www.taichi-maker.com。当您输入完地址并按下回车以后,浏览器会通过DNS服务查到太极创客网站服务器的IP地址。假设我们太极创客服务器地址为12.34.56.78。接下来浏览器就会向IP地址12.34.56.78的服务器发送http请求。当网站服务器收到了请求后,会把被请求的网页信息传输给浏览器,然后浏览器就会把收到的网页信息转换成网页显示在浏览器中。
- 借助以下代码进行开发与理解 上传成功之后打开串口监视器 按下rest 将IP地址输入到浏览器打开 可以发现 开发版的IP地址里出现了一个http网页信息
- 重点:网络服务函数的功能解释 :
- 程序第一句esp8266_server.begin()使用了ESP8266WebServer库中的begin函数。这个函数的作用是让ESP8266-NodeMCU来启动网络服务功能。该函数无需任何参数。
- 程序第二句 esp8266_server.on("/", handleRoot),这条语句调用了ESP8266WebServer库中的on函数,该函数的作用是指挥NodeMCU来如何处理浏览器的http请求;该函数有两个参数由此可知第一个参数是字符串”/”,第二个参数是一个函数的名称handleRoot 1 简单来说 它的作用就是告诉NodeMCU,当有浏览器请求网站首页时,请执行handlRoot函数来生成网站首页内容然后发送给浏览器。
- 仔细解释一下参数”/”的作用。我们知道一个网站有很多页面。为了加以区分,这些页面都有各自的名称。对于刚刚您在浏览器看到的“Hello from ESP8266”这个页面是NodeMCU服务器中的网站首页。这个网站首页的名称正是”/”。目前的ESP8266-NodeMCU服务器中只有一页,因此我们还无法了解如果想要调用其他页面该如何操作
- 第二个参数。这个参数是handleRoot函数的名字。handlRoot函数的主要作用是告诉NodeMCU该如何生成和发送网站首页给浏览器
- 程序第三条 esp8266_server.onNotFound(handleNotFound) 使用了onNotFound函数。它的作用是指挥NodeMCU在收到无法满足的http请求时应该如何处理。目前Hello from ESP8266网站只有一个页面。假如有人想要浏览网站的其它页面,NodeMCU是无法满足这一请求的。这时候我们可以让NodeMCU答复一个“错误提示”页面给提出请求的浏览器。onNotFound函数就是用来告诉NodeMCU如果出现无法满足的http请求时该如何进行处理。onNotFound函数有一个参数,这个参数的内容是函数handleNotFound的名字。
- 其次 我们就来仔细看一看handleNotFound函数的具体内容。
- handleNotFound函数只有一条语句: esp8266_server.send(404, "text/plain", "404: Not found")。这条语句调用了ESP8266WebServer库中的send函数。该函数的作用是生成并且发送http响应信息。也就是说,电脑浏览器所收到的网页信息都是通过send函数生成并且发送的。 简单来说这个函数就是一个if判断加上一个printf函数的合体,就是当我们浏览器向服务器发送请求之后 服务器会对不同的请求给出不同的状态信息,该函数就是通过这些状态进行判断然后输出显示向对应的网页文本或者照片信息 如send函数还有一个字符串参数“text/plain”。它的作用是说明http响应体的信息类型。
- send函数一共有3个参数。第一个参数404是服务器状态码。第二个参数“text/plain”是说明http响应体信息类型。第三个参数“404: Not found”则是响应体的具体信息了。回想我们响应头 响应体,请求头 请求体;的相关知识send函数就是一个最简单的相应体了
- handleNotFound函数只有一条语句: esp8266_server.send(404, "text/plain", "404: Not found")。这条语句调用了ESP8266WebServer库中的send函数。该函数的作用是生成并且发送http响应信息。也就是说,电脑浏览器所收到的网页信息都是通过send函数生成并且发送的。 简单来说这个函数就是一个if判断加上一个printf函数的合体,就是当我们浏览器向服务器发送请求之后 服务器会对不同的请求给出不同的状态信息,该函数就是通过这些状态进行判断然后输出显示向对应的网页文本或者照片信息 如send函数还有一个字符串参数“text/plain”。它的作用是说明http响应体的信息类型。
- 其次 我们就来仔细看一看handleNotFound函数的具体内容。
- 第四个函数 另一个用于生成和发送首页信息的函数:handleRoot;;send函数的第一个参数200,它同样是一个服务器状态码,含义是“成功接收请求,并已完成整个处理过程”。 第二个参数text/plain的作用我刚刚给您讲过,不再赘述了。最后一个参数”Hello from ESP8266″正是我们在浏览器中看到的首页文字内容。
- 第五个函数 esp8266_server.handleClient() 这句程序调用了handleClient函数。它的主要作用之一是检查有没有设备通过网络向NodeMCU发送请求。函数handleClient每次被调用时,NodeMCU都会检查一下是否有人发送http请求。因此我们需要把它放在loop函数中,从而确保它能经常被调用。假如我们的loop函数里有类似delay一类的函数延迟程序运行,那么这时候就一定要注意了。如果handleClient函数长时间得不到调用,NodeMCU的网络服务会变得很不稳定。因此在使用NodeMCU执行网络服务功能的时候,一定要确保handleClient函数经常得以调用
-
- 1,建立基本网络服务器
ESP8266学习 二 arduino IDE 环境配置
于 2022-10-03 22:49:39 首次发布