|
首先看看正常的表现,这是立创的ESP32S3开发板,905这个WiFi信号强度-54dBm。 接着来看看淘宝买的这款ESP32S3开发板,同样的位置905这个WiFi信号强度只有-77dBm,连不上WiFi。 就下面图片这款,淘宝上买了3家同样款式的这个开发板(为什么坚持买这款?因为这款的宽度可以插面包板,其他的都是更宽的插不了面包板,立创的开发板可以插面包板但原价35略贵,要发朋友圈集赞才能19.9优惠买,淘宝这款是25买的),都是这样的信号表现,应该是某个开源方案,没做阻抗匹配,都是ESP32S3R8芯片,都是陶瓷天线(应该不是天线问题,立创的板也是陶瓷天线,信号表现就没问题) 补充一下,淘宝这款开发板还有一个问题,就是出厂固件好像是有问题的,上电会一直复位重启,按住BOOT键后上电再烧录自己的程序就恢复正常了,我买了三家这款板都是有这个问题! 天线微距图
WiFi扫描与连接的测试代码(Arduino): - #include <Arduino.h>
- #include <WiFi.h>
- char* ssid = "905"; // 目标WiFi名称
- char* password = "blog.zeruns.com"; // 目标WiFi密码
- // 将加密类型数值转换为可读字符串
- String getEncryptionTypeString(int encryptionType) {
- switch (encryptionType) {
- case WIFI_AUTH_OPEN:
- return "OPEN (无加密)";
- case WIFI_AUTH_WEP:
- return "WEP";
- case WIFI_AUTH_WPA_PSK:
- return "WPA-PSK";
- case WIFI_AUTH_WPA2_PSK:
- return "WPA2-PSK";
- case WIFI_AUTH_WPA_WPA2_PSK:
- return "WPA/WPA2-PSK (混合)";
- case WIFI_AUTH_WPA3_PSK:
- return "WPA3-PSK";
- case WIFI_AUTH_WPA2_WPA3_PSK:
- return "WPA2/WPA3-PSK (混合)";
- default:
- return "UNKNOWN (未知)";
- }
- }
- // 扫描WiFi并打印详细列表
- void scanAndPrintWiFiNetworks() {
- Serial.println(F("\n==================== 开始扫描WiFi ===================="));
-
- // 停止当前WiFi连接(确保扫描不受影响)
- WiFi.mode(WIFI_STA);
- WiFi.disconnect();
- delay(100);
- // 扫描周边WiFi网络(返回找到的网络数量)
- // 参数1:是否扫描隐藏网络;参数2:是否主动扫描(阻塞式,扫描完成再返回)
- int networkCount = WiFi.scanNetworks(false, true);
-
- Serial.print(F("扫描完成!共发现 "));
- Serial.print(networkCount);
- Serial.println(F(" 个可用WiFi网络\n"));
- // 打印列表表头
- Serial.println(F("序号 | SSID名称 | MAC地址(BSSID) | 加密类型 | 信号强度(dBm)"));
- Serial.println(F("-----|------------------------|----------------------|-------------------|-------------"));
- // 遍历所有扫描到的网络,打印详细信息
- for (int i = 0; i < networkCount; i++) {
- // 格式化打印序号(占3位)
- Serial.printf("%3d | ", i + 1);
-
- // SSID(最多显示20个字符,超出截断)
- String ssid = WiFi.SSID(i);
- if (ssid.length() > 20) {
- ssid = ssid.substring(0, 17) + "...";
- }
- Serial.printf("%-20s | ", ssid.c_str());
-
- // MAC地址(BSSID)
- Serial.printf("%-18s | ", WiFi.BSSIDstr(i).c_str());
-
- // 加密类型(转换为可读字符串)
- String encType = getEncryptionTypeString(WiFi.encryptionType(i));
- Serial.printf("%-17s | ", encType.c_str());
-
- // 信号强度(RSSI,单位dBm,数值越大信号越强,通常-30~-100之间)
- int rssi = WiFi.RSSI(i);
- Serial.printf("%-11d\n", rssi);
- }
- Serial.println(F("\n==================== WiFi扫描结束 ====================\n"));
-
- // 释放扫描缓存(节省内存)
- WiFi.scanDelete();
- }
- void setup() {
- // 初始化串口波特率
- Serial.begin(9600);
- // 等待串口初始化完成(避免开机串口打印丢失)
- delay(1000); // 延长等待时间,确保串口稳定
- Serial.println(F("In Setup function"));
- // 初始化LED引脚
- pinMode(12, OUTPUT);
- pinMode(48, OUTPUT);
- // ========== 新增:先扫描并打印WiFi列表 ==========
- scanAndPrintWiFiNetworks();
- // ========== 原有WiFi连接逻辑 ==========
- Serial.print(F("Connecting to target WiFi: "));
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- // 轮询等待WiFi连接,超时10秒
- uint32_t wifiTimeout = millis();
- while (WiFi.status() != WL_CONNECTED && millis() - wifiTimeout < 10000) {
- delay(500);
- Serial.print(F("."));
- }
- // 打印WiFi连接结果
- if (WiFi.status() == WL_CONNECTED) {
- Serial.println(F(""));
- Serial.println(F("WiFi connected successfully!"));
- Serial.print(F("IP Address: "));
- Serial.println(WiFi.localIP());
- } else {
- Serial.println(F(""));
- Serial.println(F("WiFi connect failed, continue running tasks..."));
- }
- // 创建FreeRTOS任务
- xTaskCreate(MyTask1, "Task1", 2048, NULL, 1, NULL);
- xTaskCreate(MyTask2, "Task2", 2048, NULL, 2, NULL);
- }
- void loop() {
- }
- // 任务1:控制48号引脚LED,0.5秒闪烁一次
- static void MyTask1(void* pvParameters) {
- while (1) {
- Serial.println(F("Task1"));
- digitalWrite(48, !digitalRead(48));
- vTaskDelay(500 / portTICK_PERIOD_MS); // 延时0.5秒
- }
- }
- // 任务2:控制12号引脚LED,1秒闪烁一次
- static void MyTask2(void* pvParameters) {
- while (1) {
- Serial.println(F("Task2"));
- digitalWrite(12, !digitalRead(12));
- vTaskDelay(1000 / portTICK_PERIOD_MS); // 延时1秒
- }
- }
复制代码
2026.1.22 补充1: 尝试更换天线,无明显变化,更换天线π型电路的电感,用2.2nH的,信号提升明显,但还是有点差,不过比原先好太多了,公司WiFi能有-67dBm了,但还是有点差(我之前在公司做的某款板子用的同款陶瓷天线有-55dBm)
2026.1.22 补充2: 突然发现它这个陶瓷天线和IPEX座是直接并联的,没有用空焊盘来分开做选择(正常一般这么做的),插上外置天线后同一个WiFi信号立马从-67dBm提升到-52dBm,离谱 还有π型电路的器件摆放和走线也非常不合理
2026.1.24 补充3: 插上外置天线,也连不上WiFi,创建AP热点用手机也搜不到信号(同样代码立创的板没问题),疑似因为阻抗不连续导致发射的信号全反射回去了,或者因为反射的信号造成射频发射部分损坏了... 这种设计都能量产出来卖,世界真是个巨大的草台班子啊... 再补充一下,这块板的ESP32S3芯片对比正常的板子发热略大了点,下图是两块板子AP模式(WiFi热点)下运行5分钟后的热成像图,左边是立创的板子,ESP芯片温度48℃,右边是淘宝那款板子,ESP芯片温度60.2℃,明显高不少,应该是射频部分出问题了,功耗也高了0.4瓦左右。
推荐阅读
|