【够用就好008】开新坑自学esb32烧录进军物联网和嵌入式

news2025/3/9 23:19:01

见字如面,这里是AKA  AIGC创意人竹相左边。

学习使用了三年的AI工具,现在最大的自信就是业余时间可以学习任何自己感兴趣的事,感觉手搓火箭也不是梦。

今天开个新坑,也是逐步探索想要进入的新世界。物联网(IoT)和嵌入式项目。

1. 了解ESP32和烧录的基础

ESP32是一个低成本、低功耗的微控制器,支持Wi-Fi和蓝牙,非常适合DIY项目。烧录(flashing)是指将程序(固件)写入ESP32的闪存中,让它执行你想要的功能。

你需要的硬件:

  • ESP32开发板(比如ESP32-DevKitC、NodeMCU ESP32等,建议买带USB接口的,方便烧录)。

  • USB数据线(确保是能传输数据的,不是只充电的)。

  • 一台电脑(你已经有VSCode,很好!)。

  • (可选)面包板、跳线、LED等,用于测试。

你已经有的优势:

  • 你会用VSCode克隆GitHub项目,说明你熟悉基本操作,这对后续开发很关键。

  • 有3D打印机,可以打印外壳或配件,未来项目会更酷!


2. 安装开发环境(基于VSCode)

既然你已经熟悉VSCode,我们可以用它来搭建ESP32开发环境。以下是步骤:

步骤1:安装VSCode(已完成)

你已经会用VSCode,跳过这一步。

步骤2:选择开发框架

ESP32开发有两种主流方式:

  • Arduino:简单易上手,适合初学者。

  • ESP-IDF:官方框架,功能强大但稍复杂。

鉴于你是初学者且平面设计师,我建议先从Arduino开始,之后可以过渡到ESP-IDF。

步骤3:安装Arduino IDE支持

  1. 下载Arduino IDE(可选):
    去Arduino官网下载最新版,安装后可以直接烧录程序。但我们主要用VSCode,所以这步可选。

  2. 在VSCode中安装Arduino扩展:

    • 打开VSCode,点击左侧“扩展”(Extensions,快捷键Ctrl+Shift+X)。

    • 搜索“Arduino”,安装“Arduino”扩展(作者:Microsoft)。

  3. 添加ESP32支持:

    • 打开VSCode,按F1,输入“Arduino: Board Manager”。

    • 在弹出的窗口中,搜索“esp32”,安装“ESP32 by Espressif Systems”。

    • 安装完成后,重启VSCode。

步骤4:验证环境

  • 连接ESP32到电脑(用USB线)。

  • 在VSCode中按F1,输入“Arduino: Select Board”,选择你的ESP32型号(比如“ESP32 Dev Module”)。

  • 再按F1,输入“Arduino: Select Serial Port”,选择出现的COM端口(Windows)或/dev/ttyUSB(Linux/Mac)。

3. 烧录第一个程序

我们从一个简单的“点亮LED”程序开始。

示例代码

  1. 在VSCode中新建一个文件,命名为blink.ino。

  2. 粘贴以下代码:

#define LED_PIN 2  // ESP32默认内置LED通常在GPIO 2

void setup() {
  pinMode(LED_PIN, OUTPUT);  // 设置引脚为输出模式
}

void loop() {
  digitalWrite(LED_PIN, HIGH);  // 点亮LED
  delay(1000);                 // 等待1秒
  digitalWrite(LED_PIN, LOW);   // 熄灭LED
  delay(1000);                 // 等待1秒
}

烧录步骤

  1. 确保ESP32已连接电脑。

  2. 在VSCode中按F1,输入“Arduino: Upload”并回车。

  3. 等待编译和烧录完成(可能需要几秒到一分钟)。

  4. 如果成功,ESP32上的内置LED会每秒闪烁一次!

4. 结合你的技能:从GitHub克隆项目

你提到会克隆GitHub项目,这很棒!ESP32社区有很多开源项目可以参考。以下是一个推荐:

  • 项目推荐:搜索“ESP32 LED Control”之类关键词,找一个简单的LED控制项目。

  • 操作步骤:

    1. 在GitHub找到项目,点击“Code”按钮,复制URL。

    2. 在VSCode中按Ctrl+Shift+P,输入“Git: Clone”,粘贴URL,选择保存路径。

    3. 打开项目文件夹,按上述方法烧录。

5. 用3D打印机扩展项目

有了3D打印机,你可以为ESP32项目设计外壳或配件。比如:

  • 打印一个ESP32开发板外壳(Thingiverse上有很多免费STL文件)。

  • 设计一个带LED灯的装饰品,结合ESP32控制灯光效果。

建议:用Tinkercad(在线3D设计工具,适合设计师)设计简单的外壳,然后打印。


6. 学习资源推荐

  • 基础教程:B站搜索“ESP32入门”,有很多中文视频。

  • Arduino官方文档:https://docs.arduino.cc/

  • ESP32官方文档(ESP-IDF):Technical Documents | Espressif Systems

  • GitHub项目:搜索“ESP32 DIY”或“ESP32 3D printing”。

---

1. 烧录好的代码是否可以重新修改?

是的,烧录到ESP32(或其他微控制器)的代码是可以重新修改的,前提是你有以下条件:

  • 硬件支持重新烧录:你需要能再次访问设备的烧录接口(通常是通过USB或串口引脚,如GPIO0、TX、RX等)。

  • 源代码或固件:你需要原始代码,或者能够反编译/获取当前固件的控制逻辑。

  • 工具准备好:使用像Arduino IDE、VSCode with PlatformIO、或ESP-IDF这样的工具来重新编译和烧录代码。

如果你的小米香氛机确实是用ESP32驱动的(后面会讨论如何确认),理论上可以通过重新烧录固件来改变喷雾行为,比如从“每10分钟喷3秒”改为“一直喷”。

 

3. 如何修改为“一直喷”?

“每10分钟喷3秒”是固件中预设的逻辑,通常由代码中的定时器(delay()或millis())和继电器/电机控制实现。要改成“一直喷”,需要调整代码逻辑。以下是大致步骤:

步骤1:获取或推测当前固件逻辑

假设原始代码类似这样(基于Arduino框架):

#define SPRAY_PIN 2  // 假设喷雾器连接到GPIO 2
void setup() {
  pinMode(SPRAY_PIN, OUTPUT);
}
void loop() {
  digitalWrite(SPRAY_PIN, HIGH);  // 喷雾开启
  delay(3000);                    // 喷3秒
  digitalWrite(SPRAY_PIN, LOW);   // 喷雾关闭
  delay(600000);                  // 等待10分钟(600秒)
}

 这是“每10分钟喷3秒”的简化实现。

步骤2:修改为“一直喷”

将代码改为:

#define SPRAY_PIN 2
void setup() {
  pinMode(SPRAY_PIN, OUTPUT);
  digitalWrite(SPRAY_PIN, HIGH);  // 一直开启喷雾
}
void loop() {
  // 空循环,不关闭喷雾
}

这样喷雾器会持续工作,直到你断电或手动关闭。

步骤3:烧录新固件

  1. 连接硬件:

    • 用USB转串口模块(比如CH340或CP2102)连接ESP32的TX、RX、GND引脚。

    • 进入烧录模式:烧录时需将GPIO0接地(按住BOOT键或短接GPIO0和GND)。

  2. 编译和上传:

    • 在VSCode中安装PlatformIO或Arduino扩展。

    • 选择ESP32开发板型号(比如“ESP32 Dev Module”)。

    • 上传修改后的代码。

  3. 测试:烧录成功后,香氛机应该会一直喷雾。


4. 注意事项和风险

  • 硬件限制:持续喷雾可能导致香氛机过热、电机损坏或香液耗尽。检查设备是否支持长时间运行(比如是否有过热保护)。

  • 固件加密:小米的部分智能设备固件可能加密或锁定,无法直接修改。如果是这样,你需要寻找开源替代固件(如ESPHome或Tasmota)。

  • 保修问题:拆机或刷机可能会影响保修。

  • 不确定芯片:如果不是ESP32(比如用其他MCU如STM32),修改会更复杂,需要具体芯片的开发工具。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go红队开发—格式导出

文章目录 输出功能CSV输出CSV 转 结构体结构体 转 CSV端口扫描结果使用CSV格式导出 HTML输出Sqlite输出nmap扫描 JSONmap转json结构体转jsonjson写入文件json编解码json转结构体json转mapjson转string练习:nmap扫描结果导出json格式 输出功能 在我们使用安全工具的…

element-plus中table组件的使用

1、table组件的基本使用 注意: ①对象集合,要从后端查询。 ②prop是集合中的对象的属性名;label是表格表头的名称。 2、将性别一列的71转为男,72转为女 问题描述: 解决步骤: ①将el-table-column变成双标签…

Go加spy++隐藏窗口

最近发现有些软件的窗口就像狗皮膏药一样,关也关不掉,一点就要登录,属实是有点不爽了。 窗口的进程不能杀死,但是窗口我不想要。思路很简单,用 spy 找到要隐藏的窗口的句柄,然后调用 Windows 的 ShowWindo…

网络安全通信架构图

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 在安全通信里面我经常听到的2个东西就是SSL和TLS,这2个有什么区别呢?以及HTTPS是怎么通信的?包括对称加密、非对称加密、摘要、…

当中国“智算心跳”与全球共振:九章云极DataCanvas首秀MWC 2025

3月3日,西班牙巴塞罗那,全球通信与科技领域的盛会“2025世界移动通信大会(MWC 2025)”正式拉开帷幕。中国人工智能基础设施领军企业九章云极DataCanvas公司以全球化战略视野与硬核技术实力,全方位、多维度地展示了在智…

Clion快捷键、修改字体

文章目录 一、Clion快捷键1.撤销:crtl Z2.重做:crtl shift Z3.删除该行:crtl Y4.多行后退:选中多行 Tab5.多行缩进:选中多行 shift Tab 二、修改注释的斜体 一、Clion快捷键 1.撤销:crtl Z 2.重做…

基于PySide6的CATIA零件自动化着色工具开发实践

引言 在汽车及航空制造领域,CATIA作为核心的CAD设计软件,其二次开发能力对提升设计效率具有重要意义。本文介绍一种基于Python的CATIA零件着色工具开发方案,通过PySide6实现GUI交互,结合COM接口操作实现零件着色自动化。该方案成…

在Uniapp中实现特殊字符弹出框并插入输入框

在开发Uniapp项目时,我们经常会遇到需要用户输入特殊字符的场景。为了提升用户体验,我们可以封装一个特殊字符弹出框,用户点击键盘图标后弹出该字符集,选择字符后自动插入到输入框中。本文将详细介绍如何实现这一功能。 1. 功能概…

深入解析 BitBake 日志机制:任务调度、日志记录与调试方法

1. 引言:为什么 BitBake 的日志机制至关重要? BitBake 是 Yocto 项目的核心构建工具,用于解析配方、管理任务依赖,并执行编译和打包任务。在 BitBake 构建过程中,日志记录机制不仅用于跟踪任务执行情况,还…

《原型链的故事:JavaScript 对象模型的秘密》

原型链(Prototype Chain) 是 JavaScript 中实现继承的核心机制。每个对象都有一个内部属性 [[Prototype]](可以通过 __proto__ 访问),指向其原型对象。每个对象都有一个原型, 原型本身也是一个对象&#xf…

Linux 配置静态 IP

一、简介 在 Linux CentOS 系统中默认动态分配 IP 地址,每次启动虚拟机服务都是不一样的 IP,因此要配置静态 IP 地址避免每次都发生变化,下面将介绍配置静态 IP 的详细步骤。 首先先理解一下动态 IP 和静态 IP 的概念: 动态 IP…

【Python 数据结构 10.二叉树】

目录 一、二叉树的基本概念 1.二叉树的定义 2.二叉树的特点 3.特殊的二叉树 Ⅰ、斜树 Ⅱ、满二叉树 Ⅲ、完全二叉树 Ⅳ、完全二叉树和满二叉树的区别 4.二叉树的性质 5.二叉树的顺序存储 Ⅰ、完全二叉树 Ⅱ、非完全二叉树 Ⅲ、稀疏二叉树 6.二叉树的链式存储 7.二叉树的遍历概念…

SwanLab简明教程:从萌新到高手

目录 1. 什么是SwanLab? 1.1 核心特性 2. 安装SwanLab 3. 登录SwanLab账号(云端版) 4. 5分钟快速上手 更多案例 5. SwanLab功能组件 5.1 图表视图 5.2 表格视图 5.3 硬件监控 5.4 环境记录 5.5 组织协同 6. 训练框架集成 6.1 基…

SQLiteStudio:一款免费跨平台的SQLite管理工具

SQLiteStudio 是一款专门用于管理和操作 SQLite 数据库的免费工具。它提供直观的图形化界面,简化了数据库的创建、编辑、查询和维护,适合数据库开发者和数据分析师使用。 功能特性 SQLiteStudio 提供的主要功能包括: 免费开源,可…

贝塞尔曲线学习

1、一阶贝塞尔曲线 一阶贝塞尔曲线其实是一条直线——给定点 P0、P1,线性贝塞尔曲线就是一条两点之间的直线,公式如下: 一阶曲线很好理解, 就是根据t来线性插值。 void MainWindow::mousePressEvent(QMouseEvent *e) {list.append(e->pos…

机器学习(六)

一,决策树: 简介: 决策树是一种通过构建类似树状的结构(颠倒的树),从根节点开始逐步对数据进行划分,最终在叶子节点做出预测结果的模型。 结构组成: 根节点:初始的数据集…

【江协科技STM32】ADC数模转换器-学习笔记

ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁,ADC是一种将连续的模拟信号转换为离散的数字信号的设备或模块12位逐次逼近型…

嵌入式学习笔记-卡尔曼滤波,PID,MicroPython

文章目录 卡尔曼滤波卡尔曼滤波的核心思想卡尔曼滤波的数学模型1. 状态转移模型(预测系统状态)2. 观测模型(预测测量值) 卡尔曼滤波的五个关键步骤1. 预测状态2. 预测误差协方差3. 计算卡尔曼增益4. 更新状态5. 更新误差协方差 卡…

upload-labs文件上传

第一关 上传一个1.jpg的文件,在里面写好一句webshell 保留一个数据包,将其中截获的1.jpg改为1.php后重新发送 可以看到,已经成功上传 第二关 写一个webshell如图,为2.php 第二关在过滤tpye的属性,在上传2.php后使用b…

C++20 格式化库:强大的字符串格式化工具

文章目录 格式化语法常见用法1. 填充和对齐2. 数值格式化3. 进制格式化4. 自定义类型 示例代码注意事项 C20 的格式化库是一个强大的工具,用于处理字符串的格式化操作。它提供了类似于 Python 中 str.format() 的功能,但语法和用法更符合 C 的风格。以下…