服务商:AAAA刘工
¥2000
Android + MCU 串口通信与设备控制系统
本人主要从事嵌入式软件、Android 工控系统及 MCU 控制设备开发与调试,具备 Android 主控板与 STM32、APM32 等 MCU 控制板的实际项目开发和联调经验。
主要开发方向包括 Android AOSP 系统适配、UART 串口通信、自定义通信协议、CRC 校验、STM32/APM32 固件开发、电机及传感器控制、设备 OTA 升级及软硬件故障排查。
熟悉 Android、Linux、C/C++、Java、UART、GPIO、PWM、MQTT、HTTP 等技术,能够结合现有源码、通信协议、原理图、串口日志及实机现象进行问题定位和二次开发。
擅长已有项目的功能增加、协议修改、Bug 修复和 Android + MCU 联合调试,在尽量保持原有工程架构和功能逻辑的基础上完成针对性修改。
该项目应用于带有 Android 人机交互主控和 MCU 实时控制板的智能设备。
Android 主控主要负责用户界面、业务逻辑、网络通信、设备参数配置及运行状态显示;MCU 控制板主要负责电机、传感器、灯光、按键、编码器、舵机等实时硬件控制。
两块控制板之间通过 UART 串口进行通信,需要保证控制指令能够准确下发,同时 MCU 产生的设备状态和传感器事件能够及时反馈给 Android。
建立 Android 与 MCU 之间稳定可靠的设备通信链路,实现:
系统支持的控制内容根据实际设备配置进行扩展,主要包括:
该架构适用于:
系统采用 Android 主控与 MCU 控制板分层架构。
Wi-Fi / 网络
│
▼
Android 主控
界面 / 业务 / 状态管理
│
UART 串口
│
▼
MCU 控制板
STM32 / APM32
│
┌──────────────┼──────────────┐
│ │ │
电机 传感器 LED
│ │ │
舵机 按键/编码器 其他外设 Android 负责高层业务处理,MCU 负责实时硬件控制,通过自定义串口协议完成两个系统之间的数据交互。
系统主要由以下部分组成:
Android 主控板与 MCU 控制板之间通过 UART 进行数据通信。
MCU 根据 Android 下发的控制命令驱动对应外设,同时实时检测传感器、按键等输入状态,并将事件结果反馈至 Android。
设备启动后,Android 与 MCU 分别完成初始化。
Android 根据业务逻辑向 MCU 发送设备控制数据,MCU 接收到完整数据帧后进行协议解析和 CRC 校验。
校验通过后,根据命令字进入对应功能处理程序,例如启动电机、停止电机、控制灯光或读取设备状态。
当传感器触发或设备状态发生改变时,MCU 根据协议主动组帧,并通过 UART 将状态反馈给 Android。
Android 对返回数据进行解析后更新设备状态或继续执行对应业务逻辑。
原理图及 PCB 使用嘉立创 EDA/Altium Designer 完成设计,主要包括 MCU 最小系统、串口通信、电源、电机驱动、传感器输入及外设接口等模块。
| 器件/模块 | 作用 |
|---|---|
| RK3566 等 Android 主控平台 | Android 系统运行、UI、网络及业务处理 |
| APM32F407VGT6 | 实时设备控制及传感器采集 |
| UART 通信接口 | Android 与 MCU 数据通信 |
| 电机驱动模块 | 电机启停及方向控制 |
| 光电传感器 | 检测物体、钢珠或机构状态 |
| LED/灯光接口 | 状态及场景灯光控制 |
| 编码器/按键 | 人机操作及位置输入 |
| 舵机/执行器 | 执行机构动作 |
Android 端主要包括:
MCU 端主要包括:
Android业务逻辑
│
▼
控制命令组帧
│
▼
UART发送
│
▼
MCU接收数据
│
▼
帧格式检查
│
▼
CRC16校验
│
▼
命令解析
│
▼
执行设备动作
│
▼
生成执行结果
│
▼
UART状态上报
│
▼
Android解析并更新状态
通信协议采用固定格式数据帧,包含:
帧头
命令字
数据区
状态/参数
CRC16
帧尾
针对不同设备功能定义独立命令字,实现控制功能和状态反馈。
开发过程中重点处理:
通过 Android 日志、串口 TX/RX 数据、MCU 调试输出及实际设备动作进行联合验证。
典型排查链路为:
Android是否发送
↓
UART是否有数据
↓
MCU是否收到
↓
CRC是否正确
↓
命令是否解析
↓
GPIO/PWM是否执行
↓
实际设备是否动作
↓
状态是否返回Android
这种逐层排查方式可以快速判断异常位于 Android、UART、协议、MCU 程序还是实际硬件接口。
