旧电话机改装寻宝游戏提示系统 — 基于 SparkFun Arduino Pro Mini
元件与材料
| SparkFun Arduino Pro Mini 328 - 5V/16MHz | × | 1 |
| MP3/WAV 触发板 | × | 1 |
| 旧电话机 (含键盘) | × | 1 |
| 面包板 (通用) | × | 1 |
| 跳线 (通用) | × | 1 |
| SparkFun 连接线 | × | 1 |
| microSD 卡 | × | 1 |
所需工具
- 电烙铁
- 热风枪
项目步骤
步骤 1:分析键盘行列
拆解电话机取出键盘。键盘采用行列扫描,用万用表通断档测量引脚对应关系。本项目键盘引脚不规则,需手动建立矩阵映射 (见原文图片)。最终简化为 4 行 3 列矩阵,空位用 A/B/C/D 占位。
步骤 2:焊接引脚延长线
仅使用所需按键 (本例 4 位密码需 5 个键含 *),给对应引脚焊接延长线便于接面包板。
步骤 3:准备音频文件
使用 Natural Readers 文字转语音生成提示语,SCPhillips.com 生成摩斯密码音频,另准备按键提示音。用 Audacity 合并编辑,导出为 MP3。文件命名必须为 001, 002... 对应触发板引脚 1-9,并置于 SD 卡 01 文件夹内。
步骤 4:安装库与准备代码
需安装 Keypad 和 Password 库。下载代码,修改密码 (默认 "7365") 及按键矩阵映射。
步骤 5:组装所有模块
掏空电话机内部,塞入电路板、电源库。键盘、MP3 板、Arduino Pro Mini 紧凑布局。
完整代码
#include <Password.h>
#include <Keypad.h>
Password password = Password("7365");
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'4','5','6'},
{'7','8','A'}, // A 为占位符
{'B','2','3'}, // B 为占位符
{'*','C','D'} // C/D 为占位符
};
byte rowPins[ROWS] = {7,5,3,8};
byte colPins[COLS] = {6,4,2};
const int dial = 13; // 接 MP3 板触发脚 1 (按键音)
const int morse = 12; // 接 MP3 板触发脚 2 (提示语+摩斯)
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
pinMode(dial, OUTPUT);
pinMode(morse, OUTPUT);
digitalWrite(dial, HIGH); // MP3 板低电平触发,初始拉高
digitalWrite(morse, HIGH);
Serial.begin(9600);
keypad.addEventListener(keypadEvent);
}
void loop() {
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey) {
switch (keypad.getState()) {
case PRESSED:
Serial.print("Pressed: "); Serial.println(eKey);
digitalWrite(dial, LOW); delay(50); digitalWrite(dial, HIGH); // 播放按键音
switch (eKey) {
case '*': checkPassword(); break; // * 作为确认键
default: password.append(eKey);
}
break;
}
}
void checkPassword() {
if (password.evaluate()) {
Serial.println("Success");
password.reset();
digitalWrite(morse, LOW); delay(50); digitalWrite(morse, HIGH); // 播放提示语
} else {
Serial.println("Wrong");
password.reset();
}
}
原理图

制造工艺
- Arduino UNO + MAX7219 自制《UFO攻击》复古射击游戏机
- DIY 云朵发光服装 — LED 灯带 + Arduino Nano + SparkFun 元件
- 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
- MyRiver:基于 Arduino MKR FOX 1200 的河流水质远程监测系统
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- Arduino + 模拟摇杆互动游戏:五向 LED 反馈
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- Arduino 驱动的迷你漫游车:自制避障机器人
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
- Arduino 101 计步器:集成 DHT11 温湿度 + LCD 显示步数/距离/卡路里
- LED 光影塔:可编程 RGB 圆柱体艺术装置