基于ESP32-C3与Qi无线充电的Mochi数字伴侣DIY全攻略

发布时间:2026/6/15 16:57:34

基于ESP32-C3与Qi无线充电的Mochi数字伴侣DIY全攻略 1. 项目概述打造一个会“呼吸”的电子伙伴几年前我第一次接触到那些小巧的“电子宠物”时就被它们简单的交互背后所蕴含的复杂情感连接所吸引。但市面上的产品要么功能封闭要么就是纯粹的屏幕应用总感觉少了点亲手创造的灵魂和硬件的实在感。直到我看到了将无线充电、开源硬件和可编程微控制器结合起来的可能性一个想法逐渐成型为什么不自己做一个既有“血肉”硬件又有“灵魂”软件还能摆脱线缆束缚的实体虚拟宠物呢这就是“Mochi数字伴侣”项目的由来。它不仅仅是一个玩具更是一个融合了无线充电Qi标准、嵌入式开发ESP32-C3和交互设计的综合性DIY电子项目。你可以把它想象成一个电子时代的“拓麻歌子”但它的身体是由四块PCB板拼接而成心脏是一颗支持Wi-Fi和蓝牙的RISC-V芯片而它的“食物”则是通过电磁场无形传递的能量。通过这个项目你不仅能获得一个可爱的桌面伙伴更能深入理解电感耦合的能量传输原理、掌握锂聚合物电池的管理与充电电路设计并亲手为它编写行为逻辑实现一个真正属于你自己的、可无线“续航”的智能硬件。无论你是刚接触Arduino的硬件新手想找一个有成就感的综合项目练手还是经验丰富的开发者想寻找一个有趣的载体来实验无线供电或低功耗交互甚至是电子爱好者单纯想体验从零组装一个会“动”、会“响”、能触摸交互的电子装置的乐趣这个指南都将为你提供一条清晰的路径。我们将从最基础的电磁感应实验开始逐步深入到电路焊接、固件烧写和最终的功能整合整个过程就像在组装并唤醒一个电子生命体。2. 核心思路与方案选型解析在动手之前理清整个项目的设计思路和为什么选择这些组件至关重要。这能帮助你在遇到问题时快速定位是原理性障碍还是实操性失误。2.1 为什么是“无线充电” “虚拟宠物”这个组合看似新奇实则有着坚实的工程逻辑和用户体验考量。传统的桌面电子装置要么依赖USB线供电显得杂乱要么使用电池需要频繁更换或插线充电中断了设备的“常驻”状态。而虚拟宠物的核心体验在于陪伴感和持续的生命感频繁的“断电”会彻底破坏这种沉浸感。无线充电特别是基于Qi标准的解决方案完美地解决了这个问题。它让能量传输变得无感且自动。当Mochi被放置在一个无线充电座上时它就仿佛在“进食”或“休息”无需人工干预即可补充能量实现了“永不断线”的陪伴体验。从技术实现角度看这引入了电感耦合和电源管理两个关键模块增加了项目的技术深度。2.2 主控芯片为何选择ESP32-C3 SuperMini市面上微控制器众多Arduino Uno、ESP8266、STM32都是常见选择。本项目选择ESP32-C3是基于功能、功耗、生态和成本的综合权衡性能与接口足够作为一款基于RISC-V架构的芯片ESP32-C3主频高达160MHz内存足够驱动OLED图形界面、处理触摸输入、播放简单音频并运行虚拟宠物的状态机逻辑。它提供了必需的I2C连接OLED、GPIO连接触摸传感器、PWM驱动扬声器等外设。低功耗特性虚拟宠物在无人交互时应进入睡眠模式以节省电量。ESP32-C3具有丰富的低功耗模式可以极大地延长锂聚合物电池的续航时间这对一个旨在“常开”的设备至关重要。开发环境友好完美支持Arduino IDE意味着有海量的库和社区支持。对于虚拟宠物需要的图形显示、音频生成等功能可以轻松找到开源库大幅降低开发门槛。尺寸与成本SuperMini开发板体积小巧非常适合嵌入到这个紧凑的拼装结构中且价格相对低廉。注意ESP32-C3的GPIO8在开发板上常连接一颗LED这在初期程序测试时非常方便但在最终产品中需要确认它是否与其它功能冲突在本项目中它被用作状态指示是合理的。2.3 无线充电方案Qi接收模块的集成我们没有从零开始制作无线充电电路而是采用了一个现成的无线功率接收器模块。这是一个明智的“站在巨人肩膀上”的选择。该模块已经集成了接收线圈、谐振电容、整流桥和稳压电路可以直接输出稳定的5V直流电。我们的工作就是将它输出的电能引导至TP4056锂电池充电管理芯片。这里的关键在于理解能量流向无线充电座发射端-接收线圈耦合磁场-无线接收模块AC/DC转换-TP4056充电管理-锂聚合物电池储能-ESP32-C3及外围设备耗电。TP4056在这里扮演了“守门人”的角色它确保电池以恒流-恒压方式安全充电并在电池电压过低时切断输出以保护电池。2.4 结构设计四板拼装的优势将整个装置设计成左L、右R、上T、下B四块独立的PCB通过排针插座连接这种设计带来了多重好处模块化调试你可以先单独测试每一块板子的功能。例如先确保“下板”的充电和供电正常再测试“左板”的ESP32程序最后组装便于问题隔离。降低焊接难度将元件分布到四块板上避免了在单块高密度板上的复杂焊接对新手更友好。赋予产品个性这种裸露的、结构化的设计本身就有一种极客的美感清晰地展示了内部构造符合DIY精神。3. 硬件组装与焊接实战详解这是将想法变为实体的关键一步需要耐心和细致。请务必准备好安全眼镜并在通风良好的环境下操作。3.1 工具与材料清点除了套件内的所有元件你还需要准备焊接工具一把可调温电烙铁建议温度320-350°C、焊锡丝0.8mm含松香芯、烙铁架、清洁海绵。辅助工具尖头镊子、斜口钳、吸锡器或吸锡带备用用于修正错误、万用表极其重要用于通电前检查。耗材高温胶带或蓝丁胶固定元件、异丙醇和棉签清洁焊盘。电源与调试USB-C数据线用于ESP32编程和供电、5V USB充电器、无线充电座支持Qi标准。3.2 分板焊接步骤与核心技巧我们将严格按照PCB上的字母标识L R T B顺序进行焊接。一个黄金法则在给任何模块通电前先进行细致的目视检查和万用表通断测试。3.2.1 “左板”L板—— 大脑的安装这块板承载着项目的核心——ESP32-C3开发板。焊接母座找到标有“L”的PCB。板上会有两个6Pin母座排针插座的焊盘。先将母座放好用一点高温胶带固定背面防止移动。焊接时先固定对角两个引脚检查是否与白色丝印框完全对齐、是否贴平板子确认无误后再焊接其余引脚。母座的开口方向应朝向板子外侧以便后续插入排针。安装ESP32将ESP32-C3开发板的长排针通常是板子自带或需要你焊接的插入刚才焊好的两个母座中。务必确保USB-C接口朝向板子边缘并略微伸出这是后续编程和调试的入口。插入后从背面将排针焊接到PCB上。初步上电测试这是极其重要的一步不要跳过焊接完成后先不要组装单独用USB线给ESP32-C3上电。观察红色电源LEDPWR是否亮起蓝色用户LED连接GPIO8是否闪烁如果之前烧录过Blink程序。用万用表测量板上为其他模块供电的3.3V或5V焊盘电压是否正常。这能第一时间验证ESP32本身和焊接是否有短路或虚焊。3.2.2 “右板”R板—— 声音的出口这块板用于安装扬声器。焊接母座同L板焊接两个6Pin母座。固定扬声器将微型扬声器放入PCB中央的圆形丝印圈内发音孔对准板上的开孔。在扬声器边缘涂抹少量热熔胶或强力双面胶将其固定。注意扬声器的极性通常“”极会有标记或引脚更长。板上的“SPKR”焊盘也会标有“”和“-”。连接导线剪两小段导线可以用电池或线圈上剪下的多余线材将扬声器的两个引脚分别连接到PCB对应的“SPKR”和“SPKR-”焊盘上。焊接要牢固避免后续因声音振动导致脱落。3.2.3 “上板”T板—— 交互的触角这块板集成电容触摸传感器是Mochi的“感觉器官”。焊接母座焊接唯一的一个6Pin母座。安装排针剪下两段6Pin的排针公头从PCB的背面即有HackerBoxlogo的一面插入使排针的短针穿过板子长针留在logo面。在背面元件面将短针焊牢。这构成了与其它板连接的结构支柱。安装触摸传感器将TTP223触摸模块贴放在PCB正面有母座的一面元件朝外。剪一段3Pin的排针穿过触摸模块的孔使塑料底座紧贴模块。将排针穿过PCB上对应的三个孔在PCB背面将露出的针脚剪至几乎与板面齐平然后焊牢。翻回正面小心地取下3Pin排针的塑料底座再将过长的针脚剪短最后将针脚焊接到触摸模块的焊盘上。技巧可以先在PCB背面的焊盘上上一点锡然后用烙铁加热焊盘同时将剪短的排针按压进去这样焊接更美观牢固。3.2.4 “下板”B板—— 能量的心脏这是最复杂也最重要的一块板负责能量接收、存储与分配。安装TP4056充电模块将TP4056模块贴放在标有“B”的区域。剪两小段排针穿过模块两个角落的固定孔和PCB在PCB背面焊接固定。这起到了机械固定作用。关键焊接模块上有“OUT”和“OUT-”两个通孔输出正负极PCB上对应位置有焊盘。用烙铁头抵住通孔加热并送入焊锡让锡流过孔洞在背面的焊盘上形成饱满的焊点。这实现了电气连接。务必确保焊点牢固这是主供电通道。集成无线接收模块先将无线充电接收线圈的引线从模块上拆下记住正负极位置通常有标记。将接收模块本体贴在TP4056旁边同样将其输出端的“”和“-”通孔焊接到PCB对应的焊盘上。线圈安装技巧将线圈背面的离型纸撕掉粘贴到PCB背面B板的另一面。一个提升充电效率的秘诀不要将线圈直接贴平在PCB上可以用1-2毫米厚的双面泡沫胶垫高使线圈更靠近外壳从而在最终组装后更贴近无线充电器表面耦合效率更高。将线圈引线穿过PCB上的预留孔修剪长度后焊回接收模块对应的正负极。此处极性绝对不能接反焊接滑动开关开关没有极性可以任意方向焊接确保按动顺畅即可。安装结构排针同T板在背面焊接两排6Pin公头排针长针朝外。连接电池可选但推荐如果你有503035规格的锂聚合物电池将其红正、黑负线剪至约4厘米分别焊接到TP4056模块上标有“B”和“B-”的焊盘。焊接电池时烙铁温度不宜过高且动作要快避免高温损坏电芯。3.3 整体组装与方位确认将四块板子像立方体的四个面一样通过排针插座拼装起来。此时需要格外注意方向前面带有HackerBox logo和单独一个母座的T板是前面因为那个母座是用来插OLED屏幕Mochi的脸的。后面你会看到两个USB-C口一个是ESP32的编程口一个是TP4056的有线充电口。左右字母“L”和“R”是相对于Mochi自身的左右。所以当你面对它的屏幕时你右手边的是它的“左板”L。插入OLED将OLED显示屏的排针插入T板的母座中。为了让它更贴合可以将其排针的黑色塑料底座取下。屏幕应该能平整地靠在板子上。组装完成后先不要急于上电。拿出万用表调到蜂鸣通断档或电阻档进行以下关键检查检查电源短路测量TP4056模块的“B”和“B-”之间是否有短路电阻极低。测量无线接收模块输出端焊盘之间是否有短路。检查连接粗略检查各板之间通过排针连接的关键电源点如VCC GND是否导通。4. 软件环境配置与固件烧录硬件是身体软件是灵魂。我们将为ESP32-C3注入Mochi的生命程序。4.1 Arduino IDE环境搭建安装Arduino IDE从Arduino官网下载并安装最新版IDE。添加ESP32开发板支持打开IDE进入“文件”-“首选项”在“附加开发板管理器网址”中输入https://espressif.github.io/arduino-esp32/package_esp32_index.json打开“工具”-“开发板”-“开发板管理器”搜索“esp32”找到由“Espressif Systems”提供的包点击安装。选择开发板与端口“工具”-“开发板”-“ESP32 Arduino”-“Nologo ESP32C3 Super Mini”用USB线连接Mochi的ESP32端口L板到电脑。在“工具”-“端口”中选择新出现的串口如COMx或/dev/cu.usbmodemxxx。4.2 基础测试与Bootloader模式在烧录复杂固件前先用最简单的Blink程序测试开发板和连接。打开“文件”-“示例”-“01.Basics”-“Blink”。点击上传按钮。如果一切顺利程序将编译并上传Mochi左板上的蓝色LED开始闪烁。如果上传失败最常见的原因是ESP32没有进入下载模式。你需要手动操作按住L板上的“BOOT”按钮不放。再按一下“RST”按钮。松开“RST”按钮。松开“BOOT”按钮。此时ESP32进入下载模式立即点击Arduino IDE的上传按钮。这个操作在后续开发中会经常用到。4.3 获取并烧录Mochi固件原项目基于开源的“huykhong mochi”项目。获取固件访问该项目的GitHub页面可通过搜索“huykhong mochi github”找到下载整个代码仓库。在Arduino IDE中打开解压下载的文件用Arduino IDE打开其中的主.ino文件。安装依赖库根据代码开头的#include提示你通常需要安装以下库通过“工具”-“管理库”搜索安装Adafruit_GFX图形库Adafruit_SH1106或Adafruit_SSD1306OLED驱动库具体根据屏幕型号可能需要ESP32Tone或类似的音频库。关键配置修改在代码中找到屏幕初始化部分。常见的OLED驱动芯片是SSD1306或SH1106。如果烧录后屏幕不亮或花屏很可能是驱动型号选错。尝试将Adafruit_SSD1306改为Adafruit_SH1106或者修改初始化参数。原教程也明确指出需要将“Screen type”改为SH1106。编译与上传确认开发板和端口选择正确后点击上传。由于程序较大上传可能需要几十秒。上传成功后Mochi可能会自动重启屏幕上应该出现初始画面。5. 功能调试与无线充电测试当硬件组装完毕且软件成功运行后就进入了最后的联调阶段。5.1 有线供电与基本功能验证供电测试将滑动开关拨到“ON”。通过USB线给TP4056模块B板USB口供电。此时TP4056上的红色LED应亮起表示正在充电如果接了电池。ESP32应该启动屏幕亮起。交互测试触摸T板上的触摸传感器Mochi应该做出反应如改变表情、发出声音。检查扬声器是否正常工作。电池测试如果已安装拔掉USB线仅靠电池供电。Mochi应能继续工作。用万用表测量电池电压通过TP4056的LED状态蓝灯常亮表示充满红灯表示充电中灯灭表示无输入或故障了解电池状态。5.2 无线充电功能验证这是项目的点睛之笔。将无线充电座充电板接通电源。将组装好的Mochi放置在充电座中心区域。缓慢地前后左右移动Mochi寻找充电效率最高的“甜点”位置。你会听到充电座可能发出“嘀”的一声同时TP4056上的红色充电指示灯亮起。成功现象当Mochi屏幕显示充电图标如果固件有此功能且TP4056红灯亮起时表示无线充电成功。此时即使拔掉所有有线连接Mochi也能依靠无线传输的能量运行或为电池充电。5.3 常见问题与排查实录即使按照步骤操作也可能会遇到一些问题。以下是我在制作和帮助他人过程中总结的“避坑指南”问题现象可能原因排查步骤与解决方案ESP32无法上传程序1. 端口选择错误。2. 驱动未安装CH340/CP2102。3. 未进入下载模式。4. USB线仅供电无数据。1. 检查设备管理器中的端口号。2. 安装对应的USB转串口驱动。3. 严格按照“BOOT”-“RST”-“松RST”-“松BOOT”顺序操作。4. 换一条确认可传输数据的USB线。上电后无任何反应1. 电源开关未打开。2. 电池没电且无外部供电。3. 电源路径存在短路或断路。1. 确认开关在“ON”。2. 用USB线连接TP4056或ESP32口供电尝试。3.立即断电用万用表蜂鸣档检查- B板VCC到GND是否短路- 电池正负极是否接反- 排针连接处是否虚焊OLED屏幕不显示或花屏1. 屏幕排针接触不良。2. I2C地址不对通常0x3C。3. 屏幕驱动库型号选错SSD1306 vs SH1106。4. 供电不足。1. 重新插拔屏幕确保接触牢固。2. 在代码中检查Wire.begin()和屏幕初始化地址。3.这是最常见原因在代码中将Adafruit_SSD1306改为Adafruit_SH1106试试。4. 测量屏幕VCC引脚电压是否为3.3V。触摸传感器无反应1. 触摸模块焊接不良。2. GPIO引脚定义错误。3. 传感器灵敏度问题。1. 检查T板上触摸模块的三个焊点是否牢固、无桥接。2. 核对代码中触摸传感器连接的GPIO引脚号与实际焊接是否一致。3. TTP223模块上可能有灵敏度选择焊点尝试短接不同的选项。扬声器无声1. 扬声器极性接反。2. 连接线断路。3. 代码中音频输出引脚错误或库未正确初始化。4. 音量设置过低或音频文件格式问题。1. 交换扬声器两根引线的焊接位置试试。2. 用万用表通断档检查导线。3. 确认代码中tone()或相应音频函数输出的引脚号。4. 检查固件中是否有音量设置或尝试播放不同的频率测试。无线充电不工作1. 线圈极性接反。2. 线圈距离充电座太远。3. 充电座功率不足或不兼容Qi。4. TP4056模块损坏或焊接问题。1.重点检查将无线接收模块线圈的两根线交换后重新焊接。这是线圈类元件接反的典型症状。2. 尝试用泡沫胶垫高线圈或移除Mochi底壳如果有再测试。3. 确保使用支持Qi标准、输出功率≥5W的充电座。用手机测试充电座是否正常。4. 用万用表测量无线接收模块输出端在充电时是否有5V左右电压。若无则接收模块可能故障。电池无法充电或耗电极快1. TP4056芯片损坏。2. 电池本身老化或损坏。3. ESP32未进入低功耗模式。1. 观察TP4056指示灯接电源红灯应亮。不亮则可能芯片或输入线路问题。2. 单独测量电池电压过低3.0V的电池TP4056可能拒充保护。3. 检查固件是否在闲置时调用了esp_deep_sleep_start()等低功耗函数。一个关键的实操心得无线充电的效率非常依赖于线圈的对准和距离。在最终封装外壳时一定要将接收线圈尽可能贴近外壳内侧。我个人的做法是在B板内侧对应线圈的位置用CNC或手工挖一个浅槽将线圈嵌入使其表面与PCB板面基本持平这样外壳就可以做得很薄极大提升了充电的便利性和成功率。完成所有调试后你的Mochi数字伴侣就正式“活”过来了。你可以把它放在办公桌的无线充电板上它就像一个小生命安静地待在那里偶尔需要你的触摸互动而能量则在无形中自动补充。这种将前沿的无线供电技术与充满温情的交互设计相结合的过程正是DIY电子制作最迷人的地方。

相关新闻