ESP8266连接wifi
ESP8266共有三种工作模式,分别是无线接入点模式(AP)、无线终端模式以及混合模式(以上两种模式的混合)。
STA模式:客户端模式,ESP8266模块通过路由器连接互联网手机或电脑通过互联网实现对设备的远程控制。
AP模式:默认模式ATK_ESP8266模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制,就相当于它做路由器,散发WIFI信号。
STA+AP模式:两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作。
ESP8266WIFI库文件:
WiFi.begin():
在不使用任何参数的情况下调用此函数,ESP8266模块将启用无线终端模式,并根据以前保存在闪存中的wifi配置连接到最近一次使用的接入点。
我们也可以再调用begin函数的时候,为函数提供参数,
WiFi.begin(ssid, password, channel, bssid, connect)
ssid – 要连接的wifi接入点的名字,最多可以包含32个字符。(类型:char*)
password – 要连接的 wifi接入点密码,长度至少应为8个字符且不超过64个字符。(类型:char*)
channel – 要连接的wifi接入点信道。(类型:int32_t)
bssid – 要连接的wifi接入点的mac地址。(类型:const uint8_t*)
connect – 连接状态参数。如果connect参数为true,ESP8266开发板会使用闪存中储存的信息尝试连接WiFi。如果connect参数为false,ESP8266开发板不会尝试连接WiFi,而只会将WiFi连接信息保存在闪存中。
如果ESP8266开发板成功启动无线终端模式,则返回true,否则返回false。
wifi.status():
status函数可以在无线终端模式下,获取当前的ESP8266模块网络连接状态。
0: WL_IDLE_STATUS – 返回值为0说明正在尝试连接
1: WL_NO_SSID_AVAIL – 返回值为1说明没有找到设定的SSID的网络
2: WL_SCAN_COMPLETED – 返回值为2说明网络扫描完毕
3: WL_CONNECTED – 返回值为3说明连接成功成功
4: WL_CONNECT_FAILED – 返回值为4说明连接失败
5: WL_CONNECTION_LOST – 返回值为5说明连接丢失
6: WL_DISCONNECTED – 返回值为6说明未连接
wifi.localIP():
localIP函数可在无线终端模式下获取当前ESP8266模块的IP地址。
返回值为当前无线终端分配的IP地址,数据类型为IPAdress型;
client.print(val);:
print函数用于发送数据到已连接的服务器。
val:所要发送的数据,可以是字符串、字符或者数值。
对象在处理或发送网络数据时,可以通过调用Stream类中的函数来实现。
println函数会在发送的数据结尾增加一个换行符(’\n’),而print函数则不会。
整体思路为:设置WiFi的名称和密码,创建未连接状态,监测连接状态,串口输出wifi状态和连接状态
#include <ESP8266WiFi.h>
const char* name = "CMCC-btVz"; //这里改成你的设备当前环境下要连接的接入点名字
const char* password ="xxxxxxxx"; //这里改成你的设备当前环境下要连接的接入点密码
void setup(void)
{
Serial.begin(115200); // 启动串口通讯,波特率设置为115200
Serial.println("未连接");
Serial.println("开始连接");
WiFi.begin(name , password);
Serial.print("正在连接到");
Serial.print(name );
while (WiFi.status() != WL_CONNECTED) //判定网络状态
{
delay(500);
Serial.print("网络连接成功");
Serial.print("连接到的接入点名字:");
Serial.println(name ); // 告知用户建立的接入点WiFi名
Serial.print("连接到的接入点密码:");
Serial.println(password); // 显示用户建立的接入点WiFi密码
Serial.print("无线模式成功开启,网络连接成功");
}
if (WiFi.status() == WL_CONNECTED)
{
Serial.print("无线IP地址为: ");
Serial.println(WiFi.localIP());
}
}
void loop() {}