Skip to main content

第二篇:能跑的原型 — 开发板 + 3D 打印 + 热熔胶

进入信号:纸板原型通过了,奶奶说「真做出来就好了」。但肥皂盒不会亮也不会响。

本篇解决的问题:怎么用最低成本,把纸板模型变成一个会发光、会响铃、会通知子女的物理原型?硬件原型的工具链是什么?第一个能演示的原型怎么做?


从肥皂盒到开发板

纸板原型验证了交互模型——打开、装药、提醒。现在需要三样纸板做不到的事:

  1. 定时提醒:每天 7:00、12:00、18:00,蜂鸣器响 + LED 闪
  2. 检测药格:哪个格子被打开了(说明老人吃了药),哪个没被打开(可能忘了)
  3. 通知子女:WiFi 联网,老人没按时吃药时,给子女手机发一条消息

功能拆解:不是一口吃成胖子

你的第一版能跑的原型只需要三样东西:

功能硬件成本
闹钟 + 蜂鸣器提醒ESP32 开发板 + 无源蜂鸣器模组¥25
药格开关检测7 个微动开关 + 面包板 + 杜邦线¥15
WiFi 联网 + 发消息ESP32 内置 WiFi + Server酱(免费微信通知服务)¥0
外壳FDM 3D 打印(淘宝代打)¥30

总硬件成本:约 ¥70。 不需要屏幕、不需要触控、不需要电池管理(先插 USB 供电)。先让三件事跑通。


从零开始焊电路:Vibe Coding 的硬件映射

SaaS 版里你问 AI「帮我写一个对账页面」。硬件版里你问 AI「帮我选一款适合做药盒的 MCU」。

Vibe Coding 硬件提示词示例: "我要做一个智能药盒原型。需要:1. 能设置 3 组闹钟(早中晚) 2. 7 个药格,每个药格有一个微动开关检测是否被打开 3. WiFi 联网,药没按时吃时通过 HTTP 请求通知到微信。主控芯片选 ESP32 还是 STM32?给出理由和推荐方案。"

AI 会推荐 ESP32——自带 WiFi+蓝牙,Arduino IDE 直接写,淘宝 ¥15 一块。不需要单独买 WiFi 模组,不需要画板子——开发板直接插面包板。


第一版真的能跑的原型

硬件清单

核心部件:
- ESP32 Dev Board ×1 ¥15
- 无源蜂鸣器模组 ×1 ¥3
- 微动开关 ×7 ¥7
- LED 灯珠(红绿各 1) ×2 ¥2
- 面包板 ×1 ¥5
- 杜邦线(公母各一包) ¥10
- 5V 2A USB 充电头 + MicroUSB 线 ¥15

外壳:
- FDM 3D 打印外壳(淘宝代打) ¥30

软件:
- Arduino IDE 免费
- Server酱(微信通知) 免费

总成本:¥87。

电路接线(30 分钟)

ESP32 的引脚分配:

ESP32 GPIO 14 → 蜂鸣器(PWM 控制音量,不要刺耳)
ESP32 GPIO 26 → 绿色 LED(药按时吃了,绿灯亮)
ESP32 GPIO 27 → 红色 LED(药没按时吃,红灯闪)
ESP32 GPIO 32-38 → 7 个微动开关(每个药格一个)
ESP32 5V / GND → 面包板电源轨

用杜邦线在面包板上插好,不需要焊接——原型阶段面包板够用。你甚至可以拍照发给 AI:「帮我检查接线有没有问题」。

固件代码(AI 辅助写)

// 智能药盒原型 V0.1 - ESP32 版
#include <WiFi.h>
#include <HTTPClient.h>

// 闹钟时间(24小时制)
const int ALARM_HOURS[] = {7, 12, 18};
const int ALARM_MINUTES = 0;

// 药格开关引脚
const int PILL_SWITCHES[] = {32, 33, 34, 35, 36, 37, 38};
bool pill_taken[7] = {false};

// 蜂鸣器和LED
const int BUZZER_PIN = 14;
const int LED_GREEN = 26;
const int LED_RED = 27;

// WiFi 和通知
const char* WIFI_SSID = "your_wifi";
const char* WIFI_PASS = "your_password";
const char* SERVERCHAN_KEY = "your_serverchan_key";

void setup() {
Serial.begin(115200);

// 初始化引脚
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_RED, OUTPUT);
for (int i = 0; i < 7; i++) {
pinMode(PILL_SWITCHES[i], INPUT_PULLUP);
}

// 连 WiFi
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi 已连接");
}

void loop() {
// 检查时间,到点了触发提醒
// 检测哪个药格被打开了
// 如果超时没打开,LED 红灯闪 + 发微信通知
checkAlarms();
checkPillSwitches();
delay(1000);
}

void checkAlarms() {
// 获取当前时间(通过 NTP 对时)
// 到点 → 蜂鸣器响 30 秒 + 绿灯闪
ledcWriteTone(0, 2000); // 2kHz 蜂鸣器声音,不太刺耳
digitalWrite(LED_GREEN, HIGH);
delay(30000); // 响 30 秒
ledcWriteTone(0, 0);
digitalWrite(LED_GREEN, LOW);
}

void checkPillSwitches() {
for (int i = 0; i < 7; i++) {
if (digitalRead(PILL_SWITCHES[i]) == LOW && !pill_taken[i]) {
pill_taken[i] = true;
Serial.printf("药格 %d 已打开\n", i + 1);
}
}
}

void sendWeChatAlert() {
// 发微信通知子女:药没按时吃
HTTPClient http;
String url = "https://sctapi.ftqq.com/" + String(SERVERCHAN_KEY) + ".send?title=提醒&desp=奶奶今天早上的药还没吃";
http.begin(url);
http.GET();
http.end();
}

这段代码不是完美的——NTP 时间同步还没加、WiFi 断线重连还没处理、蜂鸣器音量不能调。但它能跑。上电→连 WiFi→到点了蜂鸣器响→按药格开关有反应→手机收到通知。

原型的第一原则:永远先跑通链路,再补细节。


3D 打印外壳:从面包板到像样子的东西

面包板 + 杜邦线虽然能跑,但带回家给奶奶看她会说「这什么东西?好多线。」

你需要一个外壳。

外壳的快速路径

  1. 用 Fusion 360(免费版)或 Tinkercad(浏览器版,更简单)画出外壳的 3D 模型
  2. 7 个药格,每个 25mm × 25mm × 20mm(容下 3-4 天的药)
  3. 药格上方预留微动开关的安装孔
  4. ESP32 和面包板放在底部夹层
  5. 导出 STL 文件 → 淘宝找 3D 打印代打(FDM,PLA 材料,¥30 包邮)

Vibe Coding 的 3D 建模:告诉 AI「我要一款智能药盒的 3D 外壳。外形参考 MUJI 风格,圆角矩形,白色 PLA 材质。内部分 7 格,每格 25×25×20mm。底部预留 70×40×15mm 的夹层放 ESP32 和面包板。」AI 可以帮你生成 Fusion 360 脚本或 STL 草图。

从 3D 打印到 CNC 手板

FDM 打印的表面粗糙,层纹明显。如果给老人看,他们会觉得「这东西好廉价」。如果你要让外观看起来接近真实产品,做 CNC 手板:

  • CNC 手板:ABS 材料,表面光滑,接近注塑效果
  • 淘宝找「CNC 手板加工」,提供 STP 格式(不是 STL),¥200-500/个
  • 现在不需要——3D 打印够用了。等打样阶段再上 CNC

拿给奶奶试:第一次真实使用测试

周末你带着「热熔胶粘的盒子」回老家。

你帮奶奶把一周的药倒进去,设了早上 7 点的闹钟。第二天早上:

  • 7:01 蜂鸣器响了,绿灯闪了。奶奶正在客厅扫地,回头看了一下餐桌,走过来打开药格,把药吃了。
  • 7:02 你手机收到 Server 酱推送:「奶奶今天早上的药已按时服用」。

第一次完整链路跑通了:闹钟响→奶奶听见→打开药格→你收到确认。

但问题也来了:

  1. 蜂鸣器声音太大——「吓我一跳」,奶奶说。你需要调低音量,或者换成语音「奶奶,吃药了」
  2. 药格打开后复位不灵敏——微动开关的触发行程 0.5mm,壳体的 3D 打印公差太大,有时候盖紧了按不到开关
  3. 盒子太轻——餐桌上有桌布,一拉桌布盒子掉地上,电池盖飞了
  4. 按钮太小——奶奶想手动按掉闹钟,但你只留了一个小按钮藏在盒子侧面,她找不到

四个问题,没有一个是技术上解决不了的。但每一个都来自真实使用场景——这是你在工作室里永远想不到的。 改微动开关的安装方式、加重底部(粘一块铅板)、换个大按钮——下一版原型解决。


第二个客户:邻居王奶奶

奶奶的邻居王奶奶也每天吃 4 种药。奶奶主动帮你推销:「我孙子做的,会响的。」

你拿了盒子给王奶奶试了一天。晚上王奶奶的儿媳妇加了你微信:

「能不能加个功能——我妈有时候出门遛弯,药盒在家里响她听不见。能不能手机也同步提醒?」

新需求来了——但你决定不做。理由是:这个功能需要开发 App,开发 App = 3 个月以上的投入。在方向还没验证之前,不要为了一个人的需求扩展整个技术栈。

你先只做一个版本:出门版药盒(便携 + 震动)——这是第三篇多原型并行要验证的方向。


什么时候进入下一阶段?

你已经验证了:

  • ✅ 原型能跑:闹钟响→蜂鸣器叫→奶奶打开药格→你收到通知,完整链路通了
  • ✅ 奶奶用了 3 天,没有一天忘记吃药(之前每周有 2-3 次漏服)
  • ✅ 邻居王奶奶也想用——说明需求不只你奶奶一个人有
  • ✅ 发现了真实使用中的四个改进点——壳体重心、开关灵敏度、蜂鸣器音量、按钮大小

但你也意识到:你现在的方案(桌面式药盒)不一定是最好的方案。老人 A 需要便携的,老人 B 不需要任何操作(子女直接打电话提醒),老人 C 需要同时管两个人的药。

进入下一阶段的信号:原型能跑了,但你不确定哪种形态最好。

这是第三篇的内容——多原型并行。


本篇总结

做了什么花费耗时
ESP32 开发板 + 面包板接线¥472 小时
写固件代码(AI 辅助)¥02 小时
3D 打印外壳¥303 天(淘宝代打)
组装 + 热熔胶固定¥101 小时
奶奶试 3 天 + 邻居王奶奶试 1 天¥04 天

总硬件成本:¥87。 一个会亮、会响、会连 WiFi 的智能药盒原型。

当前系统形态: ESP32 + 面包板 + 蜂鸣器 + 7 个微动开关 + 3D 打印外壳。每天早中晚响三次,响了奶奶打开药格,打开了你收到微信通知。只能插电用,不能调音量,热熔胶粘的,样子不太好看——但它是第一个真正跑起来的原型。


下一步

原型能跑了,但你不确定桌面式是不是最好的方案——进入第三篇:多原型并行,桌面式 / 便携式 / 子母式三种方案同时做。