接上期,除了ADXL357模块外,我还是用了磁簧开关和TMR传感器。
一、TMR传感器
通过官网搜索其相关资料
我们可以得知,其三根线的定义分别是VCC、GND、信号线。信号采用开漏输出的方式进行对外信号的输出,因此我们在绘制PCB的时候,需要给其一个上拉电阻,如下图左边部分所示。
测试时,通过磁体靠近,可以清晰的看出TMR传感器的效果。在无信号时,因为有上拉电阻,会出现高电平的情况。在磁铁靠近后,会拉低信号,呈现低电平。
二、磁簧开关
通过官网搜索其相关资料
在众多智能家居与消费电子产品中,磁簧开关是一种被广泛应用的无接触位置检测元件。Littelfuse 59177 系列超小型磁簧开关,凭借其紧凑封装(仅9mm×2.5mm×2.4mm)、极高的灵敏度和无需供电的特性,成为理想的选择。例如在智能马桶、洗衣机盖、智能垃圾桶、电饭煲等设备中,该磁簧开关常被用于检测盖体的开合状态。通过在可移动部件上配合固定磁铁使用,当盖子闭合时磁铁靠近磁簧开关,触点闭合;当盖子打开后,磁铁远离,触点断开。系统便可根据这一信号控制电机动作、发出提示音或进行安全保护。
通过如上图右边部分的电路图方式对其进行PCB的设计。即可使用磁铁开关。磁铁开关在有强磁场的时候,会进行导通。在静止时,会不导通。结合上图就是,静止时是高电平,在有强磁场的时候,会出现低电平。
二、软件部分
使用RP2350进行开发,使用arduino开发环境,此开发环境下,可以对用大量的库,以此减少开发难度,提高开发速度。
首先安装软件
arduino官网为https://www.arduino.cc/
在安装号arduino后,需要安装对应开发板的配置,首先在首选项中添加开发板管理器地址
以下是使用GPIO2和3,对开发板的IO进行初始化配置为输入模式,读取GPIO的电平
// 引脚定义
const int pin1 = 2; // GPIO2
const int pin2 = 3; // GPIO3
void setup() {
Serial.begin(115200);
while (!Serial); // 等待串口连接
// 配置引脚为输入模式
pinMode(pin1, INPUT);
pinMode(pin2, INPUT);
Serial.println("RP2040 GPIO 输入读取初始化完成");
}
void loop() {
// 读取 GPIO 电平
int level1 = digitalRead(pin1);
int level2 = digitalRead(pin2);
// 打印状态
Serial.print("GPIO ");
Serial.print(pin1);
Serial.print(": ");
Serial.print(level1 == HIGH ? "HIGH" : "LOW");
Serial.print(" | GPIO ");
Serial.print(pin2);
Serial.print(": ");
Serial.println(level2 == HIGH ? "HIGH" : "LOW");
// 等待 500ms
delay(500);
}

