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); } }第一次连接时:
相信很多人都有把绿植给养死的经历,可能是浇水过多、忘记浇水、较长时间不在家不能浇水等,本文介绍一种可以灵活定制的智能浇花方案。
MicroPython 在 ESP32 上支持线程(Thread)功能,通过_thread模块实现。线程允许程序并发执行多个任务,适合处理需要同时运行的场景,例如传感器数据采集和网络通信。
掌控板3.0升级了主控,还主打AI。带有双麦克风阵列,增加了音频解码芯片,板载了一个1W喇叭,还把之前的单色屏幕换成了1.47寸的彩色屏幕,有更多的可玩性。
使用了 MicroPython 库,通过 定时器(Timer) 和 ADC(模数转换器) 功能来实时读取传感器数据。使用定时器可以实现高精度、非阻塞、低资源消耗的周期性任务,保证实时性和可靠性,特别适用于嵌入式系统中的多任务处理和低功耗场景。
ESP32的DAC函数可以实现真正的模拟输出。