Wi-Fi

:link_to_translation:`en:[English]`


ESP32 ESP-Now 模式下一对一的通信速率是多少?

测试数据如下:

  • 测试样板:ESP32_Core_board_V2。
  • Wi-Fi 模式:station 模式。
  • open 环境下大约是 214 Kbps。
  • 屏蔽箱内测试大约是 555 Kbps。

ESP32 和 ESP8266 是否支持中文 SSID?

是支持的,使用中需要路由器或者手机的中文编码方式一致。

示例:路由器中文编码使用 UTF-8 ,设备中文编码使用 UTF-8,设备就可以正确连接中文 SSID 的路由器。


[Scan] ESP32 扫描⼀次需要花多长时间?

扫描花费的总时间取决于:

  • 是被动扫描还是主动扫描,默认为主动扫描。
  • 每个信道停留的时间,默认主动扫描为 120 ms,被动扫描为 360 ms。
  • 国家码与配置的信道范围,默认为 1~13 信道。
  • 是快速扫描还是全信道扫描,默认为快速扫描。
  • Station 模式还是 Station-AP 模式,当前是否有连接。
  • 默认情况下,1~11 信道为主动扫描,12〜13 信道为被动扫描。
    • 在 Station 模式没有连接的情况下,全信道扫描总时间为:11*120 + 2*360 = 2040 ms;
    • 在 Station 模式有连接,或者 Station-AP 模式下,全信道扫描总时间为:11*120 + 2*360 + 13*30 = 2430 ms。

[Scan] 乐鑫是否支持 boundary scans(边界扫描)?

ESP32 不⽀持 boundary scan。

客户⾃研产品如何优化⼆次谐波等杂散?

⼆次谐波主要来源于射频链路路辐射和 PA 电源辐射,同时易易受到客户底板(板⼦尺⼨)及产品整机影响。因此有如下建议:

  • 在射频匹配中使⽤ ⼀个接近 2.4 pF ⼤⼩的对地电容,可较好地优化射频链路路上的杂散辐射;
  • 在 PA 电源 (芯⽚ 3、4 管脚) ⼊⼝增加⼀个串串联电感可较好减少 PA 电源的杂散辐射。

Wi-Fi 信道是什么?可以自行选择信道吗?

信道指的是 Wi-Fi 使用的指定频段中特定频率的波段。不同国家地区使用的信道数是不是同的。⽤户可以参考 ESP8266 Wi-Fi 信道选择指南

80 MHz 倍频杂散较差该如何解决?

若 80 MHz 倍频杂散超标,如 160 MHz、240 MHz、320 MHz 等均⽐较⾼,可在发送数据 (TXD) 串⼝线路路中串联⼀个阻值约为 470 Ω 的电阻,即可有效抑制 80 MHz 倍频杂散。

[LWIP] 使用 ESP-IDF v4.1,ESP32 用作 SoftAP 模式时如何设置 IP 地址?

由于 ESP-IDF v4.1 以及以上版本会摒弃掉 TCP/IP 的接口,推荐使用 ESP-NETIF 的接口.

参考示例代码如下:

{
    ...
    esp_netif_t *ap_netif = esp_netif_create_default_wifi_ap();
    char* ip= "192.168.5.241";
    char* gateway = "192.168.5.1";
    char* netmask = "255.255.255.0";
    esp_netif_ip_info_t info_t;
    memset(&info_t, 0, sizeof(esp_netif_ip_info_t));

    if (ap_netif)
    {
        ESP_ERROR_CHECK(esp_netif_dhcps_stop(ap_netif));
        info_t.ip.addr = esp_ip4addr_aton((const char *)ip);
        info_t.netmask.addr = esp_ip4addr_aton((const char *)netmask);
        info_t.gw.addr = esp_ip4addr_aton((const char *)gateway);
        esp_netif_set_ip_info(ap_netif, &info_t);
        ESP_ERROR_CHECK(esp_netif_dhcps_start(ap_netif));
    }
    ...
}

[LWIP] ESP32 Station 模式,如何设置静态 IP?

由于 v4.2 以及以上版本会摒弃掉 TCP/IP 的接口,推荐使用 ESP-NETIF 的接口.参考示例代码如下:

char ip_str[15];
char ip[15] = "192.168.5.241";
char gateway[15] = "192.168.5.1";
char netmask[15] = "255.255.255.0";
char dns[15] = "8.8.8.8";

esp_netif_ip_info_t info_t;
//esp_netif_t netif;
esp_netif_dns_info_t dns_info;

esp_netif_config_t netif_cfg = ESP_NETIF_DEFAULT_ETH();
esp_netif_t *eth_netif = esp_netif_new(&netif_cfg);
// set default handlers to do layer 3 (and up) stuffs
esp_eth_set_default_handlers(eth_netif);

memset(&info_t, 0, sizeof(esp_netif_ip_info_t));
memset(&dns_info, 0, sizeof(esp_netif_dns_info_t));

esp_netif_dhcpc_stop(eth_netif);

ip4addr_aton((const char *)ip_str, &info_t.ip.addr);
memcpy(&ip_str[0], &gateway[0], 15);
ip4addr_aton((const char *)ip_str, &info_t.gw.addr);

memcpy(&ip_str[0], &dns[0], 15);
ip4addr_aton((const char *)ip_str, &dns_info.ip.u_addr.ip4);
ESP_LOGI("Test", "DNS %s\n", ip4addr_ntoa(&dns_info.ip.u_addr.ip4));

memcpy(&ip_str[0], &netmask[0], 15);
ip4addr_aton((const char *)ip_str, &info_t.netmask.addr);
esp_netif_set_dns_info(eth_netif,ESP_NETIF_DNS_MAIN,&dns);

[LWIP] ESP-IDF 里如何设置 DHCP Server 的 Option 内容?

由于 v4.1 以及以上版本会摒弃掉 tcp/ip 的接口,推荐使用 ESP-NETIF 的接口。DHCP Client 设置方法也可以参考本示例。 参考示例代码如下:

// 创建 softap 的 netif 句柄
esp_netif_t *ap_netif = esp_netif_create_default_wifi_ap();

// ESP_NETIF_IP_ADDRESS_LEASE_TIME, DHCP Option 51, 设置分发的 IP 地址有效时间
uint32_t dhcps_lease_time = 60; // 单位是分钟
ESP_ERROR_CHECK(esp_netif_dhcps_option(ap_netif,ESP_NETIF_OP_SET,ESP_NETIF_IP_ADDRESS_LEASE_TIME,&dhcps_lease_time,sizeof(dhcps_lease_time)));

// ESP_NETIF_DOMAIN_NAME_SERVER , DHCP Option 6, 设置 DNS SERVER
// 设置 DNS 之前先要设置本地主 DNS
esp_netif_dns_info_t dns_info = {0};
dns_info.ip.u_addr.ip4.addr = ESP_IP4TOADDR(8,8,8,8);
ESP_ERROR_CHECK(esp_netif_set_dns_info(ap_netif,ESP_NETIF_DNS_MAIN,&dns_info));

uint8_t dns_offer = 1; // 传入 1 使修改的 DNS 生效,如果是 0,那么用 softap 的 gw ip 作为 DNS server (默认是 0)
ESP_ERROR_CHECK(esp_netif_dhcps_option(ap_netif,ESP_NETIF_OP_SET,ESP_NETIF_DOMAIN_NAME_SERVER,&dns_offer,sizeof(dns_offer)));

// ESP_NETIF_ROUTER_SOLICITATION_ADDRESS, DHCP Option 3 Router, 传入 0 使 DHCP Option 3(Router) 不出现(默认为 1)
uint8_t router_enable = 0;
ESP_ERROR_CHECK(esp_netif_dhcps_option(ap_netif,ESP_NETIF_OP_SET,ESP_NETIF_ROUTER_SOLICITATION_ADDRESS,&router_enable, sizeof(router_enable)));

// ESP_NETIF_SUBNET_MASK, DHCP Option 1, 设置子网掩码
// 通过 ESP_NETIF_SUBNET_MASK 设置子网掩码无效, 请通过 esp_netif_set_ip_info 修改

[Performance] 如何测试 Wi-Fi 模组的通信速率?

可以使⽤ SDK 中提供的示例 example/wifi/iperf 中代码进⾏测试。

[LWIP] ESP8266 SoftAP 默认使用哪个网段?

ESP8266 SoftAP + Station 模式下, 连接的 192.168.4.X ⽹段时,为什么会失败 ?

  • ESP8266 SoftAP 默认使用网段 192.168.4.*,IP 地址是 192.168.4.1。ESP8266 如果要连接 192.168.4.X 的路由时,不能分辨是要连接⾃⼰本身的 SoftAp 还是外部路由,所以会造成错误。

[Connect] ESP8266 SoftAP 模式支持几个设备?

硬件上最多⽀持 8 个,我们推荐 4 个,这样可以保证模组性能。

ESP8266/ESP32/ESP32-S2 是否支持 web/softAP 配网?

支持。


[Connect] ESP8266 和 ESP32 作为 softap 模式如何隐藏 SSID?

wifi_ap_config_t 结构体中有一个变量 ssid_hidden,可以设置为隐藏功能。

esp_wifi_802.11_tx 接口中的 buffer 参数中包括 FCS 吗?

不包括, FCS 帧是硬件自动生成的。

ESP-WROOM-32D 支持的 Wi-Fi 频段信息和功率表分别是什么?

Wi-Fi 频段是 2412 ~ 2484 MHz,软件里可配置可用信道和对应的工作频率。功率表有默认值,也可支持软件配置。详细指导请参考 《ESP32 Phy Init Bin 重要参数配置说明》

ESP32 Wi-Fi RF 功率最高值是多少?

ESP32 RF 功率为 20 dB,即模组最大值。

ESP32 如何调整 Wi-Fi 的发射功率?

  • 可通过 menuconfig 配置 Component config -> PHY -> Max Wi-Fi TX power(dBm) 来调整 Wi-Fi 的发射功率,最大是 20 dB。
  • 或者使用 API esp_err_t esp_wifi_set_max_tx_power(int8_t power); 设置调整。

[Connect] ESP32 AP 模式最多支持多少设备连接?

ESP32 AP 模式,最多可配置为支持 10 个设备连接,默认配置为支持 4 设备。

[Connect] Wi-Fi 模组如何通过 RSSI 数值划分信号强度等级?

我们没有对 RSSI 信号强度进行等级划分。如果您需要标准进行划分,可以参考安卓系统的计算方法。

@UnsupportedAppUsage
private static final int MIN_RSSI = -100;

/** Anything better than or equal to this will show the max bars. */
@UnsupportedAppUsage
private static final int MAX_RSSI = -55;

public static int calculateSignalLevel(int rssi, int numLevels) {
  if(rssi <= MIN_RSSI) {
    return 0;
  } else if (rssi >= MAX_RSSI) {
    return numLevels - 1;
  } else {
    float inputRange = (MAX_RSSI -MIN_RSSI);
    float outputRange = (numLevels - 1);
    return (int)((float)(rssi - MIN_RSSI) * outputRange / inputRange);
  }
}

[Connect] ESP32 做 soft-AP 时为什么会把 STA 踢掉?

  • 默认情况下连续 5 min 收不到 STA 发过来的数据包就会把 STA 踢掉。该时间可以通过 esp_wifi_set_inactive_time 进行修改。
  • 注: esp_wifi_set_inactive_time 新增的 API。
    • master commit: 63b566eb27da187c13f9b6ef707ab3315da24c9d
    • 4.2 commit: d0dae5426380f771b0e192d8ccb051ce5308485e
    • 4.1 commit: 445635fe45b7205497ad81289c5a808156a43539
    • 4.0 commit: MR 未合, 待定
    • 3.3 commit: 908938bc3cd917edec2ed37a709a153182d511da

[Connect] ESP32 进行 Wi-Fi 连接时,如何通过错误码判断失败原因?

ESP-IDF v4.0 及以上版本可参考如下代码获取 Wi-Fi 连接失败的原因:

if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
  wifi_event_sta_disconnected_t *sta_disconnect_evt = (wifi_event_sta_disconnected_t*)event_data;
  ESP_LOGI(TAG, "wifi disconnect reason:%d", sta_disconnect_evt->reason);
  esp_wifi_connect();
  xEventGroupClearBits(s_wifi_event_group, CONNECTED_BIT);
}

当回调函数接收到 WIFI_EVENT_STA_DISCONNECTED 事件时,可以通过结构体 wifi_event_sta_disconnected_t 的变量 reason 获取到失败原因。

  • WIFI_REASON_AUTH_EXPIRE 在连接的 auth 阶段,STA 发送了 auth,但在规定时间内未收到 AP 的 auth 回复,有较低概率会出现。

  • WIFI_REASON_AUTH_LEAVE 通常是由 AP 因为某种原因断开了 STA 连接,reason code 是由 AP 发过来的。

  • WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT 或者 WIFI_REASON_HANDSHAKE_TIMEOUT 失败原因为密码错误。

    其中,WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT 为标准通用的错误码,而 WIFI_REASON_HANDSHAKE_TIMEOUT 为自定义错误码。两者区别在于 WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT 为路由器在密码错误时告知设备,产生的错误,WIFI_REASON_HANDSHAKE_TIMEOUT 为路由器在密码错误时不告知设备,由设备本身超时机制产生的错误。

  • WIFI_REASON_CONNECTION_FAIL 扫描阶段返回的错误码,主要是由于 STA 扫描到了匹配的 AP,但是这个 AP 在黑名单里。AP 在黑名单里面的原因是上次 AP 主动踢掉了 STA,或者 STA 连接 AP 的过程中失败了。


ESP32 系列芯片每次连接服务器都会执行域名解析吗?

在协议栈内,域名会通过 DNS 进行解析,解析后的数据会在时效内进行缓存。缓存时间基于从 DNS 服务器获取的 TTL 数据,该数据是配置域名时填入的参数,通常为 10 分钟。

[Connect] Wi-Fi Log 中状态机切换后面数字的含义?

eg: run -> init (fc0),fc0 含义为 STA 收到了 deauth 帧,reason 为密码错误。

  • c0 代表收到的帧类型(00 代表超时)
  • f 代表 reason

帧类型: [a0 disassoc]、[b0 auth]、[c0 deauth]。


[Connect] bcn_timeout, ap_probe_send_start 是什么意思?

在规定时间内(ESP32 默认 6 s,即 60 个 Beacon Interval),STA 未收到 Beacon 帧。 造成该现象可能有:

  • 内存不足。”ESP32_WIFI_MGMT_SBUF_NUM” 不够 (log 中会打出 “esf_buf: t=8, l=beacon_len, …” 这样的 Error)。内存不够,可在收到 disconnect event 时打出 heap 大小来排查。
  • AP 未发出 beacon。可通过抓包 AP 的 beacon 来排查。
  • Rssi 值太低。在复杂环境下 Rssi 值较低时,可能导致 STA 收不到 beacon,可通过调用 esp_wifi_sta_get_ap_info 获取 Rssi 值来排查。
  • 硬件原因。收包性能差。

出现 bcn_timeout 时,STA 会尝试发送 5 次 Probe Request,如果 AP 回 Probe Reponse,就保持连接;如果 AP 未回复,STA 发送 Disconnect 事件,并断开连接。


[Connect] Wi-Fi 连接断开后如何重连?

收到 WIFI_EVENT_STA_DISCONNECTED 之后调用 esp_wifi_connect

[Connect] ESP32 作为 station 时什么时候会把 SoftAP 踢掉?

默认情况下 6 s 未收到 AP 的 beacon 就会把 AP 踢掉。该时间可以通过 esp_wifi_set_inactive_time 进行修改。

[Scan] 为什么有时候扫描不到 AP?

常见的原因是 AP 离 STA 太远,也有可能是 scan 的参数配置不恰当导致。

[Scan] 最多能够扫描多少个 AP?

能够扫描到的 AP 最大个数没有限制,取决于扫描时周边 AP 的数目与扫描参数的配置,比如每个信道停留的时间,停留时间越长越可能找到全部的 AP。

[Scan] 连接时周围存在多个相同 ssid/password 时能否选出最佳 AP 连接?

默认情况下为 WIFI_FAST_SCAN, 总是连接第一个扫描到的 AP。如果要连接最佳AP,需要在设置 station 时将 scan_method 配置成 WIFI_ALL_CHANNEL_SCAN,同时配置 sort_method 来决定选择 RSSI 最强或者是最安全的 AP。

[Scan] wifi_sta_config_t 中 scan_method 怎么配置?全信道扫描和快速扫描的区别在哪里?

全信道扫描和快速扫描是用在连接前寻找合适 AP 所需要的,scan_method 设定了 fast_scan,可以配合 threshold 来过滤信号或加密方式不强的 AP。

  • 选择了 fast_scan 会在扫描到第一个匹配的 AP 的情况下停止扫描,然后进行连接,节省连接的时间。
  • 选择了 all_channel_scan 的时候扫描会进行全信道扫描,然后根据 sort_method 中设定的排序方法,存储四个信号最好或者加密方式最安全的 AP,等到扫描结束后选择其中信号最好或者加密方式最安全的 AP 进行连接。

[LWIP] 如何获取 socket 的错误码?

  • ESP-IDF v4.0 版本以上(含v4.0) 标准的做法是 socket API 返回失败后直接通过 errno 的值来获取错误码。
  • ESP-IDF v4.0 版本以下标准的做法是 socket API 返回失败后调用 getsockopt(sockfd, SOL_SOCKET, SO_ERROR, …) 的方式获取错误码,否则当多个 socket 并行操作的时候可能会获取到不正确的错误码。

[LWIP] 默认 TCP keep-alive 时间为多少?

默认情况下,如果连续两个小时收不到任何 TCP 报文,会每隔 75 秒发送一个 TCP keep-alive 报文,连续发送 9 个 tcp keep-alive 报文,如果依然收不到对方发过来的任何报文 LWIP 会断开 TCP 连接。

Keep-alive 可通过 socket option 进行配置。


[LWIP] TCP 重传间隔?

ESP32 作为发送方时,默认情况下,首次重传通常在 2 ~ 3 秒左右, 之后依据 Jacoboson 算法决定下次重传间隔,重传间隔可以简单地理解为 2 的倍数递增。

[LWIP] 最多能够创建多少个 socket ?

最多 32 个,默认为 10 个。

[Sleep] ESP32 有哪几种休眠方式及其区别是什么?

  • 一共有三种休眠方式: Modem sleep, Light sleep 和 Deep sleep。
    • Modem sleep: WiFi 协议规定的 station WMM 休眠方式(station 发送 NULL 数据帧通知 AP 休眠或醒来),station 连接上 AP 之后自动开启,进入休眠状态后关闭射频模块,休眠期间保持和 AP 的连接,station 断开连接后 modem sleep 不工作。ESP32 modem sleep 进入休眠状态后还可以选择降低 CPU 时钟频率,进一步降低电流。
    • Light sleep: 基于 modem sleep 的 station 休眠方式,和 modem sleep 的不同之处在于进入休眠状态后不仅关闭射频模块,还暂停 CPU,退出休眠状态后 CPU 从断点处继续运行。
    • Deep sleep: 非 WiFi 协议规定的休眠方式,进入休眠状态后关闭除 RTC 模块外的所有其他模块,退出休眠状态后整个系统重新运行(类似于系统重启),休眠期间不能保持和 AP 的连接。

[Sleep] ESP32 modem sleep 降频功能在哪打开?

在 menuconfig -> Component Config -> Power Management 中打开。

[Sleep] ESP32 modem sleep 降频功能最低能降到多少?

目前 CPU 时钟最低能降到 40 MHz。

[Sleep] ESP32 modem sleep 平均电流大小影响因素?

ESP32 modem sleep 平均电流大小与 CPU 单核还是双核,CPU 时钟频率,CPU 空闲时间比,测试过程中 Wi-Fi 是否有数据收发,数据收发频率,射频模块发射功率,测试路由器发送 beacon 时间点是否准确,是否有外设模块工作等因素有关。

[Sleep] 为什么测到的 modem sleep 平均电流偏高?

  • 测试过程中有较多的 Wi-Fi 数据收发。数据收发越多,进入休眠状态的机会越少,平均电流就越高。
  • 测试用的路由器发送 beacon 时间点不准确。Station 需要定时醒来监听 beacon,若 beacon 时间点不准确,station 会等待较长时间,进入休眠状态的时间就越少,平均电流就越高。
  • 测试过程中有外设模块在工作,请关闭外设模块再进行测试。
  • 开启了 station + softap 模式,modem sleep 只在 station only 模式下才会降低电流。

[Sleep] 为什么测到的 light sleep 平均电流偏高?

除了上述四个原因之外还可能是:

  • 应用层代码在不停地运行,CPU 没有机会暂停。
  • 应用层使用了 ets timer 或者 esp timer,且 timer 的超时时间间隔较短,CPU 没有机会暂停。

ESP8266 是否支持 802.11k/v/r 协议?

当前只支持 802.11k 和 802.11v,可参考示例 roaming

[Connect] NONOS_SDK 2.1.0 升级到 2.2.2 后,连接时间变长?

请升级到 NONOS_SDK master 版本,该版本中解决了 CCMP 加密与某些 AP 不兼容的问题。

ESP32 如何收发 Wi-Fi 802.11 数据包?

  • 可以通过如下 API 进行 802.11 数据包收发:
esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq);
esp_wifi_set_promiscuous_rx_cb(wifi_sniffer_cb);
  • 上述 API 在 MDF 项目中有用到,可以参考:mconfig_chain

[Connect] ESP32 系列 & ESP8266 路由器连接失败有哪些可能原因?

  • 检查配置中的 SSID 与 Password 是否正确。
  • 不建议使用中文 SSID,可能存在不同中文编码带来的异常。
  • 需要注意 bssid_set 的设置,如果不需要指定路由的 MAC 地址,那么需配置 stationConf.bssid_set = 0。
  • wifi_config_t wifi_config 建议使用静态变量 static 来定义。

[Connect] ESP8266 有那些配网方式?

  • SmartConfig 模式:⼀键配置⽅式,设备在 sniffer 模式扫描特征包的⽅式。
  • SoftAP 模式:设备开启 SoftAP, ⼿机连接 SoftAP 后建⽴稳定的 TCP/UDP 连接后,发送 SSID 和密码。
  • WPS 模式:此⽅式需要设备中增加按键;或连接到设备的 SoftAP 后使⽤⼿机软件控制开启 WPS。

[Connect] SmartConfig 配⽹ Wi-Fi 参数信息有哪些要求?

根据 wifi spec 要求,SSID 不超过 32 bytes,Password 不超过 64 bytes。

[Connect] ESP8266 Wi-Fi 是否支持 WAP2 企业级加密?


[Connect] ESP32 保持 Wi-Fi 连接的低功耗模式有哪些?

  • 在保存 Wi-Fi 连接的场景中,芯片会在 Active 和 Modem-sleep 模式之间自动切换,功耗也会在两种模式间变化。
  • ESP32 支持在 light sleep 下 Wi-Fi 保活,自动唤醒间隔由 DTIM 参数决定。
  • 例程参见:ESP-IDF - > examples - > wifi - > power_save。

乐鑫芯片是否支持 WPA3?

  • ESP32 系列:esp-idf 从 release/v4.1 版本开始支持 WPA3 ,默认使能,可在 menuconfig > Component config > Wi-Fi 中配置。
  • ESP8266:ESP8266_RTOS_SDK 的 master 分支开始支持 WPA3 ,默认使能,可在 menuconfig > Component config > Wi-Fi 中配置。

[Connect] 当环境内存在多个相同 SSID 时,设备如何连接 ?

  • 设备会连接优先扫描到的 AP 设备。
  • 如果想要根据信号质量等排序,可以使用 Scan 方法自主筛选。
  • 如果想要连接指定 AP, 可以在连接参数中填入 BSSID 信息。

[Connect] ESP8266 有中继器方案吗?

  • 乐鑫官方未推出中继类应用方案。
  • 社区中有相关中继的应用,可以在 github 中查询,中继速率建议基于实际测试。

ESP-NOW 是什么?有哪些优势与场景?

  • ESP-NOW 是一种由乐鑫公司定义的无连接 Wi-Fi 通信协议。
  • 在 ESP-NOW 中,应用程序数据被封装在各个供应商的动作帧中,然后在无连接的情况下,从一个 Wi-Fi 设备传输到另一个 Wi-Fi 设备。
  • ESP-NOW 广泛应用于智能照明、远程控制、传感器等领域。

ESP32 数据帧和管理帧的重传次数是多少?是否可以配置?

重传次数是 31 次,不可以配置。

ESP32 如何自定义 hostname?

  • 以 ESP-IDF v4.2 为例,可以在 menuconfig > Component Config > LWIP > Local netif hostname,然后输入指定的 hostname 即可。
  • 不同的版本在命名上可能略有区别。

如何获取 802.11 无线数据包?

可以参考 ESP-IDF 编程文档中的 Wireshark 使用指南

ESP32 Wi-Fi 支持 PMF(Protected Management Frames) 和 PFS(Perfect Forward Secrecy) 吗?

WPA2/WPA3 中均支持 PMF, WPA3 中支持 PFS。

ESP32 IDF v4.1 Wi-Fi 怎样获取已连接的 AP 的 RSSI?

  • 可以通过扫描获取 AP 的 RSSI,参考例程 scan.

  • 如果周围环境中有多个同名 SSID,可以在连接到 AP 之后获取 AP 的 bssid,然后通过结构体 wifi_scan_config_t 指定 bssid 调用 esp_wifi_scan_start() 获取 RSSI。

    参考代码:

    //在回调函数 event_handler() 中通过 WIFI_EVENT_STA_CONNECTED 获取 bssid
    else if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_CONNECTED) {
    
            wifi_event_sta_connected_t* sta_connected_event = (wifi_event_sta_connected_t*) event_data;
            ESP_LOGI(TAG, "AP MAC:"MACSTR"", MAC2STR(sta_connected_event->bssid));
            ...
            //指定 bssid 进行扫描
            wifi_scan_config_t wifi_scan_config = {
                .bssid = sta_connected_event->bssid,
            };
            ESP_ERROR_CHECK(esp_wifi_scan_start(&wifi_scan_config, true));
            ...
    }
    

ESP8266 在使用 esptouch v2 出现 AES PN 错误 log?

  • ESP8266 收到路由器重传了好几次的包会报这个错误,但是不影响使用。

ESP32 WFA 认证支持 Multicast 吗?

  • 不支持, 建议参考 ASD-1148 方式测试。

ESP-01S模组支持给摄像头做无线连接,传输视频么?

ESP-01S模组TCP协议传输下速率最大1M左右,若是速率要求不是很高,则可传输。

ESP-12S模组出厂固件支持HTTP协议吗?

出厂固件不支持HTTP功能模块AT指令,需要通过TCP协议做打包处理。

为什么烧写8266乐鑫最新固件发送AT指令无反应

乐鑫最新固件通讯AT口是GPIO13 GPIO15引脚,并非默认串口引脚

ESP32开发板在arduinoIDE上选择开发板型号是哪一个

直接选择ESP32 Dev module即可

ESP系列的串口电平是232电平还是TTL电平

TTL电平

ESP-12F转接板上的降压芯片型号和三个电阻有什么作用

降压芯片型号为HT7333,三个电阻分别给模块的使能脚和GPIO15引脚做上下拉使用

ESP-07S模组和ESP-12S模组底部的焊盘是干啥用的

底部焊盘是接地散热的功能,建议焊接的时候焊接上方便模组工作的时候散热

8266模组上的LED是做什么用的,为什么不是常亮,常亮的后果是什么

LED灯接到芯片的GPIO2引脚,此引脚与UART1的TXD共用,此时上电会输出一下打印信息,所以不是常亮,常亮的后果是模块固件跑飞了

为什么AT MQTT固件,我发送带后缀_CUR或者_DEF这样的指令无法成功

因为新版本的AT MQTT固件已经取消带后缀的指令,如果需要保存或者不保存相关参数可以使用AT+SYSSTORE指令进行参数存储

ESP8266模组EspTouch和Airkiss配网困难或者失败应该从哪几个方面排查问题

esptouch 配网失败概率较高的原因通常如下: 1.连接的热点使用人数较多 2.连接的热点信号质量较差 3.路由器不转组播 4.路由器开启了双频合一,手机连接到 5G 频段。

WIFI模块出厂是否有密码

模块默认出厂为AP模式,只有一个开放式的热点,无密码

ESP8266二次开发支持哪些开发方式

支持SDK开发、arduino开发、micropython开发

ESP8266白色转接板能否直接使用5V供电

不能,默认只能使用3.3V供电,如果需要使用5V供电,得要拆掉中间焊接的那个零欧姆电阻

ESP8266白色转接板能否直接使用5V供电

不能,默认只能使用3.3V供电,如果需要使用5V供电,得要拆掉中间焊接的那个零欧姆电阻

ESP8266是否支持脱机烧录,有没有脱机烧录器

不支持脱机烧录

ESP32的I2C引脚是连接哪个IO口

任意GPIO口,通过软件定义

ESP-01S的规格书上的电压N表示什么意思

N表示N/A 没有的意思,具体描述可以查看芯片手册

8266模块默认的DNS服务器IP地址为多少

208.67.222.222

8266的AT固件与彩灯固件有什么区别

AT固件实现了WIFI相关的参数设置和TCP UDP连接等功能,彩灯固件是可直接对接阿里飞燕平台进行灯光控制

ESP-12F如何在不通过路由的情况下与手机进行通讯

模块通过指令开启一个热点,手机连接模块的热点并在软件上建立一个TCP服务器组成一个局域网进行通信

ESP-01M屏蔽盖盖子厚度是多少

2mm

ESP-12F转接板上排针的距离是多少

28mm

ESP系列如何检查设备是否正常工作

上电打开手机WIFI能搜到ESP模块发出的WIFI热点

8266NodeMCU开发板上面有SCL和SDA接口吗

有的,他是通过软件GPIO模拟定义

ESP-01S模组兼容阿里云吗?

可入网阿里云

ESP-12F的AT固件与MQTT固件的AT指令完全不兼容吗?

80%的指令不兼容,配网部分的指令就不兼容了;推荐购买MQTT版本固件,功能比较完善

Arduino IDE环境下无法下载开发板工具怎么办?

有条件的话,通过翻墙的方式将工具下载下来

ESP-01F模组的MAC可视化烧录功有么?

没有,只能通过esp_tool.py来烧录

ESP32-S模组要如何过BQB认证?

要烧录定频固件,做传导测试

ESP-12F模组可设置AP、STA兼容模式么?

可以的,AT固件以及MQTT固件均可配置该模式

请问下ESP-12F模组AP模式下可以创建几个热点

我们所有wifi模组均只能创建一个热点。

请问下,ESP-12F模组已经烧录入网阿里云的固件,在烧录AT固件是否会被清除?

会的,两个固件是不能共存的

USB转串口模块,不接流控的话,是否只需要接RXD与TXD即可?

是的

NodeMcu8266开发板烧写MQTT固件能使用lua功能吗

不能,如果需要使用lua必须烧写nodemcu固件

ESP8266转接板使用烙铁焊接模组和排针最好设置成多少度进行焊接

一般推荐使用360-380度进行焊接模组

ESP8266模块的GPIO16引脚能否当普通IO使用

可以,不过需要移植专门的驱动文件才能正常使用

ESP8266可以实现通过USB进行数据传输吗

不可以,8266没有专门的USB引脚

ESP-01D带AD口吗

不带

为何ESP-12F的AT固件烧录进去之后反复重启?

通常是由模组供电不稳定导致的,检查供电电源纹波是否小于30mV。

ESP-12F完成网页配网以后,重启能否自动连接网络?

可以的

ESP8266AT指令搜索WIFI,返回的WIFI信息编码是采用哪一种?

信息编码格式为UTF-8

ESP8266模块有仿真图吗

模块不支持仿真

CP2102串口板最大支持的串口速率为多少

最大支持为1Mbps速率

ESP8266模块Default_MQTT_Buffer_Size宏最大可以设置多大

4096

ESP-15F上面没有复位按键需要如何进入配网模式

通过模块引出的串口发送配网相关的AT指令

请问ESP-01S模组以及WB2系列模组支持接入onenet平台么?

两款模组均支持;

8266的WIFI名字中有下划线的能识别吗

可以识别

红外感应模块能在8266上用吗

可以

8266模块周围多少mm内不能有金属器件

天线区域6mm范围内

请问一下,为什么ESP-12F上面的蓝灯老是在闪?

蓝灯接的是IO2,IO2为日志口,程序启动会有日志,灯就会闪了;

请问一下哦ESP-01S模组从服务器获取的JSOON数据包要谁来解析?

通过AT指令从服务器获取JSON数据包的话,需要MCU端完成数据包解析动作。

你好,请问一下ESP-12F有GPIO3引脚吗?

有的,对应模组的RXD引脚,如下图所示

../../../../_images/ESP-12F_GPIO.jpg

请问一下ESP-12F模组可以获取网络时间么?

可以调用以下指令即可:

../../../../_images/ESP-12F_NetTime.jpg

请问ESP-01S模组掉电以后AP部分内容需要重新配置么?

需要,该模组AP配置相关参数没有内部没有做存储;

请问,我用智能配网功能连上wifi之后,想重新配网切换wifi却失败,是为何?

重新配网之前要先调用指令(AT+CWSTOPSMART)将原来配网内容去掉,再开新的配网;

ESP-07出厂固件的配置界面能否登录网页设置

不能,出厂固件只能通过串口发送AT指令进行设置相关的WIFI参数

ESP-12F模块可以在多个同WIFI名称和密码的路由场景下使用吗

可以使用,首先连接会选择信号强度高的路由

ESP-12S AT MQTT固件可以直连阿里飞燕平台吗

不可以,如需直连飞燕平台,推荐使用TG系列模组

ESP8266模块的ADC引脚和WIFI有限制,如何做才能同时使用

目前没有比较好的方法,建议分时复用处理

ESP-12F支持中文SSID吗

支持 不过输入的文字编码格式要UTF-8 不能是GBK

ESP-01能手动设置IP吗

可以设置,通过串口AT指令进行操作

ESP-01F可以用来传输200万像素的摄像头数据吗

可以,不过传的比较慢

请问有ESP-12F模组入网阿里云的资料么?

通过AT指令的方式入网阿里云的方法见文档: 参考链接

请问ESP-12S-Kit开发板的天猫固件与AT固件有何区别,如何使用?

AT固件是通用固件,天猫固件是对接阿里天猫平台的,使用方法见文档: 参考链接

ESP-01S模组的配网可以用微信实现么

可以,通过AirKiss实现配网,微信小程序搜索“物联网常用开发工具”可获取。

请问为何发送连接wifi一直提示busy?

指令发多了一个回车换行符。

8266WIFI模块怎么激活使用

通过串口直接发送AT指令

请问为何ESP-01S模组用来做微信配网一直没有反应?

问题排除方法如下: 1. 是否有启动信息(串口是否正常); 2. 是否配置了入网指令,及发送“AT+CWMODE=1”之后发送“AT+CWSTARTSMART=2”配置模组进入配网模式; 3. 是否用了公众号的配网辅助工具实现配网功能;

8266芯片能不能做WIFI定位

不可以,芯片不支持该功能

ESP-01S模块配置作为TCP server模式使用如何保存配置

AT固件目前不支持该功能,需要对模块固件做二次开发实现

请问ESP-12F模组配网成功以后是否就不需要重新配网了呢?

是的,配网成功以后,每次重启均会自动连接wifi。