1. 项目概述
最近在RK3568开发板上完成了MQ-2烟雾传感器的字符设备驱动移植工作。这个项目的主要目标是实现通过GPIO接口读取MQ-2模块的数字输出信号,并在Linux系统中创建标准的字符设备接口(/dev/mq2),使得用户空间可以通过简单的文件操作(如cat命令)来获取烟雾检测状态。
MQ-2是一种常用的半导体烟雾传感器,对液化气、丙烷、氢气等可燃气体有很高的灵敏度。在智能家居、工业安全监测等领域有广泛应用。本次驱动开发采用了模块的数字输出(DO)直接连接GPIO的方案,相比模拟量输出(AO)方案更加简单直接。
2. 硬件连接与注意事项
2.1 开发板GPIO资源确认
RK3568开发板通过JP11扩展接口提供了多个用户可用的GPIO引脚。根据正点原子的硬件资料:
- GPIO0_B3和GPIO0_B4等引脚通过JP11引出
- 这两个引脚默认复用为I2C1_SCL_TP和I2C1_SDA_TP,用于MIPI触摸接口
- 本项目前提是不使用这路MIPI触摸功能,将GPIO0_B3释放给MQ-2使用
2.2 MQ-2模块接线方式
MQ-2模块通常有4个引脚:
- VCC(电源)
- GND(地)
- DO(数字输出)
- AO(模拟输出,本项目不使用)
推荐接线方案:
code复制MQ-2 VCC → 开发板 5V
MQ-2 GND → 开发板 GND
MQ-2 DO → 开发板 GPIO0_B3
2.3 电平兼容性重要提示
需要特别注意的电平问题:
- 多数MQ-2模块采用5V供电,其DO输出高电平可能接近5V
- RK3568的GPIO引脚通常只能承受3.3V电平
- 长期直接输入5V可能损坏GPIO控制器
安全建议:
- 确认模块DO输出是否为3.3V TTL电平
- 如果不确定,必须添加电平转换电路或电阻分压网络
- 最简单的保护措施:在DO和GPIO之间串联1kΩ电阻,并并联100Ω电阻到地
3. 驱动开发实现
3.1 设备树配置
完整的设备树节点配置如下:
dts复制mq2@0 {
compatible = "atk,mq2";
smoke-gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
s
