电子设计大赛-板球系统

这是我参加电赛的作品,与李庆生、陈勃翰组队,他们俩负责材料采购、机械设计、平台搭建等,我负责代码部分的编写,最终获得北京市二等奖。

题目是板球系统设计,板球系统即为:在一个正方形板上放置一个小球,控制板的倾斜来使小球在不落下的前提下做规定动作。

要想控制小球,首先要获取小球的实时位置,这里最简单的方法就是DCMI摄像头。但是我们电赛前并没有准备摄像头。。。看着其他组直接拿出早已买好的鹰眼摄像头我们有点慌了,但是比赛只有3天,不能拖了。最后我当机立断,放弃直接用STM32+DCMI摄像头的方式,改为用树莓派+USB摄像头,于是乎把我在宿舍墙上挂了半年的树莓派卸了下来。。。再去超市买了个USB摄像头。这时又出现一个问题,既然都用树莓派了,那还要不要STM32?从功能上讲,树莓派足以胜任一切,时间和技术上也没问题,但是从比赛规则和传统来说,电赛这种比赛好像一般都是用51、AVR、STM32这种单片机的吧,这时候你突然用一个装着LINUX操作系统的东西,就感觉有点犯规。。。所以为了求稳不被判犯规,我们保留了STM32作为主控制器,树莓派就只作为图像处理部分,树莓派和STM32之间用串口通讯。

于是我们的最终方案设计为树莓派+STM32:

  • 板子选择较轻的纸板,涂上白色颜料,小球涂上黑色颜料,对比强烈一些好让程序分辨。
  • 树莓派中,使用OPENCV将USB摄像头获取的图像转化为灰度图,并经由高斯滤波、霍夫圆等处理获取图像中出现的圆形,再根据位置和大小的限定条件进行筛选,确定小球的位置,通过串口发送至STM32。
  • 用STM32完成整个系统的控制,采用双环PID算法,内环为角度环,控制板子的倾斜角,外环为位置环,控制小球在纸板上的位置。
  • 机械结构采用分别在X、Y轴的两个直流电机,加上橡皮绳(陈勃翰同学搞到的,我也不知道该叫什么)制作的,由陈勃翰设计。
  • 采用12864屏幕显示一些系统信息,比如第几动作、小球坐标等。

github:https://github.com/plutojia/Ball-Plate-System

因为当时走的比较着急,都没来得及拍视频和照片。。到了把系统拆了一半的时候才想起来拍几张照片留个纪念。以下是一些遗迹照片:

电子设计大赛-板球系统_第1张图片电子设计大赛-板球系统_第2张图片

 电子设计大赛-板球系统_第3张图片

你可能感兴趣的:(stm32,stm32,单片机)