用Microchip RN487x蓝牙模块原型化数字I/O
使用RN487x蓝牙模块构建可靠数字输入输出外设
在Microchip RN487x蓝牙模块三部曲第二部分,我们将演练创建数字输入(开关)和数字输出(LED)。模块配置背景请参考第一篇文章。
项目1:RN487x数字输入开关
设计遵循三步模式:
- 硬件——产生数字信号的开关。
- 配置——RN487x命令分配数据库变量并映射引脚。
- 应用——读取数据库值的工作站脚本。
数字输入硬件
输入为简单常开开关(SW1)。RN487x提供内部上拉,开关接地闭合给出干净两态信号。


我们用支持单引脚GPIO的RN4871。电路可由两节AAA电池或纽扣电池供电。额外元件:
- C1:电源稳定旁路电容。
- R1, C2:上电处理器复位延迟。
- J1:配置用串口。
数字输入配置
开始前确保模块处于已知状态(见附录初始化)。在GATT数据库创建一个服务和一个特征代表开关状态:
PS,59c88760536411e7b114b2f933d5fe66 PC,59c889e0536411e7b114b2f933d5fe66,10,01
PS创建服务,PC创建特征。UUID为占位符;按UUID标准自行生成。PC第二参数(10)请求值变化即时通知,第三参数(01)设值大小为单字节。
外设脚本配置引脚并处理事件:
@PW_ON SW,0A,09 @PIO1H SHW,0072,01 @PIO1L SHW,0072,00
每个以@前缀的方法在系统事件运行:
PW_ON——上电时,设P1_2为触发数字输入。PIO1H——高电平跃变,向数据库写1。PIO1L——低电平跃变,向数据库写0。
数字输入应用
使用switch.py Python脚本(提供链接)。替换示例MAC地址为设备MAC。给外设上电后,在蓝牙设备运行脚本。脚本连接设备、监听通知、打印每次开关事件。附录见Linux设置指南。
关键BLE特性:通知——外设主动推送状态变更给客户端,无需轮询。
项目2:RN487x数字控制(LED)
对输出应用相同三步模式:
- 硬件——由RN4871开漏GPIO驱动的LED。
- 配置——创建映射到LED引脚的数据库变量。
- 应用——向数据库写值控制LED开关的脚本。
数字控制硬件
LED(D1)作开漏汇点连接。原理图遵循RN487x参考设计。


元件:
- C1:电源旁路电容。
- R1, C2:复位延迟。
- J1:串口。
数字控制配置
按附录初始化模块。创建单服务单特征:
PS,59c88760536411e7b114b2f933d5fe66 PC,59c889e0536411e7b114b2f933d5fe66,08,01
08指示外设必须确认写入,01设单字节值。脚本处理客户端连接:
@CONN |O,08,72
客户端连接时,命令关联数据库变量与LED引脚(掩码08)和特征句柄(72)。后续客户端写入切换LED。
数字控制应用
替换MAC地址后运行light.py(提供链接)。脚本连接外设,每秒发新值控制LED闪烁。脚本记录进度并演示句柄关联特性。
观看随附项目视频完整演示。
后续步骤
本系列第2部分到此结束。第3部分将攻克模拟传感器与控制,并提供适用所有项目的额外资源。
物联网技术