yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
ROS Robot Expansion Board📖
1.Expansion board STM32 driver
  • 0. Precautions
  • 1.1 Expansion Board Introduction_V3.0
  • 1.1 Expansion Board Introduction_V1.0
  • 1.2 STM32 Development environment
  • 1.3 Button to control the buzzer to whistle
  • 1.4 FreeRTOS application
  • 1.5 Serial communication
  • 1.6 SBUS model aircraft remote control
  • 1.7 CAN bus communication
  • 1.8 RGB colorful light bar
  • 1.9 Timer interrupt to control PWM servo
  • 1.10 Control serial port servos
  • 1.11 Nine-axis attitude sensor to obtain data
  • 1.12 Control the forward and reverse rotation of the motor
  • 1.13 The timer captures the encoder data
  • 1.14.1 Robot kinematics analysis theory
  • 1.14.2 Mecanum wheel kinematics analysis
  • 1.15 PID control robot movement
  • 1.16 OLED character display
2.Python basic control
  • 2.0 Bind PCB port devices
  • 2.1 Update the firmware of the expansion board
  • 2.2 Turn off the self-starting large program at startup
  • 2.3 Install the Rosmaster driver library
  • 2.4 Buzzer whistle
  • 2.5 Control PWM servo
  • 2.6 RGB colorful light bar special effects display
  • 2.7 Control the forward and reverse rotation of the motor
  • 2.8 Control the movement of the robot
  • 2.9 Control Serial Servo
3.ROS1 Basic Course
  • 1.ROS introduction
  • 2.ROS installation
  • 3.ROS common command tools
  • 4.ROS workspace
  • 5.ROS function package
  • 6.ROS node
  • 7.ROS topic publisher
  • 8.ROS topic subscribers
  • 9.ROS service client
  • 10.ROS service server
  • 11.ROS action client
  • 12.ROS action server
  • 13.ROS custom message reception
  • 14.ROS-launch file
  • 15.ROS-TF transformation
  • 16.ROS parameter service
  • 17.ROS-rviz use
  • 18.ROS-rqt tool usage
  • 19.Topic message recording and playback
  • 20.urdf model introduction
  • 21.gazebo introduction
  • 22.ROS distributed communication
4.ROS1 robot control
  • 0. Bind PCB port devices
  • 1. Package Use the tutorial
  • 2. Package Description
  • 3. Robot keyboard control
  • 4. Robot state estimation
  • 5. Robot imu calibration
  • 6. Robot URDF Model
5.ROS2 Basic Course
  • 1.Introduction to ROS2
  • 2.ROS2 install Humble
  • 3.ROS2 development environment
  • 4.ROS2 workspace
  • 5.ROS2 function package
  • 6.ROS2 node
  • 7.ROS2 topic communication
  • 8.ROS2 service communication
  • 9.ROS2 action communication
  • 10.ROS2 custom interface message
  • 11.ROS2 parameter service case
  • 12.ROS2 meta-function package
  • 13.ROS2 distributed communication
  • 14.ROS2 DDS
  • 15.ROS2 time related API
  • 16.ROS2 common command tools
  • 17.ROS2 rviz2 use
  • 18.ROS2 rqt toolbox
  • 19.ROS2 Launch startup file configuration
  • 20.ROS2 recording and playback tool
  • 21.ROS2 URDF model
  • 22.ROS2 Gazebo simulation platform
  • 23.ROS2 TF2 coordinate transformation
6.ROS2 robot control
  • 0. Bind PCB port devices
  • 1. Package Use the tutorial
  • 2. Robot information release
  • 3. Robot keyboard control
  • 4. Robot state estimation
  • 5. Robot calibration
  • 6. URDF model
7.RDK X3 course
  • 1. Update the firmware of the expansion board
  • 2. Turn off the self-starting large program at startup
  • 3. Install the Rosmaster driver library
  • 4. Buzzer whistle
  • 5. Control PWM servo
  • 6. RGB colorful light bar special effects
  • 7. Control motor forward reverse
  • 8. Control robot movement
  • 9. Control Serial Servo
Download
  • Rules_File
  • Hardware Info
  • Code
  • 3D Model File
  • RDK Code
  • ROS2_Basic_VM
Download ZIP

Welcome to ROS Robot Expansion Board repository

1.10 Control serial port servos

10. Control serial port servos

10. Control serial port servos 10.1. Purpose of the experiment 10.2. Configuration pin information 10.3. Analysis of the experimental flow chart 10.4. core code explanation 10.5. Hardware connection 10.6. Experimental effect

10.1. Purpose of the experiment

Use the serial port function of STM32 to control the serial port servo and read the position of the serial port servo.

10.2. Configuration pin information

  1. Import the ioc file from the Serial project and name it Serial_Servo.

According to the schematic diagram, the serial port servo is connected to the serial port 3, PC10 and PC11 pins.

image-20220311103414861

image-20220311103037711

  1. Set serial port 3 to Asynchronous mode, and other parameters are shown in the figure below.

image-20220311104339865

  1. Since the default serial port 3 pins are PB10 and PB11, and the serial port 3 of the expansion board schematic diagram is connected to PC10 and PC11, the serial port remapping function is required.

Click the PC11 pin first, and then select USART3_RX. After this operation, the pins of serial port 3 will be remapped to PC10 and PC11.

image-20220311105119846

image-20220311105155048

10.3. Analysis of the experimental flow chart

image-20220519103326496

10.4. core code explanation

  1. Create new bsp_uart_servo.h and bsp_uart_servo.c, and add the following content in bsp_uart_servo.h:

image-20220311112552218

  1. Create the following content in the bsp_uart_servo.c file:

According to the communication protocol of the serial servo, create a new UartServo_Ctrl(id, value, time) to control the servo. The id corresponds to the ID of the servo to be controlled. If id=0xFE(254), all servos will be controlled. value indicates the position to which the control servo moves, time indicates the running time, before reaching the maximum speed, the shorter the time, the faster the running.

image-20220311114241465

  1. The UartServo_Get_Angle() function requests the current position of the servo.

image-20220311115303590

  1. The UartServo_Revice(Rx_Temp) function receives the serial port 3 data to determine whether it conforms to the serial port servo communication protocol. If it conforms to a frame of data, update the Rx_Data array and set New_Frame to 1.

image-20220311115356697

  1. Parse the data returned by the serial port servo, return 1 if the read is successful, and print the data, otherwise return 0.

image-20220311115653298

  1. Add the following functions related to writing and reading of serial port 3 in bsp_uart.c.

image-20220311120541249

image-20220311120634343

  1. Add the content of serial port 3 initialization in the Bsp_Init() function.

image-20220311120708777

  1. In the Bsp_Loop() function, add the function of key reading and controlling the serial port servo.

image-20220311120826504

10.5. Hardware connection

The serial port servo needs to be connected to the serial port servo port on the expansion board. The serial port servo port has the function of preventing reverse connection, and it can be inserted in the direction. Multiple serial servos can be cascaded. Due to the limited power supply current of the expansion board, do not connect too many servos. At present, six servos can be used normally.

image-20220311121635417

Because the power of the serial port servo is relatively large, the expansion board should not be powered by USB 5V directly, it needs to be powered by DC 12V.

10.6. Experimental effect

After the program is programmed, the LED light flashes every 200 milliseconds. Press the button multiple times, the serial servo will go back and forth between the 1000 position and the 3000 position, and return to the position data before the movement.

Timer interrupt to control PWM servo
Nine-axis attitude sensor to obtain data

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文