3.0.2 • Published 8 years ago

mmm-gpio v3.0.2

Weekly downloads
9
License
MIT
Repository
github
Last release
8 years ago

THIS PROJECT IS NO LONGER MAINTAINED by clebert. I have updated it for use with Raspberry Pi 3's MagicMirror modules

mmm-gpio

A high performance, memory mapped, Node.js API for GPIO on the Raspberry Pi.

Getting Started

Installation

npm install mmm-gpio --save

Integration

var gpio = require('mmm-gpio');

API

gpio.init(callback)

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

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

gpio.init(function (error) {
    if (error) {
        ...
    } else {
        ...
    }
});

gpio.createInput(pin)

Creates a new GPIO input function and returns it.

var input = gpio.createInput(4);

input()

Returns true if the input voltage level is high, and false otherwise.

var level = input();

gpio.createOutput(pin)

Creates a new GPIO output function and returns it.

var output = gpio.createOutput(4);

output(level)

Sets the output voltage level to high or low.

output(true);
output(false);

Example

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

sudo node examples/onoff.js

Example: onoff.png

A quick word about the electronics involved. LEDs are Light Emitting Diodes and the diode part is important for us – they only pass electricity one way, so we need to make sure we put them in the right way round. They have a long leg and a slightly shorter leg. The long leg goes to the plus side and the shorter leg to the negative (or 0v) side. If we’re cut the legs short (as I have done here), then another way is to look at the side of the LED – there will be a flat section. Think of the flat as a minus sign and connect that to the 0v side of the circuit.

If we allow too much current through the LED, it will burn very bright for a very short period of time before it burns out, so we need a resistor to limit the current. Calculating the resistor value is not difficult but for now, just use anything from 270Ω to 330Ω. Anything higher will make the LED dimmer.

-- GPIO Examples - A single LED

Raspberry Pi GPIO Pin Layout

Raspberry Pi Model A/B (Rev 1.0)

AssignmentPinPinAssignment
3.3V125V
GPIO 0 (SDA0)345V
GPIO 1 (SCL0)56GROUND
GPIO 478GPIO 14 (TXD0)
GROUND910GPIO 15 (RXD0)
GPIO 171112GPIO 18
GPIO 211314GROUND
GPIO 221516GPIO 23
3.3V1718GPIO 24
GPIO 10 (SPI_MOSI)1920GROUND
GPIO 9 (SPI_MISO)2122GPIO 25
GPIO 11 (SPI_SCLK)2324GPIO 8 (SPI_CE0_N)
GROUND2526GPIO 7 (SPI_CE1_N)

Raspberry Pi Model A/B (Rev 2.0)

AssignmentPinPinAssignment
3.3V125V
GPIO 2 (SDA1)345V
GPIO 3 (SCL1)56GROUND
GPIO 478GPIO 14 (TXD0)
GROUND910GPIO 15 (RXD0)
GPIO 171112GPIO 18
GPIO 271314GROUND
GPIO 221516GPIO 23
3.3V1718GPIO 24
GPIO 10 (SPI_MOSI)1920GROUND
GPIO 9 (SPI_MISO)2122GPIO 25
GPIO 11 (SPI_SCLK)2324GPIO 8 (SPI_CE0_N)
GROUND2526GPIO 7 (SPI_CE1_N)

Raspberry Pi Model B+ / Raspberry Pi 2 Model B

AssignmentPinPinAssignment
3.3V125V
GPIO 2 (SDA1)345V
GPIO 3 (SCL1)56GROUND
GPIO 478GPIO 14 (TXD0)
GROUND910GPIO 15 (RXD0)
GPIO 171112GPIO 18
GPIO 271314GROUND
GPIO 221516GPIO 23
3.3V1718GPIO 24
GPIO 10 (SPI_MOSI)1920GROUND
GPIO 9 (SPI_MISO)2122GPIO 25
GPIO 11 (SPI_SCLK)2324GPIO 8 (SPI_CE0_N)
GROUND2526GPIO 7 (SPI_CE1_N)
ID_SD2728ID_SC
GPIO 52930GROUND
GPIO 63132GPIO 12
GPIO 133334GROUND
GPIO 193536GPIO 16
GPIO 263738GPIO 20
GROUND3940GPIO 21

Related Links

Running Tests

To run the test suite first install the development dependencies:

npm install

then run the tests:

npm test