A set of input and output nodes for controlling General Purpose Input and Outputs (GPIOs) though the use of johnny-five I/O Plugins as well as running johnny-five scripts!
From inside your node-red directory:
npm install node-red-contrib-gpio
Node configuration
- 14 is the length of bytes to read (1 byte = 8 bits)
- i2c bytes is an array of bytes. You can't use inject node directly because data has to be inside an array.
msg.payload=[0x00]
return msg;
- i2c read and i2c write configure i2c connection. I2c and register are decimal values! parseInt(x, 10) function is used to read values.
node-red-contrib-gpio supports several johnny-five I/O classes:
Device | IO Plugin |
---|---|
Arduino/Firmata | firmata |
Raspberry Pi | raspi-io |
BeagleBone Black, Green, Pocket | beaglebone-io |
C.H.I.P. | chip-io |
Galileo/Edison | galileo-io |
Blend Micro | blend-micro-io |
LightBlue Bean | bean-io |
ble-io(esp32, curie) | ble-io |
Circuit Playground(classic) | playground-io |
Electirc Imp | imp-io |
Particle(Spark) Core | particle-io |
Arduino is supported out of the box, but for other devices, you'll need to install their IO plugin.
For example to install the Raspberry Pi plugin:
npm install raspi-io
If you're using Arduino/Firmata, you can connect to a remote device via a raw tcp socket, or an MQTT connection.
For example, if you wanted to connect using tcp, in node-red you could specify an ip and port. On another machine with an Arduino plugged in you could run a server that relays a tcp socket to a serial port such as: tcpSerialRelay.js
If you wanted to connect an Arduino to an MQTT server you can use a script such as: bindSerialToMQTT.js. In node-red you can connect to the same MQTT server and subscribe to the topic the arduino is publishing on, while publishing to the topic that the arduino is subscribed to.