文件路径示例(macOS/Linux):Windows 用户注意: .arduino15 是隐藏文件夹,需开启显示隐藏项。
~/.arduino15/packages/esp32/hardware/esp32/3.3.1/platform.local.txt
#include <variant>
// error: 'variant' is not a member of 'std' 解决方法很简单,在 platform.local.txt 中加入:
compiler.cpp.extra_flags=-std=gnu++17 再比如你想根据不同构建类型输出不同级别的日志:
#ifdef DEBUG_BUILD
#define LOG_DEBUG(x) Serial.println("DEBUG: " x)
#else
#define LOG_DEBUG(x)
#endif 那你可以在调试版中加上:
compiler.cpp.extra_flags=-std=gnu++17 -DDEBUG_BUILD 发布时去掉 -DDEBUG_BUILD ,预处理器自动剔除调试语句,既安全又省资源。
小技巧:多个标志用空格分隔即可,例如:
compiler.cpp.extra_flags=-std=gnu++17 -DENABLE_TRACE -DCONFIG_LOG_LEVEL=3
compiler.c.extra_flags=-ffunction-sections -fdata-sections
compiler.cpp.extra_flags=-ffunction-sections -fdata-sections
compiler.S.extra_flags=-ffunction-sections
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -Os {compiler.c.elf.extra_flags} -Wl,--gc-sections "{build.project_path}/{build.project_name}.elf" ...
注意:最后一行是重写整个链接命令模板,必须完整复制原 platform.txt 中的内容后再添加 -Wl,--gc-sections。实测效果:对于包含大量未使用库函数的项目,可减少 15%~30% 的最终 .bin 大小。
# Name, Type, SubType, Offset, Size
nvs, data, nvs, 0x9000, 0x6000
otadata, data, ota, 0xf000, 0x2000
app0, app, ota_0, 0x11000, 0x300000
app1, app, ota_1, 0x311000,0x300000
eeprom, data, 0x99, 0x611000,0x1000
spiffs, data, spiffs, 0x612000,0x1EE000 这个布局提供了:
# 添加菜单项
menu.PartitionScheme=Partition Scheme
esp32.menu.PartitionScheme.custom3m=3MB App (Dual OTA + Big SPIFFS)
esp32.menu.PartitionScheme.custom3m.build.partitions=custom_3m_app 刷新 IDE 后,你会在 Tools → Partition Scheme 菜单中看到新的选项!
注意:更换分区表后,必须重新烧录完整固件包(Bootloader + Partitions + Sketch),否则设备可能无法启动。
compiler.c.extra_flags=-mfix-esp32-psram-cache-issue
compiler.cpp.extra_flags=-mfix-esp32-psram-cache-issue 一旦加上,编译器会插入额外指令规避问题,稳定性大幅提升。
compiler.define=-DESP32_HAS_FPU_EMU 然后在代码中根据宏启用快速数学库。
串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。
MimiClaw 是一款基于 ESP32-S3 芯片的超轻量级AI助手,适合嵌入式AI与物联网开发者快速部署本地化AI代理。本系列教程基于MimiClaw的Arduino移植版本进行讲解,小节主要讲解部署和测试。
就像我们用手机打开WiFi功能后可以浏览附近的可用WiFi。要将手机连接到热点,通常需要打开Wi-Fi设置应用程序,列出可用的网络,然后选择所需的热点。然后输入密码(或不输入密码),可以使用ESP32进行相同的操作。
本文本介绍配置飞书机器人为MimiClaw的一个输入/输出端,和添加一个控制WS2812与LED的控制技能。
一块 30 块钱的开发板 + 一个大模型 API,就能做出可以听懂人话的智能硬件。 本文记录完整安装过程和踩坑经验,确保你跟着做就能跑通。
本文将从手绘架构图入手,逐层拆解 MimiClaw 的分层设计、核心模块、数据流转与底层实现,带你解剖这只“智能虾”的技术骨架,看懂在 C 语言加持下,AI 智能体如何以可穿戴设备的形态,在你身边稳稳运行、离线服务、主动响应。
本文将系统分析程序体积增长的五大根源,并提供经过验证的优化方案,帮助减小固件大小。
本文所DIY的语音助手设备端使用的是MicroPython、服务端是Python,对于很多开发者来说MicroPython入门没难度。
本小节使用音频开发框架实现一个音频录制到文件的示例。
I2S协议通过BCLK、LRCLK和DATA三线精准传输音频数据,但时序边沿、帧格式、时钟源等细节常引发噪声或断连。本文详解ESP32的I2S实现,从协议原理到ESP-IDF v5.x代码配置,助你避开常见陷阱,确保音频稳定传输。
本小节介绍音频的基础知识、音频开发框架和AudioCodec的简介,用一个音频播放示例来说明音频管道的使用。