主题
示例1:Arduino IDE配置【ESP8266】无线终端模式(Station)
无线终端模式(Station, 也称 ST)
相当于一个设备,可以连接路由器的WiFi。
功能如下图所示。
开发环境
IDE
开发板
我用的NodeMCU ESP8266 安信可 ESP-12F开发板。
编程
这里要连接的WiFi是"hh",密码"12345678"。
注意:由于硬件限制,只能连接2.4ghz的频段WiFi。暂无路由器,可以使用手机热点,注意不要限制esp8266黑名单,或者限制连接设备个数。
/*
ESP8266开发板无线终端模式连接WiFi
本示例程序用于演示如何使用ESP8266开发板无线终端模式连接WiFi
*/
#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库
const char *ssid = "hh"; // 连接WiFi名(此处使用hh为示例),请将需要连接的WiFi名填入引号中
const char *password = "12345678"; // 连接WiFi密码(此处使用12345678为示例)请将需要连接的WiFi密码填入引号中
void setup()
{
Serial.begin(9600); // 启动串口通讯
WiFi.begin(ssid, password); // 启动网络连接
int i = 0;
while (WiFi.status() != WL_CONNECTED) // 检查连接状态,函数是WiFi.status()。成功返回WL_CONNECTED
{
// 打印调试信息
Serial.print(i++);
Serial.print(" Connecting to ");
Serial.print(ssid);
Serial.println(" ...");
delay(1000);
}
// WiFi连接成功后,输出调试信息
Serial.println("");
Serial.println("Connection OK!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); // WiFi.localIP()返回值即ESP8266开发板的IP地址。
}
void loop()
{
}
编译后上传到开发板。
实验结果
打开串口监视器
重启开发板。在WiFi可用的情况下,连接成功了。并打印出ip。192.168.1.111
电脑和esp8266处于局域网,即,均连接同一个路由器。
win+R输入cmd,打开命令行窗口.
输入ping +前面的ip
即:ping 192.168.1.111
至此说明实验成功。且可以通信。
实用功能举例
自动连接最强信号WiFi网络
代码
/*
ESP8266开发板无线终端模式连接WiFi-2
此程序将会控制ESP8266开发板在当前的网络环境里搜索预先存储好的WiFi。
一旦找到预存的WiFi名称,ESP8266开发板将会使用预存的密码信息尝试连接该WiFi。
如果同时找到多个预存WiFi,ESP8266开发板将会尝试连接信号最强的WiFi。
*/
#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库
#include <ESP8266WiFiMulti.h> // 本程序使用ESP8266WiFiMulti库
ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'
void setup() {
Serial.begin(9600); // 启动串口通讯
//通过addAp函数存储 WiFi名称 WiFi密码
wifiMulti.addAP("hh", "12345678"); // 这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息。
wifiMulti.addAP("hh2", "87654321"); // 这3个WiFi网络名称分别是hh, hh2, hh3。
wifiMulti.addAP("hh3", "13572468"); // 这3个网络的密码分别是12345678,87654321,13572468。
// 此处WiFi信息只是示例,请在使用时将需要连接的WiFi信息填入相应位置。
// 另外这里只存储了3个WiFi信息,您可以存储更多的WiFi信息在此处。
Serial.println("Connecting ..."); // 通过串口监视器输出信息告知用户ESP8266开发板正在尝试连接WiFi
int i= 0;
while (WiFi.status() != WL_CONNECTED) // 检查连接状态,函数是WiFi.status()。成功返回WL_CONNECTED
{
// 打印调试信息
Serial.print(i++);
Serial.println(" ...");
delay(1000);
}
Serial.println('\n'); // WiFi连接成功后
Serial.print("Connected to "); // ESP8266开发板将通过串口监视器输出。
Serial.println(WiFi.SSID()); // 连接的WiFI名称
Serial.print("IP address:\t"); // 以及
Serial.println(WiFi.localIP()); // ESP8266开发板的IP地址
}
void loop() {
}