
智能物流小车
简介
中型载货小车,预计驱动功率600w,连接ONENET平台提供的MQTT服务以及Agroa声网提供的云视频服务进行人工后台介入操控。在驱动电机中使用磁编码器进行闭环的差速控制。使用CAN总线互联模块。
简介:中型载货小车,预计驱动功率600w,连接ONENET平台提供的MQTT服务以及Agroa声网提供的云视频服务进行人工后台介入操控。在驱动电机中使用磁编码器进行闭环的差速控制。使用CAN总线互联模块。开源协议
:GPL 3.0
描述
BiliBili: 耗时438天!大学生手搓大号遥控车【星火计划】
Github: Li-xunwen/intelligent-logistics-car_Github
一、车架组装指南
关于车架,作者这里提供参考设计,并非最优设计,后续控制设备对车架并无太大兼容性要求,读者可自行设计。
大同步轮(作者选用5M-100齿-钢/铝):同步带轮 5M10/14/15/16/18/20/24/25/28/30-100齿钢铝皮带轮-淘宝网
小同步轮(作者选用5M-15齿-铝):同步带轮 5M10/14/15/16/18/20/24/25/28/30-100齿钢铝皮带轮-淘宝网
同步带(作者选用5M-580):同步带橡胶5M-480-755传动带 传送带同步轮同步皮带套装同步皮带-淘宝网
电机选用(作者选用24V300W光轴款与同步轮装配):羚鹰小海豚电动车电机24V300W同步轮皮带轮有刷滑板车电机-淘宝网
方向舵机选用(颜色分类:35KG DS3235舵机角度:270度):单轴舵机20kg金属齿航模RC车模机器人数字舵机25kg30kg35kg60kg-淘宝网
车架与轮子(作者选用65厘米前桥):电动平板车前桥方向 改装四轮车转向总成 车把式转向 平板车前桥-淘宝网
其余车体骨架作者就地取材,使用角铁与方管焊接而成。这里推荐选用其他不锈钢型材。
转向结构推荐读者自行CNC设计连接件,作者仍是就地取材。
![]() |
![]() |
二、模块设计
1.架构设计
小车分为三个驱动模组,由CAN分线模组、电机驱动及转向模组、运动学驱动模组组成,最后通过预留的TTL接口连接Ubuntu主机实现远程控制。
驱动结构示意图 |
![]() |
![]() |
图 1.1 Datasheet.h中Car结构体 |
![]() |
图1.2 Datasheet.中CarBtoB联合体 |
在上图1.1结构体struct Car中描述了车的状态与控制状态,在该结构体完成数据封装后通过上图联合体union CarBtoB进行传输编码和解码。
2.电机驱动及转向模组 BordCtrlModule
该部分模组由STC8H8K64U驱动驱动两个最大240w的H桥以及充电检测与保护部分组成,预留IIC、UART、以及PWM排针接口。
H桥驱动模块:12V24V直流有刷电机驱动模块PWM调速模块-淘宝网
目前通过PWM控制25kg舵机完成转向。(后续设计直线电机驱动转向)
该模块驱动程序位于 Github BordCtrl
![]() |
![]() |
图2.1 电机驱动及转向模组原理图 | 图2.2 电机驱动及转向模组 |
![]() |
![]() |
图2.3 电机驱动及转向模组部署 | 图2.4 电机驱动及转向模组PWM测试 |
电机驱动及转向模组 BordCtrlModule调试指南
1.烧录:该模组主控为STC8H8K64U,通过STC-ISP连接UART烧录(图右中部),IRC频率为24M,推荐启用复位引脚。也可通过左下角USB-HID烧录。
2.模块功能简介:通过继电器实现的过充保护、IIC驱动A组舵机、IIC驱动LED指示灯、IIC驱动左电机、IIC驱动右电机。
其中,该模组的IIC地址为0x5A,通过板对板连接器连接运动学模组IIC驱动,左电机右电机通过左右H桥驱动器由PWM驱动,默认启用电机软启动功能。
从机地址 | 寄存器地址 | 寄存器值 | 描述 |
0x5A |
0x00 |
0/1 | LED指示灯,0x00表示点亮 |
0x5A | 0x01 | 0~255 | A组舵机ServoA |
0x5A | 0x02 | 0~255 | A组舵机ServoB |
0x5A | 0x03 | 0~255 | A组舵机ServoC |
0x5A | 0x04 | 0~255 | A组舵机ServoD |
0x5A | 0x05 | 0~255 | 左电机正转 |
0x5A | 0x06 | 0~255 | 左电机反转 |
0x5A | 0x07 | 0~255 | 右电机正转 |
0x5A | 0x08 | 0~255 | 右电机反转 |
0x5A | 0x09 | 0~255 | 电子刹车 |
3.运动学运动学驱动模组 KinematicsModule
该部分模组由STM32F407VET6驱动,完成磁编码器、IMU、GPS数据融合解算,其中ESP32辅以连接上位机,提供用户GUI以及保存配置信息。
该模块驱动程序位于 Github KinematicsModule
![]() |
![]() |
图3.1 运动学驱动模组原理图 | 图3.2 运动学驱动模组 |
GPS模块:北斗gps定位GNSS低功耗惯性导航模块 中科微小体积搜星WTGPS-6E-淘宝网
电机驱动及转向模组 KinematicsModule调试指南
驱动模组由ESP32通过lvgl驱动,Arduino工程,亦可通过bin固件直接烧录。
该模块基于STM32cubeIDE工程,亦可通过bin固件直接烧录。
4.CAN分线模组 DockingStation
该部分模组由STC32G8K64驱动,用以测试CAN总线与拓展CAN总线。
该模块驱动程序位于 Github DockingStation
![]() |
![]() |
图4.1 CAN分线模组原理图 | 图4.2 CAN分线模组 |
CAN设备 | CAN ID | 数据描述 |
左磁编码器 | 0x60 | 左磁编码器回报结构体数据(详见磁编码器部分) |
右磁编码器 | 0x61 | 右磁编码器回报结构体数据(详见磁编码器部分) |
左前照灯 | 0xA0 | Data[0]=2,Data[1]=0-255,Data[1]设置亮度 |
左前转向灯 | 0xA0 | Data[0]=1,Data[1]=1,2,3,4,5;Data[1]转向灯状态 |
左后照灯 | 0xA1 | Data[0]=2,Data[1]=0-255,Data[1]设置亮度 |
左后转向灯 | 0xA1 | Data[0]=1,Data[1]=1,2,3,4,5;Data[1]转向灯状态 |
右前照灯 | 0xB0 | Data[0]=2,Data[1]=0-255,Data[1]设置亮度 |
右前转向灯 | 0xB0 | Data[0]=1,Data[1]=1,2,3,4,5;Data[1]转向灯状态 |
右后照灯 | 0xB1 | Data[0]=2,Data[1]=0-255,Data[1]设置亮度 |
右后转向灯 | 0xB1 | Data[0]=1,Data[1]=1,2,3,4,5;Data[1]转向灯状态 |
5.磁编码器模组
0.42寸 4针 OLED白色显示屏模块 超小 SSD1306驱动液晶屏 IIC接口-淘宝网
![]() |
![]() |
图5.1 磁编码器模组原理图 | 图5.2 磁编码器模组 |
磁编码器由STC32g12k128驱动MT6816CT编码器
当轴旋转零点时LED灯状态反转
拨码1 | 启用OLED显示(禁用可提高CAN数据报率) |
拨码2 | 启用里程掉电记忆 |
拨码3 | CAN设置为数据帧/遥感帧 |
拨码4 | 启用串口报送 |
拨码5 | 设置编码器为左(右)编码器 |
![]() |
图5.1 编码器数据结构体 |
该模组通过struct TotalData结构体对封装CAN数据帧/遥感帧,并通过联合体union FloatToBytes进行编码解码。
3D打印底座见附件.
6.转向灯模组
LED灯 MLSA-R46ASC2-W10-S 圆形平面数码管光圈 4脚发白光 全新-淘宝网
转向灯模组供电12v,以下是供电接口线序。
7.显示屏
显示屏来源于tb老王垃圾店,显示屏驱动来源于爆改车间主任:
笔者这里利用ESP32的webserver库写了一个前端软件,方便控制显示屏:
连接局域网到显示屏的ESP32,打开http://esp32sd.local/即可
二、主机与远程
1.部署教程
作者选用N280的一台工控机作为主机。
1.1安装ubuntu
安装ubuntu20.04系统,安装edge浏览器。
参考教程: Ubuntu 20.04 LTS 桌面版详细安装指南
1.2安装npm
使用命令sudo apt-get install npm
1.3启动服务
下载 Github Intelligent-logistics-car-webserver 解压后打开命令行,cd到目录
通过命令npm run dev 启动服务
2.1配置连接
成功启动服务后打开edge打开http://localhost:3001/index.html即可进入控制面板
2.2注册声网帐号
根据 声网-实时互动服务开通教程 得到appid
2.3配置远程设备
在远程端用上述同样的方式配置服务即可连接
这里不管是小车端还是远程端都可以通过蓝牙连接xbox手柄实现控制
2.4连接主控
主机通过串口连接主控,并在面板配置连接。注意type-c的正反面分别连接ESP32与STM32,上位机默认连接STM32进行调试。
2.5调试指南
xbox连接成功后,拨动右扳机,观察屏幕示数是否变化。
通过上位机leftLimit(左限位),middle(居中位),right(右限位),以及配合车架的桥臂调整共同完成转向调平
GasPedalLimit为设置油门限位,油门范围为0~255。
设计图

BOM


评论