From 3eb63ade12186d164dcddcb8af59682df9e032a0 Mon Sep 17 00:00:00 2001 From: wangbeihong Date: Thu, 16 Apr 2026 00:59:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0README=E6=96=87?= =?UTF-8?q?=E6=A1=A3=EF=BC=8C=E5=A2=9E=E5=8A=A0=E9=A1=B9=E7=9B=AE=E7=AE=80?= =?UTF-8?q?=E4=BB=8B=E3=80=81=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84=E5=8F=8A?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=A6=82=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 231 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 188 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index e0956e0..57cdacf 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,209 @@ -# 嵌入式调试开发指南 -## 项目简介 - -本项目旨在实现基于 STM32F103 的嵌入式开发,支持通过 TCP/IP 协议进行数据传输。以下内容将详细介绍如何配置和使用相关功能。 +# 物流小车嵌入式控制系统(STM32F103,TCP/IP) +# Logistics AGV Embedded System (STM32F103, TCP/IP) --- -## 环境准备 +## 📖 项目简介 | Project Overview -### 硬件需求 +本项目为基于 STM32F103 的物流小车(AGV)嵌入式控制系统,支持 TCP/IP 局域网通信、RFID 站点识别、红外循迹、超声避障、电机闭环控制等功能。适用于智能仓储、自动运输等场景。 -- STM32F103 开发板 -- USB 转串口模块 -- 连接线 - -### 软件需求 - -- 串口调试工具(如 XCOM 或 SecureCRT) -- TCP 测试软件 +This project is an embedded control system for a logistics AGV based on STM32F103, supporting TCP/IP LAN communication, RFID station recognition, IR line tracking, ultrasonic obstacle avoidance, and closed-loop motor control. Suitable for smart warehouse and auto-transport scenarios. --- -## 配置步骤 +## 📦 目录结构 | Directory Structure -### 1. 串口配置 - -1. 选择实际的串口号(如 COM4)。 -2. 设置波特率为 `115200`。 - -### 2. AT 指令操作 - -#### 配置 Wi-Fi - -```bash -AT+CWMODE=1 # 设置工作模式为 STA -AT+CWJAP="ssid","password" # 配置 Wi-Fi +``` +├── Core/ # 主代码(BSP、驱动、协议、控制任务等) +│ ├── Bsp/ # 板级支持包(电机、PID、循迹、RFID、超声、串口等) +│ ├── Inc/ # 头文件 +│ └── Src/ # CubeMX自动生成及主循环 +├── Drivers/ # HAL库、CMSIS等外部驱动 +├── Middlewares/ # 第三方中间件(如FreeRTOS) +├── build/ # 构建输出 +├── cmake/ # CMake工具链与脚本 +├── 物流小车/ # 机械结构、上位机、3D模型、调试工具 +│ ├── 3D/ # 机械3D模型(SolidWorks/STEP) +│ ├── esp_12f/ # ESP-12F相关工具 +│ └── web/ # 上位机/调试脚本 +├── CMakeLists.txt # CMake主构建脚本 +├── f103_car.ioc # CubeMX工程文件 +└── README.md # 项目说明文档 ``` -#### 连接服务器 +--- -```bash -AT+CIPSTART="TCP","192.168.1.101",3456 # 连接服务器,IP 为电脑的 IP,端口为 3456 -AT+SAVETRANSLINK=1,"192.168.1.101",3456,"TCP" # 保存连接信息,开机后自动连接 -AT+CIPMODE=1 # 设置为透传模式 -AT+CIPSEND # 发送数据 -HELLOWORLD # 示例数据 -``` +## 🛠️ 硬件与软件需求 | Hardware & Software Requirements -#### 退出透传模式 +### 硬件 | Hardware +- STM32F103ZET6 开发板 +- ESP-12F WiFi模块(TCP透传) +- AT8236-MS 电机驱动板 + 4路直流电机 +- 霍尔测速传感器 ×4 +- 红外循迹模块 ×4 +- 超声波测距模块(HC-SR04) +- RC522 RFID读卡器 +- 3.3V/5V 电源、线缆、机械底盘 -进入自动透传模式后,如需重新配置(如更换 IP),需退出透传模式: - -1. 在串口助手中发送 `+++`。 -2. 注意: - - 不要勾选“发送新行”。 - - 发送 `+++` 后,停顿 1 秒以上不要发送任何数据。 -3. 模块返回 `OK` 后,即可重新进入命令模式。 +### 软件 | Software +- Keil/STM32CubeIDE/GCC + CMake +- FreeRTOS +- 串口调试助手(XCOM/SecureCRT) +- TCP调试工具(NetAssist等) +- SolidWorks/STEP查看器(3D结构) --- +## ⚙️ 编译与烧录 | Build & Flash + +1. 安装依赖(HAL库、FreeRTOS、CMake等) +2. 用 STM32CubeMX 生成代码(f103_car.ioc) +3. CMake 构建: + ```sh + mkdir build && cd build + cmake .. -G "Ninja" + ninja + ``` +4. 用 JLink/ST-Link 烧录 .elf/.bin 到开发板 +5. ESP-12F 配置为 TCP Server,波特率115200,透传模式 + +--- + +## 🚗 功能总览 | Features + +- TCP/IP 通信协议,支持上位机远程控制与状态监控 +- RFID 站点识别与到站锁存 +- 红外循迹(4路/5路,带去抖与方向判定) +- 超声波避障(自动停车/恢复) +- 电机PWM闭环控制(PID,支持死区补偿) +- 任务调度与消息队列(FreeRTOS) +- 详细日志输出(EasyLogger) + +--- + +## 📡 通信协议 | Communication Protocol + +### 指令帧结构 | Frame Structure + +``` +LOGI::# +``` +- LOGI: 固定帧头 +- : 有效载荷(如 ST:RUN、GS:001) +- : 2字节十六进制校验和(从'L'累加到最后一个冒号前) +- #: 帧尾 + +### 下行指令(上位机→小车)| Downlink (PC→Car) + +| 功能 | 指令格式 | 示例 | 说明 | +|------|----------|------|------| +| 设置站点 | LOGI:GS:NNN:CS# | LOGI:GS:001:CA# | NNN为3位站点号 | +| 启动运行 | LOGI:ST:RUN:CS# | LOGI:ST:RUN:3B# | 启动自动循迹 | +| 停止运行 | LOGI:ST:STOP:CS# | LOGI:ST:STOP:8C# | 急停/暂停 | +| 设置速度 | LOGI:SP:VVV:CS# | LOGI:SP:050:D7# | VVV为000-100 | + +### 上行遥测(小车→上位机)| Uplink (Car→PC) + +- 周期状态: + `LOGI:STAT:SP:050,STA:001,RUN:1,DIS:12.5,TRK:0010,RPM:25:25:25:25:CS#` +- 指令反馈: + `LOGI:FB:GS:1:A5#`(1=成功,0=失败) + +### 校验和算法 | Checksum + +所有字符ASCII累加,取低8位,转2位十六进制。 + +```python +def calculate_cs(data_str): + return sum(data_str.encode('ascii')) & 0xFF +``` + +--- + +## 🧩 主要模块说明 | Main Modules + +### 1. 电机与PID | Motor & PID +- 4路PWM控制,AT8236-MS驱动,支持正反转与刹车 +- PID参数可调,支持死区补偿,闭环速度控制 + +### 2. 霍尔测速 | Hall Speed +- 外部中断计数,定时计算RPM,支持实时测速 + +### 3. 红外循迹 | IR Tracking +- 4路/5路红外,带去抖与方向判定,支持丢线/十字/偏移等状态 + +### 4. 超声波避障 | Ultrasonic +- HC-SR04,DWT微秒级测距,自动停车/恢复 + +### 5. RFID站点 | RFID Station +- RC522,UID白名单匹配,支持多站点扩展,到站自动锁存 + +### 6. 串口与TCP | UART & TCP +- UART1+DMA,ESP-12F透传TCP,空闲中断帧接收 + +### 7. 协议栈 | Protocol +- 指令解析、校验、消息队列、状态上报、反馈应答 + +--- + +## 🚦 典型使用流程 | Typical Workflow + +1. 上电,ESP-12F配置为TCP Server,波特率115200,透传模式 +2. 上位机通过TCP工具连接小车IP/端口 +3. 发送 `LOGI:GS:001:XX#` 设置目标站点 +4. 发送 `LOGI:ST:RUN:XX#` 启动小车 +5. 小车自动循迹,遇障碍自动停车,RFID到站自动锁存 +6. 上位机周期接收状态帧,随时可发 `STOP`/`SP:xxx` 控制 + +--- + +## 🖥️ 上位机开发建议 | PC/Host Development + +- 推荐用 Python/C#/LabVIEW 等实现 TCP 客户端,直接发送/解析 ASCII 指令 +- 校验和算法见上,协议字段可扩展 +- 参考 `Core/Bsp/up_readme.md` 获取协议范例 + +--- + +## 🛠️ 调试与常见问题 | Debug & FAQ + +### 1. 无法连接TCP +- 检查IP/端口/波特率/透传配置 +- 确认ESP-12F与主控串口连接正常 + +### 2. 指令无响应/校验失败 +- 检查指令格式与校验和 +- 查看串口/网络日志 + +### 3. RFID/循迹/测速异常 +- 检查硬件连线、电源、模块初始化 +- 查看日志与状态上报帧 + +### 4. CubeMX生成代码被覆盖 +- 用户代码请写在 `USER CODE BEGIN ... END` 区域 +- 驱动/业务任务建议放在 `Core/Bsp/`,主循环仅调用接口 + +--- + +## 🤝 贡献与联系方式 | Contributing & Contact + +- 欢迎提交PR、Issue,或邮件联系作者 +- Author: Beihong Wang +- Email: [your_email@example.com] +- 日期/Date: 2026-04-16 + +--- + +## 📝 附录 | Appendix + +- 详细协议范例、上位机代码、硬件原理图、3D模型等请见 `Core/Bsp/up_readme.md`、`物流小车/3D/`、`物流小车/web/` +- 关键代码均含中文注释,便于二次开发与维护 + +--- + +> 本文档中英双语,便于团队协作与国际交流。后续如有更新请及时同步。 + ## 测试与验证 ### 1. 启动服务器