开发环境:Linux(virtualbox虚拟机 ubuntu 22.04)
背景:尝试在虚拟机环境中将ESP32的集中开发方式完成配置,目前正在尝试完成Arduino开发环境的配置,使用的是一个新建的新虚拟机。
描述:已经安装完成Arduino,并且在芯片包管理器中下载乐鑫官方的esp32芯片包v2.0.11完成(注:v2.x版本的下载都很顺利,似乎不需要科学上网,但是v3.x版本的就不行,当然笔者并未将v3下的全部版本都尝试一遍)
现象截图:
首先根据网络检索结果(啥都没有),排查了ch340驱动未安装(ubuntu自带)
然后尝试更换芯片,换成“ESP32 Dev Module”再编译,依旧不行。
刚开始以为,这里的serial库是乐鑫官方编写的串口底层文件,有可能是下载芯片包的时候因为某些原因没有下载成功,于是前往Arduino-ESP32的官方仓库查证,然而在仓库中找不到报错信息中提及的路径和文件。开始怀疑人生....
之后又经过多次尝试,不断查询报错信息设计到的文件或者路径中出现的文件夹名,终于找到了乐鑫的官方库,链接如下:esptool仓库
进入esptool文件夹,发现内部本身并没有serial.py文件,又傻了...
来都来了,索性进入报错的文件(loader.py)内部,看看它是怎么实现导入serial库的,涉及到导库的相关代码细节如下:
可以看到,在第40行有说明,我们这里导入的库,具体来说,是python的pyserial库,刚好这是台新虚拟机,我还没来得及安装python环境,于是先尝试排查原因是否为python3未安装(ubuntu实际已经自带了)
打开虚拟机命令行,输入”python3 --version”确认python是否安装,我以为已经找到真相了,然而虚拟机已经自带python了,又懵了...
好在我已经快要接近终点了,最后终于在检查pyserial库时找到了答案,这个库需要额外安装,之前并没有事先安装,现在只需要补上就好。
打开命令行,先安装pip工具:
apt install python3-pip
安装pyserial库:
pip install pyserial
回到虚拟机的Arduino IDE,重新编译工程,过了!好耶:)