Cyber遥控车制作


-Lxy

Introduction

第十六届智能车竞赛取消了对K60芯片的使用,大量芯片论斤卖,发挥一下芯片的余热,基于上一次的UART串口通信内容,制作一辆遥控车。

硬件结构

智能车硬件

车上的板子就是实验室流传下来的板子,大致功能就是给电机、芯片供电以及接收UART串口信号实现单片机之间的双向通信。

遥控器硬件

遥控器是自己用洞洞板做的,飞了很多线。芯片用的是K60,供电用的是3.7V锂电池经过稳压芯片稳压后供电。
制作的模型仿照PS手柄,有侧边按键以及遥感,但是是非常的粗制滥造。
摇杆相当于电位器,要求是5V供电,但是单片机ADC信号采集只有3.3V,因此采用3.3V供电即可。另加入无线通信模块即可通过代码来实现单片机之间的通信。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码部分

发送代码

代码发送很简单,只要调用山外库的uart_putchar函数就可以发送一个字节的数据了,但是一个字节是远远不够用的,因此可以把数据拆分成多个字节进行使用。如果一次发送多个字节的数据,因为发送端单片机是在一直发送,所以接收端就要识别数据的头和尾,因此接受代码就显得尤为重要。

接收代码

接受代码使用的是UART串口中断,因为uart_getchar函数如果没有接收到数据就会处于等待状态,单片机程序就会卡住。放到中断后,有数据到来时才执行这个函数,就不会导致程序的卡死。
众所周知,想要识别真正的数据,数据就要有头和尾。
方案一
一开始我使用了原子哥的STM32中UART串口通信实验的代码,但是接收到的数据效果十分不好,经过计算发现经常丢失一个字节,于是我就换了一种思路。
方案二
我在发送的数据的头部加入了两个八位校验码,也就是符号 {
和符号 ,因为如果只有一位,那么符号的ASCII码有可能和数据相同造成干扰,但是两位检验码出错的概率就会变小。当然,也可以找那些在数据范围以外的字符组合作为校验码,这样就会大大减小出错的概率。
注意事项
在实验中还发现OLED显示函数所占用的时间还是很大的,不能放到串口中断中,否则会造成程序的卡死。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值