【教程】制作基于Arduino的避障小车

项目简介:

在这个项目中我们使用一个Arduino主控板通过红外接近传感器控制直流电机的速度及方向,来达到让小车自动避让障碍物的效果。

成品图:

 

 

器材:

Arduino主控板x1(推荐UNO,MEGA或Due);

2WD机器人底盘x1;

双H桥直流电机驱动板x1;

红外接近传感器(或超声波传感器)x2-3;

直流电机x2;

电池组x1-2;

面包板x1(可选);

杜邦跳线若干;

 

实施步骤:

我们将这个项目分成几部分来进行:

1.使用Arduino通过直流电机驱动板控制电机转动;

2.使用Arduino从红外接近传感器中读取数据;

3.零件的组装与电路的连接;

4.编写并调试程序;

ok,我们从第一部分开始。

我们需要先了解一下如何使用直流电机驱动板。(以L298为例)。

图片来源:robotbase.taobao.com

在这块驱动板上我们主要使用到的引脚有如下几个:

 

其中,上方红,绿色的引脚分别连接两个电机,下方蓝色VMS和GND引脚风别接电池组的正、负极。下方EA,EB分别为两个电机的使能引脚,输入高电平或模拟值使电机运转。I2,I1及I4,I3分别控制电机A、B的转动方向。(比如I1接低电平I2接高电平使电机顺时针转;I1接高电平I2接低电平使电机逆时针转)。

下面我们按照下图连接电路,

将以下代码输入Arduino IDE:

int pinI1=2;//定义I1
int pinI2=4;//定义I2
int speedpin=3;//定义EA
void setup()
{

//将以上引脚设为输出
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpin,OUTPUT);
}
void loop()
{ //使电机以全速的39%顺时针运转2秒
digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
analogWrite(speedpin,100);//这个值用于PWM调速,介于1-255之间
delay(2000);//延时2000毫秒

  //逆时针运转2秒

digitalWrite(pinI1,HIGH);

digitalWrite(pinI2,LOW);

analogWrite(speedpin,100);

delay(2000);

}

如果没有发生错误,电机将会顺时针转动两秒,然后逆时针转动两秒,然后循环。

 

我们已经知道了如何通过电机驱动板来控制电机旋转,然后我们需要使用红外接近传感器来判断障碍物。

我使用的是如图的传感器,

引脚定义为:

红色–5v电源;

绿色–接地;

黄色–输出,无障碍物时输出高电平,有障碍物时输出低电平;

 

下面我们来进行测试

保留上面的电路,然后将红色线接入5v(vin或5v)输出,绿色线接GND引脚,黄色线接11引脚。

输入以下代码:

int inpin=11;
int pinI1=2;
int pinI2=4;
int speedpin=3;

void setup(){
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpin,OUTPUT);
pinMode (inpin,INPUT);
}
void loop(){
int in=digitalRead (inpin);
if (in==LOW){

digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
analogWrite(speedpin,100);
}

}

将红外探头挡住,此时电机会顺时针方向运转。

 

了解了元件的使用方法之后,我们现在开始组装小车。

这是我使用的小车底盘:

图片来源:swbee.taobao.com/

小车的组装并不复杂,按照说明书即可。

然后按照下图连接Arduino及各元件。

将下面的代码输入IDE:

 

 

//motorpin
int pinI1=2;
int pinI2=4;
int speedpinr=3;
int pinI3=7;
int pinI4=8;
int speedpinl=5;
//senorpin
int inl=11;
int inr=12;
//int inm=9;

long ti=0;
long s=0;

void setup()
{
//motorpin
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedpinl,OUTPUT);
pinMode(speedpinr,OUTPUT);
//senorpin
pinMode(inl,INPUT);
//pinMode(inm,INPUT);
pinMode(inr,INPUT);
//sensor5vin
pinMode(6,OUTPUT);

digitalWrite(6,HIGH);
pinMode(A5,OUTPUT);
digitalWrite(A5,HIGH);
Serial.begin(9600);
Serial.flush();

}
void loop()
{
s=s+1;
if (s>=120){
s=0;
}
Serial.print(“=”);
Serial.print(s);
Serial.print(“[“);
Serial.print(ti);
Serial.print(“]”);
//sensorM
int l=digitalRead(inl);
int r=digitalRead(inr);

// Serial.print(l);
// Serial.print(r);
if (l==HIGH && r==HIGH){

forward();
delay(100);

}

l=digitalRead(inl);
r=digitalRead(inr);

// Serial.print(l);
// Serial.print(r);
if (l==LOW && r==LOW){
if (s<120 && ti>=3){
leftx();
}
else{
reverse();
}
delay(100);

}

l=digitalRead(inl);
r=digitalRead(inr);

if (l==LOW && r==HIGH){

right();
delay(100);
}

l=digitalRead(inl);
r=digitalRead(inr);

if (l==HIGH && r==LOW){

left();
delay(100);
}

}

void forward(){
digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI4,HIGH);
analogWrite(speedpinl,130);
analogWrite(speedpinr,100);

//delay(1000);
}

void right(){
digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI4,HIGH);
analogWrite(speedpinl,140);
analogWrite(speedpinr,55);
}

void left(){
digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI4,HIGH);
analogWrite(speedpinl,55);
analogWrite(speedpinr,135);
}

void reverse(){
digitalWrite(pinI1,HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI4,LOW);
analogWrite(speedpinl,95);
analogWrite(speedpinr,75);
ti=ti+1;
delay (1500);
}

void leftx(){
digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI4,LOW);
analogWrite(speedpinl,85);
analogWrite(speedpinr,85);
ti=0;
s=0;
delay(2000);
}

然后小车即可运行,并且自动避开障碍物。

后记:

1.虽然这个代码可以正常运行,但是效率并不高;

2.由于条件所限我只使用了2个传感器,只能够满足基本的要求,如果要实现更好的效果,请使用至少3个传感器;

3.红外传感器只能探测前方有无障碍存在,并且探测距离不定,如果有条件可以使用可以精确测距的超声波传感器;

4.小车出现2个轮子不一样快是正常的,请调节EA/EB引脚的模拟值来调节速度;

5.在上面的代码中我使用了串口通信对程序进行调试(Serial打头的语句),在对arduino编程的时候用好串口调试会有很大帮助;

6.在上面的代码中我加入了一种异常处理,可以实现在一段时间(大约10秒)内连续3次触发reverse()函数,小车将会180度掉头并向前行驶,机器人在运行过程中会遇到各种异常情况,所以在代码中一定要考虑到异常情况的处理;

IOS 7 beta版本放出 对比ios6一些个人看法与测评

6月10日北京时间两点左右,Tim Cook在wwcd2013上发布了ios7。ios7无疑是倍受期待的,因为ios7将进行发布以来最大的改变。

ios7不再继承拟物化,反而采用了如同windows phone一样的扁平化设计,虽然并不像以前网上所传的那样取消了圆角。在发布会开始前,本人就已经在微博上看见了与实际一样的ios7流出图。在之前的几个月中,各种ios7的概念设计都在各大网站出现,但是实际的ios7毕竟还和本人或者说大家的想象有些出入。不管是失望,还是满意,这样的改动毕竟已成定局,大家都在说库克将苹果毁了,但是如果乔布斯还活着的话,谁都不会知道会是怎样的发展,与其抱怨,不如去适应,来发现ios7中蕴藏着的惊喜。

刷机的过程很容易,我的手机是wcamd  iphone5,6.1.3系统(未jb)网上的ios7的固件有适应全部(除了美国加拿大那几个)运营商的版本,具体可以从ios7贴吧或者weiphone论坛寻找相关帖子了解。

首先,滑解的滑块去掉了,直接从左向右滑动屏幕便可解锁。

ios7的扁平化图标,个人觉得dock很难看。

 

大多数按钮都由放改为圆。ios6的拨号界面

在后台中显示的ios7拨号界面(没截好图> <

其次是后台的变化,改变成了卡片式切换,类似于webos(吔我传票啦!)(类似于这种后台卡片式切换的ios6插件也是有的 包括auxo等神级插件,我估计可能是参考的这个插件),并且貌似支持了真后台?我也不是很清楚。

同样改变很大的通知中心,终于放弃了那种材质了吗。。。

 

ios6的 ios7中通知中心天气取消了。

新增加的控制中心,不过小开关没有蜂窝网和定位的实在是太。。。

spotlight改成了从屏幕竖直滑动唤出,比以前单占个页面要美观和方便了

没错输入法的配色也改变了,不过在一些软件中还是ios6的配色 毕竟不是正式版。

新的短信界面

相机变化很大 支持拍照(普通尺寸与方形) 摄像 全景拍照几种拍摄方式,通过左右滑动切换,并且支持滤镜

改变后的相册,其中有全景相册,所有的长图都跑到那里面去了。。。。支持的图片最大清晰度也增加了,很多长图可以保存到相册里慢慢看了。(ios6有插件可以实现。)

 

其他自带软件的界面都有了很大的改变 ,先是音乐

配色比以前gay了不少。。。

天气 我怎么觉得还是以前的黑配紫好看。

代办事项变成了卡片式设计,有点像ios版本的eventnote

Game Center 。

以前的计算器多好看啊。。。这玩意win8既视感太强

其他的变化还有很多,比如唤醒的时候动画效果更柔和,应用弹出效果更为多样性。

iradio仅支持美国用户别指望了。

最为令我想弄死库克的一点就是软件更新,家里网速差,一下子三十五个应用全部更新 关都关不了。这就是个鸡肋。。。如果你恨一个人,请为他的手机升级ios7,偷偷把他的更新方式设置为蜂窝网可用。

 

然后我说点闲话,来看ios7的改变的到此没有了。

对于ios7我期待了很久。第一点,我不是一个彻底的果粉,所以说我对苹果的原来的设计没有太多的感情,向来都是怎么爽怎么弄的。我拿到的第一个智能电子设备是itouch4,那个年代这还是个很新鲜的玩意,我也是鼓捣了很一段时间的越狱插件什么的,但是因为自己不懂点了一下恢复,所有的东西全没了。从此再也没有鼓捣过,只是用它打个游戏上个网。我家一直都不是很想让我用智能手机,所以我的第一个智能手机也是上高中之后才有的 ,也就是我现在在用的iPhone5。可能是因为那个itouch已经让我对苹果的系统玩腻了导致我对苹果的东西挺无感,一直以来都想用安卓的手机。再后来我的手机越狱了,改了改版面,总之来讲就是改到乔布斯得气哭了的程度,之后被某人还原,刷6.1.3,不越狱后很多东西都无法实现,所以对ios7的期待也是理所当然的,抱着一种无论看到怎样的ios7只要比ios6功能要多能越狱就好的心态迎来了ios7后,对不起,我收回那句话。

这是ios吗,我打开方式不对啊。

 

这可能会是一个易用的系统,但已经(或者说暂时)不是一个易用的ios了。我没有用过除了ios之外的系统(哦用过wm)不好与其他的对比,但是我也觉得这已经不算是ios了,心中毕竟是有一种希望自己在用的系统好的心态,但是被改成这样的ios对我来说怎么看怎么别扭。但是还是接受了它,因为它毕竟比起ios6所增加了更多我所期待的功能。

我看微博上有喷的有黑的,目测大多都是安卓党,其次是没越狱过的(就算越狱了也只是装游戏的包括在里面),一个是不知道ios6多难用一个是不觉得ios6难用。包括说ios7丑的,哈哈说得和ios6多漂亮似的。我从客观的角度觉得,苹果现在发展到了一个低谷期,前(?)有安卓后有wp,不得不改变自己了,最初的ios7就算不成功,也不能将其一棒子打死,毕竟这是ios新的探索,我们应当会其抱有支持,在恨其不争的同时也要对其的改变给予肯定,人无完人 ,系统也没有完美的系统,这是苹果所经的一个必经的发展,既然苹果已经迈出了这一步,期待它越来越好,再创辉煌。

不过苹果能先把胡吹的这点改了吗,比如果著名水表lyh他学苹果什么都没学会就学会自卖自夸了。。。

by deover

【教程】教你如何在Android设备上体验Google Glass.

你想体验在你的Android设备上使用谷歌眼镜OS的感觉吗?来阅读这篇文章,你一定会感兴趣的。

 

无论你怎样看待谷歌眼镜,但是你不得不承认你很好奇它是如何工作的?它的界面是什么样子?用户如何在不同应用,不同页面之间切换?感谢谷歌眼镜开发者Google+上的这篇日志【链接】,我找到了一种让用户在他们的Android设备上运行谷歌眼镜所能够实现的功能。

看来某些开发者获得了Glass OS的系统转储(system dump),然后将系统中的关键部分打包成一个.apk文件。在安装了3个apk文件之后,你会发现你的设备中发现一个名为Glass Home的新的启动器(launcher)。

当你运行Glass Home后,你会看到和谷歌眼镜用户所看到的一模一样的界面,你甚至可以给出“OK,Glass”的语音命令来唤醒Glass应用并使用语音控制命令。

在我的测试中,我可以Google搜索一些随意的东西,包括图片和羊驼(←_←原文里就是这么写的..)。有的可以以图片的形式显示出来,或者用TTS语音读出来(对于没有图片结果的查询)。我也可以拍照,但是在拍完照片以后我无法对照片做任何事情(注:应该是指无法分享或者后期处理之类的)。不幸的是我也无法使用导航,因为这个功能需要触控板(注:指谷歌眼镜机身右侧的长方形触控板)来跳过警告界面。我也无法拨打电话,因为我没有官方的谷歌眼镜帐号来添加联系人。

当然,在从第三方开发者那里安装apk软件时你必须保持注意并且明白一些不好的事情可能发生在你的设备上,或者你的设备中存储的信息上。所以请谨慎下载和执行。

进入Xenologer的GitHub页面【链接:https://github.com/zhuowei/Xenologer】来了解在开发过程中对apk文件进行了哪些修改。如果你决定尝试的话,你也可以从这个页面中下载apk安装包。

重复一遍,(这些软件所提供的功能)是极其有限的,但是它给予你一些关于谷歌眼镜是什么样子以及如何工作的基本的概念,只是没有像谷歌眼镜那样令你看起来像一个怪人的外观。除非你决定要把你的手机绑在头上。(好主意..)

我在Nexus 4 上进行了测试,我的同事Ed Rhee也证实它在Note II上运行正常。你的结果可能会有所不同,但是如果你进行了尝试,请留下评论让我们知道你所使用的设备型号,以及你的总体想法。

如果你想要卸载,在应用管理器中直接卸载即可。

 

 

 

 

【水】极客小测试

以下的20条标准,符合6-9条为“初级geek”;符合10-13为“中级”极客;如果超过14条都属于“真实写照”,那么恭喜你,“超级geek”非你莫属!
1.理性思维占主导,一切以数据、证据、逻辑说话,不喜欢煽情。
2.主要花费都是用于购买电子产品,并能最大限度地使用其功能。
3.人醒则电脑开机,人睡也未必关机。
4.朋友组装电脑、购买手机或对电子产品有问题时都会求助于你。
5.从没为理科考试是否挂科而担心过。
6.可以修好任何东西。
7.不屑于看说明书。
8.对多数男人热衷的足球、篮球等运动兴趣不大。
9.一个人永远不会去旅行。
10.不太能理解双关语、俏皮话和弦外之音,但可以在无意中制造冷笑话。
11.喜欢的“影星”是个虚拟人物。
12.总能讲出一大篇“道理”为自己的怪癖辩护。
13.22岁后才开始初恋。
14.在一次Party上发生言语交流的人数不超过5个。
15.宅在家里就能三天以上不换衣不洗澡。
16.两年或更久时间没换过发型。
17.不会或仅仅知道一种打领带的方法。
18.几乎不穿西装,有牛仔和T恤就够了。
19.希望能设计一款外形探测软件,来应对女友“看看我今天有什么不同”等问题。
20.对于现实生活的关注远远少于虚拟世界。

自制电磁炮材料清单

 

1——漆包铜1mm,2两以上
2——管(想做多大的就多大)
3——502强力胶
4——12V电瓶
5——电线数米
6——胶布
7——空气开关(我用的是2个的和一个的 ps:有钱的可以用可控硅)
8——万能表
9——电容63V 10000uf(我用了两个!有钱的可以用20个以上)
11——高压包磁芯一个
12——PVC水管(两种,要可以套如高压包磁芯的
13——uf4007二极管4个
【来源:geekfans.com】