解决ESP8266无法连Wifi,波特率乱码问题

本文介绍了一例因模块晶振频率设置不当导致波特率异常的问题,并分享了使用Arduino进行WiFi配置的代码示例,包括SmartConfig及自动配置流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到一个奇怪问题,波特率115200,但是实际上却变成了74880

另外Wifi连不上,SmartCoinfig无法使用,测试代码如下

#include <NTPClient.h>
// change next line to use with another board/shield
#include <ESP8266WiFi.h>
//#include <WiFi.h> // for WiFi shield
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
#include <WiFiUdp.h>

const char *ssid     = "A6000cccc";
const char *password = "Liguiolong";

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp.aliyun.com",60*60*8, 30*60*1000);
void SmartConfig()
{
  WiFi.mode(WIFI_STA);
  Serial.println("\r\nWait for Smartconfig...");
  WiFi.beginSmartConfig();
  while (1)
  {
    Serial.print(".");
    delay(500);                   // wait for a second
    if (WiFi.smartConfigDone())
    {
      Serial.println("SmartConfig Success");
      Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
      Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
      break;
    }
  }
}
bool AutoConfig()
{
    WiFi.begin();
    //如果觉得时间太长可改
    for (int i = 0; i < 20; i++)
    {
        int wstatus = WiFi.status();
        if (wstatus == WL_CONNECTED)
        {
          Serial.println("WIFI SmartConfig Success");
          Serial.printf("SSID:%s", WiFi.SSID().c_str());
          Serial.printf(", PSW:%s\r\n", WiFi.psk().c_str());
          Serial.print("LocalIP:");
          Serial.print(WiFi.localIP());
          Serial.print(" ,GateIP:");
          Serial.println(WiFi.gatewayIP());
          return true;
        }
        else
        {
          Serial.print("WIFI AutoConfig Waiting......");
          Serial.println(wstatus);
          delay(1000);
        }
    }
    Serial.println("WIFI AutoConfig Faild!" );
    return false;
}

void setup(){
  Serial.begin(115200);
  delay(100);
  if (!AutoConfig())
  {
    SmartConfig();
  }

  timeClient.begin();
}

void loop() {
  timeClient.update();

  Serial.println(timeClient.getFormattedTime());

  delay(1000);
}

最终发现,是因为我使用的模块的晶振是26Mhz,而烧录设置为了40Mhz,导致不正常

 

### 解决ESP8266无法连接到WiFi的方法 当面对ESP8266无法成功连接至Wi-Fi的情况时,需考虑多种可能因素。硬件配置错误、网络环境不兼容以及编程逻辑不当均可能导致此现象。 #### 频段设置问题 如果使用的是手机热点作为接入点,则应确认该热点的工作频段是否匹配ESP8266的要求。ESP8266仅支持2.4GHz频段,而部分现代路由器或移动设备可能会提供5GHz选项,在这种情况下应当调整无线网络参数以确保其运行于2.4GHz下[^1]。 #### 硬件连线验证 对于采用外部微控制器(如STM32)控制ESP8266的应用场景而言,还需仔细核对两者之间的物理连接方式。例如,当利用USART接口实现串行通信时,要保证信号线正确无误地对接,并且供电稳定可靠[^2]。 #### 软件优化建议 在编写用于初始化Wi-Fi连接的Arduino草图或其他形式固件代码期间,可以采取更稳健的方式处理连接过程中的不确定性。具体来说,通过持续监测`WiFi.status()`返回的状态码来决定何时重试而非简单重复调用`WiFi.begin()`函数;这样做有助于提高初次尝试成功的概率并减少不必要的延迟[^3]。 ```cpp #include <ESP8266WiFi.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected!"); } void loop(){} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值