
Intelligent logistics cart
PROIntelligent logistics cart
License
:GPL 3.0
Description
BiliBili: It took 438 days! College students rub large remote control cars [Stars Project].
Github: Li-xunwen/intelligent-logistics-car_Github
1. Frame assembly guide
Regarding the frame, the author provides a reference design here, which is not an optimal design, and the follow-up control equipment does not have much compatibility requirements for the frame, so readers can design it by themselves.
Large synchronous pulley (the author chooses 5M-100 teeth-steel/aluminum): synchronous pulley 5M10/14/15/16/18/20/24/25/28/30-100 tooth steel and aluminum pulley-Taobao
Small synchronous pulley (the author chooses 5M-15 tooth-aluminum): synchronous pulley 5M10/14/15/16/18/20/24/25/28/30-100 tooth steel and aluminum pulley-Taobao
Synchronous belt (author's choice 5M-580): synchronous belt rubber 5M-480-755 transmission belt conveyor belt synchronous wheel synchronous belt set synchronous belt - Taobao
Motor selection (the author chooses 24V300W optical shaft and synchronous wheel assembly): Lingying Little Dolphin electric vehicle motor 24V300W synchronous wheel pulley brush scooter motor-Taobao
Steering gear selection (color classification: 35KG DS3235 servo angle: 270 degrees): single-axis servo 20kg metal tooth model RC car model robot digital servo 25kg30kg35kg60kg-Taobao
Frame and wheels (the author chose 65 cm front axle): electric flatbed car front axle direction modified four-wheeled vehicle steering assembly handlebar steering flatbed car front axle-Taobao
The rest of the car body skeleton is made of local materials and welded with angle iron and square tube. Other stainless steel profiles are recommended here.
Turning to the structure, it is recommended that the reader design the connector by CNC, and the author still uses local materials.
![]() |
![]() |
2. Module design
1. Architecture design
The trolley is divided into three drive modules, which are composed of a CAN breakout module, a motor drive and steering module, and a kinematic drive module, and finally connects to the Ubuntu host through the reserved TTL interface to achieve remote control.
Schematic diagram of the drive structure
![]() |
![]() |
Figure 1.1 The Car structure in Datasheet.h |
![]() |
Figure 1.2 CarBtoB consortium in Datasheet |
The state and control state of the car are described in the struct car in Figure 1.1 above, and the transmission encoding and decoding are carried out through the union CarBtoB consortium in the above figure after the structure completes data encapsulation.
2. Motor drive and steering module BordCtrlModule
This part of the module is composed of a STC8H8K64U drive to drive two H-bridges with a maximum of 240w and a charging detection and protection part, with reserved IIC, UART, and PWM pin header interfaces.
H-bridge drive module: 12V24V DC brush motor drive module, PWM speed control module-Taobao.com
At present, the steering is completed by PWM control of the 25kg servo. (Subsequent design linear motor drive steering)
The module driver is available on Github BordCtrl
![]() |
![]() |
Figure 2.1 Schematic diagram of motor drive and steering module | Figure 2.2 Motor drive and steering module |
![]() |
![]() |
Figure 2.3 Deployment of motor drive and steering modules | Figure 2.4 PWM test of motor drive and steering module |
BordCtrlModule Debugging Guide for Motor Drive and Steering Modules
1. Burning: The main control of the module is STC8H8K64U, and it is connected to UART through STC-ISP for programming (middle right of the figure), the IRC frequency is 24M, and it is recommended to enable the reset pin. It can also be burned by USB-HID in the lower left corner.
2. Brief introduction of module functions: overcharge protection through relays, IIC drives group A servos, IIC drives LED indicators, IIC drives left motors, and IIC drives right motors.
Among them, the IIC address of the module is 0x5A, the kinematic module IIC drive is connected through a board-to-board connector, and the left motor and the right motor are driven by PWM through the left and right H-bridge drivers, and the motor soft start function is enabled by default.
Slave address | Register address | Register value | Description |
0x5A |
0x00 |
0/1 | LED indicator, 0x00 indicates that it is lit |
0x5A | 0x01 | 0~255 | Group A servos ServoA |
0x5A | 0x02 | 0~255 | Group A servos ServoB |
0x5A | 0x03 | 0~255 | Group A servos ServoC |
0x5A | 0x04 | 0~255 | Group A servos ServoD |
0x5A | 0x05 | 0~255 | The left motor rotates forward |
0x5A | 0x06 | 0~255 | The left motor is reversed |
0x5A | 0x07 | 0~255 | The right motor rotates forward |
0x5A | 0x08 | 0~255 | The right motor is reversed |
0x5A | 0x09 | 0~255 | Electronic brakes |
3. KinematicsModule
This part of the module is driven by the STM32F407VET6 to complete the magnetic encoder, IMU, GPS data fusion and calculation, in which ESP32 is supplemented by connecting to the host computer, providing user GUI and saving configuration information.
The module driver is available on Github KinematicsModule
![]() |
![]() |
Figure 3.1 Schematic diagram of the kinematic drive module | Figure 3.2 Kinematic drive module |
GPS module: Beidou GPS positioning GNSS low-power inertial navigation module Zhongke micro-volume Soxing WTGPS-6E-Taobao
Debugging Guide for KinematicsModule for Motor Drive and Steering Modules
The driver module is driven by ESP32 through lvgl, Arduino engineering, and can also be directly burned through bin firmware.
The module is based on the STM32cubeIDE project, and can also be directly programmed through the bin firmware.
4. DockingStation
This part of the module is driven by a STC32G8K64 and is used to test the CAN bus and extend the CAN bus.
The module driver is located on Github DockingStation.
![]() |
![]() |
Figure 4.1 Schematic diagram of CAN breakout module | Figure 4.2 CAN breakout module |
CAN devices | CAN ID | Data Description |
Left magnetic encoder | 0x60 | Left magnetic encoder returns structure data (see Magnetic Encoder section for details) |
Right magnetic encoder | 0x61 | Right magnetic encoder reports structure data (see Magnetic Encoder section for details) |
Left headlamp | Data[0]=2,Data[1]=0-255,Data[1]set the brightness | |
Front left turn signal | 0xA0 | Data[0]=1,Data[1]=1,2,3,4,5;Data[1]Turn signal status |
Left rear light | 0xA1 | Data[0]=2,Data[1]=0-255,Data[1]set the brightness |
Left rear turn signal | 0xA1 | Data[0]=1,Data[1]=1,2,3,4,5;Data[1]Turn signal status |
Right headlamp | 0xB0 | Data[0]=2,Data[1]=0-255,Data[1]set the brightness |
Right front turn signal | 0xB0 | Data[0]=1,Data[1]=1,2,3,4,5;Data[1]Turn signal status |
Right rear light | 0xB1 | Data[0]=2,Data[1]=0-255,Data[1]set the brightness |
Right rear turn signal | 0xB1 | Data[0]=1,Data[1]=1,2,3,4,5;Data[1]Turn signal status |
5. Magnetic encoder module
![]() |
![]() |
Figure 5.1 Schematic diagram of magnetic encoder module | Figure 5.2 Magnetic encoder module |
The magnetic encoder is driven by the STC32g12k128 MT6816CT encoder.
When the shaft rotates to zero, the LED light states are reversed.
DIP 1 | Enable OLED display (disable to increase CAN datagram rate) |
DIP 2 | Enable mileage power-down memory |
DIP 3 | CAN is set to data frame/remote sensing frame |
DIP 4 | Enable serial port reporting |
DIP 5 | Set the encoder to the left (right) encoder |
![]() |
Figure 5.1 Encoder data structure |
The module encapsulates CAN data frames/remote sensing frames through the struct TotalData structure pair, and encodes and decodes them through the union union FloatToBytes.
See the attachment for the 3D printed base.
6. Turn signal module
The power supply of the turn signal module is 12V, and the following is the wiring sequence of the power supply interface.
7. Display
The display screen comes from TB Lao Wang garbage store, and the display screen driver comes from the director of the blasting workshop:
Pick up trash RGB-LED display HUB75e interface driver board
Here I use the ESP32 webserver library to write a front-end software to facilitate the control of the display:
Connect the LAN to the ESP32 of the display and turn on the http://esp32sd.local/
2. Host and remote
1. Deployment tutorial
The author chose one of the N280 industrial computers as the main unit.
1.1 Install Ubuntu
Install ubuntu20.04 and EDGE browser.
Tutorial: Ubuntu 20.04 LTS Desktop Detailed Installation Guide
1.2 Install npm
Use the command sudo apt-get install npm
1.3 Start the service
Download Github Intelligent-logistics-car-webserver , decompress it, open the command line, and cd it to the directory
Start the service with the command npm run dev
2.1 Configure the connection
Once the service has been successfully launched, open the Edge http://localhost:3001/index.html to enter the control panel
2.2 Register a Agora account
According to the Agora - Real-time Interactive Service Activation Tutorial to get the appid.
2.3 Configure the remote device
Connect to the remote side by configuring the service in the same way as described above.
Here, whether it is a car or a remote end, it can be controlled by connecting to the Xbox controller through Bluetooth.
2.4 Connect the main control
The host is connected to the master through the serial port and the connection is configured on the panel. Note that the front and back sides of type-c are connected to ESP32 and STM32 respectively, and the host computer is connected to STM32 by default for debugging.
2.5 Debugging Guide
After the Xbox connection is successful, pull the right trigger and observe whether the screen indication changes.
The steering leveling is completed by the leftLimit, middle, right and arm adjustment of the upper computer.
GasPedalLimit is to set the throttle limit, and the throttle range is 0~255.
Designed by Li_xunwen (from OSHWHub)
Link:https://oshwhub.com/li_xunwen/intelligent-logistics-car
Design Drawing


Comment