clebert/r-pi-usonic

View on GitHub
README.md

Summary

Maintainability
Test Coverage
**THIS PROJECT IS NO LONGER MAINTAINED by clebert.**

# r-pi-usonic

> [Deprecated] A high performance, memory mapped, Node.js API for the HC-SR04 ultrasonic sensor connected to a Raspberry Pi.

## Getting Started

### Installation

```sh
npm install r-pi-usonic --save
```

### Integration

```javascript
var usonic = require('r-pi-usonic');
```

## API

### usonic.init(callback)

Creates the memory mapping with a device-specific memory offset.

**You must call this function only once and before any other function.**

```javascript
usonic.init(function (error) {
    if (error) {
        ...
    } else {
        ...
    }
});
```

### usonic.createSensor(echoPin, triggerPin, [timeout])

Creates a new ultrasonic sensor function and returns it.
The measurement timeout has a default value of 750 µs.

```javascript
var sensor = usonic.createSensor(24, 23, 450);
```

### sensor()

Returns the distance in cm if no measurement timeout occurs, and -1 otherwise.

```javascript
var distance = sensor();
```

## Example

This example needs access to the physical memory, so it must run as root.

```sh
sudo node examples/surveyor.js
```

![Example: hcsr04.png](https://raw.githubusercontent.com/clebert/r-pi-usonic/master/resources/hcsr04.png)

## Raspberry Pi GPIO Pin Layout

### Raspberry Pi Model A/B (Rev 1.0)

| Assignment         | Pin | Pin | Assignment         |
| :----------------- | :-- | :-- | :----------------- |
| 3.3V               | 1   | 2   | 5V                 |
| GPIO 0 (SDA0)      | 3   | 4   | 5V                 |
| GPIO 1 (SCL0)      | 5   | 6   | GROUND             |
| GPIO 4             | 7   | 8   | GPIO 14 (TXD0)     |
| GROUND             | 9   | 10  | GPIO 15 (RXD0)     |
| GPIO 17            | 11  | 12  | GPIO 18            |
| GPIO 21            | 13  | 14  | GROUND             |
| GPIO 22            | 15  | 16  | GPIO 23            |
| 3.3V               | 17  | 18  | GPIO 24            |
| GPIO 10 (SPI_MOSI) | 19  | 20  | GROUND             |
| GPIO 9  (SPI_MISO) | 21  | 22  | GPIO 25            |
| GPIO 11 (SPI_SCLK) | 23  | 24  | GPIO 8 (SPI_CE0_N) |
| GROUND             | 25  | 26  | GPIO 7 (SPI_CE1_N) |

### Raspberry Pi Model A/B (Rev 2.0)

| Assignment         | Pin | Pin | Assignment         |
| :----------------- | :-- | :-- | :----------------- |
| 3.3V               | 1   | 2   | 5V                 |
| GPIO 2 (SDA1)      | 3   | 4   | 5V                 |
| GPIO 3 (SCL1)      | 5   | 6   | GROUND             |
| GPIO 4             | 7   | 8   | GPIO 14 (TXD0)     |
| GROUND             | 9   | 10  | GPIO 15 (RXD0)     |
| GPIO 17            | 11  | 12  | GPIO 18            |
| GPIO 27            | 13  | 14  | GROUND             |
| GPIO 22            | 15  | 16  | GPIO 23            |
| 3.3V               | 17  | 18  | GPIO 24            |
| GPIO 10 (SPI_MOSI) | 19  | 20  | GROUND             |
| GPIO 9  (SPI_MISO) | 21  | 22  | GPIO 25            |
| GPIO 11 (SPI_SCLK) | 23  | 24  | GPIO 8 (SPI_CE0_N) |
| GROUND             | 25  | 26  | GPIO 7 (SPI_CE1_N) |

### Raspberry Pi Model B+ / Raspberry Pi 2 Model B

| Assignment         | Pin | Pin | Assignment         |
| :----------------- | :-- | :-- | :----------------- |
| 3.3V               | 1   | 2   | 5V                 |
| GPIO 2 (SDA1)      | 3   | 4   | 5V                 |
| GPIO 3 (SCL1)      | 5   | 6   | GROUND             |
| GPIO 4             | 7   | 8   | GPIO 14 (TXD0)     |
| GROUND             | 9   | 10  | GPIO 15 (RXD0)     |
| GPIO 17            | 11  | 12  | GPIO 18            |
| GPIO 27            | 13  | 14  | GROUND             |
| GPIO 22            | 15  | 16  | GPIO 23            |
| 3.3V               | 17  | 18  | GPIO 24            |
| GPIO 10 (SPI_MOSI) | 19  | 20  | GROUND             |
| GPIO 9  (SPI_MISO) | 21  | 22  | GPIO 25            |
| GPIO 11 (SPI_SCLK) | 23  | 24  | GPIO 8 (SPI_CE0_N) |
| GROUND             | 25  | 26  | GPIO 7 (SPI_CE1_N) |
| ID_SD              | 27  | 28  | ID_SC              |
| GPIO 5             | 29  | 30  | GROUND             |
| GPIO 6             | 31  | 32  | GPIO 12            |
| GPIO 13            | 33  | 34  | GROUND             |
| GPIO 19            | 35  | 36  | GPIO 16            |
| GPIO 26            | 37  | 38  | GPIO 20            |
| GROUND             | 39  | 40  | GPIO 21            |

## Related Links

- [Ultrasonic Ranging Module HC-SR04](http://www.micropik.com/PDF/HCSR04.pdf)
- [Ultraschall Messmodul HC-SR04](http://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf)

## Running Tests

To run the test suite first install the development dependencies:

```sh
npm install
```

then run the tests:

```sh
npm test
```