【STM32 .Net MF开发板学习-22】超声波测距模块研究

简介: 智能小车目前已经可以通过各种方式进行遥控了,不过做到这一步还远远不够,我们需要智能小车有自己的“思维”,根据需要进行进退、转向或停止。要做到这一步,必须让智能小车有自己的感知“器官”,第一步我们先添加测距传感器,以后我们会陆续研究寻际、摄像头等传感器,让所谓的智能小车,更加“智能”。

智能小车目前已经可以通过各种方式进行遥控了,不过做到这一步还远远不够,我们需要智能小车有自己的“思维”,根据需要进行进退、转向或停止。要做到这一步,必须让智能小车有自己的感知“器官”,第一步我们先添加测距传感器,以后我们会陆续研究寻际、摄像头等传感器,让所谓的智能小车,更加“智能”。

目前市面上的超声波模块有两种硬件接口,一种是触发和脉冲输出方式,一种是串口通信(RS232),后一种编写通信接口程序比较简单,就是简单的串口编程,不过售价比较高。前一种对实时性要求很高,其测量精度和你的程序实现相关。

我们仅介绍前一种通信方式,模块的工作原理如下:

(1)采用IO触发测距,给至少10us的高电平信号;

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;

(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.

测试距离=(高电平时间*声速(340M/S))/2;

从超声波模块的工作原理我们就可以知道,测距和高电平持续的时间相关,我们只要能准确获取高电平的持续时间,就可以精确获得探测的距离。

当然如此高精度,用C#托管代码是无法直接开发的,需要我们采用C/C++代码开发,并且必须用时钟进行信号采集,然后封装成一个接口供上层托管代码调用。

image.png
 

(实际测试发现,该超声波的测量精度还是蛮高的,是3mm级别的)

接线方式如下:
1.png
封装后的托管库如下:

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函数就可以获取超声波模块的测距值了,所以这里就不过多介绍了,如果和智能小车配合使用,其安装后的效果图如下:
image.png

  

和智能小车相配合,而表现出一定智能的代码,我们在后续的博文中再进行介绍,不过相关这部分的示例源码已经在本文的末尾列出,性急的网友可以先参考一下。

 

(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/

相关文章
|
5月前
|
数据采集 编解码 算法
STM32采集正弦幅值的研究与实践
STM32采集正弦幅值的研究与实践
571 0
|
5月前
|
开发框架 .NET 中间件
C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
163 8
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
这篇文章是关于计算机组成原理的王道考研学习笔记,主要介绍了半导体存储器RAM和ROM的相关知识。
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【文献学习】Phase-Aware Speech Enhancement with Deep Complex U-Net
文章介绍了Deep Complex U-Net模型,用于复数值的语音增强,提出了新的极坐标掩码方法和wSDR损失函数,并通过多种评估指标验证了其性能。
36 1
|
2月前
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
|
2月前
|
开发框架 .NET API
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
|
4月前
|
开发框架 JSON .NET
学习ASP.NET 中的 默认应用程序配置源
默认主机配置源 使用命令行配置提供程序的命令行参数
32 2
|
4月前
|
前端开发 Java C#
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库
|
4月前
|
机器学习/深度学习 JSON 测试技术
CNN依旧能战:nnU-Net团队新研究揭示医学图像分割的验证误区,设定先进的验证标准与基线模型
在3D医学图像分割领域,尽管出现了多种新架构和方法,但大多未能超越2018年nnU-Net基准。研究发现,许多新方法的优越性未经严格验证,揭示了验证方法的不严谨性。作者通过系统基准测试评估了CNN、Transformer和Mamba等方法,强调了配置和硬件资源的重要性,并更新了nnU-Net基线以适应不同条件。论文呼吁加强科学验证,以确保真实性能提升。通过nnU-Net的变体和新方法的比较,显示经典CNN方法在某些情况下仍优于理论上的先进方法。研究提供了新的标准化基线模型,以促进更严谨的性能评估。
122 0
|
5月前
|
传感器 安全 物联网
STM32方向研究报告
STM32方向研究报告
128 0