想检测门有没有关好、抽屉是不是开了、或者识别有没有磁铁靠近,干簧管(Reed Switch)是又便宜又稳的方案。它本身就是两根接触舌片封在玻璃管里的开关,磁铁一靠近就闭合、离开就断开,几乎零功耗,适合做门窗磁感应、防拆报警。这篇把原理、接线、代码一次讲清楚。
干簧管原理:磁铁控制的一根断路开关
干簧管本质是一个“常开”的开关,两端是两根柔性铁磁舌片,平时断开;把磁铁贴近,舌片吸合导通,电路就通了;磁铁拿开,舌片弹回,又恢复断路。因为不工作时完全断电,非常省电。注意它没有正负极之分,两根脚随便接都行,这比很多传感器简单。

这张图把接线画得很清楚:干簧管一端接Arduino的数字脚(比如D2),另一端接地。关键是利用Arduino内部的上拉电阻,把D2设成INPUT_PULLUP模式,这样平时读高电平,磁铁一靠近、开关闭合接通到地,就读低电平——不用外接电阻。
门窗磁控检测的代码
用digitalRead(D2)就能读到状态:高电平表示磁铁远离(门开了),低电平表示磁铁靠近(门关了,开关闭合)。做一个门窗检测很简单——把干簧管装在门框上、磁铁装在门扇上,门一开磁铁离开就读到高,触发你想要的报警或提示。再用一个变量记录上一次状态,只在状态变化时处理,避免反复打印。

实物就是这个用法:干簧管贴着门框,磁铁贴在门扇对应位置,门一开一合,Arduino上的指示灯跟着变。做开门提醒、防盗报警、或者检测某个盖子有没有盖上,这套都很省心。
两个注意点
一是磁铁和干簧管距离别太远,一般要在一到两厘米内才能稳定触发,安装时贴牢并对齐;二是因为是机械触点,快速反复闭合会有抖动,做计数或高精度检测时可以加一段短暂的“去抖”延时(比如几十毫秒)再确认状态,避免误触发。







机械触点有抖动,做计数记得加去抖延时
零功耗这点太香,做电池供电的防拆报警很省电
用INPUT_PULLUP就不用外接电阻,负极接地就行,简单
装门窗上把磁铁和干簧管对齐,距离大了不灵敏