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.8 RGB colorful light bar

8. RGB colorful light bar

8. RGB colorful light bar 8.1. Purpose of the experiment 8.2. Configuration pin information 8.3. Analysis of the experimental flow chart 8.4. core code explanation 8.5. Hardware connection 8.6. Experimental effect

8.1. Purpose of the experiment

Use the SPI communication of STM32 to simulate the communication protocol of the WS2812B module, and drive the RGB light bar to display the effect.

8.2. Configuration pin information

  1. Import the ioc file from the Beep project and name it RGB_Strip.

According to the schematic diagram, the pin connected to the RGB light bar is PB5. The driving method of the RGB light bar can use the timer PWM output or SPI output. The PB5 pin supports redefinition as the timer PWM or SPI output. Considering the subsequent timer conflict, the SPI communication method is used to drive the RGB light bar.

image-20220310121200684

  1. Set the mode of SPI3 to Transmit Only Master, so that the PB5 pin will be automatically set to SPI3_MOSI.

image-20220310121657636

  1. Modify the parameters of data sent by SPI3, refer to the following pictures for specific parameters.

image-20220310122044198

  1. Add DMA settings for SPI3_TX.

image-20220310122201542

8.3. Analysis of the experimental flow chart

image-20220519102300488

8.4. core code explanation

  1. Create new bsp_rgb.h and bsp_rgb.c, and add the following content to bsp_rgb.h:

image-20220310122940996

Among them, the ws2812_t structure is used to store the cache data of the light bar.

  1. Create the following content in the bsp_rgb.c file: According to the communication protocol of WS2812, use the three bits of SPI to simulate one bit of WS2812. When the value of the SPI output three bits is 0b110, it corresponds to the high level of WS2812, and when the SPI output three bits are 0b100, it corresponds to the low level of WS2812.

image-20220310141349255

  1. The WS2812_Set_Color_One() function sets the color value of a single RGB lamp, index=[0, MAX_RGB-1], RGB=[0x00000000, 0x00FFFFFF], the arrangement of RGB values: red is at the front, green in the middle, and blue at the end.

image-20220310140859723

  1. RGB_Set_Color(index, r, g, b) and RGB_Set_Color_U32(index, color) set the color value of the RGB light bar, index=[0, MAX_RGB-1] controls the color of the corresponding light beads, and index=255 controls the color of all light beads.

image-20220310142550074

image-20220310142255241

  1. RGB_Clear() clears the RGB light cache.

image-20220310142722177

  1. The RGB_Update() function refreshes the color of the RGB light bar. After changing the color of the RGB lamp, you must call the RGB_Update() function to refresh the display, otherwise the product will not work.

image-20220310142814164

  1. Send data using SPI3 DMA.

image-20220310143105281

8.5. Hardware connection

Since the RGB light bar needs to be connected to the position of the RGB light bar on the expansion board, the interface has been set to prevent reverse connection, and you can find the interface and insert it in the correct direction.

image-20220326173802535

8.6. Experimental effect

After the program is programmed, the LED light flashes once every 200 milliseconds, and the RGB light bar will display red, green, and blue in sequence, switching a color every 500 milliseconds.

CAN bus communication
Timer interrupt to control PWM servo

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/中文