ESP8266-物联网开发基础

ESP8266-物联网开发基础

安装 ESP8266-NodeMCU开发板驱动

  • NodeMCU开发板不是即插即用的设备,因此我们需要安装驱动才能使用。

安装 ESP8266-NodeMCU开发板驱动前,请先确保您的电脑已连接互联网。另外,请将NodeMCU开发板和USB数据线准备好以备安装使用。

  • 准备安装驱动程序

百度网盘链接:
https://pan.baidu.com/s/1lSzNy4BJGVh_elL1ahK9nA
提取码:rbb3

驱动安装完毕后将ESP8266-NodeMCU开发板与电脑连接,打开“设备管理器”
ESP8266-物联网开发基础_第1张图片

  • 查看NodeMCU开发板连接端口

如下图所示,”Silicon Labs CP210x USB to UART Bridge” 后面所显示的COM端口号就是NodeMCU开发板的端口号了。在下图中,NodeMCU连接的端口号是COM5。请务必记住此端口号码,后续设置工作中还需要用到这一信息。同时也请注意,您的电脑里所显示的COM端口号与下图显示的会有所不同。请牢记您电脑中的NodeMCU所连接的COM端口号。

ESP8266-物联网开发基础_第2张图片

为ESP8266-NodeMCU搭建Arduino IDE开发环境

  • 准备工作
    在安装以前,请确保您已完成以下准备工作:
  1. 使用USB数据线将NodeMCU开发板与电脑连接好
  2. NodeMCU驱动程序已成功安装安装,您已可以在电脑“设备管理器”中查到NodeMCU连接电脑端口号。
  3. 电脑已经连接互联网
  4. 您已经在电脑里安装好Arduino IDE

Arduino IDE链接:https://pan.baidu.com/s/17hyoaudYLsjwvBeADTncaA
提取码:r1i4

  • 打开Arduino IDE 首选项
    ESP8266-物联网开发基础_第3张图片
  • 在Arduino IDE的“首选项”对话框中找到“附加开发板管理网址”
    ESP8266-物联网开发基础_第4张图片
  • 输入网址
http://arduino.esp8266.com/stable/package_esp8266com_index.json

ESP8266-物联网开发基础_第5张图片

  • 打开Arduino IDE的“开发板管理器”
    ESP8266-物联网开发基础_第6张图片
  • 在“开发板管理器”的搜索栏中输入“esp8266”
    ESP8266-物联网开发基础_第7张图片
  • 开始安装“esp8266开发板”插件文件
    ESP8266-物联网开发基础_第8张图片
  • 成功安装“esp8266开发板”插件文件
    ESP8266-物联网开发基础_第9张图片
  • 在Arduino IDE的开发板菜单中找到“NodeMCU开发板”
    ESP8266-物联网开发基础_第10张图片
  • 在Arduino IDE的开发板菜单中选中“NodeMCU开发板”
    ESP8266-物联网开发基础_第11张图片
  • 设置Arduino IDE的NodeMCU开发板端口
    ESP8266-物联网开发基础_第12张图片
  • 打开Blink示例程序
    ESP8266-物联网开发基础_第13张图片
  • 将Blink示例程序编译上传给NodeMCU
    ESP8266-物联网开发基础_第14张图片
  • 确认NodeMCU开发板上LED开始闪烁

程序上传完毕,如果看到NodeMCU开发板上的LED开始闪烁就说明驱动程序已经成功安装了。恭喜,您现在可以开始用Arduino IDE为NodeMCU编写控制程序了。

NodeMCU开发板的接入点模式

  • 接入点模式(Access Point, 也称 AP)

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

ESP8266-物联网开发基础_第15张图片

通过以下示例程序,NodeMCU将会建立一个名为taichi-maker的WiFI。您可以使用手机或电脑连接该WiFi从而实现与NodeMCU的网络通讯。

#include         // 本程序使用ESP8266WiFi库
 
const char *ssid = "atone"; // 这里定义将要建立的WiFi名称。此处以"atone"为示例
                                   // 您可以将自己想要建立的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() { 
}

当您将以上程序上传以后,NodeMCU在每次启动以后,都会自动启动接入点模式。接入点WiFi的详细信息会通过串口监视器输出给用户查看,如下图所示:
ESP8266-物联网开发基础_第16张图片

以上截屏显示,NodeMCU所建立的WiFi名称是”taichi-maker”。“taichi-maker”只是示例WiFi名,您也可以通过修改源代码中的const char *ssid = “taichi-maker”;语句来改变WiFi名称。假如您想要修改WiFi密码,可以修改const char *password = “12345678”;语句。

接下来您就可以使用电脑或手机来连接NodeMCU所建立的WiFi。如下图所示:
ESP8266-物联网开发基础_第17张图片

成功连接NodeMCU所建立的WiFi后,如果您想要验证一下电脑是否可以与NodeMCU进行网络通讯,那么同样可以在Windows操作系统的“命令提示符”中输入:
ping 192.168.4.1

请注意:这里我们ping的IP地址是NodeMCU默认的接入点IP地址:192.168.4.1。这一信息在上面的 串口监视器截屏中可以看到。

下图为使用Ping指令验证成功连接NodeMCU的截屏。
ESP8266-物联网开发基础_第18张图片

遗憾的是,当我们的电脑或手机连接了NodeMCU所建立的WiFi网络以后,手机和电脑是无法连接互联网的。这是因为NodeMCU建立的WiFi网络没有与互联网相互连接。

NodeMCU开发板的无线终端模式

无线终端模式(Station)

  1. 连接WiFI
    如下图所示,ESP8266可通过WiFi连接无线路由器。这与用您的手机通过WiFi连接无线路由器的模式相同。
    ESP8266-物联网开发基础_第19张图片
    以下示例程序用于演示如何使用NodeMCU以无线终端模式通过WiFi连接无线路由器。
#include         // 本程序使用ESP8266WiFi库
 
const char* ssid     = "atone";      // 连接WiFi名(此处使用atone为示例)
                                            // 请将您需要连接的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() {                                   
}

注意:这次使用ssid与password需要填写自己所在局域网的网络名称和密码

在以上程序的控制下,您的NodeMCU将会连接名称是”taichi-maker”的WiFi网络。当网络连接成功后,您可以通过串口监视器看到如下信息。其中最后一行“IP Address”信息就是NodeMCU连接WiFi以后的IP地址了。

ESP8266-物联网开发基础_第20张图片

如下图所示,为了确认NodeMCU的确已经联网,我们可以在Windows操作系统的“命令提示符”中输入:
ping 192.168.0.106(这里的ip地是自己局域网中路由器为NodeMCU分配的ip地址,每个人都不同)
ESP8266-物联网开发基础_第21张图片

从以上截屏可以看到,NodeMCU成功的对我们的ping指令做出应答。到这里就可以确定当前NodeMCU已经成功连接WiFi了。

假如您不清楚以上操作的原理,请让我在这里给您做一个简单的介绍。当NodeMCU成功连接WiFi以后,电脑就可以通过WiFi与NodeMCU相互通讯了。反之,如果NodeMCU没有成功连接WiFi,那电脑自然是无法与NodeMCU通讯的。因此我们可以通过电脑能否与NodeMCU通讯来判断NodeMCU是否成功联网?但是该如何让电脑和NodeMCU进行通讯呢?这就要借助Windows指令ping了。

从以上的串口监视器截屏我们知道了NodeMCU在网络中的IP地址是192.168.0.106。接下来我们只需要在Windows的“命令提示符”中输入ping 192.168.0.106然后回车。这时电脑将会向NodeMCU所在的IP地址192.168.0.106发送多个数据包。如果NodeMCU成功接收到了这些数据包,那么它会同样回复几个数据包给电脑。于是在“命令提示符”窗口中,我们看到了这几条Reply from 192.168.0.106: bytes=32 …

ESP8266-物联网开发基础_第22张图片

当我们在“命令提示符”窗口中看到了这几条Reply from 192.168.0.106: bytes=32 …以后,就可以确定电脑和NodeMCU可以彼此通讯了,这也就证明了NodeMCU已经成功联网。

相反,如果您的NodeMCU没有联网的话,在“命令提示符”窗口中将会看到Request timed out 信息。如下图所示。

ESP8266-物联网开发基础_第23张图片
2. 自动连接最强信号WiFi网络

假如我们的NodeMCU只在一个地方使用,它也就只需要知道一个WiFi网络的连接信息。但是如果NodeMCU需要在多个地方使用,这时候就需要它能存储多个地点的WiFi信息。通过以下示例程序,NodeMCU可以在它所处的网络环境里搜索预先存储好的WiFi。一旦找到预存的WiFi名称,NodeMCU将会使用预存的密码信息尝试连接该WiFi。如果同时找到多个预存WiFi,NodeMCU将会尝试连接信号最强的WiFi。

以下这段示例程序将会实现这一功能。

#include           // 本程序使用ESP8266WiFi库
#include    // 本程序使用ESP8266WiFiMulti库
 
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'
 
void setup() {
  Serial.begin(9600);            // 启动串口通讯
 
//通过addAp函数存储  WiFi名称       WiFi密码
  wifiMulti.addAP("atone1", "123");  // 这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息。
  wifiMulti.addAP("atone2", "124"); // 这3个WiFi网络名称分别是atone1, atone2,atone3。
  wifiMulti.addAP("atone3", "125"); // 这3个网络的密码分别是123,124,125
                                                // 此处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() { 
}

你可能感兴趣的:(android,物联网,开发语言)