Matrix - Ultrasonic Ranger/zh
From FriendlyELEC WiKi
Contents
1 介绍
- 超声波传感器是利用超声波的特性研制而成的传感器。超声波是一种振动频率高于声波的机械波,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中,它可穿透几十米的深度。
- 超声波传感器是利用超声波的特性研制而成的传感器。超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。主要可以用于测量距离、温度测量、高亮度测量。
2 特性
- 5V供电
- 5cm-300cm,精度1cm
- 单根gpio操作
- PCB尺寸(mm):20x40
3 工作原理
经发射器发射出长约6mm,频率为40KHZ的超声波信号。此信号被物体反射回来由接收头接收,接收头实质上是一种压电效应的换能器。它接收到信号后产生mV级的微弱电压信号。 初始化时将trig和echo端口都置低,首先向给 trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器的时间,这就是超声波在空气中运行的时间,按照 测试距离=(高电平时间*声速(340M/S))/2 就可以算出超声波到障碍物的距离。
4 使用方法
4.1 连接
- GND针脚: 接地
- VCC: 接5V
- S: GPIO PIN1
- 连接到NanoPi
- 连接到TINY4412 SDK 1506
4.2 Linux下的C示例
#include <stdio.h> #include <unistd.h> #include "libfahw.h" int main(int argc, char ** argv) { int distance = -1; int echoPin = TINY4412_GPIO_PIN1; int triggerPin = TINY4412_GPIO_PIN2; if (Hcsr04Init(echoPin, triggerPin) == -1) { printf("Fail to init hcsr04\n"); } if (Hcsr04Read(&distance)==0 && distance != -1) { printf("Get distance: %3d cm\n", distance); } else { printf("Faid to get distance\n"); } Hcsr04DeInit(); return 0; }
4.3 编译并运行示例
git clone http://github.com/friendlyarm/fa-hardware.git cd fa-hardware cd demo cd matrix-ultrasonic_ranger make
将编译生成的hcsr04通过ftp上传到开发板上运行即可测试。