<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>七号开工了</title><link>https://qihao.dev/</link><description>七号的个人造物记录：从零学习 3D 打印、电子硬件和产品制造。</description><language>zh-CN</language><atom:link href="https://qihao.dev/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Mon, 14 Sep 2026 00:00:00 GMT</lastBuildDate><item><title>同一句话为什么不该重复生成 MP3：拆分语音资产与播放任务</title><link>https://qihao.dev/blog/tts-audio-assets-playback-jobs-cache/</link><guid isPermaLink="true">https://qihao.dev/blog/tts-audio-assets-playback-jobs-cache/</guid><description>本地语音平台最初每次发送相同文字都会重新调用 TTS，并生成一份重复 MP3。本文从一次真实重复文件问题出发，解释为什么“语音资产”和“播放任务”必须分开，以及缓存键、历史试听、再次发送和旧数据库迁移应该怎样配合。</description><dc:creator>七号</dc:creator><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><category>概念科普</category><category>TTS</category><category>音频缓存</category><category>数据建模</category><category>ESP32</category><category>语音平台</category><category>SHA-256</category></item><item><title>ESP32-S3 AI 语音对话原型</title><link>https://qihao.dev/works/001-esp32-s3-ai-voice-conversation-prototype/</link><guid isPermaLink="true">https://qihao.dev/works/001-esp32-s3-ai-voice-conversation-prototype/</guid><description>制作一套由按钮触发的 AI 语音对话原型：录下使用者的声音并上传服务器，经大语言模型处理后返回语音内容，再由设备通过音箱播放。</description><dc:creator>七号</dc:creator><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>AI 硬件</category><category>ESP32-S3</category><category>AI 语音对话</category><category>语音交互</category><category>硬件原型</category></item><item><title>网页输入文字，ESP32 就能从喇叭说出来：本地语音平台播放链路实测</title><link>https://qihao.dev/blog/esp32-web-text-to-speech-local-voice-platform/</link><guid isPermaLink="true">https://qihao.dev/blog/esp32-web-text-to-speech-local-voice-platform/</guid><description>我把 ESP32-S3 的语音播放从“把固定音频烧进代码”改成了“在网页输入文字后动态播放”。本文记录网页、本地 TTS、任务队列、ESP32、MAX98357A 和喇叭之间怎样连成一条实际可听的链路，以及当前还没有完成的语音输入边界。</description><dc:creator>七号</dc:creator><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>项目进展</category><category>ESP32-S3</category><category>MAX98357A</category><category>文字转语音</category><category>FastAPI</category><category>I²S</category><category>语音机器人</category></item><item><title>ESP32-S3 接 MAX98357A：5 根线让 4Ω/3W 喇叭播放语音</title><link>https://qihao.dev/blog/esp32-s3-max98357a-speaker-wiring-voice-playback/</link><guid isPermaLink="true">https://qihao.dev/blog/esp32-s3-max98357a-speaker-wiring-voice-playback/</guid><description>记录一次已经完成的 ESP32-S3 语音播放实践：先解决喇叭插头无法接入 MAX98357A 的问题，再按 5 根线完成 I²S 接线，经过短时供电检查、三声测试音和五条网页语音验证，确认声音输出链路可用。</description><dc:creator>七号</dc:creator><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate><category>问题解决</category><category>ESP32-S3</category><category>MAX98357A</category><category>I²S</category><category>喇叭</category><category>音频播放</category></item><item><title>从一袋元器件到成功点亮：我第一次焊完一整块电路板</title><link>https://qihao.dev/blog/first-complete-circuit-board-electronic-dice/</link><guid isPermaLink="true">https://qihao.dev/blog/first-complete-circuit-board-electronic-dice/</guid><description>为了练习焊接，又希望最后得到一个能使用的作品，我选择了一套 YCA2109 电子骰子练习板。这篇文章记录我怎样从一块空板和一袋元器件开始，花大约五六个小时完成安装、焊接和故障排查，最后让 LED 短时点亮。</description><dc:creator>七号</dc:creator><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><category>成长故事</category><category>焊接入门</category><category>电子骰子</category><category>电路板</category><category>硬件实践</category><category>零基础</category></item><item><title>YCA2109 电子骰子通电不亮、芯片发热：两颗 DIP 芯片装反后的排查过程</title><link>https://qihao.dev/blog/yca2109-electronic-dice-no-light-hot-ic-reversed/</link><guid isPermaLink="true">https://qihao.dev/blog/yca2109-electronic-dice-no-light-hot-ic-reversed/</guid><description>一块刚焊完的 YCA2109 电子骰子通电后 LED 全灭，接入电路板后的电压只有约 2.2V，约 10 分钟后两颗芯片明显发热。本文记录我怎样从电源、按钮、万用表档位和输入二极管一路排查，最终发现两颗 DIP 芯片方向错误；换向后，电子骰子恢复运行并能随机停在不同点数。</description><dc:creator>七号</dc:creator><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><category>问题解决</category><category>YCA2109</category><category>电子骰子</category><category>DIP 芯片</category><category>硬件排查</category><category>万用表</category></item><item><title>ESP32 接 ST7789 屏幕：7 根线分别是做什么的？</title><link>https://qihao.dev/blog/esp32-st7789-seven-wire-pin-functions/</link><guid isPermaLink="true">https://qihao.dev/blog/esp32-st7789-seven-wire-pin-functions/</guid><description>第一次连接 GMT130-V1.0 时，我只会照着接线表操作。本文把 VCC、GND、BLK、RES、SCK、SDA、DC 分成四类，沿完整显示链路解释它们怎样把 ESP32 代码变成可见画面，以及理解以后怎样安全地重新规划线路。</description><dc:creator>七号</dc:creator><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><category>概念科普</category><category>ESP32-S3</category><category>ST7789</category><category>GMT130-V1.0</category><category>SPI</category><category>硬件基础</category></item><item><title>ST7789 有背光却无画面：GMT130-V1.0 从 SPI_MODE0 改成 MODE3 后点亮</title><link>https://qihao.dev/blog/st7789-gmt130-spi-mode3-black-screen-fix/</link><guid isPermaLink="true">https://qihao.dev/blog/st7789-gmt130-spi-mode3-black-screen-fix/</guid><description>一块有背光却始终没有像素画面的 GMT130-V1.0，驱动芯片和分辨率其实都选对了。本文复盘我如何从软件 SPI Mode 0 黑屏，转向真正应用 SPI_MODE3 的硬件 SPI，并通过五色循环和断电重启完成复测。</description><dc:creator>七号</dc:creator><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><category>问题解决</category><category>ESP32-S3</category><category>ST7789</category><category>GMT130-V1.0</category><category>SPI</category><category>硬件调试</category></item><item><title>ST7735 屏幕边缘出现彩色花线：INITR_BLACKTAB 和 GREENTAB 怎么选</title><link>https://qihao.dev/blog/st7735-colored-edge-lines-blacktab-greentab/</link><guid isPermaLink="true">https://qihao.dev/blog/st7735-colored-edge-lines-blacktab-greentab/</guid><description>1.8 英寸 128×160 ST7735 已经能显示主体，右侧和底部却留下固定彩线。本文用一次单变量实测说明如何从画面偏移判断初始化参数不匹配，并验证 INITR_GREENTAB 是否适合当前面板。</description><dc:creator>七号</dc:creator><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>问题解决</category><category>ESP32-S3</category><category>ST7735</category><category>Arduino</category><category>TFT 显示屏</category><category>硬件排查</category></item><item><title>AI 给我列了购物清单，但我花了一天时间购买配件</title><link>https://qihao.dev/blog/ai-shopping-list-hardware-parts/</link><guid isPermaLink="true">https://qihao.dev/blog/ai-shopping-list-hardware-parts/</guid><description>我原以为买齐 ESP32-S3 的元器件后，就能直接接线和调试；直到麦克风没有焊针脚、喇叭端子无法匹配，我才理解 AI 能加速解决问题，却不能代替实践中形成的基础和判断力。</description><dc:creator>七号</dc:creator><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>成长故事</category><category>AI 学习</category><category>ESP32-S3</category><category>硬件入门</category><category>实践记录</category></item><item><title>教程看懂了，第一次焊接还是焊成了一坨</title><link>https://qihao.dev/blog/first-soldering-inmp441-failure/</link><guid isPermaLink="true">https://qihao.dev/blog/first-soldering-inmp441-failure/</guid><description>第一次给 INMP441 焊排针，我跳过练习板直接上手，20 分钟后留下了六个形状各异的焊点。这次翻车让我明白：教程和 AI 能教知识，但动手能力只能从实践中长出来。</description><dc:creator>七号</dc:creator><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>成长故事</category><category>ESP32-S3</category><category>INMP441</category><category>第一次焊接</category><category>硬件学习</category><category>AI 辅助学习</category></item></channel></rss>