Wemos D1 mini Airgradient编译报错SoftwareSerial.h找不到解决方法
问题根因
这个报错和头文件搜索路径配置错误无关,本质是当前Arduino IDE选中的开发板架构,与SoftwareSerial库的适用架构不匹配。
你找到的SoftwareSerial.h位于hardware/arduino/avr/路径下,属于AVR架构(Arduino Uno、Nano等ATmega主控板)的内置核心库,只有选中AVR架构开发板时,IDE才会将该路径加入头文件搜索范围。
AirGradient DIY套件全系列采用ESP8266(老款)或ESP32(新款)主控,属于ESP架构,编译时不会扫描AVR目录下的库文件,自然触发找不到头文件的报错。之前能正常编译上传,通常是改代码过程中误切换了开发板选项,或是使用的AirGradient库版本没有做跨架构适配。
解决步骤
- 核对主控型号,切换正确开发板
先确认手上套件的主控:老款为ESP8266(Wemos D1 Mini版型),新款为ESP32。打开IDE顶部工具->开发板菜单,选中对应板型:- ESP8266款选择
LOLIN(WEMOS) D1 R2 & mini - ESP32款选择
ESP32 Dev Module
选完后确认对应串口号选中,再重新触发编译。
- ESP8266款选择
- 升级适配版本的依赖库
如果选对板卡仍报错,说明你使用的AirGradient库版本过老,硬编码引用了AVR专属的SoftwareSerial库:
直接将AirGradient库升级到官方最新版本,新版已经做了ESP架构适配,不会强制引用AVR专属头文件。
要是不想升级库,可以手动修改AirGradient.h里的头文件引用逻辑:ESP8266/ESP32核心都自带软串口实现,不需要依赖AVR版的SoftwareSerial,删掉#include <SoftwareSerial.h>的引用,替换为对应架构自带的软串口头文件即可。 - 排查库冲突
如果你之前手动往Arduino第三方库目录存放过第三方移植版SoftwareSerial,先将其删除,避免和板卡核心自带的软串口库产生命名冲突。
内容的提问来源于stack exchange,提问作者Adriaan
相关产品推荐
相关产品推荐

