Ubuntu下ESP32-IDF开发环境搭建

Ubuntu下ESP32-IDF开发环境搭建

文章目录

  • Ubuntu下ESP32-IDF开发环境搭建
    • 一、前言
    • 二、软件安装
    • 三、开发环境搭建
      • 3.1 ESP-IDF安装:
      • 3.2 安装编译工具:
    • 四、编译并烧录代码
    • 五、ESP32代码编辑工具

在这里插入图片描述

一、前言

​ 开发ESP32,我们首先就要安装开发环境,其实市面上有超级多的开发和编译工具,都可以编译ESP32工程,在这里我们使用ESP-IDF进行开发,因为ESP-IDF 库是官方目前主推的库,最新的特性更新以及 bug 修复都在 ESP-IDF 上进行发布,而且大部分源码是开源的,大家可以随意获取和查看。基于 ESP-IDF开发还不够,我们还需要开发工具,ESP-IDF 可以在 windows、linux、mac 上进行开发,但官方主推的还是 linux 平台上开发,下面我们就开始搭建环境。

二、软件安装

在这里插入图片描述
在这里插入图片描述

我们需要准备上面四个软件:

  1. VS Code:代码编辑工具。
  2. VMware:虚拟机软件。
  3. MobaXterm:是一款免费的终端工具,可以通过SSH远程登陆到我们的虚拟机上。
  4. ubuntu:我们选用ubuntu作为Linux系统,这也是官方主推的,这里使用ubuntu20.04桌面版,其他的版本可能会有问题。

具体的安装方法在之前我们开发Linux的时候都有安装过,这里我们直接使用

三、开发环境搭建

3.1 ESP-IDF安装:

现在我们把我们的虚拟机打开,并通过MobaXterm SSH远程登陆:

在这里插入图片描述

登陆之后我们通过下面命令安装一些必要的工具:

sudo apt-get install git wget flex bison gperf python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 net-tools

接下来我们把乐鑫的ESP32-SDK下载下来,我们首先创建一个文件夹,并且进入到这个文件夹:

mkdir ESP32
cd ESP32

在下载SDK之前,我们首先需要下载一个工具,因为 github 的访问问题,我们很难直接从 github 上拉取完整的 ESP-IDF 源码,但乐鑫官方提供了一个下载工具,我们通过这个工具可以轻松的获取到 ESP-IDF:

git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git

在这里插入图片描述

我们进入这个文件夹,执行gitee工具切换镜像脚本:

cd esp-gitee-tools
./jihu-mirror.sh set

在这里插入图片描述

执行完毕之后我们退回到ESP32目录,然后我们就可以下载ESP32-SDK了:

cd ..
git clone --recursive https://github.com/espressif/esp-idf.git

在这里插入图片描述

接下来我们进入esp-idf目录下,把ESP-IDF的版本切换成V5.2:

cd esp-idf
git checkout v5.2

在这里插入图片描述

因为我们更新成V5.2版本,然后我们将相应的子模块也切换到对应的版本上:

git submodule update --init --recursive

在这里插入图片描述

这样就切换完成了,我们输入下面命令查看一下:

 git branch

在这里插入图片描述

在实际的操作过程中我们发现安装一些包的时候速度有点慢,我们输入下面两条命令切换源:

pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip config set global.trusted-host mirrors.aliyun.com

在这里插入图片描述

3.2 安装编译工具:

我们直接在esp-idf目录下执行下面命令:

../esp-gitee-tools/install.sh

在这里插入图片描述

接下来我们返回到ESP32路径下,然后从git上下载我们的例程源码:

cd ..
git clone --recursive https://gitee.com/vi-iot/esp32-board.git

在这里插入图片描述

我们可以看到这里有很多例程源码,我们都是可以单独编译的,在编译之前我们要设置一下ESP-IDF的环境变量:

cd ..
cd esp-idf
source export.sh

在这里插入图片描述

四、编译并烧录代码

在前面我们已经把我们的开发环境搭建好了,也安装了编译工具,接下来我们就开始编译一下我们的例程代码:

cd esp32-board			//进入到我们的例程源码路径下
cd helloworld			//进入其中一个工程路径
idf.py build			//编译代码

在这里插入图片描述

我们可以看到编译完成了,因为我们是第一次编译,所以时间会比较久,然后我们将我们的开发板插到电脑上:

在这里插入图片描述

我们的虚拟机检测到开发板插入,我们选择连接到虚拟机,然后虚拟机的右下角就会出现这个标识:

在这里插入图片描述

然后我们输入下面指令把代码下载到我们的开发板:

idf.py flash

在这里插入图片描述

我们发现我们的权限并不够,然后我们该怎么办呢?输入下面命令我们直接把我们dev路径下的ttyUSB0改成最高权限:

sudo chmod 777 /dev/ttyUSB0

这样的方法有一个漏洞,当我们重新拔插开发板的时候,再次烧录它还是会提示权限不够,那我们通过下面一个指令解决这个问题:

sudo usermod -aG dialout usrname

这里的usrname需要换成自己的用户名,然后重启即可!

在这里插入图片描述

我们可以看到成功将我们的例程下载进去了,那我们如何查看调试信息呢?通过下面这个指令:

idf.py monitor		//查看串口调试信息
ctrl+]				//退出

五、ESP32代码编辑工具

在上面我们已经在ubuntu上搭建好了IDF开发环境,同时我们也可以编译和烧录我们的代码,那我们就要在VS Code上编写我们的代码,在之前的Linux开发中我们的VS Code已经通过远程SSH的方式连接到了我们的虚拟机上了,我们可以在上面编写我们的代码:

在这里插入图片描述

但是我们开发ESP32是基于官方的IDF SDK来开发的,里面封装了大量的API供我们调用,我们在编写代码的时候如何查到我们这些API函数呢?

需要安装一个插件:ESP-IDF(注意:要安装到我们的虚拟机上,不要安装到本机)
在这里插入图片描述

查看API原型:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/495029.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修炼内功之函数栈帧的创建与销毁

修炼内功之函数栈帧的创建与销毁 一 前置知识(1)栈(2)相关寄存器和汇编指令 二 函数栈帧三 代码演示函数栈帧的创建(1)代码演示(2)函数栈帧逐帧分析 四 对开篇问题的解答 相信来CSDN…

学习threejs,THREE.PlaneGeometry 二维平面几何体

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️HREE.PlaneGeometry 二维平…

SpringCloud 入门(4)—— 网关

上一篇:SpringCloud 入门(3)—— Nacos配置中心-CSDN博客 Spring Cloud Gateway 作为 Spring Cloud 生态系统的一部分,主要在微服务架构中充当 API 网关的角色。它提供了统一的入口点来处理所有的 HTTP 请求,并将这些请…

石岩基督教福音堂

周末娃,娃的阿婆和我一起去石岩基督教福音堂做礼拜。 这是我第一次进入石岩的教堂。教堂很高。应该有3,4层楼高。 这周末做礼拜的人很多一楼人满了,阿婆去二楼做礼拜,娃和我去三楼的儿童室。很多家长楼下做礼拜,小朋友被安排三楼…

论文《Vertical Federated Learning: Concepts, Advances, and Challenges》阅读

论文《Vertical Federated Learning: Concepts, Advances, and Challenges》阅读 论文概况纵向联邦VFL框架介绍问题定义VFL 训练协议 对通信效率的优化对性能的优化自监督方案(Self-Supervised Approaches)半监督方案(Semi-Supervised Approa…

如何用gpt来分析链接里面的内容(比如分析论文链接)和分析包含多个文件中的一块代码

如何用gpt来分析链接里面的内容,方法如下 这里使用gpt4里面有一个网路的功能 点击搜索框下面这个地球的形状即可启动搜索网页模式 然后即可提出问题在搜索框里:发现正确识别和分析了链接里面的内容 链接如下:https://arxiv.org/pdf/2009.1…

本地部署webrtc应用怎么把http协议改成https协议?

环境: WSL2 Ubuntu22.04 webrtc视频聊天应用 问题描述: 本地部署webrtc应用怎么把http协议改成https协议? http协议在安卓手机浏览器上用不了麦克风本,来地应用webrtc 本来是http协议,在安卓手机上浏览器不支持使…

面向未来的教育技术:智能成绩管理系统的开发

3.1 可行性研究 成绩管理系统开发实现分析需要从不同的角度来进行分析可行性,比如从时间角度,经济角度,甚至操作角度。从不同的角度分析可行性会让成绩管理系统开发具体化,进而达到辩证开发的正确性。 3.1.1 经济可行性 从经济方面…

zabbix监控山石系列Hillstone监控模版(适用于zabbix7及以上)

监控项: 触发器: 监控数据如下:

UE5 渲染管线 学习笔记

兰伯特 SSS为散射的意思 带Bias的可以根据距离自动切换mip的卷积值 而带Level的值mipmaps的定值 #define A8_SAMPLE_MASK .a 这样应该就很好理解了 这个只采样a通道 带Level的参考上面的 朝左上和右下进行模糊 带Bias参考上面 随机数 4D 3D 2D 1D

ArcGIS Pro 3.4新功能3:空间统计新特性,基于森林和增强分类与回归,过滤空间自相关

目录 应用 1:它是相关性还是托布勒第一定律? 应用 2:将空间带入非空间模型 结论 在 ArcGIS Pro 3.4 中,我们在新的空间组件实用程序(Moran 特征向量)工具集中发布了一个新工具 - 从字段过滤空间自相关。…

【微信小程序】2|轮播图 | 我的咖啡店-综合实训

轮播图 引言 在微信小程序中,轮播图是一种常见的用户界面元素,用于展示广告、产品图片等。本文将通过“我的咖啡店”小程序的轮播图实现,详细介绍如何在微信小程序中创建和管理轮播图。 轮播图数据准备 首先,在home.js文件中&a…

vue3封装而成的APP ,在版本更新后,页面显示空白

一、问题展示 更新之后页面空白,打不开 ,主要是由于缓存造成的 二、解决办法 1、随机数代码实现 使用随机数来动态的生成静态资源目录名可以避免浏览器缓存,但同时每次也会导致浏览器每次都下载最新的资源。如果静态资源过大,可…

JAVA HTTP压缩数据

/*** 压缩数据包** param code* param data* param resp* throws IOException*/protected void writeZipResult(int code, Object data, HttpServletResponse resp) throws IOException {resp.setHeader("Content-Encoding", "gzip");// write到客户端resp…

京东零售数据可视化平台产品实践与思考

导读 本次分享题目为京东零售数据可视化平台产品实践与思考。 主要包括以下四个部分: 1. 平台产品能力介绍 2. 业务赋能案例分享 3. 平台建设挑战与展望 作者:梁臣 京东 数据产品架构师 01平台产品能力介绍 1. 产品矩阵 数据可视化产品是一种利用…

springBoot Maven 剔除无用的jar引用

目录 Used undeclared dependencies found Unused declared dependencies found 当项目经过一段时间的开发和维护后,经常会遇到项目打包速度变慢的问题。这通常与项目中包含大量的jar依赖有关,这些依赖之间的关系错综复杂。这种情况在项目维护过程中是…

Apache RocketMQ 5.1.3安装部署文档

官方文档不好使,可以说是一坨… 关键词:Apache RocketMQ 5.0 JDK 17 废话少说,开整。 1.版本 官网地址,版本如下。 https://rocketmq.apache.org/download2.配置文件 2.1namesrv端口 在ROCKETMQ_HOME/conf下 新增namesrv.pro…

uniapp Native.js原生arr插件服务发送广播到uniapp页面中

前言 最近搞了个设备,需求是读取m1卡,厂家给了个安卓原生demo,接入arr插件如下,接入后发现还是少了一部分代码,设备服务调起后触发刷卡无法发送到uniapp里。 中间是一些踩坑记录,最后面是解决办法&#xf…

实践KDTS-WEB从mysql迁移到kingbasev9

数据库国产化替代数据迁移是一个复杂且关键的过程。这涉及到将原有数据库中的数据准确、完整地迁移到新的国产数据库中,同时确保数据的完整性和一致性。人大金仓提供了强大的数据库迁移工具(KDTS)对同构、异构数据库数据迁移; 数…

nmap扫描优化

扫描优化用来提高扫描效率。当描一个大范围网络中的主机时,如果使用通用的方法可能需要很长的时间,此时可以使用一些特定选项进行扫描优化,以提高扫描效率。Nmap提供了几种优化方式,如分组扫描、设置发包方式和超时时间等。 分组…