Skip to content

Sourcekit® MeshMass TX6A4D ​

设计人: 官微宏 , 方圣源, 陈东浩

概述 ​

Sourcekit® MeshMass TX6A4D 是一款可编程的遥控发射器模块,专为遥控爱好者、STEM教育和3D打印社区设计。它是MeshMass系列中首款经济实惠的可编程遥控解决方案产品。

TX6A4D 配备双摇杆、旋转旋钮和可编程按钮,非常适合为玩具、积木搭建和3D打印车辆构建自定义遥控系统。

TX6A4D 控制器

       ┌──┐     ┌──┐                                 ┌──┐     ┌──┐
┌────┬─└──┘─┬─┬─└──┘─┬──┬─────────────┬────┬────┬──┬─└──┘─┬─┬─└──┘─┬────┐
│    │ BTN0 │ │ BTN1 │  │ Onboard ANT │    │PROG│  │ BTN2 │ │ BTN3 │    │
│    └──────┘ └──────┘  └─────────────┘    └────┘  └──────┘ └──────┘┌───┌─┐
│                        ┌───┐                                      │PWR└─┘
│          STK2          │EXT│     SOURCEKIT             STK1       │ SW│
│            ▲           │ANT│     MeshMass                ▲        └───┤
│            │           └───┘     TX6A4D                  │            │
│     ◄──────┼──────► STK3                     STK0 ◄──────┼──────►     │
│            │                  ┌────┐ ┌────┐              │            │
│            ▼                  │OLED│ │PAIR│              ▼            │
│                               └────┘ └────┘                     ┌─────┤
│                       ┌──────┐         ┌──────┐      ┌────────┐ │ USB │
│ ┌──────┐              │      │         │      │      │DC Power│ │CHARGE
│ │BUZZER│              │ STK4 │         │ STK5 │      │3.7-4.2v│ └─────┤
│ └──────┘              │      │         │      │      │ +    - │       │
└───────────────────────┴──────┴─────────┴──────┴──────┴────────┴───────┘

特性 ​

  • 双摇杆: 两个双轴摇杆提供4个模拟输入通道
  • 旋转旋钮: 2个旋钮提供2个模拟输入通道,可编程用于油门、速度或参数调节
  • 可编程按钮: 4个肩部按钮 + 2个摇杆按压按钮支持自定义功能
  • OLED显示接口: 6针SH1.0连接器支持128x64 SPI OLED(单独出售),显示电池电压、信号强度和原始输入值
  • Type-C充电: 内置1S LiPo电池充电电路
  • 天线选项: 板载PCB天线 + IPEX-1接口用于外接2.4GHz天线
  • 连接丢失报警: 蜂鸣器在接收器连接丢失时发出警报
  • M2.5安装: 4个安装孔用于安全固定

规格 ​

微控制器 ​

TX6A4D 采用南京WCH的CH571F微控制器。该芯片提供核心处理和无线通信能力。

组件规格
MCUWCH CH571F (CH57x系列)
架构32位 RISC-V (青稞 V3A 核心)
CPU 速度48 MHz (典型值)
内存32KB SRAM, 256KB Flash
无线2.4GHz专有协议(原始PHY层实现最低延迟)
ADC12位, 8通道(6个用于摇杆/旋钮)
GPIO多个可配置I/O引脚
外设SPI, UART

CH571F的RISC-V架构提供高效处理能力,而集成的2.4GHz无线电确保可靠的无线通信。TX6A4D利用原始2.4GHz物理层实现实时控制应用中的最低延迟。

输入 ​

类型数量描述
模拟 (ADC)64个来自摇杆, 2个来自旋钮
数字44个可编程肩部按钮 + 2个摇杆按压按钮(并联连接)
系统1配对按钮(固件控制)

注意: 每个摇杆包含内置按压按钮:

  • 左摇杆按压:与左侧边缘按钮(按钮0 / BTN0,getButton(0))并联连接
  • 右摇杆按压:与右侧边缘按钮(按钮3 / BTN3,getButton(3))并联连接 |

电源 ​

规格值
电池1S LiPo (3.7V - 4.2V)
电池连接器PH2.0
充电Type-C USB
警告确保电池极性正确 (+/-),否则可能损坏设备

物理特性 ​

规格值
尺寸100mm x 50mm
安装4x M2.5 安装孔
重量待定

显示与反馈 ​

组件描述
显示接口6针SH1.0连接器,SPI接口用于128x64 OLED(单独出售含线缆)
编程接口6针SH1.0连接器,用于MeshMass USB烧录器(单独出售含线缆),同时提供串口控制台输出(推荐使用OLED进行可视化调试)
显示内容电池电压、链路两端的无线信号强度、以及原始输入值(6 个模拟值:0-255,4 个数字值:0/1)
蜂鸣器连接丢失报警

显示说明: MeshMass显示原始十进制数值(非滚动条或进度指示器),便于精确验证。学生可以直接看到他们的代码如何将物理输入转换为数值输出。OLED屏幕单独出售,对于固定安装是可选的,对预算有限的构建友好。

连接性 ​

特性描述
无线2.4GHz自动跳频(仅使用BLE PHY层,无GATT)
天线板载PCB天线 + IPEX-1接口用于外接2.4GHz天线
距离开阔地带约40米(使用板载PCB天线),使用外接天线可扩展距离

配对 ​

TX6A4D 遵循 MeshMass 简介中描述的标准 MeshMass 配对系统。TX6A4D 特定的关键细节:

  • 配对按钮在 PCB 上标记为 "PAIR",与可编程肩部按钮(BTN0-BTN3)分开
  • 它由固件控制,不能重新编程用于其他功能
  • OLED 显示配对状态和确认

有关完整的配对说明,包括 EEPROM 存储、一对一独占配对和详细配对流程,请参阅 MeshMass 简介中的配对系统部分。

编程 ​

TX6A4D 可通过 MeshMass 在线平台 meshmass.com(全球访问)或 meshmass.y77.cc(中国大陆访问)进行编程。用户可以:

  • 将摇杆轴、旋钮和按钮映射到输出通道
  • 创建自定义控制混合(例如坦克转向、起重机控制)
  • 配置按钮行为实现特定功能

编程通过网页浏览器使用 MeshMass USB 烧录器(单独出售)完成。CH571F 运行预构建的固件框架处理底层 RF 通信,而用户专注于应用级输入映射逻辑。

注意:TX6A4D 的 USB-C 端口仅用于充电。固件烧录需要单独的 USB 烧录器。

编程理念 ​

MeshMass 系统基于代码编程方法构建,结合了开源硬件的灵活性和消费产品的易用性。有关我们的设计理念、竞争优势、教育价值和系统架构的详细讨论,请参阅 MeshMass 简介 页面。

TX6A4D 的关键优势:

  • 简单的 C API 用于将物理输入映射到无线通道
  • 基于 Web 的编程,通过 OLED 提供即时视觉反馈
  • 一套默认程序即可配合你之后做的所有车辆

你要编写的部分:实际上,大多数人只给 TX6A4D 编程一次。默认程序把 6 路模拟输入和 4 个按键转发到通道上,而这正是一个遥控器需要做的全部——车辆的行为写在接收机上。只有当某件事确实属于遥控器时(例如把模式选择发到一个空闲通道),你才需要回到这里。

硬件型号与固件名称

TX6A4D 是硬件型号——也就是你买到的这块板子。在 MeshMass 平台上,对应的固件发布为 TX6AX 课程,即 "TX6A4D Raw Firmware —— broadcasting the raw inputs"。

它与接收机一侧的 RX4MX("RX4M4S Fusion Firmware")配对,当前所有课程也都是针对这一组合编写的。单独购买的模块出厂即为此固件。

如果你买的是模型设计者提供的整套成品套件,那么它出厂时已经按那套件的需要预先烧录好了固件——可能是更早的一代,但拿到手就能直接用。重新烧录之前,请先确认板子上现在是什么固件;若要换到当前固件,请两端一起烧。

固件框架 ​

TX6A4D运行预构建的固件框架,该框架处理底层硬件操作,同时为应用编程提供简单的API。固件框架的关键方面包括:

通道系统 ​

固件定义了 16 个单字节无线通道。这些通道构成发射器和接收器之间的通信桥梁。

模拟输入读到的是原始无符号值(0-255),直接来自各输入自己的 ADC 通道,并针对电池电压下降做了补偿,居中或静止位置约为 128。发射器不做任何自己的居中、死区、缩放或混控——它只转发测到的值,由接收机决定这些值的含义。

PCB标签: PCB上标有STK0-STK5用于模拟输入和BTN0-BTN3用于数字按钮,与API索引直接对应。

模拟输入映射 (通过 getStick(n)):

索引PCB标签物理输入描述
0STK0右摇杆 X轴右摇杆左右移动
1STK1右摇杆 Y轴右摇杆上下移动
2STK2左摇杆 Y轴左摇杆上下移动
3STK3左摇杆 X轴左摇杆左右移动
4STK4左旋钮旋转旋钮,通常用于油门
5STK5右旋钮旋转旋钮,通常用于参数调节

数字输入映射 (通过 getButton(n)):

索引PCB标签物理输入描述
0BTN0按钮0 (左侧边缘)可编程肩部按钮 + 左摇杆按压
1BTN1按钮1 (左侧中间)可编程肩部按钮
2BTN2按钮2 (右侧中间)可编程肩部按钮
3BTN3按钮3 (右侧边缘)可编程肩部按钮 + 右摇杆按压
-PAIR配对按钮系统按钮(固件控制)

注意: 摇杆按压按钮与肩部按钮并联连接:

  • 左摇杆按压:激活 getButton(0)(与按钮0 / 左侧边缘按钮相同)
  • 右摇杆按压:激活 getButton(3)(与按钮3 / 右侧边缘按钮相同) |

应用程序代码示例 ​

架构说明:发射器上的代码只决定物理输入(摇杆、旋钮、按键)到无线通道的映射。这些通道值如何变成电机与舵机的动作,取决于运行在接收机上的应用程序代码。

注意:app.h 头文件已经包含了 <stdbool.h> 和 <stdint.h>,你的应用代码里无需再次包含。在 meshmass.com 上可以查看 app.h 作为参考,但不建议修改它。

默认程序把每个输入原样转发——6 路模拟输入送到通道 0-5,4 个按键送到通道 6-9:

c
#include "app.h"

void loop() {
  setChannel(0, getStick(0));
  setChannel(1, getStick(1));
  setChannel(2, getStick(2));
  setChannel(3, getStick(3));
  setChannel(4, getStick(4));
  setChannel(5, getStick(5));

  setChannel(6, getButton(0));
  setChannel(7, getButton(1));
  setChannel(8, getButton(2));
  setChannel(9, getButton(3));
}

整个程序就是这样,这是有意为之。居中、死区、缩放、取反和混控都属于接收机——只有它知道输出接的是什么,参见 RX4M4S 页面的摇杆通道的居中处理。

为什么把信号处理放在接收机?

已经做过居中和混控的发射器,丢掉的信息接收机再也拿不回来。更重要的是链路的两端并不对称:你的遥控器永远是同一副样子,而接收机这周装在坦克上、下周就装到挖掘机上。坦克和挖掘机对同样两根摇杆的混控方式完全不同——而灯带和音频模块同样在接收机这一侧,由它决定什么时候亮刹车灯、什么时候改变引擎声。

把这些都留在接收机上,一套遥控器程序就能服务所有车辆;改一辆车时,你只需要改一块板上的一个程序,而不是两个。

当某件事确实属于遥控器时,这里仍然可以做些工作——比如用一个按键选择模式,把模式值发到一个空闲通道上,车辆就能在不重新烧录的情况下切换行为。默认程序没有使用通道 10-15,可以自由用于此类用途。

API 函数 ​

  • uint8_t getStick(uint8_t n):返回模拟输入 n (0-5) 的原始无符号读数 (0-255),约 128 为中点
  • bool getButton(uint8_t n):返回布尔值 false(未按下)或 true(按下)用于数字按钮 n (0-3)
  • int8_t getChannel(uint8_t n):返回通道 n (0-15) 的当前值
  • void setChannel(uint8_t n, int8_t value):设置通道 n 的值
  • void loop():应用程序主循环函数,每20ms(50Hz)调用一次。实现此函数以定义控制逻辑。

通道里装的是一个原始字节

setChannel() 的声明形参是带符号的 int8_t,但通道本质上只是线路上的一个字节。把 getStick() 直接传进去是正确的,默认程序就是这么做的:大于 127 的值在发射器一侧会绕回为负数,而接收机通过 getChannel() 读到的仍是原封不动的 0-255。不要试图在这里「修正」符号——请在接收机上做居中。

状态持久性:需要在 loop() 调用之间保持值的变量应声明为 static 在 loop() 内部或作为全局变量在函数外部声明。

标准库:常见的C标准库函数如 abs() 可用于数学运算。

SDK ​

TX6A4D Application Header file
c
#ifndef APP_H
#define APP_H

#include <stdint.h>
#include <stdbool.h>

/**
 * 读取数字按钮状态。
 *
 * @param index 按钮索引 (0-3):
 *              - 0: 按钮0(左侧边缘)/ 左摇杆按压
 *              - 1: 按钮1(左侧中间)
 *              - 2: 按钮2(右侧中间)
 *              - 3: 按钮3(右侧边缘)/ 右摇杆按压
 * @return true 如果按钮按下,否则 false
 */
bool getButton(uint8_t index);

/**
 * 读取模拟输入值。
 *
 * @param index 模拟输入索引 (0-5):
 *              - 0: 右摇杆 X轴 (STK0)
 *              - 1: 右摇杆 Y轴 (STK1)
 *              - 2: 左摇杆 Y轴 (STK2)
 *              - 3: 左摇杆 X轴 (STK3)
 *              - 4: 左旋钮 (STK4)
 *              - 5: 右旋钮 (STK5)
 * @return 原始无符号8位读数 (0 到 255),来自该输入自己的 ADC 通道,
 *         并针对电池电压下降做了补偿。约 128 为中心/中立位置;
 *         0 和 255 为行程的两个极端。
 */
uint8_t getStick(uint8_t index);

/**
 * 设置无线通道值。
 *
 * @param index 通道索引 (0-15)
 * @param value 有符号8位值 (-128 到 127) 分配给通道。
 *              虽然 getStick() 避免使用-128,但 setChannel() 可以将其用于特殊用途
 *              (例如,电机控制中的刹车)。
 */
void setChannel(uint8_t index, int8_t value);

/**
 * 获取当前无线通道值。
 *
 * @param index 通道索引 (0-15)
 * @return 通道当前的有符号8位值 (-128 到 127)
 */
int8_t getChannel(uint8_t index);

/**
 * 应用程序主循环函数。
 *
 * 由固件框架每20ms(50Hz)调用一次。实现此函数以定义将输入映射到无线通道的控制逻辑。
 *
 * 重要:避免忙等待或延时函数。固件在后台运行实时操作系统(RTOS)。
 *
 * loop() 完成后,固件将所有16个通道值无线广播到配对的接收器。
 * 在 loop() 中未显式设置的通道保留其先前值。
 */
void loop();

#endif

固件管理的功能 ​

框架自动处理多个系统功能:

  • OLED显示:实时调试显示,展示电池电压、链路两端的无线信号强度和所有输入值(6 个模拟值:0-255,4 个数字值:0/1)。由于模拟读数就是按发送出去的原样显示的,你可以把发射器上的数字与接收机自己屏幕上的通道值对照,端到端地确认链路是否正常。显示原始十进制数值(非简化可视化),便于精确代码验证。OLED单独出售,对于固定安装是可选的,同时保持预算友好的灵活性。
  • 蜂鸣器:提供连接丢失警报和系统反馈
  • 无线通信:管理2.4GHz数据包传输与自动跳频
  • 电池管理:监测电压并提供低电量警告

这种分离让用户能够专注于应用逻辑(通道映射),而固件处理硬件复杂性。

系统架构 ​

MeshMass系统将发射器和接收器的关注点分离:

  • TX6A4D (发射器): 将物理输入(摇杆、旋钮、按钮)映射到无线通道
  • RX4M4S (接收器): 将接收到的通道映射到物理输出(电机、舵机、RGB LED)

这种抽象让用户能够专注于特定构建中最重要的部分,而无需担心RF协议细节。

应用 ​

meshmass.com上提供示例应用和代码模板,适用于:

  • 工程车辆(叉车、自卸车、挖掘机)
  • 遥控汽车和卡车
  • 起重机和机械臂
  • 自定义3D打印车辆
  • 小型遥控飞机和无人机
  • 沙盘模型和场景模型
  • STEM教育项目
  • 自定义机器人和自动化

3D打印与定制 ​

TX6A4D 专为3D打印社区设计。社区成员创建了自定义设计以增强您的构建体验:

  • 3D打印外壳设计:CDHCHAOREN 为 TX6A4D 设计了3D打印外壳。STL文件可在 MakerWorld 上下载。该简单外壳保护电子元件并提供安装支撑(需要3D打印机和耗材)。

TX6A4D 的 M2.5 安装孔使其易于集成到自定义3D打印外壳或车辆设计中。与社区分享您的创作!

讨论与展示 ​

购买渠道 ​

相关产品 ​

  • RX4M4S 接收器 - 4路直流电机 + 4路舵机接收器模块
  • USB烧录器 - 浏览器编程工具(即将推出)