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

见字如面,这里是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),修改会更复杂,需要具体芯片的开发工具。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

51单片机Proteus仿真速成教程——P1-软件与配置+Proteus绘制51单片机最小系统+新建程序模版

前言:本文主要围绕 51 单片机最小系统的绘制及程序模板创建展开。首先介绍了使用 Proteus 绘制 51 单片机最小系统的详细步骤,包括软件安装获取途径、工程创建、器件添加(如单片机 AT89C51、晶振、电容、电阻、按键等)、外围电路&…

MacOS Big Sur 11 新机安装brew wget python3.12 exo

MacOS Big Sur 11,算是很老的系统了,所以装起来brew有点费劲。 首先安装brew 官网: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 官网加速: 按照官网的方法&#xff0…

C++算法——差分

1.差分 差分与前缀和的核心思想相同,是预处理,可以在暴力枚举的过程中,快速给出查询的结果,从而优化时间复杂度。 是经典的用空间替换时间的做法。 补充:使得最短跳跃距离尽可能长,遇到类似这样的问题时…

【VBA】WPS/PPT设置标题字体

通过VBA,配合左上角的快速访问工具栏,实现自动化调整 选中文本框的 字体位置、大小、颜色。 配合quicker更加便捷 Sub DisableAutoWrapAndFormat()Dim shp As Shape 检查是否选中了一个形状(文本框)If ActiveWindow.Selection.Typ…

YOLO 各系列结构整理

目录 2016 You Only Look Once: Unified, Real-Time Object Detection(CVPR) 2017 YOLO9000: Better, Faster, Stronger CVPR 2018 YOLOv3:AnIncrementalImprovemen CVPR YOLO V3-SPP 2020 YOLOv4: Optimal Speed and Accuracy of Object Detection 2021 YOLOV5 2021 YOL…

六十天前端强化训练之第十四天之深入理解JavaScript异步编程

欢迎来到编程星辰海的博客讲解 目录 一、异步编程的本质与必要性 1.1 单线程的JavaScript运行时 1.2 阻塞与非阻塞的微观区别 1.3 异步操作的性能代价 二、事件循环机制深度解析 2.1 浏览器环境的事件循环架构 核心组件详解: 2.2 执行顺序实战分析 2.3 Nod…

Git基础之工作原理

基础概念 git本地有三个工作区域,工作目录 Working Directory,暂存区Stage/Index和资源区Repository/Git Directory,如果在加上远程的git仓库就是四个工作区域 四个区域与文件交换的命令之间的关系 WorkSpace:工作区,就…

【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率

计算机网络的性能指标 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我们介绍了计算机网络的三个性能指标——速率、带宽和吞吐量。用大白话来说就是:网速、最高网速和实时网速。 相信大家看到这三个词应该就…

测试大语言模型在嵌入式设备部署的可能性-ollama本地部署测试

前言 当今各种大语言模型百花齐放,为了方便使用者更加自由的使用大模型,将大模型变成如同棒球棍一样每个人都能用,并且顺手方便的工具,本地私有化具有重要意义。 本次测试使用ollama完成模型下载,过程简单快捷。 1、进…

【实战篇】【DeepSeek 全攻略:从入门到进阶,再到高级应用】

凌晨三点,某程序员在Stack Overflow上发出灵魂拷问:“为什么我的DeepSeek会把财务报表生成成修仙小说?” 这个魔性的AI工具,今天我们就来场从开机键到改造人类文明的硬核教学。(文末含高危操作集锦,未成年人请在师父陪同下观看) 一、萌新村任务:把你的电脑变成炼丹炉 …

【Linux学习笔记】Linux基本指令分析和权限的概念

【Linux学习笔记】Linux基本指令分析和权限的概念 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 文章目录 【Linux学习笔记】Linux基本指令分析和权限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…

Unity DOTS从入门到精通之 自定义Authoring类

文章目录 前言安装 DOTS 包什么是Authoring1. 实体组件2. Authoring类 前言 DOTS(面向数据的技术堆栈)是一套由 Unity 提供支持的技术,用于提供高性能游戏开发解决方案,特别适合需要处理大量数据的游戏,例如大型开放世…

linux如何判断进程对磁盘是随机写入还是顺序写入?

模拟工具&性能测试工具:fio fio参数说明: filename/dev/sdb1:测试文件名称,通常选择需要测试的盘的data目录。 direct1:是否使用directIO,测试过程绕过OS自带的buffer,使测试磁盘的结果更真…

olmOCR:高效精准的 PDF 文本提取工具

在日常的工作和学习中,是否经常被 PDF 文本提取问题困扰?例如: 想从学术论文 PDF 中提取关键信息,却发现传统 OCR 工具识别不准确或文本格式混乱?需要快速提取商务合同 PDF 中的条款内容,却因工具不给力而…

Leetcode 刷题记录 06 —— 矩阵

本系列为笔者的 Leetcode 刷题记录,顺序为 Hot 100 题官方顺序,根据标签命名,记录笔者总结的做题思路,附部分代码解释和疑问解答。 目录 01 矩阵置零 方法一:标记数组 方法二:两个标记变量 02 螺旋矩阵…

Elasticsearch:使用 BigQuery 提取数据

作者:来自 Elastic Jeffrey Rengifo 了解如何使用 Python 在 Elasticsearch 中索引和搜索 Google BigQuery 数据。 BigQuery 是 Google 的一个平台,允许你将来自不同来源和服务的数据集中到一个存储库中。它还支持数据分析,并可使用生成式 AI…

如何在el-input搜索框组件的最后面,添加图标按钮?

1、问题描述 2、解决步骤 在el-input组件标签内,添加一个element-plus的自定义插槽, 在插槽里放一个图标按钮即可。 3、效果展示 结语 以上就是在搜索框组件的末尾添加搜索按钮的过程。 喜欢本篇文章的话,请关注本博主~~

Magento2根据图片文件包导入产品图片

图片包给的图片文件是子产品的图片&#xff0c;如下图&#xff1a;A104255是主产品的sku <?php/*** 根据图片包导入产品图片&#xff0c;包含子产品和主产品* 子产品是作为主图&#xff0c;主产品是作为附加图片*/use Magento\Framework\App\Bootstrap;include(../app/boot…

INT_MAX 与 0x3f3f3f3f 的区别

【INT_MAX 与 0x3f3f3f3f 的区别】 在算法设计中&#xff0c;INT_MAX 与 0x3f3f3f3f 都常被用作无穷大值的设定&#xff0c;但二者区别显著&#xff0c;适用场景也有所不同。 备注&#xff1a;此图由百度 AI 创作生成 &#xff08;1&#xff09;INT_MAX 是 C/C 中的标准常量&a…

升级旧版本Vmware到Vmware Workstation Pro 17

背景 一些新版本Linux内核版本较高&#xff0c;例如&#xff1a;openEuler24.03 LTS需要的内核版本为6.6&#xff0c;而Vmware Workstation Pro 16最高只支持Linux5.x内核&#xff0c;对Linux6.x不支持&#xff0c;因此&#xff0c;需要将旧版本的Vmware升级到Vmware Workstat…