磁簧开关和TMR传感器 软硬件设计

接上期,除了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);
}