2019电子竞赛准备和比赛过程记录

比赛时间:2019.8.7-2019.8.10

7月31日

(没有时间仔细写笔记,只做简单记录,仅供自己比赛使用)

复习PID算法

五月份的时候练习2017年国赛滚球系统已经了解过PID算法,但是并不熟练,比赛前还是有必要再进一步熟悉PID算法的。
滚球经验总结

摄像头openmv

17年国赛控制题滚球系统用到了摄像头的图像处理,老师预测19年还会用到图像处理,因此我们选择了openmv。跟ov系列摄像头比起来,openmv实在是太好用了,不用再拘泥于C,可以使用python。上面滚球经验总结里面也有写openmv跟stm32f407战舰版通信方法。
openmv主要就是在官网学习的。

接线方式:
openmv——407核心板
P4————RX(PA10_USART1)
P5————TX(PA9_USART1)
GND———GND

在这里插入图片描述

MPU6050六轴传感器

MPU6050 采用 IIC 与 STM32F4 通信。
姿态数据,也就是欧拉角——航向角(yaw)、横滚角(roll)、俯仰角(pitch)。
MPU6050 自带了数字运动处理器,即 DMP。
检测轴及方向:
在这里插入图片描述
MPU6050 与探索者 STM32F4 开发板的连接:
在这里插入图片描述

8月1日

今天台风登陆小岛~一直到上午十点多才来电,中午出了器材清单,开始猜题。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

8月2日

今天一天就是看网上各种猜题,淘宝找做控制类的器材,报给学校一份,自己买了一份备用(主要因为学校买的各种不靠谱)。

8月3日

SD卡的使用

openmv——SD卡

先插SD卡再上电
SD卡的文件系统会自动取代内置的Flash文件系统
openmv使用SD卡的情况:

  1. 代码行数太多
  2. 存储图片
  3. 录制视频

stm32——SD卡

只运行了stm32自带的例程,并不懂SD卡怎么用。。。

通信

通信很重要,当初做滚球,openmv和stm32通信传输小球坐标时费了很大劲,通信还是要好好看看。

蓝牙模块

HC-05 参考博客
主要想实现的功能是手机蓝牙控制STM32——
手机通过蓝牙传输到HC-05上,再通过串口通信和STM32通信。
我们组在网上买了一个组装好的小车,手机APP通过蓝牙HC06控制,蓝牙名称BT04,密码1234。
测试APP:蓝牙模块通过stlink连接电脑,用串口调试助手观察按下APP的按键时接收的信息。
蓝牙串口APP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "stm32f10x.h"

void My_USART1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStrue;
USART_InitTypeDef USART_InitStrue;
NVIC_InitTypeDef NVIC_InitStrue;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIO端口使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//串口端口使能

GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitStrue);

GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitStrue);

USART_InitStrue.USART_BaudRate=115200;
USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_InitStrue.USART_Parity=USART_Parity_No;
USART_InitStrue.USART_StopBits=USART_StopBits_1;
USART_InitStrue.USART_WordLength=USART_WordLength_8b;

USART_Init(USART1,&USART_InitStrue);

USART_Cmd(USART1,ENABLE);//使能串口1

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开启接收中断

NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStrue);

}

void USART1_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
res= USART_ReceiveData(USART1);
USART_SendData(USART1,res);
}
}

int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
My_USART1_Init();
while(1);

}

WiFi模块ESP8266

VCC连接正极(有些是3.3V,有些是5V)
GND连接负极
RXD:数据的接收端 (连接单片机或者USB转TTL模块的TXD)
TXD:数据的发送端 (连接单片机或者USB转TTL模块的RXD)

参考博客

NRF24L01无线模块

NRF24L01是SPI 通信接口。
主要想实现的功能是——两个开发板通信,如果做图像处理,有时候一块开发板不够用,就需要两块开发板。
开发板上 NRF24L01 模块接口和 STM32F4的连接:
在这里插入图片描述

8月4日

学校负责老师突然让学生自己买器材,离比赛只剩两天半时间,服气。

云台

在网上买了几个二维云台,用2个舵机控制。

比赛

A题无线充电小车是去年省赛的题目,没想到会连续出两年,完全没准备,放弃。
B题是巡线四旋翼,难,放弃。
F题纸张计数,学校仪器设备不够,放弃。
最后选了H题,电磁炮,正好用到了之前做滚球时的舵机和openmv。
由于H题只要能成功发射电磁炮就能得十分,所以选这个人的题特别特别多,测评结束后我们学校获奖的六个组其中五个组是做电磁炮。
只捡几个点写一下吧,毕竟最后只拿了省二~结果不尽人意,大神太多

  1. 电磁炮的炮管放在二维云台上控制电磁炮水平垂直运动,通过控制继电器高低电平控制充电时间,通过控制舵机旋转控制炮管角度,进而控制炮弹发射距离和方向。
  2. 按键模块使用的是手机APP,通过蓝牙模块HC-05向开发板(stm32F407核心板)传输发射距离和角度。
  3. 发挥部分的自动寻靶和测距用的是openmv,这些都能在openmv官网找到代码,openmv找到靶子并且测得距离后通过串口发送给开发板,继而控制舵机,然后发射炮弹。
---------------------------- 本 文 结 束 感 谢 阅 读 ----------------------------
欢迎打赏~
0%