乐鑫技术交流
直播中

敷衍作笑谈

10年用户 1023经验值
擅长:制造/封装 连接器 光电显示 接口/总线/驱动 RF/无线
私信 关注
[问答]

ESP8266某些设备无法连接JOIN-LEAVE怎么解决?

我正在使用带有 SOFTAP-Mode 的ESP8266。

与我的安卓手机连接和使用网络服务器可以毫无问题。此外,kolleagues没有报告任何问题。

我也想与我的笔记本连接,但它是不可能的,或者换句话说:在很短的时间内:它永久加入并离开 AP。

请帮助我或提供任何建议。

我正在使用 SDK 1.3 并按照我记录的 LOG 进行操作:
========================================================
加 1
援助 1
站:5c:c5:d4:de:4c:ac连接,AID = 1
站:5c:c5:d4:de:4c:交流休假,AID = 1
rm 1
. 60
. 61
加 1
援助 1
站:5c:c5:d4:de:4c:ac连接,AID = 1
站:5c:c5:d4:de:4c:交流休假,AID = 1
rm 1
========================================================


我也尝试了 SDK 1.1 和 SDK 1.2,但没有成功。



这里使用的初始化序列:
====================================================

void dhcps_lease(void)
{
结构体 dhcps_lease dhcp_lease;
IP4_ADDR(&dhcp_lease.start_ip, 10, 10, 10, 20);
IP4_ADDR(&dhcp_lease.end_ip, 10, 10, 10, 100);
wifi_softap_set_dhcps_lease(&dhcp_lease);
}

主要例程。初始化 stdout、I/O 和 Web 服务器,我们就完成了。
void user_init(void)
{

  ioObj=&ioObj_static;

结构体 softap_config apConfig;
结构体 ip_info ipinfo;
夏尔·西德[33];
字符密码[33];
查尔·麦克地址[17];
字符信息[150];
int i;

struct SettingsData *设置;

system_timer_reinit();
ets_wdt_disable();

stdoutinit();
  for(i=0;i<1000;i++) os_delay_us(1000);
ets_wdt_enable();


  os_printf("Startingrn");

settings=getsettingsdataptr();
if (1==1 || readSettings()==false)
  {
    os_printf("Read Failedrn");
    os_sprintf(settings->password,"%s","esptemplate");
    os_sprintf(settings->ssid,"%s","esptemplate");
    os_sprintf(settings->configstring,"");
    for(i=0; i<40; i++) settings->params[i]=0L;
writesettings();
  }


if( wifi_get_phy_mode() != PHY_MODE_11G )
  {
    os_printf("*** Setting PHY_MODE ...rn");
wifi_set_phy_mode( PHY_MODE_11B );
  }
if(wifi_get_opmode() != SOFTAP_MODE)
  {
wifi_set_opmode_current(softap_mode);

  }

wifi_set_opmode_current(softap_mode);

wifi_softap_dhcps_stop();

  IP4_ADDR(&ipinfo.ip, 10, 10, 10, 1);
  IP4_ADDR(&ipinfo.gw, 10, 10, 10, 1);
  IP4_ADDR(&ipinfo.netmask, 255, 255, 255, 0);

  wifi_set_ip_info(SOFTAP_IF, &ipinfo);

  wifi_softap_get_config(&apConfig);


os_memset(apConfig.ssid, 0, sizeof(apConfig.ssid));
  os_sprintf(ssid, "%s", settings->ssid);
os_memcpy(apConfig.ssid, ssid, os_strlen(ssid));

如果 (wifi_get_opmode() == SOFTAP_MODE)
  {
如果 (1==0)
    {
SSID的
os_memset(apConfig.password, 0, sizeof(apConfig.password));
      os_sprintf(password, "%s", settings->password);
os_memcpy(apConfig.password, password, os_strlen(password));
apConfig.authmode = AUTH_WPA_WPA2_PSK;
    }
    else
    {
没有密码
os_memset(apConfig.ssid, 0, sizeof(apConfig.ssid));
      os_sprintf(ssid, "%s", "esptemplate2");
os_memcpy(apConfig.ssid, ssid, os_strlen(ssid));
apConfig.authmode = AUTH_OPEN;
    }

apConfig.channel = 1;
apConfig.max_connection = 2;
apConfig.ssid_hidden = 0;
apConfig.ssid_len = 0;
apConfig.beacon_interval = 100;

    wifi_softap_set_config_current(&apConfig);
  }

dhcps_lease();
wifi_softap_dhcps_start();


system_os_task(at_procTask、at_procTaskPrio、at_procTaskQueue、at_procTaskQueueLen);
system_os_post(at_procTaskPrio, 0, 0 );

进程io(ioobj,ioaction_init);
进程io(ioobj,ioaction_setoutputs);

os_timer_disarm(ETSTimer *ptimer)
  os_timer_disarm(&working_timer);
os_timer_setfn(ETSTimer *ptimer, ETSTimerFunc *pfunction, void *parg)
  os_timer_setfn(&working_timer, (os_timer_func_t *)working_cb, (void *)0);
void os_timer_arm(ETSTimer *ptimer,uint32_t毫秒,bool repeat_flag)
  os_timer_arm(&working_timer, 100, 1);

httpdInit(builtInUrls, 80);

  os_printf("nReadyn");
}
      

回帖(1)

青sky

2024-7-19 14:38:31
从您提供的信息来看,您的ESP8266设备在与某些设备(如笔记本电脑)连接时遇到了问题。以下是一些建议和可能的解决方案,以帮助您解决这个问题:

1. **检查固件版本**:确保您的ESP8266设备使用的是最新版本的固件。过时的固件可能会导致连接问题。

2. **检查信道设置**:在ESP8266中,信道设置可能会影响连接质量。尝试更改信道设置,看看是否能够解决问题。您可以在代码中找到信道设置,如下所示:
   ```c
   wifi_set_channel(1); // 尝试更改信道号(1-14)
   ```

3. **检查加密类型**:确保您的ESP8266设备使用的加密类型与您的笔记本电脑兼容。例如,如果您的设备使用WPA2加密,而您的笔记本电脑仅支持WPA,那么连接可能会失败。您可以在代码中找到加密类型设置,如下所示:
   ```c
   wifi_station_set_encrypt_type(STATION_ENCRYPT_TYPE_WPA2_PSK);
   ```

4. **检查SSID和密码**:确保您输入的SSID和密码正确无误。错误的SSID或密码可能会导致连接失败。

5. **检查设备兼容性**:某些设备可能与ESP8266不完全兼容。尝试将ESP8266与其他设备(如智能手机)进行比较,看看是否存在类似的问题。

6. **检查电源供应**:不稳定的电源供应可能会影响ESP8266的性能。确保您的设备连接到稳定的电源。

7. **检查日志输出**:从您提供的日志输出来看,设备似乎在尝试连接时出现了一些问题。您可以在代码中添加更多的日志输出,以便更好地了解问题所在。例如:
   ```c
   os_printf("Connecting to AP...n");
   ```

8. **尝试使用其他设备**:如果可能的话,尝试使用其他ESP8266设备,看看问题是否仍然存在。这可以帮助您确定问题是否与特定的设备有关。

9. **更新SDK**:您提到您正在使用SDK 1.3。尝试更新到最新版本的SDK,看看是否能够解决问题。

10. **寻求社区支持**:如果以上建议都无法解决问题,您可以在ESP8266社区论坛或相关技术论坛上寻求帮助。那里的用户可能已经遇到了类似的问题,并可能提供解决方案。

希望这些建议能够帮助您解决问题。祝您好运!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分