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); } }第一次连接时:
ESP32的DAC函数可以实现真正的模拟输出。
ESP32 没有Arduino输出 PWM 的 analogWrite(pin, value) 方法,取而代之的 ESP32 有一个 LEDC 来实现PWM功能。
本文学习如何使用ESP32开发板来进行多线程的开发。
ESP8266有三种工作模式,分别为:AP,STA,AP混合STA
ESP32有四个SPI外设,分别为SPI0、SPI1、HSPI和VSPI。