1. 项目概述与核心思路
夏天一到,手里没个能吹风的东西总觉得少了点什么。市面上的手持风扇要么功能单一,要么价格不菲,作为一个喜欢动手折腾的人,我总觉得缺了点“智能”和“定制”的乐趣。这次,我决定用一块MicroBit微控制器,结合手头常见的材料,自己做一个能感知温度、自动启停的智能手持风扇。这不仅仅是一个小制作,更是一个理解微控制器如何作为“大脑”,通过编程来感知环境(温度)并控制物理设备(电机)的绝佳实践。
这个项目的核心目标很明确:制作一个便携式风扇,它不仅能手动开关,还能自动工作。当环境温度上升到你觉得燥热时(比如28°C),风扇自动转起来为你降温;当温度回落到舒适区间(比如26°C)时,它又能自动停止,省电又贴心。整个项目涵盖了从结构设计、外壳制作、电路连接到图形化编程的全流程,非常适合对硬件编程、物联网入门感兴趣的创客、教育工作者或DIY爱好者。你不需要深厚的电子或编程背景,跟着步骤走,就能收获一个独一无二的智能小工具。
2. 材料与工具清单详解
动手之前,清点并理解每一件物料的作用至关重要,这能帮助你在制作过程中胸有成竹,甚至在将来举一反三。
2.1 核心电子部件
- MicroBit V2 开发板(1块):这是整个项目的“大脑”。我选择V2版本是因为它内置了温度传感器和触摸感应按键,我们无需额外购买传感器就能检测温度,其上的A、B按键也为我们提供了完美的人机交互接口。它通过图形化编程(MakeCode)控制,对新手极其友好。
- 5V直流电机(1个):这是风扇的“心脏”,负责驱动扇叶旋转。选择5V电压是为了与MicroBit的IO口驱动能力及常见的电池盒电压匹配。注意电机的轴径需要与你准备的扇叶内孔匹配。
- 风扇扇叶(1个):建议选择直径在4-7厘米之间的塑料扇叶,尺寸过大会导致电机带不动,过小则风量不足。确保扇叶中心孔与电机轴紧密配合,必要时可使用一小段热缩管或胶水加固。
- 3节AA电池盒带开关(1个):为整个系统供电。3节AA电池提供约4.5V电压,足以驱动MicroBit和5V电机(电机在略低于额定电压下仍可工作)。带开关的电池盒方便彻底断电,安全又省电。
- 鳄鱼夹连接线(若干):用于快速、免焊接地连接电路。建议准备:
- 鳄鱼夹转鳄鱼夹线:2根,用于电源正负极的延长。
- 鳄鱼夹转公头杜邦线:2根,用于连接MicroBit的IO引脚。这是关键,因为MicroBit的引脚是插孔,需要用公头针插入。
2.2 结构制作材料与工具
- 椴木板或亚克力板(1块):用于激光切割外壳。尺寸至少需要34cm x 29cm,厚度建议3mm。椴木易于切割、打磨和粘合,且质感温润;亚克力则更显现代和透明,但切割时气味较大。这是你发挥设计创意的基础。
- 激光切割机:用于精确切割设计好的外壳零件。如果你没有个人设备,可以寻找本地的创客空间、高校实验室或在线激光切割服务。这是将数字设计转化为实体零件的关键一步。
- 木工胶或亚克力胶(1瓶):根据你选择的板材类型使用对应的胶水。木工胶(如白乳胶)适合木材,需要夹持固定等待干燥;亚克力专用胶(如氯仿)能溶解亚克力表面使其融合,粘接强度高但需在通风良好处操作。
- 设计软件(Tinkercad/Fusion 360等):用于设计外壳的矢量图纸。Tinkercad是在线免费工具,界面简单,非常适合初学者进行基础的2D设计并导出SVG文件。如果你想设计更复杂的3D结构,可以学习Fusion 360。
注意:在选择电机时,务必确认其工作电压。MicroBit的IO引脚最大输出电流有限(约5mA),无法直接驱动电机。本项目巧妙地利用了MicroBit引脚输出信号(0或1),通过导线直接连接电池正极和电机,让MicroBit的引脚充当一个“电子开关”,而非动力源。电机实际的电力来自电池盒。这是理解微控制器驱动大电流设备的一个经典思路。
3. 外壳设计与激光切割实操
一个稳固、美观的外壳不仅能保护内部电路,更是提升作品完成度的关键。我选择用激光切割木板的方式来制作,因为它精度高、可重复性好。
3.1 在Tinkercad中设计结构
首先,我们需要设计一个由多个平板拼插而成的箱体结构,来容纳MicroBit、电池盒和电机。
- 规划结构:我的设计分为上下两个主要部分。上部是一个扁平的盒子,用于放置MicroBit和电机;下部是一个手柄,内部用于放置电池盒。两部分通过胶水粘合。
- 绘制零件:在Tinkercad中,使用“基本形状”里的“盒子”和“圆柱体”工具,通过调整尺寸和布尔运算(打孔)来绘制每一个木板零件。核心零件包括:
- 上盖板(带孔):1块。中心有一个圆形孔,用于穿过电机轴并固定电机本体;侧面有方形或圆形开口,用于露出MicroBit的LED点阵和按键。
- 上壳体侧板:4块。围成上部盒子的四个侧面,其中至少一块需要设计卡槽或开口,用于走线。
- 手柄侧板:4块。围成手柄的四个侧面,尺寸比上部盒子窄,内部空间要能宽松放入电池盒。
- 底板:1块。封住手柄的底部。
- 后盖板:1块。用于封住上部盒子的背面,建议设计成可拆卸式(如通过卡扣或预留胶带粘贴边),方便后期调试和维修。
- 导出SVG文件:设计完成后,将每个零件的二维轮廓(俯视图)分别导出为SVG格式文件。这是激光切割机识别的标准矢量格式。确保线条是连续的,且尺寸精确到毫米。
3.2 激光切割参数与安全操作
将设计好的SVG文件导入激光切割机的控制软件(如LightBurn、RDWorks),准备切割。
- 材料固定:将椴木板平整地放入激光切割机工作台,用夹具或磁铁轻轻压住边缘,确保切割过程中材料不会移动。务必确认板材表面平整,无卷曲或突起物,否则可能影响焦距甚至引发安全问题。
- 参数设置:这是成败的关键。不同功率的激光机、不同材质厚度,参数都不同。对于3mm椴木板,我使用的参数如下(以40W CO2激光管为例):
- 切割功率:65% - 75%
- 切割速度:12mm/s - 15mm/s
- 通过次数:1-2次(确保切透)
- 对于更精细的雕刻线条(如定位标记),可以设置更低的功率(15%-20%)和更快的速度(100mm/s以上)。强烈建议先在一小块废料上进行测试切割,找到最佳参数组合后再进行正式作业。
- 执行切割与注意事项:
- 开启激光机的抽风系统,确保烟雾被有效排出。
- 戴上防护眼镜,切勿在机器运行时直视激光头或反射光路。
- 点击“开始”后,观察最初几厘米的切割效果,确认参数无误。
- 切割完成后,等待工作台完全停止,并等待片刻让残留烟雾被抽净后再打开机盖。
- 小心取出切割好的零件,边缘可能有些许毛刺或焦痕,可以用细砂纸轻轻打磨光滑。
实操心得:激光切割时,设计文件中的线条颜色有时对应不同的加工方式(如红色线条切割,蓝色线条雕刻)。在导出和导入时要注意区分。另外,在设计拼插结构时,要考虑到激光的“切缝宽度”(Kerf),通常为0.1mm-0.2mm。如果你希望零件拼插紧密,可以在设计时故意将卡榫尺寸略微加大(如0.15mm),这样切割后就能得到完美的紧配合。这是我经过几次失败组装后总结出的宝贵经验。
4. 结构组装与机械部分搭建
切割好的零件就像乐高积木,接下来需要将它们精确地组合成一个坚固的整体。
4.1 主体框架粘合
- 组装上部盒子:取出4块上壳体侧板,在接缝处均匀涂抹木工胶,将它们围成一个矩形框。用直角夹或重物辅助,确保接合面垂直、角度为90度。静置至少30分钟待其初步固化。
- 粘合上盖板:将带有电机孔的上盖板对准盒子上方,粘合固定。此时,电机孔应位于盒子内部中心位置。同样需要施加压力确保粘合紧密。
- 组装手柄:用同样的方法,将4块手柄侧板粘合成一个细长的矩形框。这个框的横截面积应能轻松放入电池盒。
- 连接主体与手柄:将上部盒子的底部与手柄的顶部对齐,用胶水粘合。这是承重和受力的关键连接点,务必涂足胶水,并可以用胶带临时缠绕固定,放置过夜使其完全干透。
- 安装底板:将底板粘合到手柄的底部,封闭手柄下端。
4.2 电机安装与固定
- 测试安装:在不涂胶的情况下,先将电机从盒子内部穿过上盖板的圆孔。电机的出轴应朝外,电机本体卡在孔内或紧贴内壁。观察电机是否稳固,有无晃动。
- 最终固定:如果孔洞尺寸合适,电机能卡紧,则无需额外固定。如果较松,可以在电机外壳与木板接触的部位点少量热熔胶或强力胶进行加固。注意:胶水切勿接触到电机的转轴或内部线圈。
- 安装扇叶:将风扇扇叶牢牢按在电机的转轴上。如果配合过松,可以在电机轴上缠绕一两层电工胶带增加直径,再套入扇叶,确保高速旋转时不会脱落。
至此,一个没有电子部分、纯机械结构的手持风扇外壳就完成了。检查各粘合处是否牢固,整体结构是否歪斜。
5. MicroBit图形化编程逻辑解析
这是项目的“灵魂”所在。我们将使用微软的MakeCode for MicroBit在线编辑器进行编程,它采用积木块拖拽的方式,直观易懂。
5.1 程序整体逻辑框架
我们的程序需要实现三个核心功能,正好对应MicroBit板载的三个物理按键(A、B、A+B):
- 手动开关模式(B键):按一下B键,风扇开启;再按一下,风扇关闭。这是一个简单的“翻转开关”。
- 自动温控模式(A键):启动一个自动监控循环。持续检测温度,高于设定上限则开风扇,低于设定下限则关风扇。
- 温度显示功能(A+B键):同时按下A和B键,在LED点阵上滚动显示当前环境温度值。
5.2 详细代码块搭建
访问https://makecode.microbit.org/并新建一个项目。
初始化与变量创建:
- 在“变量”类别中,创建一个名为
风扇状态的变量,用于记录风扇当前是开(1)还是关(0)。 - 在“开机时”积木块中,将
风扇状态设置为0(默认关闭)。同时,可以显示一个图标(比如一颗心)表示设备启动成功。
let 风扇状态 = 0 basic.showIcon(IconNames.Heart)- 在“变量”类别中,创建一个名为
实现手动开关(B键):
- 拖入“当按钮B被按下时”积木块。
- 加入“如果...那么...否则”逻辑判断块。
- 条件设置为:
如果 风扇状态 等于 0。 - 那么(说明当前是关闭状态):
- 将
风扇状态设置为 1。 - 向引脚P0写入数字值1(高电平)。这个引脚信号将用于后续控制电路导通。
- (可选)显示一个对号图标,提示用户已开启。
- 将
- 否则(说明当前是开启状态):
- 将
风扇状态设置为 0。 - 向引脚P0写入数字值0(低电平)。
- (可选)显示一个叉号图标。
- 将
input.onButtonPressed(Button.B, function () { if (风扇状态 == 0) { 风扇状态 = 1 pins.digitalWritePin(DigitalPin.P0, 1) basic.showIcon(IconNames.Yes) } else { 风扇状态 = 0 pins.digitalWritePin(DigitalPin.P0, 0) basic.showIcon(IconNames.No) } })实现自动温控模式(A键):
- 拖入“当按钮A被按下时”积木块。
- 加入一个“无限循环”块。因为我们需要持续监控。
- 在循环内,加入“如果...那么”块。
- 条件1:
如果 温度(℃) > 28(这个值你可以根据体感调整,比如设为30)。- 那么:将
风扇状态设为1,并向引脚P0写入数字值1。
- 那么:将
- 在第一个“如果”块下方,再并列加入第二个“如果...那么”块。
- 条件2:
如果 温度(℃) < 26(设定一个比开启温度略低的回差,防止在临界点频繁开关)。- 那么:将
风扇状态设为0,并向引脚P0写入数字值0。
- 那么:将
- 在循环末尾,加入一个“暂停(ms) 100”块。这意味着每0.1秒检查一次温度,既不会过于频繁消耗资源,又能保证响应及时。
input.onButtonPressed(Button.A, function () { while (true) { if (input.temperature() > 28) { 风扇状态 = 1 pins.digitalWritePin(DigitalPin.P0, 1) } if (input.temperature() < 26) { 风扇状态 = 0 pins.digitalWritePin(DigitalPin.P0, 0) } basic.pause(100) } })实现温度显示(A+B键):
- 拖入“当按钮A+B被按下时”积木块。
- 加入“显示数字”积木块,并将“温度(℃)”传感器块拖入其中。
input.onButtonPressed(Button.AB, function () { basic.showNumber(input.temperature()) })
5.3 编程思路深度解析
- 为什么用引脚P0输出信号?MicroBit有多个可用的数字IO口(如P0, P1, P2等)。我们选择其中一个(例如P0)作为控制信号输出端。程序里
向引脚P0写入数字值1,就是让这个引脚输出一个高电平(约3V);写入0就是输出低电平(0V)。这个电压信号本身功率很小,不能驱动电机,但它可以用于控制一个“开关电路”。 - “回差”的重要性:在自动温控逻辑中,我设置了28℃开启,26℃关闭。这2℃的差值就是“回差”或“滞后”。如果没有回差,假设设定27℃开关,那么温度在27.0℃和26.9℃之间微小波动时,风扇就会疯狂地开、关、开、关,这对电机和用户体验都是灾难性的。回差确保了系统状态的稳定。
- 状态变量
风扇状态的作用:它作为一个“记忆单元”,让我们知道风扇当前应该处于什么状态。特别是在手动和自动模式可能冲突时(虽然本程序简单切换),有一个统一的状态记录是良好编程习惯的开端。
编写完成后,点击编辑器左下角的“下载”按钮,将编译好的.hex文件保存到电脑。然后用USB数据线连接MicroBit(它会显示为一个名为MICROBIT的U盘),把.hex文件拖进去,等待指示灯闪烁完毕,程序就烧录成功了。
6. 电路连接与系统集成
现在,我们需要用导线将“大脑”(MicroBit)、“心脏”(电机)和“能量源”(电池盒)连接起来,让信号能够流动,电力能够驱动。
6.1 电路原理与连接图
核心原理是:MicroBit的P0引脚作为一个信号开关,控制着从电池正极到电机这条电路的“通”与“断”。
具体连接步骤如下:
- 准备MicroBit端:取出2根“鳄鱼夹转公头杜邦线”。将其中一根的红色鳄鱼夹夹在MicroBit的
P0引脚孔上,另一根的红色鳄鱼夹夹在GND(接地)引脚孔上。 - 准备电池盒端:电池盒通常有红(正极)、黑(负极)两根引线。将电池盒的红色正极线,与夹在MicroBit
P0引脚上的那根线的另一端(自由端的鳄鱼夹)夹在一起。 - 连接电机:电机也有两根线(通常不分正负,但转动方向会相反,可以后续测试调整)。将电机的其中一根线,与夹在MicroBit
GND引脚上的那根线的另一端(自由端的鳄鱼夹)夹在一起。 - 完成回路:此时,电机的另一根线是悬空的。将它直接与电池盒的黑色负极线夹在一起。
连接逻辑梳理:
- 当程序让
P0输出1(高电平)时,P0引脚与MicroBit内部的3.3V电源近似接通。由于电池正极(4.5V)也接到了这里,电势差使得电流可以从电池正极 ->P0引脚(作为通路) -> 电机 -> 电池负极,形成回路,电机转动。 - 当程序让
P0输出0(低电平)时,P0引脚在内部连接到GND(0V)。此时,电池正极和负极通过P0和GND在MicroBit内部“短接”了吗?并不是,因为数字输出引脚在输出0时是低阻抗到地,但这里的关键是,电池正极和电机一端都接到了P0,而P0为0V,电机两端电压接近0,因此电机停止。 - 更准确的理解是:
P0的高电平(1)提供了一个接近电池电压的电位,与电池负极形成电压差驱动电机;低电平(0)则将该点电位拉低至接近负极,电压差消失。
6.2 内部布局与组装
- 放置电池盒:将装有电池的电池盒放入手柄内部。确保开关露在外面或易于操作的位置。
- 固定MicroBit:将已连接好导线的MicroBit放入上部盒子中,使其LED点阵和A、B按键从你预先设计好的开口中露出。
- 整理导线:将所有导线 neatly地收纳在盒子内部,避免缠绕或挤压。可以用扎带或一点胶布固定线束。
- 封闭外壳:最后,用胶带将可拆卸的后盖板贴上。切记不要用胶水永久封死,以便未来更换电池、维修或调整程序。
现在,打开电池盒开关。按下MicroBit的B键,你应该能听到电机启动的声音,扇叶开始旋转!按下A键,用手握住MicroBit给它加温(或对着它吹气),观察温度上升后风扇是否自动启动。
7. 调试优化与进阶玩法
项目基本完成后,你可能会遇到一些小问题,或者想让它变得更好。这里分享一些调试经验和升级思路。
7.1 常见问题排查速查表
| 现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 按下B键,风扇无反应 | 1. 电池没电或开关未开。 2. 程序未成功烧录。 3. 电路连接错误或松动。 4. 电机损坏。 | 1. 检查电池电量,确认开关打开。 2. 重新插拔USB线,再次下载程序,观察MicroBit指示灯是否闪烁。 3.重点检查:用万用表通断档或另接一个LED小灯,测试当按下B键时,P0和GND之间是否有电压变化(开/关)。逐段检查鳄鱼夹连接是否牢固。 4. 将电机两根线直接接在电池盒正负极上(短暂接触),看是否转动。 |
| 自动模式(A键)不工作 | 1. 温度阈值设置不当。 2. 程序逻辑错误,如循环被阻塞。 3. MicroBit温度传感器读数偏差。 | 1. 按下A+B键查看当前温度,根据显示值调整程序中的阈值(如28和26)。 2. 检查A键下的代码块,确保“无限循环”和“如果”判断正确嵌套。 3. MicroBit的温度传感器靠近处理器,自身工作会产热。可将阈值调高几度,或让MicroBit在壳体内通风更好。 |
| 风扇转动方向反了 | 电机线极性接反。 | 将连接电机的两根线对调即可。直流电机转向由电流方向决定。 |
| 风扇转动无力或很快停转 | 1. 电池电量不足。 2. 电机负载过大(扇叶太重或阻力大)。 3. 电路接触电阻过大。 | 1. 更换新电池。 2. 尝试更小更轻的扇叶,或检查电机轴安装是否顺滑。 3. 检查所有鳄鱼夹连接点,确保金属齿咬合紧密,无氧化。可尝试替换为焊接连接。 |
| 同时按下A+B键不显示温度 | 1. 按键操作不准确(未同时按下)。 2. 显示代码块被其他循环阻塞。 | 1. 练习同时按下两个按键。MicroBit对“同时”有一定宽容度。 2. 确保A+B键的代码是独立事件,没有被包含在“无限循环”内。 |
7.2 项目优化与扩展建议
这个基础版本已经实现了核心功能,但你完全可以把它做得更酷、更实用:
- 增加风速调节:目前电机只有开/关两种状态。你可以使用MicroBit的PWM(脉冲宽度调制)功能。在MakeCode中,有“模拟写入引脚”积木块,可以输出0-1023的值,对应不同的平均电压,从而控制电机转速。你可以用A键增加速度,B键减少速度。
- 使用外置高精度传感器:MicroBit内置温度传感器受主板芯片发热影响。你可以连接一个外部的DS18B20数字温度传感器到IO口,将其探针伸到风扇外部,获得更准确的环境温度。
- 添加状态指示灯:利用MicroBit的5x5 LED点阵,用不同的图标显示当前模式(手动/自动)、风速档位或温度范围,让交互更直观。
- 设计更优的外壳:使用3D建模软件(如Fusion 360)设计一个流线型、符合人体工学的一体化外壳,用3D打印机完成制作,提升美观度和握持感。
- 引入物联网功能(进阶):为MicroBit搭配一个蓝牙或Wi-Fi扩展板(如ESP8266),将温度数据和风扇状态上传到云端平台(如Blynk、ThingsBoard),你就可以在手机APP上远程查看温度、控制风扇了,真正迈向物联网应用。
制作这个自动温控风扇的过程,让我再次体会到硬件项目“从想法到实物”的完整闭环带来的满足感。它不像纯软件项目那样看不见摸不着,每一次按键、每一次扇叶转动,都是代码与物理世界最直接的对话。对于初学者来说,最难的可能不是拖拽积木,而是理解“信号”如何控制“电流”,以及如何通过结构设计把一堆散件变成可靠的产品。我建议你在成功复现这个项目后,不要停下,试着去修改一个参数,增加一个小功能,哪怕只是换一个更漂亮的扇叶。这种不断的“小迭代”,正是创客精神的核心,也是你技能树成长的扎实养分。