『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 16165|回复: 11

[经验分享] 【原创首发】ESPHome里ESP8266+SSD1306无法连接wifi问题的解决办法

[复制链接]

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2021-6-23 17:45:31 | 显示全部楼层 |阅读模式
这两天在 ESPHome 里学着折腾 SSD1306 OLED 显示屏,碰到了这个非常难以理解的致命问题,经过一通乱搜、乱试,所幸歪打正着,找到了一个很完美的解决方案。

事情是这个样子滴。。。

开始时只显示文字内容,一切完美。

然后添加了两个图片,很简单的,64x64像素的黑白 png,才454字节的大小。OTA后发现虽然ESP8266模块已经启动、显示屏也正常显示,但就是无法连接WiFi!

特意留出串口查看日志,发现如下内容:
[I][wifi:235]: WiFi Connecting to 'xxxxxx'...
[W][wifi_esp8266:444]: Event: Disconnected ssid='xxxxxx' bssid=xx:xx:xx:xx:xx:xx reason='Auth Expired'
[W][wifi:532]: Error while connecting to network.
[W][wifi:570]: Restarting WiFi adapter...
无限反复,也可以扫描出周围的所有WiFi信号,但就是连不上指定网络,原因也一直不变:鉴权超时。

同样的代码,在ESP32上跑毫无问题。难道ESP8266就用不成SSD1306模块?

hassbian里搜了搜,有同学反馈过同样问题,但没有答案。搜了搜 HA 官方的esphome 论坛,有一个人说的好像是这个问题,又好像不是——标题说 no wifi,内容说无法与0x3c通信;几条回复也都没有有效的解决办法。

阴差阳错,看到有帖子说想在启动时关闭显示屏,里面提到可以设置自动化的启动优先级 boot_priority,达到在WiFi连接之前执行的目的。试了试在启动时关闭显示屏,无效(仍然无法连接wifi),于是我本着死马当活马医的想法,在 i2c 下面加入 boot_priority 选项,ESPHome提示错误,不支持,不过非常给力的问我是不是想要 setup_priority?!!!!!嗯???这不就是我想要的吗?!

于是改为 setup_priority,在 display 下面也加上这一条、编译、下载、烧写、成功启动并成功连接!

喏,就是这个样子:
i2c:
  sda: 0
  scl: 2
  scan: false
  setup_priority: -100
display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    id: ssd1306
    setup_priority: -100
这样,ESP-01S就又可以愉快地玩耍了!


回复

使用道具 举报

43

主题

412

帖子

3806

积分

元老级技术达人

积分
3806
金钱
3389
HASS币
136
发表于 2021-6-23 20:29:45 | 显示全部楼层
嘎嘎,牛人,果断抄袭测试
回复

使用道具 举报

22

主题

656

帖子

4574

积分

版主

Rank: 7Rank: 7Rank: 7

积分
4574
金钱
3903
HASS币
40
发表于 2021-6-23 22:14:57 | 显示全部楼层
谢谢大神。
虽不知此原理为何,但貌似可收藏备用。
记得烧录其他esp模块时,如sonoff basic或8266 nodemcu,也曾出现过能扫描到ap的wifi信号,但就是无法连接的情况,串口的日志和你这显示的一样。有时候解决了,是通过删除esphome中不必要的组件,如binary sensor;有时无法解决,只能重买一个模块。
也许以上就是这种问题的解决方法!
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-6-23 22:44:42 来自手机 | 显示全部楼层
whxciotw 发表于 2021-6-23 22:14
谢谢大神。
虽不知此原理为何,但貌似可收藏备用。
记得烧录其他esp模块时,如sonoff basic或8266 nodemcu ...

客气了!

感觉像是同样的问题。

这个参数的作用就是把相应组件的启动优先级调低、等其他各种自己都启动设置好了再进行设置,从而避免对其他组件初始化动作的干扰。

至于这个问题的深层原因我也不太清楚,感觉跟8266的处理能力、内存、供电等可能有关系。
回复

使用道具 举报

7

主题

188

帖子

2345

积分

金牌会员

Rank: 6Rank: 6

积分
2345
金钱
2157
HASS币
0
发表于 2021-6-24 06:41:14 来自手机 | 显示全部楼层
感谢,我也遇到这个问题了,抽空更新下试试
回复

使用道具 举报

23

主题

660

帖子

3110

积分

论坛元老

Rank: 8Rank: 8

积分
3110
金钱
2450
HASS币
10
发表于 2021-6-24 22:07:57 | 显示全部楼层
深受启发,感谢大佬分享
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-7-1 23:31:43 来自手机 | 显示全部楼层
ryanh7 发表于 2021-7-1 23:12
i2和display的优先级都高于wifi,看上去有点像处理能力不足了,可以提高i2c的频率或者修改一下update_inter ...

是的,关于update interval默认值文档里说的是错的。

我也怀疑是8266处理能力不足导致的,提高i2c频率岂不是要消耗更多的处理能力?
回复

使用道具 举报

5

主题

87

帖子

989

积分

论坛DIY达人

积分
989
金钱
882
HASS币
80
发表于 2022-2-10 21:28:00 | 显示全部楼层
感谢大佬分享,之前也遇到过类似的问题,下次参考大佬的方法试试
回复

使用道具 举报

1

主题

9

帖子

142

积分

注册会员

Rank: 2

积分
142
金钱
133
HASS币
0
发表于 2022-8-6 16:30:00 | 显示全部楼层
这个一定要赞!
回复

使用道具 举报

20

主题

122

帖子

790

积分

高级会员

Rank: 4

积分
790
金钱
668
HASS币
0
发表于 2022-10-7 10:52:25 | 显示全部楼层
咋我的屏改了后不显示呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 15:20 , Processed in 0.098303 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表