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通
至此,这次案例就到此结束