距离上一次更新文章已经过去整整一个月还多了,也不是因为懒,主要是最近工作有点忙,假期回老家也没时间,一直没能更新文章,今夜得闲更新一篇,其实本来是想录制视频的,但是考虑到很多人不太喜欢看视频,所以就先写一篇文章来“充充数”了,之所以写ESP32的学习笔记,主要也是对ESP32的性能比较喜欢,前段时间也是买了一块ESP-EYE开发板,可以进行人脸识别,语音唤醒,而且都是基于本地的,这就足以看出ESP32的性能是有多强大了,对ESP-EYE感兴趣的可以看一下这篇文章:
乐鑫 Espressif:ESP-EYE 发布,宅人们离找个机器伴侣不远了
其次就是专栏叫做“IAMLIUBO的神奇物联网之旅”,怎么能只围绕一款芯片去探讨呢,对吧?所以,以后的文章会更加多元化,因为自己接触的物联网技术也还是比较多的,以后慢慢的也会写一些关于LoRa、NB-IoT、BLE、Zigbee等相关的文章,也很感谢大家的关注,写这篇文章的时候,专栏关注人数已经有306人了,没有任何的推广,相信大家的关注都是自愿的,那我肯定也会继续努力,多多写文章。
最后,为什么之前写了在windows搭建开发环境的文章,还要再写一篇在Linux上搭建环境的文章呢?其实主要是,我现在个人开发习惯的改变,越来越喜欢在Linux下去做开发,所以考虑到以后写的一些教程可能都会是在Linux环境下操作的,避免大家因为开发环境不同而出现各种问题,所以就有了这篇文章,所以希望大家以后开发尽量可以和我的开发环境保持一致。
废话不多说,我们开始吧,个人感觉自己稍微有些啰嗦,啊哈哈哈,大家将就一下吧~
开始,怎么开始呢?这是一个好问题,其实本文所有的操作都可以通过参考官方文档完成,我也是根据官方文档完成,这里只是细化一部分细节,帮助没有接触过Linux系统的人更简单的搭建起来,那我们先去看一下官方文档~这里我们选择v3.1分支,因为我现在使用的代码就是v3.1版本的,貌似现在更新到了4.0,不过基础的东西是不会有多大改变的,后面我们也可以很轻松的切换到4.0版本进行开发。
ESP-IDF 编程指南 v3.1 文档docs.espressif.com!
往下滑,找到第一步设置工具链,然后我们选择Linux,我这里使用系统是ubuntu 16.04。
然后我们需要安装相关依赖,直接运行下面的命令:
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-serial
可能会耗费一点时间,耐心等待一会即可~
等待的时候我们也可以一边将编译工具链下载下来,请大家自行选择与自己机器匹配的版本,然后点击连接下载即可,现在工具链已经更新到5.2.0版本了。
下载完成后我们对其解压缩,文档上写的是解压到"~/esp"目录下,不过每个人都有每个人的习惯,我这里是解压到了"/opt"目录下,建议大家可以跟我一样,我们运行下面的命令:
sudo tar -zxvf xtensa-esp32-elf-5.2.0.tar.gz -C /opt
大家解压完成后,可去"/opt"目录看一下,是不是有了这个目录:
然后我们设置一下环境变量,在"~/.profile"文件的最后我们增加如下一行(如果你之前解压的目录跟我一样的话):
export PATH="$PATH:/opt/xtensa-esp32-elf/bin"
到这一步,已经完成一大半了,我们去验证一下我们到这一步为止做的操作到底是不是正确的:
source ~/.profile
echo $PATH
xtensa-esp32-elf-gcc -v
如果可以成功看到上面这个图中圈出来的字,那么恭喜你,万里长征走了一大半了,接下来我们开始拉取esp-idf框架,相信我,这是一起极其漫长的过程,可能也跟我的网有关,请大家耐心等待即可:
git clone -b v3.1 --recursive https://github.com/espressif/esp-idf.git
这里同样的我们也拉取3.1这个分支的代码,这样文档和代码就能对应起来了,拉取很漫长,整个框架代码大约有500多M。
拉取完成后,我们再设置一下"IDF_PATH"的环境变量,我们以后编译工程都是通过这个变量将SDK和我们的用户程序建立其联系的,看下官方是怎么说的:
这里我设置的跟官方不太一样,主要是我电脑中还有ESP8266的RTOS开发环境,而他们两个都是通过这个相同的变量名称将SDK和用户工程联系起来的,所以我这里采用的是比较常见的做法,采用"alias"-命令别名,当我们需要开发哪一个时,我们将其需要的环境变量导出,同样的我们在"~/.profile"文件的最后追加这两行(请自行替换你的idf-esp目录,如果你没有开发ESP8266-RTOS-SDK,第一句可以不用):
alias get_idf_esp8266='export IDF_PATH="$HOME/espressif/ESP8266_RTOS_SDK"'
alias get_idf_esp32='export IDF_PATH="$HOME/espressif/esp-idf"'
这个命令什么意思呢?就是我们将"export IDF_PATH="$HOME/espressif/esp-idf"",这个命令给了它一个新名称"get_idf_esp32",但我们不在终端运行"get_idf_esp32"这个命令时,IDF的路径是不会导出到环境变量中的,只有我们需要的时候,通过这个命令才会生效,而且是针对当前终端,这就很好的避免了同时开发ESP32和ESP8266的冲突,如图:
两个终端,执行的命令不同,"IDF_PATH"的结果也不同,而且互不影响。
到这一步,恭喜你已经全部完成,接下来应该就是万众瞩目的"hello world"了,但是夜比较深了,不如~~~明天再更。
我的ESP32的Github仓库,近期会不断完善更多例程的,欢迎大家点个star关注~
IAMLIUBO-Github-ESP32