STM32F103C8T6遥控小车发射接收模块:从原理到实践
STM32F103C8T6(C6T6)遥控小车发射接收模块 遥控发射端采用的芯片是c6t6,通过摇杆搭配NRF24L01向接收端发送数据,总共有8个数据通道,这里只用了左摇杆控制前后运动,右摇杆控制舵机左右转向,如需要其他通道可在源码里增加。 发射端采用的c6t6最小系统板搭配NRF24L01和L298N驱动器(驱动器可根据电机参数选择搭配)。 出售的是: 发射端原理图、PCB、源码。 接收端接线图,源码。 使用说明。

最近在捣鼓一个基于STM32F103C8T6(C6T6)芯片的遥控小车项目,感觉挺有意思的,所以想写点东西分享一下。这个项目主要用到了NRF24L01无线模块和L298N电机驱动器,整个过程还算顺利,但也遇到了一些小问题,不过都解决了。
发射端:摇杆控制与数据传输
发射端的核心是C6T6最小系统板,搭配NRF24L01无线模块和一个双摇杆模块。摇杆模块用来控制小车的前后运动和转向,NRF24L01负责将数据无线传输到接收端。
摇杆数据采集与处理
摇杆模块的输出是模拟信号,需要通过ADC转换成数字信号。C6T6的ADC采样频率挺高的,完全能满足需求。代码部分大致如下:
// 采集左右摇杆的X和Y轴数据
uint16_t left_x = ADC_Read(LEFT_X_CHANNEL);
uint16_t left_y = ADC_Read(LEFT_Y_CHANNEL);
uint16_t right_x = ADC_Read(RIGHT_X_CHANNEL);
这里,lefty控制小车的前后运动,rightx控制舵机的左右转向。数据处理部分比较简单,主要是将摇杆的中间位置(中立位置)映射为0,左右或前后移动则映射为正负值。
数据打包与无线传输
采集到的数据需要打包成一个数据包,通过NRF24L01发送出去。NRF24L01的配置部分可以参考很多开源代码,这里就不详细展开了。数据包的结构大致如下:
typedef struct {
int16_t forward_backward;
int16_t left_right;
} remote_data_t;
这样设计的好处是扩展性很强,如果需要增加更多的控制通道,只需要在结构体中添加新的字段即可。
接收端:数据解析与执行
接收端用的也是C6T6,搭配NRF24L01和L298N驱动器。NRF24L01接收数据后,解析成相应的控制信号,驱动电机和舵机。
数据接收与解析
接收端的代码逻辑比较简单,主要是等待数据包的到来,然后解析数据:
remote_data_t data;
if (nrf24_receive(&data)) {
// 解析数据并控制电机和舵机
motor_control(data.forward_backward);
servo_control(data.left_right);
}
电机与舵机控制
电机控制部分用的是L298N,这个驱动器支持双电机,电流也挺大的,完全能满足小车的需求。舵机用的是标准的PWM控制,C6T6的PWM输出很稳定,控制起来很轻松。
void motor_control(int16_t speed) {
if (speed > 0) {
// 前进
GPIO_WriteBit(MOTOR_FORWARD_PORT, MOTOR_FORWARD_PIN, Bit_SET);
GPIO_WriteBit(MOTOR_BACKWARD_PORT, MOTOR_BACKWARD_PIN, Bit_RESET);
PWM_SetDutyCycle(MOTOR_PWM_CHANNEL, speed);
} else if (speed < 0) {
// 后退
GPIO_WriteBit(MOTOR_FORWARD_PORT, MOTOR_FORWARD_PIN, Bit_RESET);
GPIO_WriteBit(MOTOR_BACKWARD_PORT, MOTOR_BACKWARD_PIN, Bit_SET);
PWM_SetDutyCycle(MOTOR_PWM_CHANNEL, -speed);
} else {
// 停止
GPIO_WriteBit(MOTOR_FORWARD_PORT, MOTOR_FORWARD_PIN, Bit_RESET);
GPIO_WriteBit(MOTOR_BACKWARD_PORT, MOTOR_BACKWARD_PIN, Bit_RESET);
PWM_SetDutyCycle(MOTOR_PWM_CHANNEL, 0);
}
}
舵机的控制类似,只不过用的是PWM信号,频率固定在50Hz。
项目扩展与注意事项
这个项目的基础部分已经完成,但还有很多可以扩展的地方。比如:
- 增加灯光控制:可以在数据包中添加一个字段,控制小车的前后灯。
- 增加音效:在小车移动时播放一些音效,增加趣味性。
- 增加避障功能:在接收端加装超声波传感器,实现自动避障。
不过,这些功能的增加需要在发射端和接收端同时进行修改,数据包的结构也需要相应调整。
总结
总的来说,这个项目不算太复杂,但涉及的知识点还是挺多的,包括ADC采样、PWM控制、无线通信等。对于刚接触STM32的朋友们来说,是一个不错的练手项目。如果感兴趣的话,可以参考我的源码和原理图,自己动手试试看!

STM32F103C8T6(C6T6)遥控小车发射接收模块 遥控发射端采用的芯片是c6t6,通过摇杆搭配NRF24L01向接收端发送数据,总共有8个数据通道,这里只用了左摇杆控制前后运动,右摇杆控制舵机左右转向,如需要其他通道可在源码里增加。 发射端采用的c6t6最小系统板搭配NRF24L01和L298N驱动器(驱动器可根据电机参数选择搭配)。 出售的是: 发射端原理图、PCB、源码。 接收端接线图,源码。 使用说明。
更多推荐


所有评论(0)