智能小车目前已经能够经过各类方式进行遥控了,不过作到这一步还远远不够,咱们须要智能小车有本身的“思惟”,根据须要进行进退、转向或中止。要作到这一步,必须让智能小车有本身的感知“器官”,第一步咱们先添加测距传感器,之后咱们会陆续研究寻际、摄像头等传感器,让所谓的智能小车,更加“智能”。编程
目前市面上的超声波模块有两种硬件接口,一种是触发和脉冲输出方式,一种是串口通讯(RS232),后一种编写通讯接口程序比较简单,就是简单的串口编程,不过售价比较高。前一种对实时性要求很高,其测量精度和你的程序实现相关。ide
咱们仅介绍前一种通讯方式,模块的工做原理以下:函数
(1)采用IO触发测距,给至少10us的高电平信号;测试
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;ui
(3)有信号返回,经过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.this
测试距离=(高电平时间*声速(340M/S))/2;spa
从超声波模块的工做原理咱们就能够知道,测距和高电平持续的时间相关,咱们只要能准确获取高电平的持续时间,就能够精确得到探测的距离。.net
固然如此高精度,用C#托管代码是没法直接开发的,须要咱们采用C/C++代码开发,而且必须用时钟进行信号采集,而后封装成一个接口供上层托管代码调用。htm
(实际测试发现,该超声波的测量精度仍是蛮高的,是3mm级别的)blog
接线方式以下:
序号 |
超声波模块 |
.NET MF开发板 |
1 |
Echo |
PA0 |
2 |
Trig |
PC4 |
3 |
(GND) |
GND |
4 |
(VCC) |
3.3v |
封装后的托管库以下:
using System;
namespace YFSoft.Hardware
{
public sealed class Ultrasonic
{
public Ultrasonic(byte timer, int pin);
public uint GetValue();
}
}
相关的测试代码以下:
public static void Main()
{
//超声波探头
//Timer2 - 1(必须是1) PA0(必须是PA0) - Echo PC4(能够任选一个空闲Pin脚) - Trig
Ultrasonic ultrasonic = new Ultrasonic(1, (int)GPIO_NAMES.PC4);
uint value = 0;
Graphics.Clear(Color.Black);
while (true)
{
value = ultrasonic.GetValue();
Debug.Print(value.ToString());
// Graphics.SuspendLayout();
Graphics.FillRectangle(100, 100, 50, 20, Color.Black);
Graphics.DrawString(100, 100, value.ToString(), Color.Yellow);
// Graphics.ResumeLayout();
Thread.Sleep(100);
}
}
使用很是简单,经过一个简单的GetValue函数就能够获取超声波模块的测距值了,因此这里就不过多介绍了,若是和智能小车配合使用,其安装后的效果图以下:
和智能小车相配合,而表现出必定智能的代码,咱们在后续的博文中再进行介绍,不过相关这部分的示例源码已经在本文的末尾列出,性急的网友能够先参考一下。
(1)、小车底盘
http://item.taobao.com/item.htm?id=7218838776
(2)、四路直流电机驱动器
http://item.taobao.com/item.htm?id=7218717808
(3)、.NET Micro Framework开发板
http://item.taobao.com/item.htm?id=7117999726
(4)、超声波模块
http://item.taobao.com/item.htm?id=8596342452
注:须要红牛开发板固件在 V1.1.0以上
本文源码:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/UltrasonicTest.rar
本文源码:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/MF_Car_01.rar
本文源码:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/ PC_Control_01.rar
MF快速参考: .NET Micro Framework 快速入门
MF中文讨论组:http://space.cnblogs.com/group/MFSoft/
最近参加了2010中国十大杰出IT博客大赛,请你们投票支持一下,谢谢!