【桌面小屏幕项目】ESP32开发环境搭建
视频教程链接:
【【有手就行系列】嵌入式单片机教程-桌面小屏幕实战教学 从设计、硬件、焊接到代码编写、调试 ESP32 持续更新2022】 https://www.bilibili.com/video/BV1wV4y1G7Vk/?share_source=copy_web&vd_source=4fa5fad39452b08a8f4aa46532e890a7
一、esp32资料汇总
ESP32 Wi-Fi & 蓝牙 MCU I 乐鑫科技
ESP-IDF 编程指南 - ESP32 - ‒ ESP-IDF 编程指南 release-v4.4 文档
二、环境搭建
2.1 Window开发环境搭建参考
较简单,适合小白用户
DesktopScreen Window开发环境搭建
2.2 Linux开发环境搭建参考
较为复杂,适合专业用户
2.2.1 虚拟机环境搭建参考:
1、虚拟机安装
VMwareWorkstation下载链接
最新超详细VMware虚拟机下载与安装
打开共享文件夹
VMware中虚拟机Ubuntu访问Windows7主机文件夹的设置流程_shuwu-CSDN博客
cp /mnt/hgfs/vmshare/test.txt .
cp test1.txt /mnt/hgfs/vmshare/
2、虚拟机中安装Ubuntu系统
Index of /ubuntu-releases/18.04/->ubuntu-18.04.5-desktop-amd64.iso 下载完成后验证MD5
超详细VMware安装Ubuntu虚拟机步骤
vmware workstation16许可证密钥 - yg0070 - 博客园
Ubuntu刚安装后,给root用户设置密码的具体步骤:打开一个终端,然后输入下面的命令
sudo passwd 然后输入密码
-共享文件夹
VMware设置共享文件夹后,虚拟机中仍然看不到,执行以下指令
sudo mkdir /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other
3、在Window系统安装代码编辑器VSCode
Window安装VSCode
国内源下载或者直接下载下发安装包,直接安装即可。
暂时无法在飞书文档外展示此内容
4、在虚拟机Ubuntu系统中配置SSH和Samba,用于支持远程访问
SSH安装&客户端工具安装
在ubuntu终端中执行:
sudo apt-get install openssh-server
sudo /etc/init.d/ssh start
ps -e|grep ssh
sudo passwd root 若未设置过root密码,可自行选择设置
查看ubuntu ip确定和windows一样
ifconfig
Samba服务器搭建
sudo apt-get update
sudo apt-get install samba
sudo gedit /etc/samba/smb.conf
末尾添加以下
[share]comment = samba home directorypath = /home/xxxx/esp 你本机路径public = yesbrowseable = yespublic = yesread only = nowritable = yescreate mask = 0777directory mask = 0777available = yessecurity = share重启
sudo service smbd restart
sudo ufw allow samba
在 Windows 系统上右击 此电脑 ------->映射网络驱动器
在连接前确定虚拟机网络ip和主机ip为同一网段,可使用桥接模式
5、在Window VSCode中通过SSH命令行方式访问Ubuntu
打开VSCode安装C/C++、SSH客户端插件
配置连接Ubuntu
添加配置信息
登录,如果网络配置没问题,你可以在新窗看到需要输入密码,输入ubuntu密码后可登录成功。
更多内容参考:
Embeded 2 环境搭建
2.2.2 乐鑫ESP32 SDK环境搭建
安装环境依赖工具
通过SSH登录ubuntu后,在Vscode终端中执行
sudo apt-get update
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
下载idf源码(课程使用idf版本为4.4)
mkdir esp
cd ~/esp
git clone -b release/v4.4 --recursive https://github.com/espressif/esp-idf.git
如果下载过程中出现子模块没更新成功,可以进入esp_idf目录内,单独更新子模块
git submodule update --init --recursive
如果还是由于github访问原因下载不成功,也可以直接下载sdk
把压缩拉入到ubuntu,在压缩包路径执行解压指令
tar -xzvf esp-idf.tar.gz -C ~/esp/
安装编译链
进入到解压的esp-idf文件中,安装编译代码需要的工具链
cd ~/esp/esp-idf
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.shFYI:
此步骤出错时,确定下ping www.baidu.com,看下是否联网成功,多安装几次
若最终还是不行,可考虑更换源
https://blog.csdn.net/anjoel/article/details/124805571?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-124805571-blog-79127695.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-124805571-blog-79127695.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=1
设置环境
安装完成工具链后,把esp-idf路径设为本地路径,在终端执行(yourpath为你本机路径):
. yourpath/esp/esp-idf/export.sh如果您需要经常运行 ESP-IDF,您可以为执行 export.sh 创建一个别名,具体步骤如下,
1、在终端中使用vim打开~/.bashrc,然后把以下路径添加到本地环境变量中
vim ~/.bashrc
2、按键盘i按键进行编辑,写入以下命令
alias get_idf='. yourpath/esp/esp-idf/export.sh'
3、按esc按键退出编辑,写入:wq保存退出
4、执行以下命令同步环境变量
source ~/.bashrc
5、直接执行get_idf即可
判断是否搭建成功
kemp@ubuntu:~/work/esp/esp-idf$ idf.py --version
ESP-IDF v4.4.2-296-g4b8915d7af-dirtykemp@ubuntu:~/work/esp/esp-idf$ git log
commit 4b8915d7af37b0cdb9ae2bc3a95c9f1bc797f6e0 (HEAD -> release/v4.4, origin/release/v4.4)
Merge: 7cedbfabdf e4df3e2ad7
Author: Island <island@espressif.com>
Date: Wed Sep 21 11:31:55 2022 +0800Merge branch 'bugfix/lpn_not_recv_message_to_all_node_4.4' into 'release/v4.4'ble_mesh: stack: Add option for lpn auto sub all-nodes(v4.4)See merge request espressif/esp-idf!20264
安装环境出问题时可参考官方:
快速入门 - ESP32 - ‒ ESP-IDF 编程指南 release-v4.4 文档
FYI:
如果你已经下载了其它版本的IDF,可以自行切换
版本查看与同步
cd $IDF_PATH
git fetch
git checkout vX.Y.Z
git submodule update --init --recursive
重新执行设置后,get_idf
相关文章:

【桌面小屏幕项目】ESP32开发环境搭建
视频教程链接: 【【有手就行系列】嵌入式单片机教程-桌面小屏幕实战教学 从设计、硬件、焊接到代码编写、调试 ESP32 持续更新2022】 https://www.bilibili.com/video/BV1wV4y1G7Vk/?share_sourcecopy_web&vd_source4fa5fad39452b08a8f4aa46532e890a7 一、esp…...

CSS 滚动容器与固定 Tabbar 自适应的几种方式
问题 容器高度使用 px 定高时,随着页面高度发生变化,组件展示的数量不能最大化的铺满,导致出现底部留白。容器高度使用 vw 定高时,随着页面宽度发生变化,组件展示的数量不能最大化的铺满,导致出现底部留白…...

IP 地址追踪工具
IP 地址跟踪工具是一种网络实用程序,允许您扫描、跟踪和获取详细信息,例如 IP 地址的 MAC 和接口 ID。IP 跟踪解决方案通过使用不同的网络扫描协议来检查网络地址空间来收集这些详细信息。一些高级 IP 地址跟踪器软件(如 OpUtils)…...

最新企业网盘产品推荐榜发布
随着数字化发展,传统的文化存储方式已无法跟上企业发展的步伐。云存储的出现为企业提供了新的文件管理存储模式。企业网盘作为云存储的代表性工具,被越来越多的企业所青睐。那么在众多企业网盘产品中,企业该如何找到合适的企业网盘呢…...

实用的面试经验分享:程序员们谈论他们的面试历程
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

6.oracle中listagg函数使用
1. 作用 可以实现行转列,将多列数据聚合为一列,实现数据的压缩 2. 语法 listagg(measure_expr,delimiter) within group ( order by order_by_clause); 解释: measure_expr可以是基于任何列的表达式 delimiter分隔符,…...

习题练习 C语言(暑期)
编程能力小提升! 前言一、转义字符二、重命名与宏定义三、三目运算符四、计算日期到天数转换五、计算字符串长度六、宏定义应用七、const常量八、C语言基础九、const常量(二)十、符号运算十一、记负均正十二、SWITCH,CASE十三、错…...
C++中虚函数表的概念
当一个类对象指针调用虚函数时,这就涉及到 运行时多态 的概念。这意味着实际调用的函数取决于对象的实际类型,而不仅仅是指针的静态类型。 假设我们有以下的类层次结构: class Base { public:virtual void print() {std::cout << &qu…...

代码随想录算法训练营第四十八天 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III
代码随想录算法训练营第四十八天 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III 198.打家劫舍213.打家劫舍II337.打家劫舍III 198.打家劫舍 题目链接 视频讲解 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金ÿ…...

uniapp项目实战系列(1):导入数据库,启动后端服务,开启代码托管
目录 前言前期准备1.数据库的导入2.运行后端服务2.1数据库的后端配置2.2后端服务下载依赖,第三方库2.3启动后端服务 3.开启gitcode代码托管 ✨ 原创不易,还希望各位大佬支持一下! 👍 点赞,你的认可是我创作的动力&…...

在互联网+的背景下,企业如何创新客户服务?
随着互联网的发展,开始数字化转型的潮流,移动互联网平台为各个行业带来了发展的新方向。企业有了移动互联网的加持,为客户提供了更好的服务。当移动互联网平台能够为客户提供更好的用户体验时,相应地,客户也给企业带来…...

国内的化妆品核辐射检测
化妆品核辐射物质检测是指检测化妆品中的放射性物质,包括放射性核素和放射性同位素。这些放射性物质主要来源于环境中的放射性污染,如空气、水和土壤中的放射性物质,以及化妆品生产过程中的放射性污染,如原料、设备、工艺等。化妆…...

春秋云镜:CVE-2019-9042(Sitemagic CMS v4.4 任意文件上传漏洞)
一、题目 靶标介绍: Sitemagic CMS v4.4 index.php?SMExtSMFiles 存在任意文件上传漏洞,攻击者可上传恶意代码执行系统命令。 进入题目: admin/admin /index.php?SMExtSMFiles&SMTemplateTypeBasic&SMExecModeDedicated&SMFil…...
20230828工作日志:
今天遇到了很多问题,下次可以做得更好更快的几个地方: 1 sql语句的检查 肯定要先在navicate 里执行看,是否有语法错误。即使没有,也还是要注意一些问题:IDEA里换行的时候,“后面要空一格,如果连…...
flink on yarn 部署
需要jars -rwxr-xrwx 3 root supergroup 58284 2022-11-30 03:44 /lib/flink/commons-cli-1.5.0.jar -rw-r--r-- 3 root supergroup 48497 2022-12-10 03:04 /lib/flink/flink-cep-scala_2.12-1.14.3.jar -rw-r--r-- 3 root supergroup 189468 2022-12-10…...

postgresql基于postgis常用空间函数
1、ST_AsGeoJSON 图元转geojson格式 select ST_AsGeoJSON(l.geom) from g_zd l limit 10 2、 ST_Transform 坐标转换 select st_transform(l.shape, 3857) from sde_wf_cyyq l limit 10select st_astext(st_transform(l.shape, 3857)) from sde_wf_cyyq l limit 103、st_aste…...

详细讲解移植u-boot.2022.10版本移植到开发板基本方法
大家好,我是ST。 今天给大家讲一讲如何将u-boot.2022.10版本移植到imx6ull开发板上。 环境 选项内容编译主机UbuntuLTS 18.04目标板ATK I.MX6ULL(512MB DDR3 8GB EMMC)u-boot版本2022.10交叉编译工具链gcc-linaro-7.5.0-2019.12-i686…...

Vue.js2+Cesium1.103.0 十一、Three.js 炸裂效果
Vue.js2Cesium1.103.0 十一、Three.js 炸裂效果 Demo ThreeModelBoom.vue <template><div:id"id"class"three_container"/> </template><script> /* eslint-disable eqeqeq */ /* eslint-disable no-unused-vars */ /* eslint-d…...

Nodejs快速搭建简单的HTTP服务器,并发布公网远程访问
前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation(原为 Node.js Foundation,已与 JS Foundation 合并)持有和维护,亦为 Linux 基金会的项目。Node.js 采用 Google 开发…...
爬虫入门01
1. 请求头中最常见的一些重要内容 User-Agent : 请求载体的身份标识(⽤啥发送的请求)Referer: 防盗链(这次请求是从哪个⻚⾯来的? 反爬会⽤到)cookie: 本地字符串数据信息(⽤户登录信息, 反爬的token) 2. 响应头中一些重要内容 cookie: 本地字符串数据信息(⽤户登录信息, 反…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...