一、项目介绍及创意介绍
本项目是参加2025贸泽电子M-Design创意设计竞赛的方向二:安全监测中的系统安全
在系统物理安全中,开关门检测一直都是重要的一部分,常见的检测手段有:按键检测、LED红外检测、电极电压检测等。但这些检测方式通常需要在设备表面安装触发装置,对于物理安全检测来说,无法做到无感检测,而使用霍尔磁场检测,触发装置可以嵌入到设备中,做到无感触发,防止他人破坏触发装置导致检测装置失效。
二、硬件介绍
1.PICO2(PR2350)
Raspberry Pi Pico 2 是一款低成本,高性能的微控制器开发板,具有灵活数字接口。硬件上,采用 Raspberry Pi 官方自主研发的 RP2350 微控制器芯片,独特的双核、双架构,高达 150MHz 的运行频率,内置了 520KB 的 SRAM 和 4MB 的内存,还板载有多达 26 个多功能的 GPIO 引脚。
2.MH253EUA
MH253EUA 是一种霍尔效应传感器,为一种温度稳定、抗应力的开关。
3.树莓派Pico扩展板
基于树莓派Pico的嵌入式系统学习平台,完美适配PICO、PICO2
板卡硬件:
- 2个按键输入
- 4个单色LED
- 12个WS2812B RGB三色灯
- 1个姿态传感器
- 1个128*64 OLED显示屏
- 1个蜂鸣器
- 1个可调电位计(用于电压表)
- 1路音频信号输入(用于示波器)
- 8位R-2R电阻网络构成的DAC(用于DDS信号发生器)
三、方案框图和项目设计思路介绍
【核心控制器】
主控芯片:Pico2 RP2350微控制器
【输入模块】
霍尔传感器:
- 通过GPIO接口直连主控
- 用于检测磁场变化进行位置检测场景
【输出模块】
- 显示单元:
- 0.96英寸OLED显示屏
- 接口:高速SPI协议
- 特性:单色显示、低功耗、高对比度
- 应用场景:实时数据显示/系统状态监控
- 声光提示系统:
- 蜂鸣器:
- 连接方式:GPIO驱动
- 功能:音频报警/操作反馈
- 控制方式:简单开关控制
b. 双色LED:
- 红绿双色发光二极管
- GPIO独立控制引脚
- 状态指示逻辑:
红色 - 异常/警告状态
绿色 - 正常运行状态
项目设计思路
- 信号采集
霍尔传感器检测磁场变化→通过GPIO输入数字信号至主控 - 数据处理
RP2350微控制器解析传感器数据,执行预设算法(如转速计算、阈值判断) - 多模态输出
- 通过SPI总线向OLED发送格式化数据包,更新屏幕显示
- 根据逻辑判断结果驱动GPIO输出:
▫️ 触发蜂鸣器特定频率音频
▫️ 控制红/绿LED状态组合
四、软件流程图和关键代码介绍
from machine import Pin, SPI
from bsp.ssd1306 import SSD1306_SPI
from time import sleep
from bsp.board import pin_cfg
引入相关库文件
#SPI屏幕驱动
spi = SPI(1, 100000, mosi=Pin(pin_cfg.spi1_mosi), sck=Pin(pin_cfg.spi1_sck))
oled = SSD1306_SPI(128, 64, spi, Pin(pin_cfg.spi1_dc),Pin(pin_cfg.spi1_rstn), Pin(pin_cfg.spi1_cs))
设置SPI屏幕驱动
# 创建对象
# 蜂鸣器
buzzer = Pin(19, Pin.OUT)
# 开门检测
door = Pin(17, Pin.IN, Pin.PULL_UP)
# 安全指示灯
green_led = Pin(pin_cfg.green_led, Pin.OUT)
# 报警指示灯
red_led = Pin(pin_cfg.red_led, Pin.OUT)
创建相关输入输出设置
while True:
#当检测到磁铁远离,报警
if door.value() == 1:
oled.fill(0)# 清屏
oled.text("Warning!!!",20,20)
oled.text("Warning!!!",20,30)
oled.text("Warning!!!",20,40)
#输出告警到屏幕显示
oled.show()#屏幕输出
#点亮报警LED
green_led.value(0)
red_led.value(1)
#蜂鸣器报警
for i in range(7):
buzzer.value(1)
sleep(0.03)
buzzer.value(0)
sleep(0.03)
# 磁铁靠近,输出正常信号
else:
oled.fill(0)# 清屏
#输出正常到屏幕显示
oled.text("Normal",35,20)
oled.text("Normal",35,30)
oled.text("Normal",35,40)
oled.show()#屏幕输出
#点亮正常LED
green_led.value(1)
red_led.value(0)
对输入信号进行处理,并根据设计输出不同信号
五、实物展示及说明
1.磁铁靠近(门关)
输入:霍尔传感器检测磁铁靠近
输出:屏幕输出:Normal
蜂鸣器 :静止
LED :绿色
2.磁铁远离(门开)
输入:霍尔传感器检测磁铁靠近
输出:屏幕输出:Warning!!!
蜂鸣器 :鸣叫
LED :红色
六、设计中遇到的难题和解决方法
micropython的使用手册为英文,对于英语不好的我来说,看文档是一个比较吃力,但现在AI发展迅速,可以使用AI翻译来实现便捷的英专中的,更好的实现micropython的开发。
七、对本次竞赛的心得体会
第一次体验到PICO2的micropython的开发,了解了micropython的开发便捷性,对于小白来说,也能快速上手,创建属于自己的产品。