1.4 开发版的无线终端模式

1.4 开发版的无线终端模式

物联网教程学习笔记

无线终端模式

在这种模式之开发版可以连接WIFI

  • 首先设置好要连接的WIFI的名字和密码

    由于我并没有路由器

    但是可以使用手机热点来让开发版连接

    WIFI

    名称:abc

    密码:asdfghjkl

    • 这里WIFI名字和密码可以根据自身的需求来设置

    • 方便好用就行

eg:本次实验操作不涉及联网,

也就是说连接的WIFI不联网也不影响

  • 将开发版与电脑连接并打开arduino IDE

    文件—>新建

    创建一个新的文件来放代码

    1.4 开发版的无线终端模式

准备工作已经完成,接下来就是代码的学习了

  • 等下会用到的函数和库

    #include <ESP8266WiFi.h>

    ESP8266WIFI库,里面有配置WIFI的相关函数

    使用这些函数可以跟方便的达到我们的目的

    WiFi.begin(id, password);

    执行连接WIFI操作的函数

    调用这个函数需要两个参数

    第一个是WIFI的名称

    第二个是WIFI的密码

    WiFi.status()

    WIFI状态函数

    这个函数返回有关WIFI连接的状态

    当WIFI已经连接成功的时候

    其返回值为WL_CONNECTED

    未连接成功则返回其他值

    WiFi.localIP()

    返回IP地址的函数

    每次当设备连接WIFI成功之后

    发送WIFI的设备就会分配给连接WIFI的设备一个IP地址

    只不过这个是局域网的IP地址

    不属于互联网的一个IP地址

  • 代码实例

    #include <ESP8266WiFi.h>        // 本程序使用ESP8266WiFi库
    const char* id     = "abc";                 // 连接WiFi名(此处使用taichi-maker为示例)
                                                // 请将您需要连接的WiFi名填入引号中
    const char* password = "asdfghjkl";         // 连接WiFi密码(此处使用12345678为示例)
                                                // 请将您需要连接的WiFi密码填入引号中
                                                
    void setup() {
      Serial.begin(9600);         // 启动串口通讯
    
      WiFi.begin(id, password);                  // 启动网络连接
      Serial.print("Connecting to ");            // 串口监视器输出网络连接信息
      Serial.print(id); 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

    然后就是连接成功输出IP地址

    这段代码只能连接一个WIFI

    下面的一段代码可以让开发板能选择连接WIFI

    并选择WIFI信号最强的进行连接

    #include <ESP8266WiFiMulti.h>     // 本程序使用ESP8266WiFiMulti库
    ESP8266WiFiMulti wifiMulti;       // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'
    
    void setup() {
      Serial.begin(9600);             // 启动串口通讯
    
    //通过addAp函数存储  WiFi名称       WiFi密码
      wifiMulti.addAP("abc", "asdfghjkl");  // 这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息。
      wifiMulti.addAP("abc1", "asdfghjkl"); // 这3个WiFi网络名称分别是taichi-maker, taichi-maker2, taichi-maker3。
      wifiMulti.addAP("abc2", "asdfghjkl"); // 这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() { 
    }
    
    • 用到的函数和库有

      #include <ESP8266WiFiMulti.h>

      WIFIMulti库,让WIFI连接可以选择

      wifiMulti.addAP("abc", "asdfghjkl");

      储存可以选择连接的WIFI

      可以储存多个

      然后开发板就会自己选择信号最强的来连接

      WiFi.SSID()

      显示当前连接的WIFI的名称

  • 检测是否连接成功

    代码成功烧录到开发版之后

    可以检测IP是否能够通信来确定是否连接成功

    烧录成功之后可以先打开串口通信按下复位键来观察是否连接WIFI

    1.4 开发版的无线终端模式

    然后去命令行窗口输入 ping 192.168.43.214

    这个IP是串口监视器上显示的IP

    1.4 开发版的无线终端模式

    因为我的电脑和开发版连接的是同一个WIFI,所以这两者之间可以ping通

WIFI

[外链图片转存中…(img-0gKRfR3g-1640699882557)]

然后去命令行窗口输入 ping 192.168.43.214

这个IP是串口监视器上显示的IP

[外链图片转存中…(img-MR9nV4Eq-1640699882559)]

因为我的电脑和开发版连接的是同一个WIFI,所以这两者之间可以ping通

至此,这次案例就到此结束

上一篇:ESP8266 WIFI获取网络时间


下一篇:WiFi association request/response