最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

spruce STM32智能小车测试报告

来源:动视网 责编:小OO 时间:2025-09-24 12:59:07
文档

spruce STM32智能小车测试报告

SpruceSTM32智能小车测试报告SpruceSTM32使用说明:Spruce上搭载了STM32处理器,STM32虽然是Cortex-M3内核的32位ARM,但是一方面可以将它作为ARM来使用,另一方面也可以将它作为arduino来使用,arduino环境下的程序可以直接拿过来使用,但要在与spruce配套的集成开发环境maple-ide下编译之后通过USB转串口线下载到STM32中,只有个别函数用法与之前不一样,例如PWM与之前的arduino环境中使用不一样,只需稍作修改即可Spruc
推荐度:
导读SpruceSTM32智能小车测试报告SpruceSTM32使用说明:Spruce上搭载了STM32处理器,STM32虽然是Cortex-M3内核的32位ARM,但是一方面可以将它作为ARM来使用,另一方面也可以将它作为arduino来使用,arduino环境下的程序可以直接拿过来使用,但要在与spruce配套的集成开发环境maple-ide下编译之后通过USB转串口线下载到STM32中,只有个别函数用法与之前不一样,例如PWM与之前的arduino环境中使用不一样,只需稍作修改即可Spruc
Spruce STM32智能小车测试报告

Spruce STM32使用说明:

Spruce上搭载了STM32处理器,STM32虽然是Cortex-M3内核的32位ARM,但是一方面可以将它作为ARM来使用,另一方面也可以将它作为arduino来使用,arduino环境下的程序可以直接拿过来使用,但要在与spruce配套的集成开发环境maple-ide下编译之后通过USB转串口线下载到STM32中,只有个别函数用法与之前不一样,例如PWM与之前的arduino环境中使用不一样,只需稍作修改即可

Spruce下载方法:用USB转串口线将spruce与电脑连接,先编译,在maple-ide环境中编译,然后点击下载按钮,点击完毕之后将spruce上的RESET建按下,待出现如图1所示界面立即松开RESET,即可将程序下载到STM32中,下载成功后可以看到如图2所示界面,提示重启USB返回正常工作模式,此时拔下USB接头然后再插上,STM32即可恢复正常工作状态,重新上电后一般要等待2秒钟才能恢复正常工作(说明:STM32需要在特定状态下才能通过串口下载程序,所以需要这样操作)

图 1 等待下载状态

图 2 下载成功重启USB

硬件环境:

车体为双轮带减速齿轮的直流马达驱动,配以万向轮,控制器为Spruce STM32控制板,电机驱动板为L298N,驱动2路直流电机,传感器有路径传感器:探测黑色轨迹,路障传感器。电源使用12V电源,赛道为1.5cm的黑色白底的赛道。

软件环境:

maple-ide编译环境

接线说明:

 电机驱动板:

  :2

  :1

  :5

  :6

EA:11

EB:12

蓝线—接左侧GND

紫线—接左侧VCC

灰线—接右侧GND

绿线—接右侧VCC

备注:由于左右侧VCC/GND是与step motor接口接在一起的,故本测试使用的是step motor接口

 路径传感器:

  —15,Q2—16,Q3—17,Q4—18,Q5—19

 路障传感器:

  (接左边传感器)16(接前方传感器)、17(接右边传感器)、

红色:接4.5-5V电源高电平(加个限流电阻更好)

黄色:接单片机,输出TTL电平给单片机(加上拉电阻更好)

黑色:接GND 0V 电源低电平

图3路径传感器

图4 小车模型

图5红外避障传感器

系统工作说明:

 系统功能分为循迹和避障功能

循迹功能:接通电源小车会沿着地上的黑线行驶,小车配有5个路径传感器,当中间的传感器检测到黑线,则小车前进;当中间偏右的传感器检测到黑线,说明小车向右微偏,小车应向左轻微转动;当最右侧的传感器检测到黑线,说明小车向右大偏,小车应向左大幅度转动。具体可通过PWM控制L298N使能端EA、EB来控制小车的速度,通过控制delay()延时来控制小车转动的角度。依此类推小车左侧传感器检测到黑线则刚好相反。(此小车搭载传感器只能寻黑线)

避障功能:小车前方装有三个红外避障传感器,当检测到障碍物,相应的传感器会输出低电平。当前方检测到障碍物,则小车后退点然后默认再右转;右侧检测到障碍物,小车左转;左侧检测到障碍物,小车右转;三个方向都没有障碍物前进;另外当左前后或左右检测到障碍物后退点然后默认再右转;左前方检测到障碍物右转;右前方检测到障碍物左转,总共有八种情况。注意每次转动幅度不要太大,可以使用程序进行多次轻微调整方向,以便使小车能贴着障碍物边缘前进,具体可通过PWM控制L298N使能端EA、EB来控制小车的速度,通过控制delay()延时来控制小车转动的角度。可以通过调整传感器后的电位器来调整检测距离,检测距离不要太远,一般控制在30CM为宜,由此小车可以实现避障的功能,遇到死胡同,小车能贴壁走出来。

测试代码:

------------------------------------------------

避障代码:

------------------------------------------------

unsigned char status=0;

void setup()

{

  pinMode(1,OUTPUT);

  pinMode(2,OUTPUT);

  pinMode(5,OUTPUT);

  pinMode(6,OUTPUT);

  

  

  pinMode(15,INPUT);

  pinMode(16,INPUT);

  pinMode(17,INPUT);

  

  

  pinMode(11, PWM);

  pinMode(12, PWM);

}

void loop()

{

  status = digitalRead(15)+digitalRead(16)*2+digitalRead(17)*4;

  switch (status) 

  {

///////////////////////////////////////////

////////////////////////////////////////

///////////////////////////////////

///////////////////////////////////

 }

void turn_left(void)

{

  digitalWrite(1,LOW);

  digitalWrite(2,HIGH);

  digitalWrite(5,HIGH);

  digitalWrite(6,LOW);

  

  pwmWrite(11,30000);

  pwmWrite(12,30000);

}

void turn_right(void)

{

  digitalWrite(1,HIGH);

  digitalWrite(2,LOW);

  digitalWrite(5,LOW);

  digitalWrite(6,HIGH);

  

  pwmWrite(11,30000);

  pwmWrite(12,30000);

}

void forward(void)

{

  digitalWrite(1,HIGH);

  digitalWrite(2,LOW);

  digitalWrite(5,HIGH);

  digitalWrite(6,LOW);

  

  pwmWrite(11,28000);

  pwmWrite(12,30000);

}

void back(void)

{

  digitalWrite(1,LOW);

  digitalWrite(2,HIGH);

  digitalWrite(5,LOW);

  digitalWrite(6,HIGH);

  

  pwmWrite(11,30000);

  pwmWrite(12,30000);

}

------------------------------------------------

循迹代码:

------------------------------------------------

unsigned char road=0;

void setup()

{

  pinMode(1,OUTPUT);

  pinMode(2,OUTPUT);

  pinMode(4,OUTPUT);

  pinMode(5,OUTPUT);

  

  

  pinMode(11,PWM);

  pinMode(12,PWM);

  pinMode(15, INPUT); 

  pinMode(16, INPUT); 

  pinMode(17, INPUT); 

  pinMode(18, INPUT); 

  pinMode(19, INPUT);

 

  Serial1.begin(9600); 

}

void loop()

{

  Serial1.write("Arduino!\\r\\n");

 ////////////////////////////////////////////

  road = digitalRead(15)+digitalRead(16)*2+digitalRead(17)*4+

  switch (road) 

  {

///////////////////////////////////////////

////////////////////////////////////////

///////////////////////////////////

}

void turn_left(void)

{

  digitalWrite(1,LOW);

  digitalWrite(2,HIGH);

  digitalWrite(4,HIGH);

  digitalWrite(5,LOW);

  

  pwmWrite(11,35000);

  pwmWrite(12,35000);

}

void turn_right(void)

{

  digitalWrite(1,HIGH);

  digitalWrite(2,LOW);

  digitalWrite(4,LOW);

  digitalWrite(5,HIGH);

  

  pwmWrite(11,35000);

  pwmWrite(12,35000);

}

void forward(void)

{

  digitalWrite(1,HIGH);

  digitalWrite(2,LOW);

  digitalWrite(4,HIGH);

  digitalWrite(5,LOW);

  

  pwmWrite(11,35000);

  pwmWrite(12,35000);

}

void back(void)

{

  digitalWrite(1,LOW);

  digitalWrite(2,HIGH);

  digitalWrite(4,LOW);

  digitalWrite(5,HIGH);

  

  pwmWrite(11,17000);

  pwmWrite(12,17000);

}

文档

spruce STM32智能小车测试报告

SpruceSTM32智能小车测试报告SpruceSTM32使用说明:Spruce上搭载了STM32处理器,STM32虽然是Cortex-M3内核的32位ARM,但是一方面可以将它作为ARM来使用,另一方面也可以将它作为arduino来使用,arduino环境下的程序可以直接拿过来使用,但要在与spruce配套的集成开发环境maple-ide下编译之后通过USB转串口线下载到STM32中,只有个别函数用法与之前不一样,例如PWM与之前的arduino环境中使用不一样,只需稍作修改即可Spruc
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top