LoginSignup
6
6

More than 5 years have passed since last update.

ArduinoをNode.jsで制御する

Posted at

http://www.bonno.xyz/ を作るために、Node.jsからArduinoにデータを送信する必要がありました。

MacBookでNodeのプロセスを立ち上げ、USB接続したArduinoを操作します。

ライブラリとしては voodootikigod/node-serialport を使いました。

準備

npm initし、package.jsonが存在する前提です。

npm install serialport --saveし、serialportをインストールします。

Node.js側

var SerialPort = require("serialport").SerialPort;
var serialPort = new SerialPort("/dev/cu.usbmodem14221", {
  baudrate: 14221
});
serialPort.on('open', function () {
  console.log('serial open');
});
serialPort.write("1\n", function(err, results) {
  console.log('err ' + err);
  console.log('results ' + results);
});

/dev/cu.usbmodem14221の部分はArduino IDEで繋いだ時に表示されるデバイス名を設定します。
パラメータのbaudrateはどこかからコピってきたので、何が良いのかわかってないです。とりあえず動いたから、これでいいかなーという感じです。

serialPort.writeの第一引数がArduino側に送信されます。

Arduino側

void setup() {
  Serial.begin(9600);
}

void loop() {
  int inputchar = Serial.read();
  if (inputchar != -1 ){
    Serial.print(inputchar);
    // TODO anything
  }
}

Serial.beginの引数は、どこかからコピってきたので、何が良いのかわかってないです。
Serial.readにより、最初の1バイトが取得できます。
-1ではない場合、何かが送信されたとして、なにかしらの処理が実行出来ます。

具体的には?

http://noboru.hatenablog.jp/entry/2015/12/30/175836 ここに書いた通り、Node.js側でWebSocketのイベントを受け、シリアルポートにデータを書き込み、サーボモータを動かしました。

こんな感じで、ネット上のWebSocketサーバから物理的なモータとかを簡単に動かせるようになったので、アイディア次第でいろいろ出来そうですね。

今回は除夜の鐘ということで、年末に間に合わせるために詳しく調べてない部分が多いので、時間があったら詳しく調べないとですね。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6