ITPub博客

首页 > 人工智能 > 语音识别 > JX-A7T混合语音模组:MCU传感器数据在小程序显示指南

JX-A7T混合语音模组:MCU传感器数据在小程序显示指南

原创 语音识别 作者:smartpi 时间:2026-07-29 13:37:39 0 删除 编辑

版本:v1.1 | 更新日期:2026-03-14 阅读时间:约 12 分钟 适用模组:JX-A7T 混合AI语音模组 素材来源:智能公元技术交流群真实案例(2026-03-13)+ SmartPi 官方文档

前言

在物联网设备开发中, "如何将外部传感器数据显示到小程序" 是一个非常常见的需求。很多开发者使用 JX-A7T 混合语音模组时,会面临这样的问题:

真实用户提问(智能公元16群,2026-03-13): "请问,这个JX-A7T可以通过单片机给这个模块发送温度湿度数据,然后在智能公元小程序里面显示吗?"

答案是肯定的! 本文将系统讲解如何通过 JX-A7T 模组实现 MCU 传感器数据到小程序的完整数据链路。


一、方案架构概述

1.1 系统数据流向

┌─────────────────────────────────────────────────────────────────┐
│                    JX-A7T传感器数据流架构                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────┐    UART1     ┌──────────────┐    云端      ┌─────┐│
│  │   MCU   │ ───────────→ │   JX-A7T     │ ───────────→ │WiFi ││
│  │(传感器) │   传感器数据   │  (数据转发)   │   MQTT/HTTP  │云端 ││
│  └─────────┘              └──────────────┘              └─────┘│
│       │                          │                         │   │
│   DHT11/                    语音部分                    云端API │
│   SHT30                     暂不处理                      │   │
│   其他传感器                                              │   │
│                                                          ↓   │
│                                                  ┌──────────┐ │
│                                                  │ 智能公元  │ │
│                                                  │  小程序   │ │
│                                                  │数据显示  │ │
│                                                  └──────────┘ │
└─────────────────────────────────────────────────────────────────┘

1.2 核心原理

JX-A7T 模组内部集成了两个主要部分:

  • 语音部分(CI-03T系列):处理离线/在线语音识别和AI对话
  • WiFi部分(JX-12F系列):处理网络通信和小程序交互

两者之间可以通过 内部数据通路实现数据转发。MCU 将传感器数据发送给 JX-A7T 的语音串口(UART1),JX-A7T 再通过内部机制将数据传递给 WiFi 部分上传到云端。

⚠️ 重要说明:JX-A7T的语音串口1(PA2/PA3)是唯一可用于与外部MCU通信的串口。语音烧录串口(PB5/PB6)和WiFi烧录串口(UART0_RX2/TX2)仅用于烧录,不可用于数据通信。


二、硬件连接方案

2.1 JX-A7T 串口资源总览

JX-A7T 模组共有多个串口,但只有1个可用于MCU通信:

串口名称 引脚定义 用途 是否可外接MCU
语音串口0 PB5(TX)/PB6(RX) 烧录语音固件 ✗ 烧录专用
WiFi串口0 UART0 RX2/UART0TX2 烧录WiFi固件 ✗ 烧录专用
语音串口1 PA2(TX)/PA3(RX) 自定义通信 ✓ 推荐使用

2.2 MCU与JX-A7T连接方式

┌─────────────────────────────────────────────────────────────────┐
│                    硬件连接示意图                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│     MCU (如STM32/ESP32)         JX-A7T模组                      │
│                                                                 │
│      TX ─────────────────────→ PA3 (UART1_RX)                  │
│      RX ─────────────────────→ PA2 (UART1_TX)                  │
│      GND ────────────────────→ GND                              │
│                                                                 │
│     [可选]                                    │                  │
│   DHT11/SHT30等传感器    语音功能                WiFi部分       │
│     (接MCU的GPIO)          (语音识别)          (云端通信)      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

2.3 电气参数要求

参数 要求 说明
逻辑电平 3.3V JX-A7T是3.3V逻辑
波特率 9600/115200 根据平台配置决定
数据位 8位 标准UART配置
停止位 1位 标准UART配置
校验位 无 标准UART配置

⚠️ 注意事项:如果MCU是5V逻辑(如Arduino UNO),需要使用电平转换模块或电阻分压电路。5V直接连接可能损坏JX-A7T模块。


三、平台配置步骤

3.1 配置串口输入功能

在智能公元平台上配置串口输入以接收MCU数据:

步骤1:添加串口输入触发

1. 进入产品配置 → 控制配置
2. 点击"添加触发"
3. 选择触发类型:串口输入
4. 选择串口:UART1_RX(语音串口1接收)
5. 设置消息编号(如:01)

步骤2:配置数据格式

1. 选择数据格式类型
   - 固定格式:适用于简单场景
   - 自定义格式:适用于多参数场景
2. 设置帧头帧尾(默认可使用)
   - 帧头:AA 55
   - 帧尾:55 AA
3. 配置输入参数(可选)
   - 参数名:如 "temperature" 或 "humidity"
   - 类型:选择 char/int/float
   - 测试值:用于生成测试消息

步骤3:生成固件

1. 保存配置
2. 点击生成固件
3. 下载并烧录到JX-A7T

3.2 配置变量绑定

将串口输入的数据绑定到变量,以便在小程序中显示:

1. 在串口输入触发中添加动作
2. 选择"修改变量"动作
3. 选择或创建变量:
   - 变量名:sensor_temperature
   - 数据类型:与串口输入参数一致
   - 绑定参数:选择对应的输入参数

3.3 配置小程序显示

在小程序开发端配置数据显示控件:

1. 进入小程序页面编辑
2. 添加"文本显示"控件
3. 设置控件数据源:
   - 选择变量:sensor_temperature
   - 设置显示格式:"温度:{value}°C"
4. 如有多个传感器,添加更多控件
5. 保存并发布小程序

3.4 数据格式说明

根据官方文档,串口数据格式需要注意以下几点:

项目 说明
配置界面显示 使用空格分隔(如 AA 55 01 55 AA)便于阅读
实际发送数据 连续的16进制字节,不含空格( 0xAA 0x55 0x01 0x55 0xAA)
帧头帧尾 默认 AA 55 / 55 AA,可自定义
帧尾可省略 如使用校验和,帧尾字段可留空

多参数数据帧示例(温度+湿度):

AA 55                          # 帧头
01                             # 消息ID
[温度数据 - 4字节float]
[湿度数据 - 4字节float]
55 AA                          # 帧尾

四、MCU端代码示例

4.1 传感器读取与数据打包(STM32示例)

#include "dht11.h"
#include "usart.h"
// 数据帧结构定义
#define FRAME_HEAD    0xAA55
#define FRAME_TAIL    0x55AA
#define MSG_ID_SENSOR 0x01
typedef struct {
    uint16_t head;        // 帧头
    uint8_t msg_id;       // 消息ID
    float temperature;    // 温度
    float humidity;       // 湿度
    uint16_t tail;        // 帧尾
} SensorData_t;
// 读取传感器并发送到JX-A7T
void send_sensor_data_to_jxa7t(void)
{
    SensorData_t data;
    uint8_t *bytes = (uint8_t*)&data;
    // 读取DHT11传感器
    DHT11_Data_t dht11;
    if (DHT11_Read(&dht11) == DHT11_OK) {
        // 转换为浮点数
        data.temperature = (float)dht11.temperature;
        data.humidity = (float)dht11.humidity;
    } else {
        // 读取失败,使用上次值或默认值
        return;
    }
    // 组装数据帧
    data.head = FRAME_HEAD;
    data.msg_id = MSG_ID_SENSOR;
    data.tail = FRAME_TAIL;
    // 通过串口1发送到JX-A7T
    HAL_UART_Transmit(&huart1, bytes, sizeof(SensorData_t), 100);
}
// 定时发送(例如每2秒)
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim == &htim2) {  // 假设定时器2每2秒触发
        send_sensor_data_to_jxa7t();
    }
}

4.2 Arduino示例

#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// 帧头帧尾定义
const uint16_t FRAME_HEAD = 0xAA55;
const uint16_t FRAME_TAIL = 0x55AA;
const uint8_t MSG_ID = 0x01;
void setup() {
    Serial.begin(9600);  // 连接到JX-A7T的PA2/PA3
    dht.begin();
}
void loop() {
    delay(2000);  // 每2秒读取一次
    float humidity = dht.readHumidity();
    float temperature = dht.readTemperature();
    // 检查读取是否成功
    if (isnan(humidity) || isnan(temperature)) {
        return;
    }
    // 组装数据帧(大端序)
    uint8_t buffer[13];
    // 帧头(大端序)
    buffer[0] = (FRAME_HEAD >> 8) & 0xFF;
    buffer[1] = FRAME_HEAD & 0xFF;
    // 消息ID
    buffer[2] = MSG_ID;
    // 温度数据(假设平台配置为32位浮点)
    memcpy(&buffer[3], &temperature, sizeof(float));
    // 湿度数据
    memcpy(&buffer[7], &humidity, sizeof(float));
    // 帧尾(大端序)
    buffer[11] = (FRAME_TAIL >> 8) & 0xFF;
    buffer[12] = FRAME_TAIL & 0xFF;
    // 发送到JX-A7T
    Serial.write(buffer, 13);
}

4.3 ESP32示例(IDF框架)

#include "driver/uart.h"
#include "dht.h"
#define UART_NUM UART_NUM_1
#define TX_PIN 17
#define RX_PIN 16
#define DHT_PIN 4
void send_sensor_data_task(void *pvParameters)
{
    uart_config_t uart_config = {
        .baud_rate = 9600,
        .data_bits = UART_DATA_8_BITS,
        .parity = UART_PARITY_DISABLE,
        .stop_bits = UART_STOP_BITS_1,
        .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
    };
    uart_param_config(UART_NUM, &uart_config);
    uart_set_pin(UART_NUM, TX_PIN, RX_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
    while (1) {
        // 读取DHT11
        float temp = read_dht_temperature();
        float humi = read_dht_humidity();
        // 组装数据帧
        uint8_t data[13];
        data[0] = 0xAA;  // 帧头
        data[1] = 0x55;
        data[2] = 0x01;  // 消息ID
        memcpy(&data[3], &temp, sizeof(float));  // 温度
        memcpy(&data[7], &humi, sizeof(float));  // 湿度
        data[11] = 0x55;  // 帧尾
        data[12] = 0xAA;
        // 发送到JX-A7T
        uart_write_bytes(UART_NUM, (const char*)data, 13);
        vTaskDelay(pdMS_TO_TICKS(2000));  // 2秒间隔
    }
}

五、数据协议设计

5.1 推荐协议格式

┌─────────────────────────────────────────────────────────────────┐
│                    数据帧格式定义                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────┐ ┌──────┐ ┌────────────────┐ ┌────────────────┐ ┌──────┐│
│  │ 帧头  │ │消息ID│ │   数据字段     │ │   数据字段     │ │ 帧尾  ││
│  │2Byte │ │1Byte │ │    N Byte     │ │    M Byte     │ │2Byte ││
│  └──────┘ └──────┘ └────────────────┘ └────────────────┘ └──────┘│
│                                                                 │
│  帧头:0xAA 55(固定,可自定义)                                 │
│  消息ID:区分不同消息类型                                        │
│  帧尾:0x55 AA(固定,可自定义或省略)                           │
│  数据字段:根据实际传感器数量和类型定义                          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

5.2 常见传感器数据类型

传感器 数据类型 字节数 示例值
DHT11温湿度 uint8_t 1+1 温度25°C,湿度60%
SHT30 float 4+4 温度25.3°C,湿度60.5%
光照强度(BH1750) uint16_t 2 0-65535 lux
PM2.5(GP2Y10) uint16_t 2 0-500 μg/m³
二氧化碳(SGP30) uint16_t 2 400-5000 ppm

5.3 多传感器数据帧示例

假设需要上传:温度、湿度、光照、PM2.5
┌──────┬──────┬──────┬──────┬──────┬──────┐
│ 帧头 │ 消息ID│ 温度 │ 湿度 │ 光照 │ 帧尾 │
│2Byte │1Byte │4Byte │4Byte │2Byte │2Byte │
└──────┴──────┴──────┴──────┴──────┴──────┘
总计:15字节
示例数据:
AA 55                          # 帧头
01                             # 消息ID
41 CD 00 00                    # 温度 25.3°C (float)
42 71 00 00                    # 湿度 60.5% (float)
10 E2                          # 光照 4334 lux
55 AA                          # 帧尾

六、调试与验证

6.1 硬件连接验证

验证步骤:
1. 使用万用表测试
   - 确认TX连接到RX(MCU TX → JX-A7T PA3)
   - 确认RX连接到TX(MCU RX → JX-A7T PA2)
   - 确认GND连通
2. 使用USB转TTL模块测试
   - 将TX/RX短接,回环测试
   - 确认MCU串口发送正常
3. 电平测试
   - 确认JX-A7T侧为3.3V逻辑
   - 如MCU是5V,确认电平转换正常

6.2 数据通信验证

方法一:串口监控

1. 在MCU TX和JX-A7T RX之间并联USB转TTL
2. 使用串口助手监控发送的数据
3. 确认数据格式与配置一致

方法二:日志输出

1. 在MCU代码中添加日志输出
2. 打印发送的原始数据(十六进制)
3. 与平台配置的协议对比

方法三:小程序验证

1. 配置小程序显示变量
2. 观察变量值是否更新
3. 检查更新频率是否正确

6.3 常见问题排查

问题现象 可能原因 解决方案
小程序显示0 数据格式不匹配 检查大小端、浮点格式
小程序不更新 数据未上传 检查串口连接、网络状态
数据乱码 波特率不匹配 确认MCU和JX-A7T波特率一致
数据跳变 干扰或采样问题 添加滤波、检查传感器连接
串口无数据 接线错误 确认PA2/PA3接线正确

七、高级应用场景

7.1 多传感器融合监测

┌─────────────────────────────────────────────────────────────────┐
│                    多传感器融合系统                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐           │
│  │DHT11 │  │SHT30 │  │BH1750│  │GP2Y10│  │SGP30 │           │
│  │温湿度 │  │温湿度 │  │光照  │  │粉尘  │  │空气质量│         │
│  └──┬───┘  └──┬───┘  └──┬───┘  └──┬───┘  └──┬───┘           │
│     │         │         │         │         │                  │
│     └─────────┴─────────┴─────────┴─────────┘                  │
│                           │                                    │
│                    ┌──────▼──────┐                              │
│                    │    MCU      │                              │
│                    │  (数据融合)  │                              │
│                    └──────┬──────┘                              │
│                           │ UART1                              │
│                    ┌──────▼──────┐                              │
│                    │   JX-A7T    │                              │
│                    │  (数据转发)  │                              │
│                    └──────┬──────┘                              │
│                           │                                    │
│                    ┌──────▼──────┐                              │
│                    │ 智能公元App │                              │
│                    │ 多参数显示   │                              │
│                    └─────────────┘                              │
└─────────────────────────────────────────────────────────────────┘

7.2 本地语音播报+远程显示

场景:传感器数据同时在本地语音播报和远程小程序显示

实现方案:

1. MCU通过串口发送数据给JX-A7T
2. JX-A7T同时执行两个动作:
   a. 语音播报:"当前温度25度,湿度60%"
   b. 通过WiFi上传到小程序

平台配置:

  • 串口输入触发:接收传感器数据
  • 动作1:TTS播报 - 读取温度/湿度变量
  • 动作2:变量上报 - 将数据同步到云端

7.3 阈值告警联动

场景:温度超过阈值时触发告警

实现方案:

1. 在平台配置阈值检测
2. 当串口输入的数据超过阈值时:
   - 本地语音告警
   - 小程序推送通知
   - 可选:触发继电器控制设备

平台配置示例:

- 变量:temperature
- 阈值:> 30°C
- 触发动作:
  * TTS:"温度过高警告"
  * 小程序通知
  * GPIO输出:打开风扇

八、总结与建议

8.1 方案选择建议

需求场景 推荐方案 优势
简单温湿度显示 JX-A7T + MCU 成本低,配置简单
多传感器监测 JX-A7T + MCU 灵活扩展
本地语音+远程显示 JX-A7T(双功能) 一体化方案
高频率数据上报 考虑专用WiFi模块 避免影响语音功能

8.2 开发注意事项

  1. 数据格式一致性:MCU发送的数据格式必须与平台配置完全匹配
  2. 发送频率控制:建议1-2秒间隔,避免影响语音功能
  3. 错误处理:添加数据校验,防止异常数据显示
  4. 功耗优化:电池供电时,注意传感器采样频率
  5. 网络依赖:小程序显示需要稳定的WiFi连接

8.3 相关资源

  • SmartPi官方文档:JX-A7T串口配置指南、硬件设计FAQ
  • 智能公元平台:产品配置控制台
  • 技术交流群:获取实时技术支持
  • 示例代码:参考官方GitHub仓库

更新日志

  • v1.1 (2026-03-14):基于真实用户案例更新,补充详细的平台配置步骤
  • v1.0 (2026-03-14):初版发布

更新日期:2026-03-14 素材来源:智能公元16群真实提问(2026-03-13) + SmartPi官方文档(faq-hardware-design-jx-a7t.md, uart-input-parameter.md, faq-burning-and-debug-jx-a7t.md) 适用产品:JX-A7T 混合AI语音模组

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049243/viewspace-3177069/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2026-01-08

  • 博文量
    88
  • 访问量
    83321