第0步:选择手册
手册有很多版本,不同版本针对的开发环境有所不同。
https://www.wolai.com/auPiYHni2Rxov7T2iVKDnv#pMyuWskA6vYmaUwvAitwnY
例如,旧版本的开发环境可能是Ubuntu 16.04默认的Python开发工具还是2.x.x版本。而现实情况是pythn2基本已经被淘汰了,新版的手册对应的也是Python3,所以要选择新版手册,但是beta版不稳定,所以选择一个最新的release。
第一步:安装准备
按照手册进行,根据自己的系统选择合适的命令,这里使用适合Ubuntu的命令。
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
Tips : 设置python版本
按照下面方式,设置 Python 3 为 默认 Python 版本,否则后面会出现找不到python模块的错误。
#安装python3
sudo apt-get install python3 python3-pip python3-setuptools
#设置 Python3 为默认 Python 版本
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 && alias pip=pip3
第二步:获取 ESP-IDF 和 工具模块
使用GitHub仓库下载速度过于缓慢,使用国内的Gitee仓库可以上百倍的缩短获取仓库的时间,这里只按照Gitee仓库的方式说明。
https://www.wolai.com/auPiYHni2Rxov7T2iVKDnv#fvwBQNqu8Qkj7358cvwJqf
1,获取 esp-idf
创建 esp 路径,切换到 esp 路径,并把ESP-IDF 下载至 ~/esp/esp-idf
。
按照以下命令进行,
mkdir -p ~/esp
cd ~/esp
git clone -b release/v4.3 --recursive https://gitee.com/EspressifSystems/esp-idf.git
补充说明:
--recursive
参数代表克隆包括子模块在内的所有仓库。
-b release/v4.3
参数代表克隆 release 分支的 4.3 版本分支。
git clone https://gitee.com/EspressifSystems/esp-idf.git
则可克隆master分支。
https://gitee.com/EspressifSystems/esp-idf.git
参数则代表克隆的仓库地址,如过想要使用GitHub仓库则更换为 https://github.com/espressif/esp-idf.git
即可
下图可见,使用 GitHub 仓库,龟速。
提示输入当前gitee仓库的登录用户名和密码的时候,直接 ctrl + c
停止跳过即可。
2,获取工具模块
关于tools获取,参考
把ESP-IDF 下载至 ~/esp/esp-gitee-tools
cd ~/esp
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
下载后的工具模块需要更新
submodule-update.sh
脚本支持将待更新 submodules 的工程路径作为参数传入,例如:submodule-update.sh PATH_OF_PROJ
。
假如 Step 2 中 clone 的 esp-idf
位于 ~/esp/esp-idf
目录,可使用以下方式来更新:
cd esp-gitee-tools
./submodule-update.sh ~/esp/esp-idf
Tips
-
注意路径
esp-gitee-tools
和参数目录~/esp/esp-idf
-
如果仓库中的 submodules 没有增加或减少,在使用过该脚本的工程内需要对仓库进行更新的情况下,无需一定要再次执行该脚本,可以使用标准的 git 命令,如
git pull && git submodule update --init --recursive
来更新,当然要再次使用该脚本也是没有问题的。 -
如果要切换版本,由于不同版本包含的 submodules 可能不同,建议切换版本后再次执行该脚本。
-
如果执行脚本过程中由于网络原因异常退出,可以重复执行该脚本。
第三步:设置工具
除了 ESP-IDF 本身,您还需要安装 ESP-IDF 使用的各种工具,比如编译器、调试器、Python 包等。
注意使用备选方案
按照备选方案安装从Espressif服务器下载安装,提高安装速度。
要在安装工具时优先选择 Espressif 下载服务器,请在运行 install.sh
时使用以下命令:
cd ~/esp/esp-idf
export IDF_GITHUB_ASSETS="
dl.espressif.com/github_assets
"
./install.sh
很幸运的安装成功咯,可以进入下一步设置环境变量了。
第四步:设置环境变量
安装的工具尚未添加至 PATH 环境变量,无法通过“命令窗口”使用这些工具。因此,必须设置一些环境变量,这可以通过 ESP-IDF 提供的另一个脚本完成。
在需要运行 ESP-IDF 的终端窗口运行以下命令:
. $HOME/esp/esp-idf/export.sh
注意,命令开始的 “.” 与路径之间应有一个空格!
运行过后,提示已经设置成功,可以编译工程了。
第五步:开始创建工程
设置环境变量成功后,可以开始准备开发 ESP32 应用程序了。
以 esp-idf
中 examples
目录下的 get-started/hello_world
为例。
将 get-started/hello_world
工程复制到本地的 ~/esp
目录下。也可以不复制出来,直接编译示例,但是不推荐,直接修改或编译会污染参考文件,为后续检查问题带来麻烦。
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
第六步:连接设备
将 ESP32 开发板连接到 PC,并查看开发板使用的串口。
通常,串口在不同操作系统下显示的名称有所不同:
-
Windows 操作系统:
COM1
等 -
Linux 操作系统: 以
/dev/tty
开始 -
macOS 操作系统: 以
/dev/cu.
开始
有关如何查看串口名称的详细信息,请见 与 ESP32 创建串口连接。
Tips
请记住串口名,您会在下面的步骤中用到。
选择连接到虚拟机
成功连接到 linux 虚拟机
使用 ls /dev/tty*
命令查看端口,因为这里只连接到虚拟机一个USB设备,所以最后一个 ttyUSB0
就是我们设备的端口
**Linux 添加用户到 **dialout
需要把当前用户添加到 dialout
用户组,用于通过 USB 对串口进行读写操作。可以通过以下命令,将用户添加到 dialout
组,从而获许读写权限:
sudo usermod -a -G dialout $USER
请重新登录,确保串口读写权限生效。
用以下命令查看当前用户的所属组
groups $USER
第七步:配置
请进入 第五步:开始创建工程 中提到的 hello_world
目录,并运行工程配置工具 menuconfig
。
cd ~/esp/hello_world
idf.py
set-target esp32
idf.py
menuconfig
运行 idf.py set-target esp32
成功后,结果如下:
运行 idf.py
menuconfig
成功后,结果如下:
可以通过配置 Serial flasher config - - - >
调试时(即烧录完成后芯片对外通信的)的串口波特率,下图中默认波特率是115200 bps。
第八步:编译工程
请在工程目录下使用以下命令,编译烧录工程:
idf.py build
运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成 bootloader、分区表和应用程序二进制文件。如果一切正常,编译完成后将生成 .bin 文件。
运行成功结果如下:
在 ~/esp/hello_world
目录下有生成的 .bin 文件。
第九步:烧录到设备
使用以下命令,将刚刚生成的二进制文件 (bootloader.bin, partition-table.bin 和 hello-world.bin) 烧录至您的 ESP32 开发板:
sudo chmod 777 PORT
idf.py -p PORT flash
请将 PORT 替换为 ESP32 开发板的串口名称,具体可见 第六步:连接设备。我这里是 /dev/ttyUSB0
因此需要用如下指令:
sudo chmod 777 /dev/ttyUSB0
idf.py -p /dev/ttyUSB0 flash
运行命令后,成功结果如下:
Tips
第十步:检查烧录结果
按照上一步的提示,硬复位设备。短按boot 按键
。
1,方式一,使用linux监听结果
使用 idf.py -p PORT monitor
命令,监视 “hello_world” 工程的运行情况。注意,不要忘记将 PORT 替换为相应的端口名称,我们这里是 /dev/ttyUSB0
,因此运行下面命令。
idf.py -p /dev/ttyUSB0 monitor
运行成功结果如下:
如图所示,监听到端口收到 hellow world!
数据
使用 ctrl + ]
组合键,停止监听端口数据。
2,方式二,使用Win串口调试助手监听结果
点击 虚拟机
- 可移动设备
- 对应的移动设备(这里是SiliconCP2102xxx
) - 断开连接(连接主机)
,释放设备的端口给windows。
打开串口调试助手。选择对应的 串口号
,配置对应的波特率
,这里是 115200
然后点击打开串口,即可接受到 相应的串口数据了。
恭喜,完成了ESP32开发环境的快速搭建了。
【参考】
https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.3/esp32/get-started/index.html
https://gitee.com/EspressifSystems/esp-idf
https://gitee.com/EspressifSystems/esp-gitee-tools/blob/master/docs/README-submodule-update.md