第二篇:能跑的原型 — 开发板 + 3D 打印 + 热熔胶
进入信号:纸板原型通过了,奶奶说「真做出来就好了」。但肥皂盒不会亮也不会响。
本篇解决的问题:怎么用最低成本,把纸板模型变成一个会发光、会响铃、会通知子女的物理原型?硬件原型的工具链是什么?第一个能演示的原型怎么做?
从肥皂盒到开发板
纸板原型验证了交互模型——打开、装药、提醒。现在需要三样纸板做不到的事:
- 定时提醒:每天 7:00、12:00、18:00,蜂鸣器响 + LED 闪
- 检测药格:哪个格子被打开了(说明老人吃了药),哪个没被打开(可能忘了)
- 通知子女: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 打印外壳:从面包板到像样子的东西
面包板 + 杜邦线虽然能跑,但带回家给奶奶看她会说「这什么东西?好多线。」
你需要一个外壳。
外壳的快速路径
- 用 Fusion 360(免费版)或 Tinkercad(浏览器版,更简单)画出外壳的 3D 模型
- 7 个药格,每个 25mm × 25mm × 20mm(容下 3-4 天的药)
- 药格上方预留微动开关的安装孔
- ESP32 和面包板放在底部夹层
- 导出 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 酱推送:「奶奶今天早上的药已按时服用」。
第一次完整链路跑通了:闹钟响→奶奶听见→打开药格→你收到确认。
但问题也来了:
- 蜂鸣器声音太大——「吓我一跳」,奶奶说。你需要调低音量,或者换成语音「奶奶,吃药了」
- 药格打开后复位不灵敏——微动开关的触发行程 0.5mm,壳体的 3D 打印公差太大,有时候盖紧了按不到开关
- 盒子太轻——餐桌上有桌布,一拉桌布盒子掉地上,电池盖飞了
- 按钮太小——奶奶想手动按掉闹钟,但你只留了一个小按钮藏在盒子侧面,她找不到
四个问题,没有一个是技术上解决不了的。但每一个都来自真实使用场景——这是你在工作室里永远想不到的。 改微动开关的安装方式、加重底部(粘一块铅板)、换个大按钮——下一版原型解决。
第二个客户:邻居王奶奶
奶奶的邻居王奶奶也每天吃 4 种药。奶奶主动帮你推销:「我孙子做的,会响的。」
你拿了盒子给王奶奶试了一天。晚上王奶奶的儿媳妇加了你微信:
「能不能加个功能——我妈有时候出门遛弯,药盒在家里响她听不见。能不能手机也同步提醒?」
新需求来了——但你决定不做。理由是:这个功能需要开发 App,开发 App = 3 个月以上的投入。在方向还没验证之前,不要为了一个人的需求扩展整个技术栈。
你先只做一个版本:出门版药盒(便携 + 震动)——这是第三篇多原型并行要验证的方向。
什么时候进入下一阶段?
你已经验证了:
- ✅ 原型能跑:闹钟响→蜂鸣器叫→奶奶打开药格→你收到通知,完整链路通了
- ✅ 奶奶用了 3 天,没有一天忘记吃药(之前每周有 2-3 次漏服)
- ✅ 邻居王奶奶也想用——说明需求不只你奶奶一个人有
- ✅ 发现了真实使用中的四个改进点——壳体重心、开关灵敏度、蜂鸣器音量、按钮大小
但你也意识到:你现在的方案(桌面式药盒)不一定是最好的方案。老人 A 需要便携的,老人 B 不需要任何操作(子女直接打电话提醒),老人 C 需要同时管两个人的药。
进入下一阶段的信号:原型能跑了,但你不确定哪种形态最好。
这是第三篇的内容——多原型并行。
本篇总结
| 做了什么 | 花费 | 耗时 |
|---|---|---|
| ESP32 开发板 + 面包板接线 | ¥47 | 2 小时 |
| 写固件代码(AI 辅助) | ¥0 | 2 小时 |
| 3D 打印外壳 | ¥30 | 3 天(淘宝代打) |
| 组装 + 热熔胶固定 | ¥10 | 1 小时 |
| 奶奶试 3 天 + 邻居王奶奶试 1 天 | ¥0 | 4 天 |
总硬件成本:¥87。 一个会亮、会响、会连 WiFi 的智能药盒原型。
当前系统形态: ESP32 + 面包板 + 蜂鸣器 + 7 个微动开关 + 3D 打印外壳。每天早中晚响三次,响了奶奶打开药格,打开了你收到微信通知。只能插电用,不能调音量,热熔胶粘的,样子不太好看——但它是第一个真正跑起来的原型。
下一步
原型能跑了,但你不确定桌面式是不是最好的方案——进入第三篇:多原型并行,桌面式 / 便携式 / 子母式三种方案同时做。