Skip to content

其他无线技术

学习目标

通过本文档的学习,你将能够:

  • 理解核心概念和原理
  • 掌握实际应用方法
  • 了解最佳实践和注意事项

前置知识

在学习本文档之前,建议你已经掌握:

  • 基础的嵌入式系统知识
  • C/C++编程基础
  • 相关领域的基本概念

概述

除了BLE和WiFi,医疗器械还可能使用其他无线技术来满足特定需求。本章节介绍Zigbee、LoRa、NFC和5G等技术在医疗领域的应用。

Zigbee

技术特点

标准: IEEE 802.15.4
频段: 2.4 GHz (全球), 868 MHz (欧洲), 915 MHz (美国)
数据速率: 250 Kbps
范围: 10-100米
拓扑: 星型、树型、网状
功耗: 低

医疗应用场景

1. 医院传感器网络

应用: 环境监测(温度、湿度、空气质量)
优势:
- 网状网络自愈能力
- 低功耗,电池续航数年
- 支持大量节点(>65000)
- 成本低

示例: 药品冷链监控系统

2. 患者定位系统

应用: 实时定位患者、设备、医护人员
技术: Zigbee + RSSI/AOA定位
精度: 1-3米
优势: 低成本、低功耗

Zigbee协议栈

// Zigbee网络层次
typedef enum {
    ZIGBEE_COORDINATOR,  // 协调器(网络中心)
    ZIGBEE_ROUTER,       // 路由器(扩展网络)
    ZIGBEE_END_DEVICE    // 终端设备(传感器)
} zigbee_device_type_t;

// Zigbee配置
typedef struct {
    uint16_t pan_id;         // 个人区域网络ID
    uint8_t channel;         // 信道(11-26)
    uint8_t tx_power;        // 发射功率
    uint16_t short_addr;     // 短地址
    uint64_t extended_addr;  // 扩展地址(IEEE地址)
} zigbee_config_t;

实现示例

#include "zboss_api.h"

// 定义温度传感器端点
#define TEMP_SENSOR_ENDPOINT 1

// 温度传感器簇
#define ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT 0x0402

// 初始化Zigbee设备
void zigbee_init_end_device() {
    // 设置设备类型
    zb_set_network_ed_role(ZB_NWK_DEVICE_TYPE_ED);

    // 配置睡眠模式
    zb_set_rx_on_when_idle(ZB_FALSE);

    // 注册端点
    ZB_AF_REGISTER_DEVICE_CTX(&temp_sensor_ctx);

    // 启动Zigbee栈
    zboss_start();
}

// 发送温度数据
void send_temperature_reading(float temperature) {
    zb_zcl_attr_t *attr;
    zb_int16_t temp_value = (zb_int16_t)(temperature * 100);

    // 更新温度属性
    attr = zb_zcl_get_attr_desc_a(
        TEMP_SENSOR_ENDPOINT,
        ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT,
        ZB_ZCL_CLUSTER_SERVER_ROLE,
        ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID
    );

    ZB_ZCL_SET_ATTRIBUTE(
        TEMP_SENSOR_ENDPOINT,
        ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT,
        ZB_ZCL_CLUSTER_SERVER_ROLE,
        ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID,
        (zb_uint8_t *)&temp_value,
        ZB_FALSE
    );

    // 发送报告
    zb_zcl_report_attr_cmd_t cmd;
    cmd.dst_addr = coordinator_addr;
    cmd.dst_ep = 1;
    cmd.src_ep = TEMP_SENSOR_ENDPOINT;

    zb_zcl_send_report_attr_command(&cmd);
}

Zigbee 3.0特性

新特性:
- 统一应用层
- 增强安全性(Install Code)
- Green Power(超低功耗设备)
- 频段灵活性

医疗优势:
- 更好的互操作性
- 简化配对流程
- 提高安全性

LoRa / LoRaWAN

技术特点

调制: LoRa(扩频调制)
频段: 433/868/915 MHz(ISM频段)
数据速率: 0.3-50 Kbps
范围: 2-15公里(城市), 最远45公里(郊区)
功耗: 极低

医疗应用场景

1. 远程患者监护

应用: 居家慢病管理
设备: 血压计、血糖仪、体重秤
优势:
- 无需WiFi/蜂窝网络
- 超长距离覆盖
- 电池续航数年
- 低成本

示例: 农村地区远程心电监护

2. 资产追踪

应用: 医疗设备、药品运输追踪
优势:
- 广域覆盖
- 低功耗GPS集成
- 实时位置上报

LoRaWAN协议

// LoRaWAN设备类型
typedef enum {
    CLASS_A,  // 最低功耗,双向通信,上行后短暂接收窗口
    CLASS_B,  // 定时接收窗口
    CLASS_C   // 持续接收,最低延迟
} lorawan_class_t;

// LoRaWAN配置
typedef struct {
    uint8_t dev_eui[8];   // 设备唯一标识
    uint8_t app_eui[8];   // 应用标识
    uint8_t app_key[16];  // 应用密钥
    lorawan_class_t class;
    uint8_t data_rate;    // SF7-SF12
    uint8_t tx_power;     // 发射功率
} lorawan_config_t;

// OTAA激活(推荐)
void lorawan_join_otaa(lorawan_config_t *config) {
    // 发送Join Request
    lora_send_join_request(config->dev_eui, 
                          config->app_eui,
                          config->app_key);

    // 等待Join Accept
    if (wait_for_join_accept(TIMEOUT)) {
        log_info("LoRaWAN joined successfully");
    }
}

// 发送医疗数据
void send_vital_signs(uint8_t heart_rate, uint8_t spo2) {
    uint8_t payload[10];
    uint8_t len = 0;

    // 编码数据(紧凑格式)
    payload[len++] = 0x01;  // 数据类型:生命体征
    payload[len++] = heart_rate;
    payload[len++] = spo2;

    // 添加时间戳(Unix时间)
    uint32_t timestamp = get_unix_time();
    memcpy(&payload[len], &timestamp, 4);
    len += 4;

    // 发送(端口1,未确认)
    lora_send_uplink(1, payload, len, false);
}

数据速率与范围权衡

// LoRa扩频因子(SF)配置
typedef struct {
    uint8_t spreading_factor;  // SF7-SF12
    uint16_t bandwidth;        // 125/250/500 kHz
    uint8_t coding_rate;       // 4/5, 4/6, 4/7, 4/8
} lora_phy_config_t;

// SF对比
// SF7:  最快速率(5.5 kbps), 最短距离, 最低功耗
// SF12: 最慢速率(250 bps), 最远距离, 最高功耗

// 自适应数据速率(ADR)
void configure_adr() {
    // 网络服务器根据链路质量自动调整SF
    lora_set_adr_enabled(true);
}

NFC(近场通信)

技术特点

标准: ISO/IEC 14443, ISO/IEC 15693
频率: 13.56 MHz
范围: <10厘米
数据速率: 106-424 Kbps
功耗: 极低(可无源)

医疗应用场景

1. 患者身份识别

应用: 腕带NFC标签
用途:
- 快速身份验证
- 读取患者信息
- 用药核对
- 手术部位确认

优势:
- 无需电池
- 防水耐用
- 快速读取

2. 设备配对

应用: 简化蓝牙/WiFi配对
流程:
1. 手机NFC触碰设备
2. 读取配对信息
3. 自动建立BLE/WiFi连接

优势:
- 用户友好
- 安全(物理接近)
- 快速

3. 药品防伪

应用: NFC标签嵌入药品包装
功能:
- 验证真伪
- 追溯来源
- 记录使用

NFC实现

#include "nfc_t2t_lib.h"

// NFC Type 2标签(NTAG)
#define NDEF_MSG_MAX_SIZE 256

// 写入患者信息到NFC标签
void write_patient_info_to_nfc(patient_info_t *patient) {
    uint8_t ndef_msg[NDEF_MSG_MAX_SIZE];
    uint16_t len = 0;

    // NDEF消息头
    ndef_msg[len++] = 0xD1;  // MB=1, ME=1, SR=1, TNF=0x01
    ndef_msg[len++] = 0x01;  // Type Length
    ndef_msg[len++] = 0x00;  // Payload Length (填充后)
    ndef_msg[len++] = 'U';   // Type: URI

    // URI前缀
    ndef_msg[len++] = 0x04;  // https://

    // 患者信息URL
    len += sprintf((char*)&ndef_msg[len], 
                   "hospital.com/patient/%s", 
                   patient->id);

    // 更新Payload Length
    ndef_msg[2] = len - 4;

    // 写入NFC标签
    nfc_t2t_write(ndef_msg, len);
}

// 读取NFC标签
void read_nfc_tag() {
    uint8_t ndef_msg[NDEF_MSG_MAX_SIZE];
    uint16_t len;

    // 检测标签
    if (nfc_t2t_detect()) {
        // 读取NDEF消息
        len = nfc_t2t_read(ndef_msg, sizeof(ndef_msg));

        // 解析NDEF消息
        parse_ndef_message(ndef_msg, len);
    }
}

// Android Beam / NFC配对
void nfc_handover_for_bluetooth() {
    // 创建蓝牙配对记录
    uint8_t handover_msg[128];
    uint16_t len = 0;

    // 添加蓝牙OOB数据
    handover_msg[len++] = 0x1C;  // 长度
    handover_msg[len++] = 0x00;

    // 蓝牙设备地址
    memcpy(&handover_msg[len], bt_device_addr, 6);
    len += 6;

    // 蓝牙设备名称
    handover_msg[len++] = strlen(device_name) + 1;
    handover_msg[len++] = 0x09;  // Complete Local Name
    memcpy(&handover_msg[len], device_name, strlen(device_name));
    len += strlen(device_name);

    // 写入NFC
    nfc_t2t_write(handover_msg, len);
}

5G医疗应用

技术特点

标准: 3GPP Release 15+
频段: Sub-6 GHz, mmWave
数据速率: >1 Gbps
延迟: <1ms (URLLC)
可靠性: 99.999%

医疗应用场景

1. 远程手术

需求:
- 超低延迟(<10ms)
- 高可靠性
- 高清视频传输
- 触觉反馈

5G优势:
- 网络切片(专用带宽)
- URLLC(超可靠低延迟)
- 边缘计算

2. 移动急救

应用: 救护车实时医疗
功能:
- 实时生命体征传输
- 高清视频会诊
- AI辅助诊断
- 电子病历同步

5G优势:
- 移动中高速连接
- 低延迟通信
- 大带宽

3. 医院物联网

应用: 智慧医院
设备:
- 数千个医疗IoT设备
- 实时监控系统
- 自动化物流

5G优势:
- 海量连接(mMTC)
- 统一网络
- 简化部署

5G网络切片

// 5G网络切片配置
typedef enum {
    SLICE_EMBB,   // 增强移动宽带(影像传输)
    SLICE_URLLC,  // 超可靠低延迟(远程手术)
    SLICE_MMTC    // 海量机器通信(IoT传感器)
} network_slice_type_t;

typedef struct {
    network_slice_type_t type;
    uint32_t bandwidth_mbps;
    uint16_t latency_ms;
    float reliability;
} network_slice_config_t;

// 请求特定网络切片
void request_network_slice(network_slice_type_t type) {
    network_slice_config_t config;

    switch(type) {
        case SLICE_URLLC:
            config.bandwidth_mbps = 10;
            config.latency_ms = 1;
            config.reliability = 0.99999;
            break;

        case SLICE_EMBB:
            config.bandwidth_mbps = 100;
            config.latency_ms = 10;
            config.reliability = 0.999;
            break;

        case SLICE_MMTC:
            config.bandwidth_mbps = 1;
            config.latency_ms = 100;
            config.reliability = 0.99;
            break;
    }

    // 通过5G核心网请求切片
    request_5g_slice(&config);
}

技术选择决策树

选择无线技术的决策流程:

1. 数据量?
   ├─ 大(>1MB) → WiFi / 5G
   └─ 小(<1KB) → 继续

2. 距离?
   ├─ 近(<10m) → BLE / NFC
   ├─ 中(10-100m) → BLE / Zigbee / WiFi
   └─ 远(>1km) → LoRa / 5G

3. 功耗?
   ├─ 极低 → NFC / LoRa / Zigbee
   ├─ 低 → BLE
   └─ 可接受 → WiFi / 5G

4. 延迟?
   ├─ 关键(<10ms) → 5G URLLC / WiFi
   └─ 可接受 → 其他

5. 成本?
   ├─ 低 → Zigbee / BLE
   └─ 可接受 → WiFi / 5G

多无线技术共存

共存挑战

// 2.4 GHz频段共存问题
typedef struct {
    bool ble_active;
    bool wifi_active;
    bool zigbee_active;
    uint8_t current_channel;
} coexistence_state_t;

// 协同调度
void coexistence_scheduler() {
    coexistence_state_t state;

    // 时分复用
    if (state.wifi_active && state.ble_active) {
        // WiFi优先(高吞吐量)
        schedule_wifi_tx();

        // BLE在WiFi间隙传输
        if (wifi_idle_time() > BLE_TX_TIME) {
            schedule_ble_tx();
        }
    }

    // 频分复用
    if (state.zigbee_active) {
        // Zigbee使用非WiFi信道
        set_zigbee_channel(25);  // 避开WiFi 1-11
    }
}

共存最佳实践

1. 频率规划
   - WiFi使用5 GHz
   - BLE/Zigbee使用2.4 GHz不同信道

2. 时间协调
   - 实现PTA(Packet Traffic Arbitration)
   - 优先级管理

3. 功率控制
   - 降低不必要的发射功率
   - 减少干扰

4. 自适应跳频
   - BLE AFH(自适应跳频)
   - 避开拥挤信道

测试与验证

多技术互操作测试

# 测试脚本:验证多无线技术共存
import time
import bluetooth
import wifi
import zigbee

def test_coexistence():
    # 1. 启动所有无线接口
    ble_device = bluetooth.connect("Medical_Device")
    wifi_conn = wifi.connect("Hospital_WiFi")
    zigbee_node = zigbee.join_network()

    # 2. 同时传输数据
    start_time = time.time()

    # BLE传输
    ble_throughput = measure_ble_throughput(ble_device, duration=30)

    # WiFi传输
    wifi_throughput = measure_wifi_throughput(wifi_conn, duration=30)

    # Zigbee传输
    zigbee_reliability = measure_zigbee_reliability(zigbee_node, duration=30)

    # 3. 评估性能
    print(f"BLE Throughput: {ble_throughput} kbps")
    print(f"WiFi Throughput: {wifi_throughput} Mbps")
    print(f"Zigbee Reliability: {zigbee_reliability}%")

    # 4. 检查干扰
    if ble_throughput < EXPECTED_BLE_THROUGHPUT * 0.8:
        print("WARNING: BLE performance degraded")

    if wifi_throughput < EXPECTED_WIFI_THROUGHPUT * 0.8:
        print("WARNING: WiFi performance degraded")

参考资源

Zigbee

LoRa/LoRaWAN

NFC

5G


下一步: 了解 无线通信安全


💬 讨论区

欢迎在这里分享您的想法、提出问题或参与讨论。需要 GitHub 账号登录。