2. 获取WIFI工作模式
WiFi.getMode();3. 使能/使能STA模式
WiFi.enableSTA(true);4. 使能/使能AP模式
WiFi.enableAP(true);5. 使能/使能Wifi休眠
WiFi.setSleep(true);2. 配置AP 热点 WiFi.softAPConfig();
bool WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet)3. 断开wifi WiFi.disconnect();
bool WiFiSTAClass::disconnect(bool wifioff = false, bool eraseap = false)4. 一些获取AP热点信息的API
#include <Arduino.h>
#include "WiFi.h"
void setup()
{
Serial.begin(115200);
WiFi.softAP("ESP_AP", "12345678");
}
void loop()
{
Serial.print("主机名:");
Serial.println(WiFi.softAPgetHostname());
Serial.print("主机IP:");
Serial.println(WiFi.softAPIP());
Serial.print("主机IPV6:");
Serial.println(WiFi.softAPIPv6());
Serial.print("主机SSID:");
Serial.println(WiFi.SSID());
Serial.print("主机广播IP:");
Serial.println(WiFi.softAPBroadcastIP());
Serial.print("主机mac地址:");
Serial.println(WiFi.softAPmacAddress());
Serial.print("主机连接个数:");
Serial.println(WiFi.softAPgetStationNum());
Serial.print("主机网络ID:");
Serial.println(WiFi.softAPNetworkID());
Serial.print("主机状态:");
Serial.println(WiFi.status());
delay(1000);
}
2. wifi配置
bool WiFiSTAClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0, IPAddress dns2 = (uint32_t)0)3. 关闭wifi连接
用法和AP的disconnect一样4. 其他一些获取WIFI信息的API
#include <Arduino.h>
#include "WiFi.h"
void setup()
{
Serial.begin(115200);
// WiFi.softAP("ESP_AP", "12345678");
// WiFi.softAPsetHostname("ESP_xiongba");
WiFi.begin("anny", "20141208");
WiFi.setAutoReconnect(true);
}
void loop()
{
Serial.print("是否连接:");
Serial.println(WiFi.isConnected());
Serial.print("本地IP:");
Serial.println(WiFi.localIP());
Serial.print("本地IPv6:");
Serial.println(WiFi.localIPv6());
Serial.print("mac地址:");
Serial.println(WiFi.macAddress());
Serial.print("网络ID:");
Serial.println(WiFi.networkID());
Serial.print("休息:");
Serial.println(WiFi.getSleep());
Serial.print("获取状态吗:");
Serial.println(WiFi.getStatusBits());
Serial.print("getTxPower:");
Serial.println(WiFi.getTxPower());
Serial.print("是否自动连接:");
Serial.println(WiFi.getAutoConnect());
Serial.print("是否自动重连:");
Serial.println(WiFi.getAutoReconnect());
Serial.print("获取模式:");
Serial.println(WiFi.getMode());
Serial.print("获取主机名:");
Serial.println(WiFi.getHostname());
Serial.print("获取网关IP:");
Serial.println(WiFi.gatewayIP());
Serial.print("dnsIP:");
Serial.println(WiFi.dnsIP());
Serial.print("状态:");
Serial.println(WiFi.status());
delay(1000);
}
6. 设置自动重连
设置WIFI断开后是否自动尝试重连#include <Arduino.h>
#include "WiFi.h"
String ssid;
String password;
void setup()
{
Serial.begin(115200);
WiFi.mode(WIFI_MODE_STA);
WiFi.disconnect(); //断开可能的连接
delay(100);
Serial.println("开始扫描WIFI:");
int n = WiFi.scanNetworks();
if (n)
{
Serial.print("扫描到");
Serial.print(n);
Serial.println("个WIFI");
for (size_t i = 0; i < n; i++)
{
Serial.print("WiFi的名称(SSID):");
Serial.println(WiFi.SSID(i));
Serial.print("WiFi的信号强度(RSSI):");
Serial.println(WiFi.RSSI(i));
Serial.print("WiFi加密与否:");
Serial.println(WiFi.encryptionType(i) == WIFI_AUTH_OPEN ? "未加密" : "加密");
if (WiFi.SSID(i) == "anny")
{
ssid = WiFi.SSID(i);
password = "20141208";
}
}
}
else
{
Serial.println("没扫描到WIFI");
}
WiFi.begin(ssid.c_str(), password.c_str());
while (!WiFi.isConnected())
{
Serial.print(".");
}
Serial.println("连接成功");
}
void loop()
{
}
5. 扫描连接WIFI(异步)
采用异步扫描方式, 每隔0.5秒询问一下WiFi.scanComplete();判断是否扫描完毕.#include <Arduino.h>
#include "WiFi.h"
void mySmartWifiConfig()
{
WiFi.mode(WIFI_MODE_STA);
Serial.println("开启智能配网:");
WiFi.beginSmartConfig();
while (1)
{
Serial.print(".");
delay(500);
if (WiFi.smartConfigDone())
{
Serial.println("配网成功");
Serial.printf("SSID:%s", WiFi.SSID().c_str());
Serial.printf("PSW:%s", WiFi.psk().c_str());
break;
}
}
}
bool autoConfig()
{
WiFi.disconnect(true,true);
WiFi.begin();
for (size_t i = 0; i < 20; i++)
{
int wifiStatus = WiFi.status();
if (wifiStatus == WL_CONNECTED)
{
Serial.println("自动连接成功!");
return 1;
}
else
{
delay(1000);
Serial.println("等待自动配网中...");
}
}
Serial.println("无法自动配网!");
return 0;
}
void setup()
{
Serial.begin(115200);
delay(5000);
if (!autoConfig())
{
mySmartWifiConfig();
}
}
void loop()
{
if (WiFi.isConnected())
{
Serial.println("网络已连接");
delay(1000);
}
}
第一次连接时:
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
本程序是小鹏物联网智能浇花套件的单机版程序(不连接物联网),供同学们参考。
ArrayList 类是一个 C++ 模板类,它提供了 ArrayList 的实现,以便轻松存储任何指定类型的值。它允许使用索引进行高效存储和检索,支持排序操作。
本文介绍ESP32中的中断机制,以及如何通过GPIO中断实现按钮控制。重点讲解了如何设置中断服务例程、处理中断抖动问题,并提供了消除中断抖动的示例代码。
本文主要介绍在未联网(AP热点)情况下实现WEB交互界面的CSS和javascript库。
本文介绍如何使用Arduino-ESP32库中的API函数获取ESP32的芯片、RAM信息等,并提供了一个示例程序代码。
ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。
ESP32 芯片有34个物理GPIO管脚。每个GPIO管脚都可用作一个通用IO,或连接一个内部的外设信号。IO_MUX ¹、RTC IO MUX 和GPIO交换矩阵用于将信号从外设传输至GPIO管脚。
在本文中,先解释 MSB(最高有效位)和 LSB(最低有效位)的概念,以及 MSBFIRST 和 LSBFIRST。然后展示了 MSBFIRST 和 LSBFIRST 的使用如何影响移位寄存器的输出。
ESP32Encoder库是一个利用ESP32脉冲计数器硬件外设实现高效旋转编码器读取的软件库。
本文对比了几款适合物联网开发的盒子硬件参数,供大家参考。