Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Johnny-Five と MRAA

268 views

Published on

Johnny-Five と MRAA
- Node.jsからのハードウェアI/O -

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Johnny-Five と MRAA

  1. 1. Johnny-Five と MRAA - Node.jsからのハードウェアI/O - 2019/11/4 Takashi Matsuoka
  2. 2. Takashi Matsuoka (@matsujirushi12) 2017~ MVP for Windows Development Wio LTE Wio 3G MT3620 DevBoard Wio LTE M1/NB1(BG96) de:code 2019 「e」3つ
  3. 3. 基礎からじっくり学ぶラズパイ電子工作 (2017年6月号~2018年6月号) デジタル入力 デジタル出力 PWM出力 I2C通信(SMBus編) I2C通信(汎用編) UART通信 SPI通信
  4. 4. rwaldron/johnny-five nebrius/raspi-io nebrius/raspi-gpio fivdi/pigpio nebrius/j5-io nebrius/raspi-i2c nebrius/raspi-serial serialport/node-serialportfivdi/i2c-bus J5 for Raspberry Pi
  5. 5. rwaldron/johnny-five julianduque/beaglebone-io fivdi/linux-io J5 for BeagleBone Black
  6. 6. デジタル入力 var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { this.pinMode(9, five.Pin.INPUT); this.digitalRead(9, function(value) { console.log(value); }); });
  7. 7. デジタル出力 var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { this.pinMode(13, five.Pin.OUTPUT); this.digitalWrite(13, 1); });
  8. 8. I2C var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { this.i2cConfig(); this.i2cWrite(0x01, [0x02, 0x03]); }); var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { this.i2cConfig(); this.i2cRead(0x01, 6, function(bytes) { console.log("Bytes read: ", bytes); }); });
  9. 9. UART • APIドキュメントに無い。 • 実際は、BoardにserialXxxx()とい うAPIがあるみたい。 • https://npmdoc.github.io/node- npmdoc-johnny- five/build/apidoc.html
  10. 10. intel-iot-devkit/mraa mraa for Raspberry Pi
  11. 11. デジタル入力 const mraa = require('mraa'); //require mraa let myDigitalPin = new mraa.Gpio(6); myDigitalPin.dir(mraa.DIR_IN); function periodicActivity() { let myDigitalValue = myDigitalPin.read(); console.log('Gpio value is ' + myDigitalValue); } setInterval(periodicActivity, 1000);
  12. 12. デジタル出力 const mraa = require('mraa'); //require mraa let myDigitalPin = new mraa.Gpio(5); myDigitalPin.dir(mraa.DIR_OUT); myDigitalPin.write(1);
  13. 13. I2C const mraa = require('mraa'); //require mraa let i2cDevice = new mraa.I2c(0); i2cDevice.address(0x77); buf[0] = 0xf4; buf[1] = 0x2e; i2cDevice.write(buf); let result = i2cDevice.read(2); console.log(result.toString('hex’));
  14. 14. UART "use strict"; const mraa = require('mraa'); //require mraa uart.setBaudRate(115200); uart.setMode(8, 0, 1); uart.setFlowcontrol(false, false); sleep(200); uart.writeStr("testn"); sleep(200); console.log(uart.readStr(6)); sleep(200); write(), read() API有り
  15. 15. まとめ • Johnny-Five • 各種デバイスのライブラリといった印象 • ボードの差異は、「IO Plugins」で吸収 • Raspberry PiやBeagleBone BlackのIO Pluginは、外部パッケージを利 用してハードウェアI/Oしている • MRAA • ハードウェアI/Oのライブラリ • コア部分はCで書かれており、各種言語(Java, Python)から呼び出し できるようにしている • 外部パッケージの呼び出しは無し • 各種デバイスは、「UPM」(別ライブラリ)で提供

×