700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器

ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器

时间:2019-04-07 23:56:56

相关推荐

ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器

ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器

一、前言

ESP8266可以通过WiFi连接到无线路由器,这种方式和手机通过WiFi连接无线路由器的模式是相同的,我们称该模式为无线终端模式(Wireless Station),即STA工作模式。

参考自:NodeMCU开发板的无线终端模式

二、编写程序

编写程序如下所示

/*ESP8266-NodeMCU无线终端模式连接WiFi*/#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库const char* ssid= "SixLab";// 需要连接到的WiFi名const char* password = "sixlab123"; // 连接的WiFi密码void setup() {Serial.begin(115200);// 初始化串口通讯波特率为115200WiFi.mode(WIFI_STA);// 设置Wifi工作模式为STA,默认为AP+STA模式WiFi.begin(ssid, password); // 通过wifi名和密码连接到WifiSerial.print("\r\nConnecting to "); // 串口监视器输出网络连接信息Serial.print(ssid); Serial.println(" ..."); // 显示NodeMCU正在尝试WiFi连接int i = 0;// 检查WiFi是否连接成功while (WiFi.status() != WL_CONNECTED) // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。 {// 如果WiFi连接成功则返回值为WL_CONNECTEDdelay(1000); // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值Serial.print("waiting for ");Serial.print(i++); Serial.println("s..."); }Serial.println(""); // WiFi连接成功后Serial.println("WiFi connected!"); // NodeMCU将通过串口监视器输出"连接成功"信息。Serial.print("IP address: "); // 同时还将输出NodeMCU的IP地址。这一功能是通过调用Serial.println(WiFi.localIP());// WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。}void loop() {}

三、烧录实现

编译烧录到开发板,打开串口助手可以看到打印连接成功信息

然后我们可以尝试通过ping来检查esp8266确实连接到网络,如下所示,NodeMCU成功的对我们的ping指令做出应答,这样就可以确定当前NodeMCU已经成功连接WiFi了。

四、自动连接最强WiFi信号

我们可以通过编程让NodeMCU在它所处的网络环境里搜索预先存储好的WiFi,一旦找到预存的WiFi名称,NodeMCU将会使用预存的密码信息尝试连接该WiFi,如果同时找到多个预存WiFi,NodeMCU将会尝试连接信号最强的WiFi。编写程序如下所示

/*ESP8266-NodeMCU无线终端模式连接WiFiNodeMCU会使用预存的密码信息尝试连接WiFi, 如果同时找到多个预存WiFi,NodeMCU将会尝试连接信号最强的WiFi。*/#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库#include <ESP8266WiFiMulti.h> // 预存多个WiFi需要使用ESP8266WiFiMulti wifiMulti; // 新建ESP8266WiFiMulti对象,对象名称是'wifiMulti'void setup() {Serial.begin(115200);// 初始化串口通讯波特率为115200/* 通过addAP函数添加需要存储的WiFi名称和密码 */wifiMulti.addAP("SixLab", "sixlab123");wifiMulti.addAP("SixLab1", "sixlab1234");wifiMulti.addAP("SixLab2", "sixlab1235");/* 可以添加更多的addAP函数来存储更多的WIFI连接信息 */WiFi.mode(WIFI_STA);// 设置Wifi工作模式为STA,默认为AP+STA模式Serial.println("\r\nConnecting to WiFi..."); // 串口监视器输出正在连接网络int i = 0;// 检查WiFi是否连接成功while (wifiMulti.run() != WL_CONNECTED) // 通过wifiMulti.run(),NodeMCU将会在当前环境中搜索addAP函数所存储的WiFi。{// 如果搜到多个存储的WiFi那么NodeMCU将会连接信号最强的那一个WiFi信号。delay(100); // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。Serial.print("waiting for ");Serial.print(i++); Serial.println(" times..."); }Serial.println('\n');// WiFi连接成功后Serial.print("Connected to ");// NodeMCU通过串口监视器输出连接的WiFI名称Serial.println(WiFi.SSID());Serial.print("IP address:\t");// NodeMCU的IP地址Serial.println(WiFi.localIP());}void loop() {}

编译烧录到开发板,运行如下所示

五、附录

上一篇:ESP8266 Arduino开发之路(1)— 搭建开发环境并点亮LED

下一篇:ESP8266 Arduino开发之路(3)— 作为TCP客户端连接到服务器

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。