使用VSCode+PlatformIO搭建ESP32开发环境
Arduino IDE本来就是为创客们开发的,虽然没代码提示功能,文件的关系也不清晰,函数不能跳转,头文件也打不开,但人家的初衷就是为了简单而生的;但还是有一些同学喜欢高级点的IDE,也没问题,在VScode中安装PlatformIO IDE插件能满足你的所有要求。
一、什么是PlatformIO

PlatformIO 是一个用于物联网开发的开源生态系统。它提供跨平台的开发环境和统一的调试器,还支持远程单元测试和固件更新,曾经获得过IOT最佳开发软件和工具奖,支持1000+以上的开发板以及50多个开发平台,还有12000+的库,让开发人员不必要浪费时间在环境搭建上,可以更多时间的去写自己的逻辑,配合VScode的文件管理以及友好的界面,简直是嵌入式界的开发神器!
二、安装vscode:点击下载

三、安装Python环境:点击下载

四、安装PlatformIO插件
启动VSCode,在左边的的扩展应用中搜索PlatformIO,点击安装即可,安装过程如果需要安装其他扩展插件,就默认安装就好了,这个安装不会很久,等到提示安装成功之后,重启VScode。


五、使用PlatformIO
我们发现左边多了一个新的插件图标,我们点击一下
然后点击PIO Home的Open -> 再右边点击新建项目,我们填写我们的项目名称等信息
这里建一个ESP32Code的工程,板子搜索ESP32然后选择ESpressif ESP32 Dev Module这个最常规的板子,框架就选择Arduino,之后点击Finish新建项目。



这个时候会下载开发所需的所有文件,编译工具,各种依赖自动搞定
下载完成后如图:

然后我们在src文件夹下的main.cpp中写入以下代码(语法跟Arduino一模一样,直接复制Arduino的程序过来即可。)
#include <Arduino.h>void setup() { // put your setup code here, to run once://初始化串口Serial.begin(9600);
}void loop() { // put your main code here, to run repeatedly:Serial.println("My First PIO Project!");delay(1000);
}
六、如何编译下载
VScode最下面有几个图标,如图所示:
一个对号的就是编译的
向右箭头的就是下载的
最右边有个小插头那个就是输出监视器的,我们可以用它来查看串口的输出数据。

注意:我们启动串口监视器的时候,默认是9600波特率的,所以我们需要在配置文件platformio.ini添加一行配置信息monitor_baud = 115200,就可以正常输出了

觉得有用记得一键三连哟!!!
相关文章:
使用VSCode+PlatformIO搭建ESP32开发环境
Arduino IDE本来就是为创客们开发的,虽然没代码提示功能,文件的关系也不清晰,函数不能跳转,头文件也打不开,但人家的初衷就是为了简单而生的;但还是有一些同学喜欢高级点的IDE,也没问题…...
使用flask返回json格式的数据
Flask Flask是一个使用Python编写的轻量级Web框架,它的设计理念是保持简单、灵活和易扩展。它的核心是Werkzeug和Jinja2,并且它本身只提供了非常基础的Web框架功能,例如路由和请求处理等。 使用Flask可以快速创建一个Web应用程序,…...
如何排查java 内存溢出OutOfMemoryError?
当使用Spring Boot进行文件上传时,文件会被读取到内存中进行处理。如果上传的文件较大,会占用大量的内存空间,从而导致内存溢出(OutOfMemory)问题。以下是一些建议的排查方案: 调整 JVM 内存设置ÿ…...
Prometheus环境搭建和认识
Prometheus 环境搭建 1.prometheus 简介 Prometheus是基于go语言开发的一套开源的监控、报警和时间序列数据库的组合,是由SoundCloud公司开发的开源监控系统,Prometheus于2016年加入CNCF(Cloud Native Computing Foundation,云原生计算基金…...
openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数
文章目录 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数130.1 背景信息130.2 GUC参数设置130.3 操作步骤130.4 示例 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数 130.1 背景信息 openGauss提供了多种修改GUC参数的方法,用户可…...
每日OJ题_算法_双指针_力扣11. 盛最多水的容器
力扣11. 盛最多水的容器 11. 盛最多水的容器 - 力扣(LeetCode) 难度 中等 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成…...
数据仓库
一. 各种名词解释 1.1 ODS是什么? ODS层最好理解,基本上就是数据从源表拉过来,进行etl,比如mysql 映射到hive,那么到了hive里面就是ods层。 ODS 全称是 Operational Data Store,操作数据存储.“面向主题的…...
Redis常用操作及应用(一)
一、五种数据结构 二、String结构 1、字符串常用操作 SET key value //存入字符串键值对 MSET key value [key value ...] //批量存储字符串键值对 SETNX key value //存入一个不存在的字符串键值对 GET key //获取一个字符串键值 MGET key [ke…...
数据结构-树
参考:https://www.hello-algo.com/chapter_tree/binary_tree/#711 1. 介绍 树存储不同于数组和链表的地方在于既可以保证数据检索的速度,又可以保证数据插入删除修改的速度,二者兼顾。 二叉树是一种很重要的数据结构,是非线性的…...
解决ElementUI时间选择器回显出现Wed..2013..中国标准时间.
使用饿了么组件 时间日期选择框回显到页面为啥是这样的? 为什么再时间框中选择日期,回显页面出现了这种英文格式呢???? 其实这个问题直接使用elementui的内置属性就能解决 DateTimePicker 日期时间选择…...
从0到0.01入门 Webpack| 004.精选 Webpack面试题
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
MacOS “xxxxx“,已损坏,无法打开,你应该将它移到废纸篓
在这里插入图片描述 解决方案 应用程序 - 实用工具中打开终端,输入命令, sudo xattr -r -d com.apple.quarantine 然后将程序拖放至命令窗口,如下图:...
每日一题:LeetCode-103/107.二叉树的(层序/锯齿形层序)遍历
每日一题系列(day 04) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🔎…...
webpack配置自动压缩图片
手动压缩图片 图片压缩是很重要的前端优化,一般可以选择手动压缩 手动压缩网站 webpack压缩图片 这里记录借助webpack的image-webpack-loader实现自动压缩图片 项目是create-react-app搭建的,webpack5.64.4 1、安装相应loader npm i image-webpack…...
基于单片机预费电表控制系统(proteus仿真+源程序)
一、系统方案 1、本设计采用这51单片机作为主控器。 2、采集电量值送到液晶1602显示。 3、按键设置预设值,实际使用电量超过设置,蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void LCD_init(void) { …...
【报错栏】(Vue) Invalid handler for event “click“: got undefined
Property or method "add" is not defined on the instance but referenced during render. 翻译: 属性或方法“add”未在实例上定义,但在渲染期间引用。 Invalid handler for event "click": got undefined 翻译: …...
单片机、ARM、嵌入式开发、Android 底层开发有什么关系?
单片机、ARM、嵌入式开发、Android 底层开发有什么关系? 从我目前的见识来看: 单片机是个系统(比如:51、AVR、PLC...),其中包含了去除了输入输出之外的运算器、控制器、存储器,我们用程序可以非…...
Java中static、final、static final的区别
文章目录 finalstaticstatic final final final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。 final修…...
文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《交直流配电网中柔性软开关接入的规划-运行协同优化方法》
这个标题涉及到交直流配电网中柔性软开关接入的规划-运行协同优化方法。下面是对这个标题各部分的详细解读: 交直流配电网: 这指的是一个电力系统,同时包含交流和直流电力传输的元素。这样的系统可能结合了传统的交流电力传输和近年来兴起的直…...
OSG文字-osgText3D(5)
osgText3D 三维立体文字比二维平面文字显示效果更好,相对二维平面文字,它有非常好的立体显示效果。 在实际虚拟现实项目中,过多使用三维立体文字会降低染效率,加重渲染负担,相对平面二维文字,它占用的内存是…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
