ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1.4 开发版的无线终端模式

2021-12-28 22:02:59  阅读:168  来源: 互联网

标签:1.4 WiFi WIFI 无线 NodeMCU 终端 串口 Serial 连接


1.4 开发版的无线终端模式

物联网教程学习笔记

无线终端模式

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

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

    由于我并没有路由器

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

    WIFI

    名称:abc

    密码:asdfghjkl

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

    • 方便好用就行

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

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

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

    文件—>新建

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

    新建文件

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

  • 等下会用到的函数和库

    #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

    连接成功

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

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

    成功实现通信

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

WIFI

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

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

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

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

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

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

标签:1.4,WiFi,WIFI,无线,NodeMCU,终端,串口,Serial,连接
来源: https://blog.csdn.net/weixin_54930707/article/details/122203855

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有