Linux下使用Arduino开发esp32
前言
esp32的开发环境有很多种选择,但配置起来最简单的估计就是使用Arduino IDE,尤其适用于用于学习的新手
Arduino IDE的下载和安装
Arduino IDE被包含在很多包管理器内,因此可以很方便地通过命令行进行安装,也可以去官网下载相应安装包
Ubuntu / Deepin
sudo apt update && sudo apt install arduino
本人已经有一段时间没使用Ubuntu了,印象里apt安装的不是最新版,建议使用snap
sudo snap install arduino
Manjaro / Archlinux
sudo pacman -S arduino
Arduino IDE的配置
Arduino IDE默认没有esp32的开发板,因此需要在软件里点击文件 -> 首选项
(或者快捷键Ctrl + ,
),点击附加开发版管理器网址,输入
https://dl.espressif.com/dl/package_esp32_index.json
回到主界面,依次点击工具 -> 开发板 -> 开发板管理器
,进入管理器后等待索引下载完成后搜索esp32进行下载即可(过程比较慢,可以科学上网或者自行寻找其他解决方法),中间可能会失败,尤其是网络不好的时候,建议多尝试几次
安装好后选择相应的板子即可进行开发
其他问题解决
No module named ‘serial’
编译时可能会出现如下报错
Traceback (most recent call last):
File "/home/xxxxxx/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 38, in <module>
import serial
ModuleNotFoundError: No module named 'serial'
exit status 1
为开发板 ESP32 Dev Module 编译时出错。
这是因为没有serial的库导致的,安装好即可
pip install pyserial
没安装pip的可以先输入下面命令进行安装(本人使用manjaro, 其他linux系统自行百度安装)
sudo pacman -S python-pip
下载慢的话可以给pip换源
不存在或开发板没有连接
上传时可能会出现如下报错
serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'
选择的串口 serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'
不存在或开发板没有连接
一般来讲,如果连接开发板后arduino界面中,工具 -> 端口
选项中多出一个选项,基本可以确定电脑和开发板之间正确连接
本人电脑未连接之前只有/dev/ttyS4
,连接后多了/dev/ttyUSB0
也可以通过如下命令检查电脑是否与开发版连接,命令中的ttyUSB0
即为我多出来的端口选项
sudo dmesg | grep ttyUSB0
输出如下
[ 995.534024] usb 1-1: cp210x converter now attached to ttyUSB0
[ 8577.290222] cp210x ttyUSB0: cp210x converter now disconnected from ttyUSB0
[11669.557983] usb 1-1: cp210x converter now attached to ttyUSB0
[11669.655877] cp210x ttyUSB0: cp210x converter now disconnected from ttyUSB0
[11670.130831] usb 1-1: cp210x converter now attached to ttyUSB0
可以看到,输出显示我的开发板已经跟我电脑连接上了,如果没连接上的话,检查电脑驱动是否有问题
如果已经连接且端口选择正确,但仍提示不存在开发板或没有连接,这种情况下很有可能是端口没有读写权限
Ubuntu在打开软件时会自动检测并提醒,但是arch或者manjaro不会,其他linux发行版我也没试过
在多数linux发行版中,可以输入下面命令
sudo usermod -a -G dialout $USER
在Archlinux中,可以输入下面命令
sudo usermod -a -G uucp $USER
然后重启电脑
详见https://docs.espressif.com/projects/esp-idf/zh_CN/v4.3.4/esp32/get-started/establish-serial-connection.html