七、esp8266无线终端模式

1、连接WiFi

ESP8266可通过WiFi连接无线路由器。这与我们用手机通过WiFi连接无线路由器的模式相同。

2、连接WiFi示例程序

#include <ESP8266WiFi.h>    // 本程序使用ESP8266WiFi库


const char *ssid = "zjd";                   /*即将连接的WiFi名称*/
const char *password = "1233211234567";     /*即将连接的WiFi密码*/


void setup() 
{
  Serial.begin(115200);                   // 启动串口通讯
  WiFi.begin(ssid, password);             // 启动网络连接

  Serial.print("Connecting to ");         // 串口监视器输出网络连接信息
  Serial.print(ssid); 
  Serial.println(" ...");      

  int i = 0;                                   // 这一段程序语句用于检查WiFi是否连接成功
  while (WiFi.status() != WL_CONNECTED)        // WiFi.status()函数的返回值是由esp8266的WiFi连接状态所决定的。 
  {
    delay(1000);                               // 如果WiFi连接成功则返回值为WL_CONNECTED                       
    Serial.print(i++);                         // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值
    Serial.print( );          
  }

  Serial.println("");                          // WiFi连接成功后
  Serial.println("Connection established!");   // esp8266将通过串口监视器输出"连接成功"信息。
  Serial.print("IP address: ");                // 同时还将输出esp8266的IP地址。这一功能是通过调用
  Serial.println(WiFi.localIP());              // WiFi.localIP()函数来实现的。该函数的返回值即esp8266的IP地址。

}

void loop() {
  // put your main code here, to run repeatedly:

}

3、自动连接信号最强的WiFi网络

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

#include <ESP8266WiFi.h>        // 本程序使用ESP8266WiFi库
#include <ESP8266WiFiMulti.h>   // 本程序使用ESP8266WiFiMulti库

ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是wifiMulti


void setup() 
{
  Serial.begin(115200);                     // 启动串口通讯

  /*通过addAP函数存储 WiFi名称   WiFi密码*/
  wifiMulti.addAP("zjd","1233211234567");
  wifiMulti.addAP("zjd2","1233211234567");
  wifiMulti.addAP("zjd3","1233211234567");

  Serial.print("
 Connecting ...");      // 通过串口监视器输出信息告知用户esp8266正在尝试连接WiFi                               
  while (wifiMulti.run() != WL_CONNECTED)        
  {
    delay(1000);                                            
    Serial.print(.);          
  }

  Serial.print("
");                              // WiFi连接成功后
  Serial.print("Connection Successful
");         // esp8266将通过串口监视器输出
  Serial.print("WiFi: " + WiFi.SSID() + "
");     // 连接的WiFI名称
  Serial.print("IP address: ");                      //  esp8266的IP地址  
  Serial.println(WiFi.localIP());          
        
}

void loop() {
  // put your main code here, to run repeatedly:

}
经验分享 程序员 微信小程序 职场和发展