亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 物联网技术

掌握Microchip RN487x蓝牙模块构建低功耗外设

学习如何为低功耗外设项目配置Microchip RN487x系列蓝牙模块。

构建紧凑节能设备时,蓝牙几乎总是首选通信。多年标准成熟,如今大量即用型模块提供完整片上系统(SoC),满足许多外设需求。热门例子是Nordic nRF52840,集成32位处理器、多协议蓝牙无线电、完整I/O接口如GPIO、PWM、USB、SPI、I²S。

虽强大,但这些SoC学习曲线陡峭、嵌入式固件集成开发耗时大。许多常见用例——仅需少量模拟/数字通道的远程感测或控制——更简单、聚焦的方案往往更佳。

Microchip RN487x家族应运而生。该家族两模块——RN4870和RN4871——提供多路并发双向数字和模拟通道,同时保持设计占地和固件工作量最小。每模块在非易失性RAM存储紧凑配置,让您按确切需求定制外设功能。重要的是,模块完全符合蓝牙低功耗(BLE)标准,确保与现代智能手机及其他BLE客户端无缝配对。

本三部曲将演练为四类典型任务创建功能完整蓝牙外设:数字传感器、数字控制、模拟传感器、模拟控制。每例含参考电路、精确RN487x配置步骤、演示如何从Linux主机与外设交互的简单Python脚本。脚本详细文档化,便您轻松将外设作为子系统嵌入大型设计。

设计概览

下图图解"模拟传感器"例,红色高亮关键接口。

 

掌握Microchip RN487x蓝牙模块构建低功耗外设

Linux系统与外设通信示意

 

我们将为该例构建三核心组件:

元件选择

RN487x家族提供RN4870和RN4871两变体。主要差异在引脚数和可用I/O类型。下方重组引脚预算表助您决定哪款芯片最适合项目。

模块上有三类I/O引脚:

类型 描述
ADC 模拟输入:将电压转换为数值。
PWM 模拟输出:生成频率和占空比由两数字设定的方波。
DIO 数字输入或输出:高低电平代表逻辑1或0。

 

RN4870

掌握Microchip RN487x蓝牙模块构建低功耗外设

图片源自RN487x数据手册

 

引脚名/能力 P1_0 P1_1 P1_2 P1_3 P2_2 P2_3 P2_4 P2_5
ADC x x x x
PWM x x
DIO x x x x x

 

RN4871

掌握Microchip RN487x蓝牙模块构建低功耗外设

图片源自RN487x数据手册

 

引脚名/能力 P1_2 P1_3
ADC x
PWM
DIO x x

 

这些表阐明:若设计仅需单模拟输入且无PWM输出,RN4871是最精简选择。需多信号或PWM的项目,RN4870为合适选择。模拟传感器例中我们用RN4871并将传感器接P1_2。

BLE协议栈的GATT(通用属性)配置层

编写主机应用前,理解将在主机和外设间调解通信的GATT API至关重要。

所有BLE设备暴露GATT数据库,由外设(服务端)填充。主机(客户端)用GATT调用读写由句柄或名称标识的值。典型Python GATT操作如下:

gatt_rq.connect() # 向特征句柄写值 gatt_rq.write_by_handle(vh_light, str(bytearray([8])))

首调用建立连接;次调用写入数据即时反映在外设输出。GATT API获iOS、Android、Windows、Linux支持。示例用Python on Linux求广泛兼容。

模块配置

将物理信号桥接至GATT数据库,必须用两关键配置块编程RN487x NVRAM:

RN487x用轻量命令语言配置。详见附录建立控制台连接和下达配置命令。编程后模块NVRAM可能如下:

 

掌握Microchip RN487x蓝牙模块构建低功耗外设

 

所有配置值驻留于服务和特征两层级层级——扩展至多传感器或多控制设计时有用。


 

RN487x教程系列第一部分到此结束。第2、3部分将涵盖数字输入、数字控制、模拟传感器、模拟控制实现。第4部分讨论适用所有示例的进阶主题。

附录概述深入详细项目前如何配置模块。

用控制台连接配置RN487x

给模块上电并建立到工作站的串行链路。每演示电路含3针"prog"跳线暴露RX、TX、GND。需指引可参考此处优秀指南。

启动终端模拟器。miniterm工具(随许多Python发行版捆绑)是好选择。Shell中这样启动:

python -m serial.tools.miniterm --eol LF /dev/ttyUSB0 115200

115200默认波特率适合RN487x。

输入三美元符号("$$$")从DATA切换到COMMAND模式——虽不见字符,但提示符变为:

CMD>

试按d后Enter;模块回显状态:

CMD> BTA=D88039F80080 Name=RN_BLE Connected=no Authen=2 Features=0000 Services=00 CMD>

想看按键可启用回显:按+和Enter:

CMD> ECHO ON CMD>

创建新GATT服务只需单PS命令,例:

CMD> PS,59c88760536411e7b114b2f933d5fe66 AOK

项目配置也需多行脚本。以WW开始脚本,输入各行,以Esc结束提交:

CMD> ww @CONN |O,08,72 AOK CMD>

模块通用初始化

跨项目复用RN487x模块时,旧配置可能干扰新用途。每个示例前执行以下清理步骤:

执行命令序列:

CMD> WC AOK CMD> SR,0040 AOK CMD> PZ AOK CMD> SW,0A,00 AOK CMD> R,1 Rebooting

运行示例Python脚本所需Linux设置

硬件

确保主机系统有BLE硬件(蓝牙4.0或更新)。需USB适配器推荐基于Qualcomm CSR8510,可用此处。

 

软件

示例脚本在Debian 10测试,应兼容Ubuntu等Debian系发行版。默认未装两Python包:

安装gattlib构建ELF库,需构建工具和库。安装所有依赖的辅助脚本可用此处。下载后使脚本可执行并运行。

参考

敬请期待系列后续部分,我们将构建完整数字输入和数字控制示例。

跳转至项目1和2:构建数字输入和数字控制。

物联网技术

  1. 制造业洞察:从金属与采矿业汲取的教训(第三部分)——Axora专家访谈
  2. 树莓派无原生 ADC 读取模拟传感器:阶跃响应法实战
  3. 树莓派配合 MCP3008 ADC 与 Zabbix 监控模拟传感器:分步指南
  4. Bluetooth Mesh设计抉择:模组还是离散器件?
  5. Contrinex 2020:云就绪传感器与蓝牙光幕,赋能安全应用
  6. ADLINK 基于 NVIDIA EGX 平台部署从边缘到云的 AI:加速边缘计算解决方案
  7. 融合蜂窝物联网与蓝牙LE:下一代连接的协同方案
  8. 可靠性互联网中的数据驾驭:高效管理策略
  9. 从边缘到云:掌控物联网数据管道
  10. 食品饮料数字化:强化安全、溯源与效能
  11. IoT World 2019 洞察:边缘计算与物联网战略
  12. 统一 IIoT 平台如何驱动数字化制造成功