紧凑型 5 层 Arduino 驱动迷你电梯模型
组件与物料
| Arduino Mega 2560 | ×1 |
所需工具
- 曲线锯
应用与在线服务
- Arduino IDE
项目简介
这是一个真正能运行的 5 层电梯模型,高 3 英尺 (约 91 cm)。我们投入了大量心血。
快速链接:
- 代码
- 接线图 (即将发布)
灵感来源
我们玩 Arduino 和嵌入式/IoT 好几年了,但大多数项目 (包括见过的) 都很简单。一直想做个“真实”的东西。去年夏天参加了旧金山湾区的 Project Ember 夏令营,孩子们用电动工具设计搭建大型木结构,深受启发,决定将实体建造与 Arduino 结合,于是有了这个作品。
技术路线
最大难点是电机选型和楼层检测。真实电梯用大型交流电机配合各楼层传感器,但小尺度下布线繁琐且担心灵敏度/对齐问题。步进电机定位精准,但需精确知道当前位置和目标距离。
庆幸我们在早期的“花式日历”项目中攻克了步进电机定位并利用 EEPROM 断电保存位置。沿用该思路:无需楼层传感器,仅靠计数步进电机步数定位。
另一难点是楼层呼叫按钮:需带灯的瞬动开关,且灯光需独立于按钮控制。我们在 eBay 买到合适的按钮。
材料清单
- 带独立指示灯的按钮 (eBay 购买,外观如图)
- Arduino Mega 2560 (GPIO 更多) —— 建议买官方正版
- 8×8 LED 矩阵 (显示箭头) Amazon
- 七段数码管 (显示楼层) SparkFun
- 步进电机及驱动板 (移动轿厢) Elegoo 5 包装 (只用 1 个,多买备用)
- Mega 2560 扩展板 (焊接接线用) BangGood (我们拆掉了顶部排针,可选)
- 螺丝端子排 (10×2) frys.com 需 4 个
- 线轴 (作卷扬滚筒)
以下材料可在家得宝等建材超市买到:
- 纤维板和 3/4 寸方条 (做井道和轿厢)
- 铝角码 (固定电机)
- 各类螺丝
- 软管 (作滚筒衬套)
- 重型尼龙风筝线 (作钢丝绳)
机械制作
井道和轿厢用纤维板和方条加固角落制成。
井道:切 3 块 36″×8″ 纤维板作两侧和后板 (前敞开),用 4 根 36″ 方条拧合成垂直框架,顶底各一块方板保证方正。
轿厢:同理制作,宽度近乎井道内宽,但前后靠方条滑动 (宽大于深)。顶部装眼螺丝悬挂绳索。

注意:井道底板别装太早,得留出轿厢进出空间。测试完成后再装底板。
电机安装:电机置于井道顶部。普通木线轴固定在电机轴上。电机轴有平面,线轴孔是圆的,我们在线轴钻攻丝孔,用螺丝顶住电机轴平面固定。线轴孔比电机轴大,用短段橡胶管作衬套填补间隙。

电机用铝角码固定在井道顶。为防轿厢重量拉脱线轴,另一侧也用铝角码加螺丝支撑,保证线轴水平。
按钮面板:用纤维板制作。左侧井道高度面板装呼叫按钮,红绿交替 (红=下、绿=上),顶层只有红、底层只有绿。右侧“轿厢内”面板除 5 个楼层按钮外,还开孔装 LED 矩阵和七段数码管。

安装 4 个端子排:呼叫面板 2 个,轿厢内面板侧边 2 个。
接线
接线繁杂!选用 Arduino Mega 扩展板,一是手头有,二是焊接固定比杜邦线可靠,三是方便焊接七段数码管所需电阻。

为避免面板硬连线导致难修改,所有连线均做可拔插:面板与 Arduino 间用端子排,七段数码管和 LED 矩阵一端仍用速接插针。

按钮面板自制线束:压接母插片完美适配按钮端子。每按钮需两地线 (按钮、灯各一),若全拉回 Arduino 会有大量地线,故用线束串联公共地,信号线 (按钮信号、灯控制) 分别接端子排。

端子排还便于在扩展板侧用单芯线焊接、面板侧用多股线压接,中间过渡无需焊接。
编程逻辑
代码经多版迭代,核心难点:
- 调度算法:轿厢在 2 楼,轿内要去 3 楼,4 楼有人呼叫下行,1 楼呼叫上行……先去哪?
- 非阻塞运动:步进电机库运行时会阻塞
loop(),但电梯运行中必须响应新按钮。解决:分步移动,每步检查按键并可能改变目标。
代码下载见代码区。上传前需安装库:
- LEDControlMS
- SevenSeg
上传步骤:选对开发板 (Mega 2560)、选对端口 (macOS 类似 /dev/cu.usbmodem1411、Windows 类似 COM2),点击上传。

上传成功后,电梯自检:呼叫按钮依序亮灭 → 轿内按钮依序亮灭 → 七段数码管循环 → 矩阵显示上下箭头 → 七段显示上次断电时记忆的楼层。
测试与校准
步进电机需精确知道各楼层位置,需人工校准一次 (存入 EEPROM 断电保存)。
- 长按轿内面板顶层和底层按钮,矩阵显示 “C” (校准模式)
- 用这两个按钮手动移动轿厢至七段显示的楼层位置,对齐后按中间按钮确认
- 重复完成 5 层校准,矩阵熄灭表示结束
后续计划
- 激光切割重制结构 (手持曲线锯切割不直,导致“摩擦问题”),同时优化电机座、升级更快电机
- 电子端:应要求增加开门铃声/提示音
- 欢迎评论区留言建议!
版本历史
Google Drive 链接会随版本自动更新。Version 2:修复从当前楼层外部呼叫可能导致软件死锁、需复位的 Bug。
代码与库链接
制造工艺
- Simplesse®:重塑低脂食品的蛋白基脂肪替代品
- Arduino 迷你 Boss 战游戏:复古风格项目
- DIY 蓝牙控制 Arduino 间谍小车
- FlickMote:基于手势的智能家居红外遥控器
- DIY Arduino TV-B-Gone:万能关机遥控器
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
- Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
- 从零构建智能 Arduino 四足机器人:完整指南
- 用 Arduino Pro Mini 与 DS1302 RTC 打造精准七段数码管时钟
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南