esp8266-NodeMCU

esp8266的数字引脚电压是3.3v,即其引脚输出高电平就是3.3v。

设置数字引脚为读取模式,其所连接的电压不能超过3.3v。

模拟引脚可以读取电压范围0-1v。

互联网协议

TCP/IP协议

以下内容的具体解释也可以在第2章 互联网知识基础 – 太极创客 (taichi-maker.com)中找到更好的解释。

分层名称 TCP/IP 包含以下协议
应用层 HTTP,FTP,mDNS,WebSocket,OSC…..
传输层 TCP,UDP
网络层 IP
链路层(网络接口层) Ethernet,Wi-Fi…

链路层

链路层的主要作用是实现设备之间的物理链接。

链路层的主要作用是实现设备之间的物理链接。举例来说,我们日常使用的WiFi就是链路层协议中的一种。

ESP8266利用WiFi联网时有三种工作模式。

  • 接入点模式(esp8266自己当wifi)
  • 无线终端模式(esp8266自己跟wifi进行连接,控制其他跟wifi连接后的设备)
  • 混合模式

 

网络层

  • IP地址

给设备提供地址功能

IP协议版本

查看电脑ip

命令提示符>>>ipconfig

 

网关相当于连接网络与网络之间的端口

wifi路由器会创建一个局域网,并给局域网内的每个设备分配一个ip地址,相对于互联网

 

传输层

TCP协议

特点:稳

  • 保证所有数据都能被接收端接收

  • 数据的传输顺序不会打乱

  • 传输数据如有损坏则重发受损数据

 

TCP协议经常用于对数据稳定性要求比较高的领域

TCP协议应用领域:

  • 电子邮件
  • 文件传输

 

UDP协议

特点:快

  • UDP比TCP速度快
  • 不保证所有数据都能被接收端接收数数据一旦受损的,UDP协议将抛弃受损数据。
  • 有数据损坏不会重发受损数据

 

UDP协议应用领域:

  • 在线语音/视频
  • 网游

 

应用层

HTTP协议

由==请求==和==响应==进行工作的

HTTP请求
1
2
3
4
5
6
GET/HTTP/1.1    //请求行
Host:www.taichi-maker.com //请求头
User-Agent:Mozilla/5.0(Windows NT 10.0WOW64)Accept::text/html
Accept-Language:zh-CN,zh;q=0.8
Accept-Encoding:gzip,deflate,sdch
Connection:Keep-Alive
请求行
请求头

HTTP1.0定义了三种请求方法:GET,POST和HEAD方法。 、

HTTP响应

 

 

ESP8266物联网开发基础

安装esp8266的网址USB 至 UART 桥 VCP 驱动器 - 芯科科技 (silabs.com)

 

为开发板搭建开发环境

要想使用Arduino IDE来配合NodeMCU开发板使用,首先要对Arduino IDE进行设置工作。

3-1-2 为ESP8266-NodeMCU搭建Arduino IDE开发环境 – 太极创客 (taichi-maker.com)

如果开发板库中没有,可以去网盘盘里进行手动安装。

 

如果一切都正常安装,那么我们可以用如下一段代码测试,测试结果应为esp8266一个板载LED间断闪烁。

1
2
3
4
5
6
7
8
9
10
11
12
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

NodeMCU开发板的接入点模式

NodeMCU开发板可以建立WiFi网络供其它设备连接。当NodeMCU以此模式运行时,我们可以使用手机或者电脑搜索NodeMCU所发出的WiFi网络并进行连接。

3-1-3 NodeMCU开发板的接入点模式 – 太极创客 (taichi-maker.com)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
NodeMCU接入点模式


此程序用于演示如何将NodeMCU以接入点模式工作。通过此程序,您可以使用
电脑或者手机连接NodeMCU所建立WiFi网络。

网络名: taichi-maker
密码:12345678

*/

#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库

const char *ssid = "taichi-maker"; // 这里定义将要建立的WiFi名称。此处以"taichi-maker"为示例
// 您可以将自己想要建立的WiFi名称填写入此处的双引号中

const char *password = "12345678"; // 这里定义将要建立的WiFi密码。此处以12345678为示例
// 您可以将自己想要使用的WiFi密码放入引号内
// 如果建立的WiFi不要密码,则在双引号内不要填入任何信息

void setup() {
Serial.begin(9600); // 启动串口通讯

WiFi.softAP(ssid, password); // 此语句是重点。WiFi.softAP用于启动NodeMCU的AP模式。
// 括号中有两个参数,ssid是WiFi名。password是WiFi密码。
// 这两个参数具体内容在setup函数之前的位置进行定义。


Serial.print("Access Point: "); // 通过串口监视器输出信息
Serial.println(ssid); // 告知用户NodeMCU所建立的WiFi名
Serial.print("IP address: "); // 以及NodeMCU的IP地址
Serial.println(WiFi.softAPIP()); // 通过调用WiFi.softAPIP()可以得到NodeMCU的IP地址
}

void loop() {
}

运行如上代码,我们可以创建一个wifi

连接过后在命令提示符中输入>>ping 192.168.4.1

ping就是用来测试我们的电脑是不是已经与某个网络设备成功连接了

 

NodeMCU开发板的无线终端模式

NodeMCU通过WiFi连接无线路由器并访问互联网。

3-1-4 NodeMCU开发板的无线终端模式 – 太极创客 (taichi-maker.com)

以下示例程序用于演示如何使用NodeMCU以无线终端模式通过WiFi连接无线路由器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
NodeMCU无线终端模式连接WiFi

本示例程序用于演示如何使用NodeMCU无线终端模式连接WiFi
*/

#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库

const char* ssid = "taichi-maker"; // 连接WiFi名(此处使用taichi-maker为示例)
// 请将您需要连接的WiFi名填入引号中
const char* password = "12345678"; // 连接WiFi密码(此处使用12345678为示例)
// 请将您需要连接的WiFi密码填入引号中

void setup() {
Serial.begin(9600); // 启动串口通讯

WiFi.begin(ssid, password); // 启动网络连接
Serial.print("Connecting to "); // 串口监视器输出网络连接信息
Serial.print(ssid); Serial.println(" ..."); // 告知用户NodeMCU正在尝试WiFi连接

int i = 0; // 这一段程序语句用于检查WiFi是否连接成功
while (WiFi.status() != WL_CONNECTED) { // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。
delay(1000); // 如果WiFi连接成功则返回值为WL_CONNECTED
Serial.print(i++); Serial.print(' '); // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值
} // 同时NodeMCU将通过串口监视器输出连接时长读秒。
// 这个读秒是通过变量i每隔一秒自加1来实现的。

Serial.println(""); // WiFi连接成功后
Serial.println("Connection established!"); // NodeMCU将通过串口监视器输出"连接成功"信息。
Serial.print("IP address: "); // 同时还将输出NodeMCU的IP地址。这一功能是通过调用
Serial.println(WiFi.localIP()); // WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。
}

void loop() {
}

当然也可以一次性添加很多wifi名称和密码,使nodemuc选择性添加最强信号的网络。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
NodeMCU无线终端模式连接WiFi-2


此程序将会控制NodeMCU在当前的网络环境里搜索预先存储好的WiFi。
一旦找到预存的WiFi名称,NodeMCU将会使用预存的密码信息尝试连接该WiFi。
如果同时找到多个预存WiFi,NodeMCU将会尝试连接信号最强的WiFi。

*/

#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库
#include <ESP8266WiFiMulti.h> // 本程序使用ESP8266WiFiMulti库

ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'

void setup() {
Serial.begin(9600); // 启动串口通讯

//通过addAp函数存储 WiFi名称 WiFi密码
wifiMulti.addAP("taichi-maker", "12345678"); // 这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息。
wifiMulti.addAP("taichi-maker2", "87654321"); // 这3个WiFi网络名称分别是taichi-maker, taichi-maker2, taichi-maker3。
wifiMulti.addAP("taichi-maker3", "13572468"); // 这3个网络的密码分别是123456789,87654321,13572468。
// 此处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() {
}