查看: 25008|回复: 17

Openjumper避障小车教程

[复制链接]

该用户从未签到

发表于 2013-8-21 15:56 | 显示全部楼层 |阅读模式
本帖最后由 money0010 于 2013-8-21 16:16 编辑

                                                   Openjumper避障小车
一.  概述
                  简介

31.jpg
在完成寻线小车的制作后,使用红外避障传感器改装小车就变得十分简单了。
         基本原理
控制流程:小车的红外传感器检测到障碍物后发送给控制器,控制器判断应该如何行走,再通过电机驱动控制电机转速来改变小车的行驶方向。
32.jpg
二.需要的材料
1.      车体:Openjumper小车车体套件×1
2.      控制器:Arduino uno×1
3.      电机驱动:openjumperL298电机驱动板×1
4.      扩展板:UNO配套的传感器扩展板×1
5.      传感器模块:红外避障传感器×3
6.      尼龙柱,螺丝螺帽,杜邦线,传感器3p杜邦线若干。
三.硬件的组装试调
1.车体组装和板卡安装
详见小车车体组装教程和循迹小车组装教程。
2.安装传感器
避障传感器的安装比较简单,可以像循迹传感器一样装在下层,也可以装在上层。
先将5mm长的短尼龙柱用螺丝固定在传感器上,再将尼龙柱有螺纹的一段穿过车体板上的孔后用螺母固定即可。
33.jpg
四.规格
  
控制器
  
Arduino uno
电机驱动
L298
驱动部分工作电流
2A
驱动部分输入电压
4.8~25V
逻辑部分输入电压
5V
长*宽*高
200mm*180mm*110mm
重量
520g
电机型号
130
电机电压
3-6v
转速
125转/分
减速比
Jan-48
最大行驶速度
47.7米/分
电机空载电流
110ma
电机堵转电流
150ma
车轮直径
65mm
底盘离地面高度
20-22mm
传感器探测距离
3~30cm(不同物体反射率不定)

五.引脚定义
  
IO
  
类型
作用
描述
D4
数字输出
电机A正反转控制端
1为正转0为反转
D5
PWM输出
电机A调速端
电机速度0-255
D6
PWM输出
电机B调速端
电机速度0-255
D7
数字输出
电机B正反转控制端
1为正转0为反转
D11
数字输出
左传感器
检测到障碍物为0未检测到为1
D12
数字输出
中间传感器
检测到障碍物为0未检测到为1
D13
数字输出
右传感器
检测到障碍物为0未检测到为1

六.示例代码

kittenblock中小学创客名师推荐的图形化编程软件

int SNUM[3] ;//定义3个传感器,从SNUM[0]-SNUM[2]为从左到右3个红外避障传感器
int INA = 4; //电机A正反转控制端
int PWMA = 5; //电机A调速端
int INB = 7; //电机B正反转控制端
int PWMB = 6; //电机B调速端
 
void motospd(int sp1,int sp2) //电机速度控制函数。括号内分别为左右电机速度值,
{                        //范围-255~+255,正值为正转,负值为反转。
  if(sp1>0)
    digitalWrite(INA, HIGH);   
  else
     digitalWrite(INA, LOW);
  if(sp2>0)
     digitalWrite(INB, HIGH);
  else
     digitalWrite(INB, LOW);
  analogWrite(PWMA,abs (sp1));
  analogWrite(PWMB,abs (sp2));
}
void setup(){
 
pinMode(11, INPUT); //配置左传感器IO口为输入
pinMode(12, INPUT); //配置中传感器IO口为输入
pinMode(13, INPUT); //配置右传感器IO口为输入
Serial.begin(9600); //打开串口,初始化
pinMode(INA,OUTPUT);
pinMode(INB,OUTPUT);   //配置电机驱动IO口为输出
 
}
void loop(){
 
SNUM[0] = digitalRead(11);//左传感器赋值
 SNUM[1] = digitalRead(12); //中传感器赋值
 SNUM[2] = digitalRead(13); //右传感器赋值
 for (int i=0;i<3;i++)
 {
   Serial.print(SNUM);//串口输出每个传感器的值,打开串口可显示传感器检测结果
  }                 
   Serial.println(SNUM[2]);
  if ((SNUM[0]==1)&&(SNUM[1]==1)&&(SNUM[2]==1))//所有传感器都没有检测到障碍
motospd(100,100);                          //直行
  if ((SNUM[0]==0)&&(SNUM[1]==1)&&(SNUM[2]==1)) //左传感器检测到障碍物
    motospd(100,50);                           //右转
    if ((SNUM[0]==1)&&(SNUM[1]==1)&&(SNUM[2]==0)) //右传感器检测到障碍物
    motospd(50,100);                             //左转
    if ((SNUM[0]==1)&&(SNUM[1]==0)&&(SNUM[2]==1)) //中传感器检测到障碍物
    motospd(-100,-100);                           //后退
delay(50);
}

七.改进思路
本例程中的避障小车利用三个红外传感器实现了简单的避障功能。下面也给大家一些改进加强的提示,给喜欢自己摸索和DIY的朋友们一些方向。
1.      增减传感器数量:3个传感器最多只能检测前-左-右三个方向的障碍物,增加多个传感器并改进控制程序可以让小车变得更加智能。
2.      使用超声波传感器:超声波传感器可以通过返回的超声波信号计算出前方障碍物的具体距离,其范围为2-450cm。超声波传感器配合舵机加装在小车上,效果比红外传感器好很多哦。

该用户从未签到

发表于 2014-2-16 21:37 | 显示全部楼层
你好,请问你所用的红外避障传感器跟下图这种有区别么

该用户从未签到

发表于 2014-2-18 20:30 | 显示全部楼层
纸鸢 发表于 2014-2-16 21:37
你好,请问你所用的红外避障传感器跟下图这种有区别么

区别是楼主所用的红外避障传感器比你的便宜,你用的稍微贵一点。功能上没区别。性能上你的更好。

该用户从未签到

发表于 2014-2-18 20:53 | 显示全部楼层
zzp 发表于 2014-2-18 20:30
区别是楼主所用的红外避障传感器比你的便宜,你用的稍微贵一点。功能上没区别。性能上你的更好。 ...

谢谢无处不在的师父

该用户从未签到

发表于 2014-2-18 21:21 | 显示全部楼层
你好楼主,请问这一套东西多少钱啊

该用户从未签到

发表于 2014-2-18 21:40 | 显示全部楼层
纸鸢 发表于 2014-2-18 20:53
谢谢无处不在的师父

哈哈,一起学习学习嘛1

该用户从未签到

 楼主| 发表于 2014-2-18 21:41 | 显示全部楼层
高价位 发表于 2014-2-18 21:21
你好楼主,请问这一套东西多少钱啊

你可以在淘宝上搜索OPENJUMPER小车

该用户从未签到

发表于 2014-2-24 22:27 | 显示全部楼层
这个程序更改可以控制步进电机吗?

该用户从未签到

发表于 2014-9-18 03:44 | 显示全部楼层
我正在用超声波组装壁障小车,但判断《20cm小车停止并转向怎么编程啊?望赐教!
  • TA的每日心情
    郁闷
    2015-3-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-3-14 14:55 | 显示全部楼层
    这个传感器和你那个一样吗?
    TB16zKKGVXXXXaOXpXXXXXXXXXX_!!0-item_pic.jpg
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    新手求教:用模拟口读取可调电阻的值
    新手求教:用模拟口读取可
    我想问的有以下两个问题: 1.如图,模拟口读取的是可调电阻至VCC一侧的模拟值,还是可
    【Arduino】108种传感器系列实验(37)---MQ-3酒精传感器模块
    【Arduino】108种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    AI分拣系统
    AI分拣系统
    人工智能分拣系统 应用简介 在日常生活中,人们经常需要对物体进行分类,”材料分类
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表