Matrix - Ultrasonic Ranger
From FriendlyELEC WiKi
Contents
1 Introduction
- The Matrix-Ultrasonic_Ranger is used to measure the distance.
- The module's sensor emits a sound wave, which bounces off a reflective surface and returns to the sensor. Then, using the amount of time it takes for the wave to return to the sensor, the distance to the object can be computed.
2 Features
- 5V Power
- Range: 5 cm - 300 cm,Accuracy: 1 cm
- One wire gpio
- PCB Dimension (mm): 20 x 40
- Pin Description:
Pin | Description |
S | GPIO |
V | Supply Voltage 5V |
G | Ground |
3 Basic Device Operation
- The sensor emits a 40kHz, 6 mm sound wave, which bounces off a reflective surface and returns to the sensor. The receiver converts ultrasound waves to electrical signals in mV.
- The master sends a signal to the module starting to emit a sound wave. After the module receives the returned signal it will will generate a high level indicating the elapsed time and the distance will be calculated by distance = (elapsed time * speed of sound)/2.
4 硬件连接
4.1 连接NanoPi M1
连接说明:
Matrix-Ultrasonic_Ranger | NanoPi M1 |
S | Pin7 |
V | Pin4 |
G | Pin6 |
4.2 连接NanoPi 2
连接说明:
Matrix-Ultrasonic_Ranger | NanoPi 2 |
S | Pin7 |
V | Pin4 |
G | Pin6 |
4.3 连接NanoPi M2 / NanoPi 2 Fire
NanoPi M2和NanoPi 2 Fire的40 Pin引脚定义是一模一样的,所以它们操作Matrix配件的步骤是一样的,这里仅以NanoPi M2为例。
参考下图连接模块:
连接说明:
Matrix-Ultrasonic_Ranger | NanoPi M2 |
S | Pin7 |
V | Pin4 |
G | Pin6 |
4.4 连接NanoPC-T2
参考下图连接模块:
Matrix-Ultrasonic_Ranger_NanoPC-T2
连接说明:
Matrix-Ultrasonic_Ranger | NanoPC-T2 |
S | Pin15 |
V | Pin29 |
G | Pin30 |
5 编译运行测试程序
启动开发板并运行Debian系统,进入系统后克隆Matrix代码仓库:
$ apt-get update && apt-get install git $ git clone https://github.com/friendlyarm/matrix.git
克隆完成后会得到一个名为matrix的目录。
编译并安装Matrix:
$ cd matrix $ make && make install
运行测试程序:
$ matrix-ultrasonic_ranger
注意:此模块并不支持热插拔,启动系统前需要确保硬件连接正确。
运行效果如下:
The distance is 24 cm
将超模波模块的正面对准待测距物体,测距完毕后程序会打印距离值。
6 代码说明
所有的开发板都共用一套Matrix代码,本模块的测试示例代码为matrix-ultrasonic_ranger,内容如下:
int main(int argc, char ** argv) { int distance = -1; int pin = GPIO_PIN(7); int board; if ((board = boardInit()) < 0) { printf("Fail to init board\n"); return -1; } if (board == BOARD_NANOPI_T2) pin = GPIO_PIN(15); system("modprobe "DRIVER_MODULE); if (Hcsr04Init(pin) == -1) { printf("Fail to init hcsr04\n"); goto err; } if (Hcsr04Read(&distance) != -1) { printf("The distance is %3d cm\n", distance); } else { printf("Faid to get distance\n"); } Hcsr04DeInit(); err: system("rmmod "DRIVER_MODULE); return 0; }
API说明参考维基:Matrix API reference manual
7 Resources
8 Update Log
8.1 Feb-23-2016
- Added the description for "NanoPi 2 branch" in Section 4
- Added Section 5: Connect to NanoPi 2